Consumer lending

Reliable voice agents look more like code than conversations.

A stipulation chase and an application status call share most of their skeleton
— verify the applicant, read the app and stip list from the LOS, log the outcome
— but the middle is completely different. One closes the funnel leak. The other relays where they stand.

Below: the thesis, the primitives, and how the same agent fabric handles both.

5 min read · concrete example included
The thesis

A reliable voice agent is composed, not prompted.

ElevenLabs, Vapi, Bland start from one capable agent you steer with a prompt, then add workflows and tools on top. We start from the other end — a library of small, specialized sub-agents that compose into the call.

An orchestrator picks the right ones for each role. Cross-cutting listeners run across the whole call to score things like communication skill.

Workflow
orchestrator picks
sub-agent
verify_identity
Greets the applicant by name, confirms the right person picked up, runs a light KYC check (DOB or last four of SSN) against the LOS before sharing application details.
Build
/speakgreeting
"Hi, this is Feliciti calling from {lender_name} about your {product_type} application. Am I speaking with {applicant_name}?"
/collectkyc_check
"Before I pull up any details, can you confirm the last four of your Social, or the date of birth on the application?"
/setidentity_confirmed
source=los.applicants.verify(applicant_id, kyc_check)
domain="verified" | "mismatch"
/conditional_collectkyc_retry
If identity_confirmed = "mismatch": one retry, then route to request_callback. Never disclose application details.
Transcript
Agent
"Hi, this is Feliciti calling from Coastline Lending about your personal loan application. Am I speaking with Marcus?"
Applicant
"Yes, this is Marcus."
Agent
"Before I pull up any details, can you confirm the last four of your Social, or the date of birth on the application?"
Applicant
"DOB is March 14th, 1988."
silent
KYC verified against LOS · safe to disclose application details
→ if KYC fails, the orchestrator routes to request_callback rather than disclose anything. Compliance bar is one bad call from a CFPB exam finding.
Plus a global listener for communication skill, scoring across the entire call.
The primitives

Nine primitives. Compose them. Ship reliable agents.

Voice agents in Feliciti are built like Notion documents — slash commands compose into blocks, blocks compose into sub-agents, sub-agents compose into the full call flow.

Nine primitives are all you need — one runs before the call connects, the rest run during.

  • /pre-call

    Read state before speaking.

    Match the customer, fetch their record, load context — all before the first hello.

  • /speak

    Speak a turn.

    One bounded utterance. Variables interpolate, tone is set per sub-agent.

  • /collect

    Ask and capture an answer.

    A scripted question that records a typed value back into the call state.

  • /conditional_collect

    Branch on a prior value.

    Asks only if a condition holds. The branch is explicit, not a prompt heuristic.

  • /set

    Write to a system of record.

    Commit a value to the DMS, ATS, or TMS. Triggers fire on side-effects.

  • /end

    Close the call.

    Wrap up cleanly with a final line and end the session.

  • /transfer

    Hand off to a human.

    Warm-transfer to the right queue or advisor when escalation is needed.

  • /prompt

    Free-form generation.

    When a step needs a small LLM call — kept narrow, kept testable.

  • /condition

    Route between sub-agents.

    The orchestrator's decision point — composition, not a chain of prompts.

composition

Stack the primitives into a sub-agent.

A sub-agent is a named, reusable unit — a linear sequence of these primitives. Tested in isolation against its own scenarios. Composed with other sub-agents to form the full call flow.

Compared to

What composition gives you that general-purpose platforms don't.

ElevenLabs, Vapi, and Bland are excellent general-purpose voice platforms — they have workflows, branching, and tool-calling. The difference is what you assemble yourself versus what comes built for the work.

General-purpose voice platforms

ElevenLabs, Vapi, Bland

  • Workflows layer on top of a base agent. Composition is a feature you configure, not the unit you build from.
  • Integrations are yours to wire and maintain — the LOS connection, the KYC vendor, the secure-upload link, the auth, the retries.
  • Test coverage is on you. There's no per-step test suite that comes with the agent. No TCPA / ECOA / FDCPA guardrails out of the box.
Composable sub-agents

Feliciti

  • The sub-agent is the unit. You compose from small, named, reusable pieces — edits are local, downstream effects explicit.
  • In-house iPaaS: MeridianLink, nCino, Blend, Jack Henry, secure-link vendors, and telephony are built and maintained for you, not left as an exercise.
  • One-click test-suite generation. Chase a missing paystub? It writes that suite. Relay application status without crossing the ECOA line? That one too.
Send us your use case

Want this for your calls?

Tell us the call you want to automate — recruiting or otherwise. We'll send back a working prototype within 48 hours, wired to your actual use case. Same composition pattern you just read about.

A founder reads every one. No sales calls unless you ask.