Advisory · Labs Brief us →
● ADVISORY LABS FIELD NOTES FIELD: APPLIED AI 05/19/2026
// HOME EQUITY · FIELD REPORT

How we cut a home equity platform's lead-to-close cycle in half

Field report from a multi-program HEI / HEA / SLB platform. Voice intake, agentic enrichment, eligibility integration. What we shipped, what broke, what stuck.

Isai Guerrero May 11, 2026 8 min read

This is a field report. Names are abstracted; the work is real.

The company runs a multi-program home equity portfolio — HEI, HEA, SLB, shared-equity, plus an alt-finance product. Series Seed–B. Twelve people. When we started, the median lead-to-close cycle was 14 days. By the end, it was 7.

Here’s what we shipped, in the order it shipped.

The starting picture

The funnel had four problem areas, in priority order:

1. Inbound response. Leads were calling the main line. The main line was a human SDR. After 5 p.m. or before 8 a.m. PT, inbounds went to voicemail. Voicemails got a callback the next business day — sometimes two days later. Conversion on next-day callbacks ran at roughly an eighth of conversion on sub-five-minute response, which roughly matches the public literature.

2. Eligibility drift. The platform had five different products, each with its own calculator. State whitelists, LTV/CLTV caps, ownership rules, and minimum equity thresholds were hardcoded into each calculator’s TypeScript. When a state regulation shifted, three of five calculators got the update and two didn’t. The eligibility outputs diverged. The platform was quoting people on products they didn’t actually qualify for.

3. Enrichment gap. Lead intake captured name, email, phone, property address, and self-reported home value. Underwriting needed all of that plus county tax records, lien status, AVM, and ownership verification. Pulling those was an analyst’s job. The analyst was a bottleneck.

4. Post-acceptance drift. Once a borrower accepted terms, the platform sent a DocuSign packet — but the packet was generated from a Word template. Updates to the template took two days to propagate. Half the packets sent in any given week had stale program names.

We shipped fixes in that order.

Component 1 — Voice intake

We wired Retell + Claude + Deepgram into the existing phone number. The agent picks up inside 1.5 rings, qualifies on six fields (state, age, property type, estimated home value, estimated equity, primary need), and either books a callback with the SDR for the same day or hands off to a human in-call for qualified leads above a confidence threshold.

We versioned the prompt in git. Every deploy tags the prompt with a SHA. The deployed agent state is reconciled against the source-of-truth script every 5 minutes, and we alert on drift. This caught two incidents in the first month where someone updated the script in the Retell UI but not in the repo.

We also wrote a transcript QA scorer — Claude Haiku reads the transcript and returns a structured JSON of turn-by-turn observations (was the agent on script, did it ask the qualifying questions in the right order, did it hand off correctly). The output feeds back into prompt edits weekly.

Impact: Time-to-first-response on inbounds dropped from a median of 17 minutes (during business hours) to 22 seconds. Off-hours response went from “next-day callback” to “in-call qualification, callback for the human conversation when the office opens.”

Component 2 — Eligibility config

We pulled all the eligibility logic out of the calculators and into an admin-driven settings table. State whitelists, LTV caps, CLTV caps, ownership rules, minimum equity, FICO floors, ARV ceilings — all read at runtime from the central config.

The calculators became dumb. Given a lead’s data and a product ID, fetch the rules, run the math, return the result. When a regulation shifts, one update to the config table propagates to every calculator, the voice agent’s qualification logic, and the underwriting preview.

This sounds obvious. It is. The reason it hadn’t been done was that nobody owned the entire horizontal slice — the data model, the admin UI, the migration, the calculator refactor.

We owned it. Five weeks of work. 47 migrations. Then it was done and the eligibility drift problem stopped existing.

Component 3 — Agentic enrichment

We built a Claude agent with web-search tools that takes a lead’s address and fills out the underwriting profile. County tax record, lien status, AVM (we use three different sources and reconcile), ownership verification, recent permits.

Every field carries a confidence label. The agent is allowed to return “unknown” — we explicitly trained against fabrication. If two of three AVM sources agree within 5%, the field is “high confidence.” If they don’t, the field is “needs-human” and surfaces in the analyst’s review queue.

We tracked false positives — fields the agent labeled high-confidence but were wrong — at roughly 0.4% over the first 90 days. Compare to roughly 2% on the analyst-only baseline (analysts make mistakes too).

Impact: Underwriting prep time on a qualified lead dropped from 35 minutes to 4.

Component 4 — Post-acceptance contract gen

Replaced the Word-template DocuSign flow with a templating system reading from the same admin config. Program names, terms, jurisdictional language all live in one place.

Less interesting than the other three, but it shut the door on a recurring source of contract corrections.

What broke

The voice agent confidently quoted a wrong CLTV cap on one call in week three. The cap had been updated in the admin config; the voice agent’s eligibility-check tool was reading from a cached copy that was 12 minutes stale. We rebuilt the tool to fetch live every call. We added a unit test that asserts cache TTL is zero for eligibility reads.

The enrichment agent occasionally chose the wrong county on rural addresses. We added a disambiguation step using FIPS codes from a USPS lookup, which fixed the long-tail cases.

The transcript QA scorer drifted twice in the first month — it started rating transcripts artificially harsh after a model update. We pinned the QA model version and ignore the auto-update channel.

What stuck

All four components are live, six months in. The lead-to-close median is at 7 days, down from 14. The same team — twelve people, no new headcount — is processing roughly 2.2× the lead volume of when we started.

The handoff document is in their repo: .claude/patterns/ for the AI-augmented portion, .claude/lessons/ for the four incident retros from the rollout. The next engineer to touch this code — fractional, in-house, or otherwise — won’t have to reverse-engineer the decisions we made.

That’s the shape of a finished engagement.

If you operate a HEI / HEA / SLB platform and want to see how this compresses your cycle, see the home equity engineering page for the full mechanism.


Send a brief if you’re an HEI / HEA / SLB operator and any of this rhymes with your funnel.

Tags
home-equityvoice-aienrichmenteligibility
// FAQ
How do you avoid AI fabrication in enrichment?
Anti-fabrication is enforced at the prompt and at the data layer. The agent is explicitly trained to return 'unknown' when confidence is low. Every field carries a confidence label; values requiring high confidence must agree across at least two of three independent sources or fall into a human review queue.
What broke during rollout?
Three things, all caught: a 12-minute cached eligibility read that quoted a stale CLTV cap (fixed: zero-TTL on eligibility reads + unit test asserting it); rural-address county disambiguation errors (fixed: USPS FIPS lookup); transcript-QA model drift after a silent auto-update (fixed: pinned model version).
Could a smaller team adopt this without rewriting their core platform?
Yes for voice intake and enrichment — both wrap your existing dialer and CRM. The eligibility-config refactor is the biggest lift because it touches every calculator. We typically scope that as Build phase work after the Audit identifies the drift pattern.
// RELATED READING

More on this thread.

// BRIEF US

If this reads like your problem, send a brief.

Two business days to first reply. No retainer pressure. Worst case you get a pointed question back.

Send a brief →