Build Decision

Replyee + Retell — Voice AI

Three ways to put Retell's voice engine behind your brand, what each costs you in margin and lock-in, and the one thing that turns this from reselling someone else's product into a product of your own.

Boom Media SaaS · Created 2026-07-20 · eric@boommedia.us

01The short answer

Yes — and Option 3 is the one to take

Retell is API-first, so wrapping it in your own UI is a normal integration, not a fight. You can absolutely have clients log into Replyee, configure a voice agent, and never see the word "Retell."

But don't wire Retell in directly. Put it behind an adapter — the same pattern Posttee already uses for social platforms. Same build time, and you keep the freedom to swap engines later without touching a line of UI.

Verify before you commit. This doc is confident on the architecture and deliberately cautious on Retell's commercial terms. Their white-label rules, reseller/agency pricing, and whether removing their branding requires a specific plan tier are things you need confirmed in writing by their sales team. That answer decides whether Option 1 is even sellable under your brand — it is a commercial question, not a technical one, and it is the single biggest unknown here.

02What Retell actually is

Framing what you'd be buying, so the options below make sense.

Retell is a voice AI agent platform. It handles the genuinely hard parts of a real-time phone conversation:

LayerWhat it doesWhy it's hard to build
TelephonyAnswers/places calls, manages numbersSolvable — you already have Twilio
Speech-to-textCaller's voice → text, streamingSolvable — Deepgram, Whisper
LLM orchestrationText → response, with contextSolvable — you do this already in Replyee
Text-to-speechResponse → natural voiceSolvable — ElevenLabs, Cartesia
Turn-taking & barge-inKnowing when the caller stopped, letting them interruptThis is the hard part. Sub-second latency, endpointing, interruption handling. It is what Retell actually sells.

Four of those five layers you could assemble yourself in a few weeks. The fifth is where voice products live or die — a 400ms delay or an agent that talks over people feels broken to a caller in a way that no feature list compensates for.

The strategic read: buying Retell is buying latency engineering and turn-taking, not "AI." That's a reasonable thing to rent — and also a reason to keep the option of leaving open, since that specific advantage narrows every year as the tooling commoditizes.

03Your three options

Ordered as they'd appear if you were only thinking about speed. The recommendation is third for a reason.

Option 1 — Retell as engine, Replyee as the whole face

Fastest

Clients log into Replyee, configure a "voice agent," see transcripts in the Replyee inbox. You call Retell's REST API to create and update agents; their webhooks post call events back to you. Retell is invisible.

Build time
Weeks
Margin
Resale spread over roughly $0.07–0.10/min plus telephony
Risk
Full lock-in. Their pricing change is your pricing change. Their outage is your outage — under your brand, with your client on the phone.
Blocked by
White-label terms confirmed in writing

Option 2 — Build voice natively

Not now

Twilio Voice (already in your stack for SMS) + Deepgram + ElevenLabs + Claude, wired together yourself.

Build time
Months, and the last 20% is the painful part
Margin
Best possible — raw API costs only
Risk
You are now in the latency-tuning business. That is a real engineering discipline, and it is not adjacent to anything else in the portfolio.
Verdict
Wrong first move. Revisit only if voice becomes a large, proven revenue line.

Option 3 — Retell behind a provider adapter

★ Recommended

Identical client experience to Option 1 and near-identical build time — but every Retell call goes through a VoiceProvider interface instead of being scattered through your routes. Swapping to Vapi, Bland, or your own Twilio stack later becomes a new file, not a rewrite.

Build time
Weeks — maybe 10% over Option 1
Margin
Same as Option 1 today; Option 2's margin available later without a UI rewrite
Risk
Low. Pricing leverage in renewal conversations, and a real answer if they change terms
Precedent
You already built this pattern once and it worked
You've already proven this pattern in-house. Posttee's publisher layer is the best-designed code in the portfolio. Its types.ts states the contract outright — "NOTHING in the app talks to a social platform directly" — and registry.ts is a single swap-point map with a liveChannels() filter for adapters that have working credentials. That decision is what let you drop Ayrshare for direct platform APIs without rewriting Posttee. Copy it verbatim for voice.

04The thing that makes this a product

This section is the actual argument. Everything above is plumbing.

Share one knowledge base across chat and voice

Replyee already has a working RAG stack — pgvector embeddings, ingestion from URL, PDF, and pasted text, plus automatic BOO menu ingest. That knowledge base is an asset Retell does not have and cannot sell.

A client uploads their menu once and gets a website chatbot and a phone agent that know exactly the same things — and stay in sync when the menu changes. Retell alone can't do that. Retell plus your knowledge base is a product you can charge for.

CLIENT UPLOADS ONCE menu.pdf / website URL / BOO menu sync │ ▼ Replyee knowledge base (pgvector, already built) │ ┌───────┴────────┐ ▼ ▼ CHAT VOICE widget.js Retell agent on their site on their phone line │ │ └───────┬────────┘ ▼ One inbox. One transcript history. One brand.

Why this also settles the app-boundary question

Voice is conversation. Conversation is Replyee. It does not become a 15th app — the same ruling you already made for SMS, and consistent with the rule that no two apps do the same job.

05What to build, in order

Sequenced so each step is testable before the next one starts.

0

Confirm Retell's white-label terms — before any code

Get written answers on branding removal, agency/reseller pricing, per-minute rate at your projected volume, and data ownership over call recordings and transcripts. If white-labeling requires an enterprise tier you can't justify yet, that changes the plan — better to know on day zero.

1

Define the VoiceProvider interface

Small and deliberately generic — nothing Retell-specific in the shape:

export interface VoiceProvider {
  // NOTHING in the app talks to a voice vendor directly.
  createAgent(cfg: AgentConfig): Promise<{ providerAgentId: string }>
  updateAgent(id: string, cfg: Partial<AgentConfig>): Promise<void>
  deleteAgent(id: string): Promise<void>
  assignNumber(agentId: string, e164: string): Promise<void>
  parseWebhook(req: Request): Promise<CallEvent>
}
2

Implement retell.ts — the only file that knows Retell exists

Mirror Posttee/src/lib/publishers/registry.ts: a provider map plus a liveProviders() filter so an unkeyed provider is skipped instead of throwing.

3

Provision agents from existing Replyee bots

Reuse each bot's system_prompt and knowledge chunks. A client who already has a working chatbot should get a working phone agent with no reconfiguration — that's the whole pitch, and it should be a one-click upgrade.

4

Webhook receiver → the existing inbox

Write call transcripts into replyee_conversations / replyee_messages with a channel: 'voice' discriminator. Voice then appears in the inbox you already built, for free. Add the column in a numbered migration — Replyee's migrations are clean, keep them that way.

5

Number provisioning per tenant

Your Twilio 10DLC reseller setup already covers the plumbing and the compliance posture from the SMS build.

6

Minute metering + usage billing — before launch, not after

Voice is the first thing you'd sell with a genuinely variable per-unit cost. Meter from the first call. See §6.

06Pricing — why flat-rate is dangerous here

Every other Boom app has near-zero marginal cost per customer. Voice does not.

At roughly $0.07–0.10/min plus telephony, a single heavy client can erase the margin on several light ones. A flat "unlimited" tier is an open-ended liability, not a simple pricing choice.

ModelShapeAssessment
Flat unlimited$X/mo, no capAvoid. One high-volume restaurant on a busy Friday can eat a month of margin.
Included minutes + overagee.g. 500 min included, then per-minuteRecommended. Predictable for the client, capped downside for you. Mirrors how you already think about SMS.
Pure per-minuteCost + markupSafest margin, hardest to sell — buyers dislike unpredictable bills.
Build the meter before the first client call. Retrofitting usage tracking onto live accounts means reconciling against the vendor's invoice by hand. Replyee currently has no token or cost tracking at all — the admin page says "coming soon" and links out to the vendor consoles. Do not repeat that here.

07One dependency that blocks the best use case

Replyee has no tool/function calling — and voice needs it more than chat does. The single highest-value phone question for a restaurant is "where's my order?" Answering it requires the agent to call your order-status endpoint mid-conversation. Replyee has that endpoint (/api/internal/order-status). The bot cannot call it. Order data only reaches the model if BOO pushes it in advance.

This is worth fixing before or alongside the voice work, for two reasons:

Other Replyee gaps worth knowing before adding voice

GapEffect on the voice product
No streaming (answers arrive as one block)Chat-only issue — Retell handles voice streaming itself
No AI-driven escalation (handoff needs a button click)Serious for voice. A phone caller can't click. Needs a "transfer to a human" path from day one.
No multilingualMore visible on the phone than in chat
Config surface is one system_prompt textareaVoice needs more: greeting, voice selection, speaking rate, business hours
No business-hours modelAfter-hours is one of the strongest voice-agent selling points. Currently no concept of hours exists.

08Decision summary

QuestionAnswer
Can Replyee be the front end for Retell?Yes — Retell is API-first
Can it be fully your brand?Technically yes; confirm their white-label terms in writing
Should Retell be wired in directly?No — put it behind a VoiceProvider adapter
Does voice become a 15th app?No — voice is conversation, conversation is Replyee
What makes it defensible?One shared knowledge base driving chat + voice together
Biggest technical blocker?No tool-calling — blocks "where's my order?"
Biggest commercial risk?Per-minute cost under a flat-rate plan
Can you leave Retell later?Yes, if you build the adapter now

Next action

Email Retell sales about white-label and agency pricing today. It's the only step with an external dependency and a multi-day turnaround, and its answer determines whether the rest of the plan holds. Everything else is code you control.