Field notes · AI security

← Writing

27 leads, 13 qualified, 5 nurtured, 0 booked: the funnel between a website and a call

Grey Ridge Signals Group · August 2026

27 leads, 13 qualified, 5 nurtured, 0 booked: the funnel between a website and a call

Grey Ridge Signals Group · August 2026

Every month our metrics harness writes one line into the evidence file. The August line reads: 27 leads, 13 qualified, 0 bookings, 5 nurture emails sent. The first three numbers are produced by machines — a form, a triage heuristic, a Postgres query, an API call. The last one, the number that actually matters, is still zero. This article is about reading that line: what each stage of the funnel does, what the current shape of the numbers says, and why the final stage is the only one that cannot be automated.

1. The stages, and the machinery behind each one

The funnel between a visitor and a booked intro call has four stages, and each one maps to a piece of infrastructure we can point at:

  • Lead capture. A Turnstile-protected form posts to /api/contact on the Worker, which rejects malformed payloads before they ever reach the workflow engine. A rejected POST never becomes a lead — the webhook is a gate, not a mailbox.
  • Triage. The Worker classifies every submission as SPAM, NURTURE, or QUALIFIED using a scoring heuristic hardened against prompt injection. This is the stage where the false-positive rate gets measured, because a triage that mislabels real inquiries is a funnel leak that looks like a working pipeline.
  • Qualification. QUALIFIED leads land in the Postgres leads table with a score and a reason, and the owner gets notified. A qualified lead is one the machine is confident a human should talk to.
  • Nurture. Leads that don't qualify don't disappear. The nurture drip waits 48 hours and sends a follow-up email, then marks the row follow_up_sent so the count is real. A skip is not a dead end; it is a delayed conversation.
  • Booking. The last stage is a human act: the lead books on Cal.com, and the monthly harness counts it from the Cal.com v2 API.

2. What the August line actually says

The harness that produced the line is worth describing, because the numbers are only as trustworthy as the measurement. automation/monthly_metrics.py counts leads by month-bucketing received_at in the leads table, counts bookings from GET /v2/bookings, and counts nurture sends from follow_up_sent rows. Three details shaped the August line:

  • Exclusions are explicit. Test and probe submissions are excluded by rule, so the 27 is real visitor traffic, not our own E2E runs. The raw pre-exclusion count was 30; the difference is our own testing, which is exactly what an evidence file should show.
  • QUALIFIED is a strict subset. NURTURE is the triage catch-all default, so "Q+N" equals total by construction. Counting QUALIFIED alone is the only honest metric, and 13 of 27 is what remains.
  • The booking count is a real API call. The Cal.com v2 route is versioned 2024-08-13 (the 2024-09-04 value in older docs 404s), Cloudflare blocks urllib's default user-agent, and bookings live under data[].start. Getting this number right took the same kind of adversarial poking as the rest of the pipeline — the measurement had to be fought for.

So the line reads: 48% of real leads qualified, 5 nurture sends went out to the rest, and nobody booked. That shape is not a failure of the pipeline; it is the pipeline working exactly as designed. The machine's job ends at the boundary of a human conversation, and the machine has done its job.

3. The last mile is the only un-automatable stage

Everything upstream of the booking is automation with a measured error rate. The booking itself is a decision two humans make, and no amount of pipeline engineering manufactures it. What the August line says about the last mile is this: the constraint is not the plumbing, it is traffic. Twenty-seven leads in a month is a trickle, and the site has no indexing confirmation and no analytics — we cannot even see where the trickle comes from. A funnel converts its input, and the input is the binding constraint.

This is the honest reading of a zero: it is not evidence that the pipeline failed, it is evidence about where the next investment belongs. The stages that can be measured are measured. The stage that cannot be automated — the booked call — is the milestone, and it is now the only number left to move.

4. What moves the number

Two things, in order. First, traffic: indexing the site, understanding where visitors come from, and publishing on a cadence (this article is part of that cadence) until the 27 leads becomes a number with two digits' worth of real volume. Second, conversion of the leads we already have: the nurture drip is one month old and has already fired five times, and the 13 qualified leads who did not book are the most valuable asset the funnel has produced.

The metric that matters most next month is not the lead count. It is whether any of the 13 qualified people — or the 5 who got a follow-up — sat down for a call. The pipeline's job was to make that possible without leaking a single real inquiry along the way. It has. Now the funnel's output depends on what happens in a conversation, which is the one stage no machine should touch.

← Back to Writing
Book a call →
from-lead-to-booked-call