Watches every open deal in the CRM and catches the ones quietly going cold: no next step scheduled, untouched for months, lost without a reason, or duplicated.
One full weekly digest per team — with a trend line, so improvement is visible (“no-next-step: 88% → …”). Every number is a door: click it and the exact list opens in the CRM or BI tool.
Verified live: of 635 open deals, 559 had no next step, 240 were frozen (untouched 180+ days) — including some of the largest deals in the company sitting unassigned in “New”. Nothing was even scheduled: overdue activities = 0. B2B cycles are long by nature, so the loop measures neglect, not slowness.
Before the sales week starts
Stages, activities, teams, values, edit dates
No-next-step, untouched tiers, lost-no-reason, duplicates
Counts, deltas vs last week, worst offenders by value — every number clickable
“Schedule follow-ups on these 12?” — applied only after Approve
For implementers and the technically curious. The full build sheet — verified queries, thresholds, and build notes — lives on the specs page.
| System | Role in this loop |
|---|---|
| Odoo 19 CRMread-only connection | The live CRM. The loop reads deals, activities and teams through a read-only connection — writes are technically impossible on this credential. |
| Postgres “loops” schemareporting database | A small dedicated schema where loops keep snapshots and history that need SQL (week-over-week diffs, mirrors for drill-down links). Scoped role; Metabase can read it for the clickable aggregate links. |
| Metabasebi.huxapps.com | The BI layer over the warehouse. The loop runs its SQL through Metabase's API, and every number in the digest links to a live, clickable Metabase list so you can drill into the exact records. |
| Hermesagent runtime on our server | The scheduler that wakes the loop up. Each loop is a cron job under a Hermes profile; the planned bizops profile will host the business digests (IT loops run under vpsops). |
| Healthcheckshealthchecks.huxapps.com | The dead-man's switch. The loop pings it only after a clean run — if the loop dies or errors, the ping stops and Healthchecks raises the alarm independently. This is how 'never silent' is enforced by machinery, not promises. |
| Email renderer + gwsrender_email.py | All digests pass through one shared renderer: Huxberry-branded HTML, tables for repeated rows, a coral 'needs your response' box when the loop has questions, and an arrow link on every record. Sent from the loops mailbox via the Google Workspace CLI. |
| Loop chassisloop_common.py | Shared plumbing every loop reuses instead of reinventing: state files, run-over-run diffing, Metabase drill-down link building, quiet-on-green notify logic. |
| odoo-write gatethe only write path | Approved fix batches go through a separate, scoped write skill — per-batch approval, never silently. The read credential physically cannot write. |
| Model / brain | What it does here |
|---|---|
| None at run timedeterministic script | A normal cycle is a plain Python script — no AI tokens are spent unless a diagnosis or judgment step is actually needed. AI wrote the script; the script does the rounds. |
| GPT-5.5 via Codexthe bulk-work model | Wrote and maintains the mechanical parts — SQL, diffing, digest assembly. Effectively free on our existing subscription, so routine cycles cost almost nothing. |
| Claude Opusthe judgment model | Reviews alert wording, thresholds, and anything a human will read and act on. Post-Fable, Opus owns everything that ships. |
| Claude Fablethe designer (retired) | Designed this loop's spec and encoded the judgment as thresholds and checklists before its retirement on 8 July 2026 — so cheaper models can run it without Fable-level reasoning. |
Weekly snapshot of every lead in the loops schema (1,380 at last run) — powers week-over-week deltas, the trend line, and the drill-down links.
Weekly branded email per team; open questions consolidate into one coral “needs your response” box, numbered so a one-line reply answers everything.
Read-only CRM credential. Batch fixes are proposals until a named person approves; each batch is approved separately. Duplicate-rate gate (<5%) guards downstream marketing loops.