Short answer
Text surveys missed frontline staff, so RaftLabs built Perceptional a voice interview platform in 12 weeks. Interviewers upload a contact list, Twilio places the calls, and an ElevenLabs voice runs the interview, adapting questions to each answer. Busy lines, drops, and declines get different next steps, finished numbers lock, and themes and sentiment are ready at the last call.
The situation
Cherian Koshy runs feedback programs for large organizations across the US. Text surveys collected the answers. The answers kept missing the same people.
The staff on a shift, the older employee who types slowly, the person who won't open a long form on their phone: they drop out. What's left is the people already comfortable with a survey. If you decide from that report, you decide for a group that doesn't look like the people you serve.
You've seen the same hole if you run employee feedback, customer research, or a product study. The link goes out. The people you most need to hear from don't finish it. The report still looks complete.
Cherian wanted that hole closed. The brief was one line: build a system that reaches anyone with a phone. And a voice people would stay on the line with, because a bad voice agent is worse than no automation. People describe the bad ones as talking to a malfunctioning Hallmark card. The voice had to earn its place.

Engagement
The engagement
- Client
- Cherian Koshy, running feedback programs for large organizations across the US
- Brief
- Build a system that reaches anyone with a phone: AI-conducted voice interviews instead of text surveys
- Delivery
- 12 weeks, concept to launch
- Stack
- ElevenLabs voice, campaign management dashboard, transcript analysis
- Status
- Live. Cherian runs campaigns from the dashboard without RaftLabs on the call
before / after
What changed
- The report is the opinion of people who don't mind forms
- They open a link, type personal details, then type the answer
- You get what they wrote, not the pause or the correction
- The write-up lands days later, after the meeting that needed it
- A missed email means a second campaign to chase the same people
- You leave with a spreadsheet, not what they meant
- Anyone with a phone can answer. No form, no account, no typing
- The platform calls them, and the AI runs the interview
- The next question changes from what they just said
- Themes and sentiment are ready when the last call ends
- A missed call retries or gets a text. A finished number is locked
- The team asks the data a question instead of reading every transcript
What we had to solve
A form won't reach the person you actually need
A reminder email doesn't fix a form people won't start. Frontline staff answer a phone. They don't sit down for a ten-minute form. Older staff and anyone slow on a keyboard do the same. If your sample is only the digitally comfortable group, every finding leans their way, and you won't see the lean in the chart.
The product had to put a call on an ordinary phone number. No app to install, no account to make, no link they have to trust enough to tap. If any of those steps stayed, the people Cherian was missing would still be missing.
Five hundred careful interviews don't fit the window
A good interviewer can hold one conversation. They can't hold a 500-person campaign in an afternoon, and you can't compare notes written by ten different people. Hiring a call center gives you reach and ten styles of notes. Waiting for a panel gives you time you don't have. The window for feedback is the same week the program runs.
The system had to place the calls and leave one record for every conversation. Same voice. Same question path. A transcript in the same shape each time, so two interviews can be compared without a researcher translating them first.
Getting people to stay on the call
Early test calls failed in the only way that matters: people hung up. The voice sounded robotic where one response met the next. The pacing was slightly off. The script was obvious. A hang-up isn't a neutral miss. You've used their time, you've spent the call, and you've learned nothing. Do that across a staff list and you've also annoyed the people you wanted to hear from.
We ran rounds of ElevenLabs voice tuning and rewrote the prompts. We kept going until the dropout matched what a human interviewer got on the same questions. The call that shipped doesn't sound like a phone menu.
Choosing the next question while they are still on the line
A scripted survey asks the next question no matter what they said. That's why survey answers stay thin. A useful interview hears the answer and follows it. The hard part is the gap. The system has to understand the reply, pick the follow-up, and speak before the silence feels like a dead line. Wait too long and they start talking over it. Jump in too fast and it cuts them off. Either one ends the call.
We tuned that gap until the follow-up sounded like a person who had listened. The path still has a plan. It doesn't march through the plan when the last answer asked for something else.
A missed call cannot become a lost response, or a second nuisance
Not every number answers, and the next step depends on why. A busy signal, a network drop, a decline, and a no-answer are different events. A busy line or a drop can be tried again. A person who declines shouldn't get the same treatment as a dead line. Some of those numbers get a text with a link so they can finish when they choose. Once the interview is done, that number is locked for the campaign. They are not called again.
That lock is the rule that keeps a research call from turning into harassment of your own staff or customers. No number sits in the list with no next step, and no finished person gets dialed because a batch ran twice.
A recording is not an answer
The old surveys closed, then teams waited days to read what people typed. Voice is worse if you only keep the audio. A batch of 500 calls is hundreds of transcripts. Nobody is going to read them before the debrief, so the insight dies in the file.
As each call finishes, the platform pulls themes, sentiment, and topic reports from the transcript. The team opens the findings when the calling stops. They don't start the debrief by reading every line.
Proof
What the build delivered, and what this page can't claim
Delivery facts from a 12-week build. No campaign volumes or completion-rate figures were available for this review, so none are shown.
| Result | What changed | Period or context | Evidence and limitation |
|---|---|---|---|
| Time to launch | 12 weeks from concept to launch | Outbound calling, adaptive question paths, list management, and findings reports | Project-recorded |
| Voice quality bar | Dropout tuned to match a human interviewer on the same questions | Rounds of ElevenLabs voice tuning and prompt rewrites after early test calls failed on hang-ups | Project-recorded: early calls sounded robotic where one response met the next |
| Campaign figures | Not available | No usage or completion data was on record for this review | Stated rather than estimated |
the build
What we built
Three jobs had to be true on the same campaign: a person answers on an ordinary phone, the interviewer runs the list without dialing it, and the team can use the findings the day the calls stop.
The person answers on a normal phone
The interviewer uploads a CSV of phone numbers. The platform calls each one. The person picks up and talks. There's no account, no link, and no personal details to type before the first question. The AI asks, listens, and picks the follow-up that fits what they just said. When they hang up, the full transcript is already stored. That's the unit of work: one number in, one conversation out, written down the same way every time.

One screen for the whole list
You shouldn't have to open each row to know if the campaign is healthy. The dashboard shows every call as completed, failed, or pending. On a miss, one action retries the call or sends a text with a link to finish on the web. A completed number locks, so a second run of the batch can't call them again. The interviewer watches the list move. They don't work it number by number.

The debrief starts from the findings
Feature reports show what people said about a topic you already care about. Keyword analysis shows themes you didn't ask for by name. Sentiment shows how it landed. A typed survey turns that into a score and stops. Each report exports as a PDF the team can share in the debrief. The transcript stays in the platform if someone needs the exact line.

Ask the interviews a question
A report answers the questions you planned. The follow-up you think of in the meeting is a new one. The team can ask the interviews directly: which pains came up most, what people said about one feature, how sentiment differed by department. That question used to be a half-day of transcript reading. It's now a conversation with the set of calls you already paid for.

The lesson
A bigger survey doesn't fix a biased sample
If the only people who finish are comfortable with forms, a larger send still describes that group. Another reminder email finds the same people again. A phone call doesn't make a bad question good. It lets the person without ten spare minutes, and without an easy way to type, still answer. That's the bias to close before you spend on a bigger panel.
How it runs
- Twilio
- Cherian's programs aren't one country or one phone company. Twilio places the call through one request, so we didn't spend the 12 weeks on carrier contracts. A number in the CSV is a number we can dial.
- ElevenLabs
- If the voice sounds like a phone tree, people hang up and the campaign teaches you nothing. This was the voice that held them, at a cost a bootstrapped product could keep paying after launch.
- AWS Lambda
- Campaigns spike, then go quiet. Cherian was building this without an infrastructure team. Lambda handles up to 1,000 interviews at once, and there's no idle server to pay for between campaigns.
- PostgreSQL
- Every transcript, score, and report has to live somewhere the dashboard and the question tool can both read. One database, so a theme isn't trapped in a recording nobody will replay.
Common questions
12 weeks from the first conversation to a live product. The first week was a working call Cherian could hear. After that, two-week sprints and a daily update, through voice tuning, call rules, and the reports.
No. Each number is unique for that campaign. A busy line, a dropped call, and a decline get different next steps. Some are retried. Some get a text with a link to finish later. A completed interview locks the number, so they aren't called again, even if the batch runs twice.
Yes. The platform runs on AWS Lambda and scales to 1,000 simultaneous interviews. A quiet week doesn't need idle servers waiting. The same setup that ran the beta runs a large campaign. Nobody is managing a capacity ceiling by hand.
Because the people who won't finish a form will often answer a phone. You also hear the pause, the correction, and the emphasis a typed box flattens. The next question follows what they just said, so a thin answer doesn't just roll into the next item on a script.
It depends on why. A busy line or a drop can be retried. A decline isn't treated as a missed connection. Those numbers can get a text with a link to finish on the web when they choose. Nothing is left on the list with no next step.
Research teams, HR, product groups, and market research firms. The practical start is a question path and a CSV of numbers you're allowed to call. It fits a 50-person employee study and a 2,000-person customer study. Transcripts and reports stay in the platform for the team that ran the campaign.
Related work
More work like this

Musgrave receipt scanning software case study for SuperValu and Centra
Musgrave's post-campaign report records 1,062 users and 1,610 receipt submissions. At the reporting snapshot, 1,158 were AI approved, 409 AI rejected, 4 manually approved, 10 manually rejected, and 29 remained processing.

Brux ships a dental marketing SaaS: AI smile previews, GoHighLevel sync, and self-serve onboarding built for 1,000-office scale
Brux Smile Makeover is a dental marketing SaaS where patients upload a selfie and get a lifelike AI smile preview in seconds. We built the AI pipeline, GoHighLevel two-way CRM sync, Stripe billing, and self-serve QR flyer onboarding built for 1,000-office scale.

LoyaltyPass delivers wallet-native loyalty cards with 60% higher enrollment than app-based programs
LoyaltyPass runs loyalty programs inside Apple Wallet and Google Wallet. Customers earn and redeem without a separate app download, and businesses get real engagement data without the friction of a native app.
