Report: The Zero-Gap

Screen: /dashboard/reports/zero-gapUpdated 2026-09-22For: Staff / caseworker, Founder

What this screen is for

Screenshot of the report zero gap screen at /dashboard/reports/zero-gap, illustrating “What this screen is for”, with numbered callouts: 1. The Zero-Gap.
Figure 1 — What this screen is for.

The Zero-Gap (/dashboard/reports/zero-gap) is the promise clock: every case in the ledger, sorted by where it stands against the first-contact window this house promised when the case came in. This is the one report in the suite that reads live case data rather than a seeded example.

What you see, in the screen's own labels

Screenshot of the report zero gap screen at /dashboard/reports/zero-gap, illustrating “What you see, in the screen's own labels”, with numbered callouts: 1. Promise broken; 2. Crisis today.
Figure 2 — What you see, in the screen's own labels.
  • H1 "The Zero-Gap (The promise clock)."
  • Scorecard tiles, the five promise stages: "Promise broken," "Clock running," "Contacted late," "Promise kept," "Case closed."
  • Table columns: Case · Urgency · Shepherd · Promise clock · Changed.
  • The promise windows, by urgency: Crisis today — 4 hours. This week — 3 days. Soon — 7 days. Not urgent — 14 days.
  • The countdown itself reads "{n} hours/days left" while running, and once broken, keeps counting up: "broken {n} hours/days ago." It never stops or resets.
  • Stage meanings, from the Key: - Promise broken — open, no human contact yet, and the promised window has already closed. - Clock running — open, no contact yet, window still open. - Contacted late — contact IS on the record, but it landed after the window closed. GraceBridge does not file that under "kept." - Promise kept — contact was made inside the promised window. - Case closed — no longer open; still counted so the ledger's own denominator stays honest.

What to do

Screenshot of the report zero gap screen at /dashboard/reports/zero-gap, illustrating “What to do”, with numbered callouts: 1. Promise broken; 2. Contacted late.
Figure 3 — What to do.
  • Read "Promise broken" rows first — they're sorted to the top, because that's the only stage where someone is still waiting past what this house told them.
  • Treat "Contacted late" as a real miss, not a near-success — the report deliberately refuses to count a late contact as a kept promise.

What NOT to do

Screenshot of the report zero gap screen at /dashboard/reports/zero-gap, illustrating “What NOT to do”, with a highlighted region and numbered callouts: 1. DON'T — Case closed.
Figure 4 — What NOT to do.
  • Don't confuse "Case closed" with "off the hook." Closed cases stay on this report so the honest total is visible — the promise clock stopped when the case did, but the case is still counted.
  • Don't read the countdown as pausing. It counts up forever once broken; there's no reset button that makes a broken promise look kept.

When something goes wrong

Screenshot of the report zero gap screen at /dashboard/reports/zero-gap, illustrating “When something goes wrong”, with numbered callouts: 1. that is the denominator, not a summary of it.
Figure 5 — When something goes wrong.
  • No case in the ledger yet: "There are no cases in the ledger yet, so no promise has been made to keep."
  • Everyone's already been contacted: "Nobody is waiting — as of {date}, every open case already has a first human contact on the record."
  • Nobody is currently past their window: "Nobody is waiting longer than we said — as of {date}, all {n} open case(s) that have not been contacted are still inside the window this house promised."