the loop Sense Signal

Signal

Every client call becomes a structured fact: who called, what they needed, whether they were served, and what dollar value walked out the door.
partial

What it is

Signal (the repo is named vetcall-insights) is an automated platform that listens to every phone call that comes into a DE client practice and tells you what happened. Every call from CallRail — the phone-tracking platform that all DE practices already use — flows into Signal, where an AI reads the transcript and asks a precise set of questions: Did the caller book an appointment? If not, why not? What was the urgency? What is the estimated revenue that just left? That analysis gets packaged into a daily morning email for each practice — one version for the front desk, one for the practice manager — and into a web dashboard where anyone can dig deeper. Signal currently covers 28 active practices generating roughly 167 calls per day, with 180 practices loaded in the system and ready to activate.

Why it exists

DE's clients pay for marketing but rarely engage with the raw data their marketing generates. CallRail produces transcripts and recordings that almost no one reads — the data is too dense, the volume too high, and the useful signal buried. That leads to churn: practices do not see the value, so they leave. Signal solves this by collapsing a day's worth of calls into one clear, actionable morning report. The goal is not just retention — it is to show practices the dollar value of calls they are losing so they call those people back. The math is stark: a practice missing 15 to 20 appointments a month at $200 a visit is losing $3,000 to $4,000 monthly. Even recovering 25 percent of that pays for the product 2 to 7 times over.

How it works

Signal runs on a daily three-step pipeline, kicked off automatically each morning by a scheduled job. Step one is ingestion: at 8 AM UTC, the system pulls every call from the previous day out of CallRail's API — auto-paginating through all 250-call pages — and stores each call in the database, including the full transcript and recording link. CallRail also pushes calls in real time via webhooks roughly 20 minutes after each call ends, so the database is actually being updated throughout the day, not just overnight; the morning batch is a safety net that catches anything the webhooks missed.

Step two is analysis. Four batches of calls are processed by the AI across the morning, with each batch sending transcripts to Claude Haiku — Anthropic's fast, low-cost model — through a technique called tool-calling. Instead of asking the AI to write a free-form summary, Signal gives it a strict form to fill out: 27 named fields, each with defined options. Things like disposition (Answered, Voicemail, Abandoned), appointment booked (Yes or No), missed opportunity type (None, Price Shopping, Fully Booked, Agent Did Not Offer, Referred, or Other), a one-line summary, a coaching tip for the staff member, and a ready-to-use callback script. The AI's output costs roughly half a cent per call.

Step three is compilation. At 11 AM UTC, the day's analyses are rolled up into a report for each practice: total calls, booking rate, missed revenue, and a callback queue sorted from highest dollar value to lowest. That report drives two emails — one for the front desk with a focused list of who to call back plus scripts, and one for the practice manager with the full performance picture. Both land before 7 AM practice time. A web dashboard lets anyone log in and explore history, trends, and individual call detail including transcripts and recordings.

The parts

CallRail Integration — Authenticates against CallRail's API to pull all calls for every practice each morning, requesting the transcript, recording, source, and lead score fields. Also receives real-time webhooks from CallRail after each call, validated with a cryptographic signature to prevent spoofing.
AI Analysis Engine — Sends each call transcript to Claude Haiku 4.5 using tool-calling — a structured form rather than open-ended summarization — and extracts 27+ fields per call. A sanitization layer corrects common AI output quirks before anything hits the database. Accuracy after three rounds of prompt tuning with real calls: 93 percent on missed opportunity classification.
Revenue Calculator — After the AI classifies a call, a separate calculator estimates the dollar value of any missed opportunity using per-practice pricing maps combined with assumptions about average client lifetime value.
Dual Email System — Generates two role-targeted emails per practice: a CSR front-desk email with a focused callback list and AI-written scripts per caller, and a PM practice-manager email with the full KPI picture. Email buttons let staff record what happened when they called back, closing the loop on follow-through.
Web Dashboard — A web app where DE staff and practice managers can log in, browse daily reports, explore individual calls with transcript and analysis side by side, and track trends over time. Clients see only their own practice's data; DE staff see everything.
Human Review and Feedback Loop — An internal review tool where DE staff can rate each AI analysis as accurate, partially accurate, or inaccurate, and submit field-level corrections that inform future prompt tuning. A separate demo feedback system captures structured reactions from practice demos.
Dual-Write to Heart — Every analyzed call and compiled report is fire-and-forget copied to Heart (DE's central data platform). If Heart is unavailable, Signal keeps working normally. Supabase is always the primary store; Heart is the secondary target for company-wide aggregation.
Automation Toggles — A global kill switch plus a per-practice flag in the database. Both must be on for a practice's calls to be analyzed automatically. This means DE can hold 180 practices in the system at zero cost and turn them on one by one as each is ready for the product.

Where it fits

CallRail — Pulls yesterday's calls via API each morning; also receives real-time post-call webhooks. Source of all raw call data and transcripts.live
Anthropic (Claude Haiku 4.5) — Sends each transcript for structured analysis via tool-calling. Returns 27+ fields per call including missed opportunity type, appointment status, urgency, revenue signal, and a coaching tip.live
SendGrid — Delivers the CSR callback email and PM performance email to each practice. Code is complete; blocked by sender domain authentication not yet configured in SendGrid.designed
Heart (de-heart-api) — Dual-writes every analyzed call and daily report to DE's central Aurora database. Code is live and deployed; currently returning 404s due to a Heart staging environment configuration issue.designed
Supabase (PostgreSQL) — Primary database for all Signal data: calls, analyses, reports, feedback, email logs, and callback tracking. Row-level security ensures each practice only sees its own data.live
GitHub Actions — Orchestrates the daily pipeline: fetch then analyze in four batches then compile and email. Also runs the Monday weekly recap.live
Vercel — Hosts the Next.js web application and all API routes. The web dashboard, all cron endpoints, and webhooks run here.live
Its job in the loop: Signal is DE's primary ear to the ground for what is actually happening inside each client practice, in real time. It ingests the raw events of practice life — phone calls — and converts them from audio and transcript into machine-readable signals that the rest of the company can act on. Without Signal, DE sees a call volume number. With Signal, DE sees missed opportunities, staff behavior patterns, competitor mentions, urgency levels, and revenue at risk — practice by practice, call by call, day by day. That is exactly what SENSE requires: reality, not summary.