Voice agents that play a hard prospect
Two voice agents, a receptionist and an owner, chained into one call so a sales pitch can be rehearsed against a real gatekeeper before it is spent on a real lead.
- Status
- Live
- Year
- 2026
- Services
- Missed calls
- Published results
- None yet
The problem
Cold calls are learned on live prospects, which means every bad opener costs a lead that will not pick up twice. Most voice-agent examples are built to help the caller. Practice needs the opposite: an agent that is difficult in the specific ways a real front desk and a busy owner are difficult.
How it worked before
- Openers were rehearsed out loud with nobody on the other end
- The first real test of a pitch was a real prospect
- Nothing recorded how a practice call ended or why
What was in scope.
Deliverables, not outcomes. Anything not on this list was not built, and is not implied to have been.
- A receptionist agent that screens and decides whether to transfer
- An owner agent that only ever takes transferred calls
- A squad chaining the two with a live call transfer
- A closed outcome per call: Booked, Callback or Dead, with a reason
- Every call logged to a sheet through an n8n webhook
The system, stage by stage.
Each stage does one thing and hands off. The marked stages are the ones a person owns: they are in the diagram because they are part of the design, not because nothing else could reach them.
The pitch starts
Human decisionA person makes the call, cold, with no context handed to the agent.
Receptionist screens
Gives up as little as possible. Not customer support, and told so in writing.
Transfer or stop
Only a caller who earns it gets passed to the owner.
Owner answers
Busy and skeptical. Knows the call was transferred, so he does not re-screen.
Outcome returned
A typed field from a closed schema, not a guess from keywords in the transcript.
Call logged
One row per call: agent, duration, outcome, reason, recording and transcript.
One stage in this system is owned by a person. It stops there deliberately: those are the points where being wrong is expensive.
Runs on
Tools you can keep without us.
Everything is set up on your own accounts and your own billing, so the system does not stop working if we do.
- Voice platformsSpeech in and out for voice agents, connected to a real phone number and a real calendar.
- OpenAI & Claude modelsUsed at the points in a workflow that need interpretation: reading an unstructured message, summarising a call, classifying a request. Not used where a rule would do.
- n8nThe workflow layer most of our automation runs on. Self-hostable, which matters when a client wants everything on their own infrastructure.
- WebhooksHow one system tells another that something happened, without either polling the other.
- Google SheetsUsed honestly: as a queue, a log or a review surface a non-technical person can actually open. Not used as a database.
These are tools we build with. Braav Labs is not affiliated with, endorsed by or a partner of any of them, and all names belong to their owners.
Why it was built this way.
- 01
Hard is a prompt problem, not a model problem
A helpful-by-default model slides into answering the caller's questions. The work is in the refusals: what each agent will not explain, will not offer and will not do. The behaviour lives in those constraints.
- 02
The smaller model is the realistic one
On a phone call, latency reads as hesitation. A faster, cheaper model with a strong prompt sounds more like a real prospect than a larger one that pauses.
- 03
A blank outcome beats a guessed one
When the platform returns no outcome, the cell stays empty. A blank row is a known unknown. A guessed one is a wrong number that looks like data.
Results
No measured result yet.
This build has not run long enough to produce a number we can stand behind and show you the source of. When it has, the figure and where it came from go here. We would rather this section say nothing than say something we cannot evidence.
On visual evidence
The screenshots are the public repository as it stands. Call recordings are not published.
The code
Read it yourself.


What we would change
What we would do differently.
Written down because the next client gets the version of us that already made these mistakes.
The first build was one agent playing both roles. Splitting it into a squad with a transfer is what made it feel like a real call.
Outcome capture should have been designed with the first agent, not added after a week of calls that left no record.
Want something like this built for your business?
Get my free auditOther work
- New-patient website and booking pathA practice site rebuilt around the single question a prospective patient is actually asking (can I be seen, and how soon) with a booking path short enough to finish on a phone in a waiting room.
- Our own sourcing and follow-up pipelineThe system we use to find practices that fit what we do, screen them, and make first contact, running against our own inbox before it is ever sold to anyone else.
- Social posts written from cited researchThe system that drafts, renders and queues our own social posts every morning. Every claim comes from a fixed library of cited sources, and nothing posts until a person approves it.
How an engagement runs.
The same five steps whatever we are building, so you always know which one you are in.
- Pricing
- Fixed price, quoted after a scope call
- You have the number before anything is built. Nothing is billed by the hour.
- Timeline
- A date at quote time
- Stated as a commitment, not an estimate that drifts once work starts.
- Ownership
- Everything stays in your name
- Domains, hosting, inboxes and every account, on your billing, documented.
- 01
Scope call
Twenty minutes on how inquiries reach you today. No deck, no discovery package.
- 02
Written scope and a fixed quote
What gets built, when it lands, what it costs. Fixed before anything starts.
- 03
Build and review
You see it working on your own content, not a screenshot of it working.
- 04
Launch and handover
Accounts in your name, a written record of what runs where, a walkthrough.
- 05
Support, if you want it
A separate decision, made after something is already running.