Skip to the case study

Follow-up recovery · a Bluerook workflow product

Finding the leads the CRM quietly forgot.

Deterministic checks, privacy-bounded context, a human digest. It finds the gap, prepares the review, and stops short of ever sending a message.

Inactive package Credential-free Synthetic fixtures

01 · The workflow itself

Rules you can read.
A refusal you can see.

  1. Six records, none reviewed

    Not because anyone is careless. Because no system was watching. The detector runs on a schedule against the CRM's own fields, and it starts from zero assumptions.

  2. Deterministic checks, not a hunch

    No owner. Overdue. No next action. Rules a founder can read and argue with, applied after validation so unusable input never reaches a verdict.

  3. Context is bounded before review

    Each flag becomes a digest entry a person can decide on. Phone numbers and email addresses are excluded from the analysis context by construction, not by policy.

  4. Failure has a path, and Send stays cut

    A missing column stops the scan, alerts the owner and changes nothing. And the outreach node is disabled on the canvas itself: detection never becomes a message.

Reconstructed view · public-safe
Follow-up gap detector · canvas 01 / 04
follow-up-gap-detector.json ● Inactive EditorExecutions
ScheduleNightly scan
{}CodeValidate
Switch · 4Gap rules
{}CodeBound context
EmailReview digest
HumanDecide
QueueExceptions
DisabledSend follow-up
62 nodes in the real export Runs on a schedule · 6 synthetic records · outreach disabled

02 · Now run the review

Scan. Inspect. Approve.
Never send.

The prepared dataset mirrors the package test fixture: six synthetic records, five gaps, one healthy record that must stay untouched. Prepare context for a flagged lead and approve the task — the sent counter is the point of the exercise.

Mirrors the package fixture · no outreach
Review desk · 6 synthetic CRM records

Records

L-018Awaiting scan
L-027Awaiting scan
L-043Awaiting scan
L-047Awaiting scan
L-049Awaiting scan
L-052Awaiting scan
0 flagged · 0 healthy excluded · 0 messages sent

Selected record

L-018Amina Reed
ReasonNo next action
Silent for94 days
ConsentEmail permitted
SuggestedConfirm whether the spring programme is still relevant.

Review package

Prepare a privacy-bounded context summary before drafting.

No outcome logged.

Break it

No failure active.

Verified state

Current export, current count.

Supporting detail comes from the current package and its passing synthetic harness, not from a headline.

Canvas 0 operational nodes in the real export Plus 17 presentation notes · 28 code nodes syntax-checked
Fixture 0 flagged of six records; the healthy one excluded Healthy, missing-column and invalid-date cases exercised
Privacy 0 contact fields reach the analysis context Email and phone excluded by construction
Status 0 messages sent, ever, by design Inactive · credential-free · connectors disabled

No gap disappears, no healthy record is disturbed, and nothing leaves without human approval.