Sentinel
A late invoice, a cancelled meeting, and a shorter email reply are each unremarkable. Together, over three weeks, they are a client who has already left — and no consultancy has a system watching for the combination.
Built because the cancellation email is always the last signal, never the first.
Watching twenty client relationships simultaneously — email tone, meeting cadence, invoice timing, the feeling you got on a call — requires more continuous attention than any partner can give it alongside actual client work. So nobody watches continuously. Everyone reacts. The gap between a relationship quietly deteriorating and a partner knowing about it is where six-figure engagements are lost.
Overview
Sentinel is a five-stage autonomous pipeline that monitors every client relationship in a consultancy's portfolio. It ingests real communications, classifies them into structured signals, scores each account 0–100, diagnoses the ones drifting, and drafts recovery or expansion outreach. Nothing sends automatically — every draft lands in a review queue. The system's job is to do the noticing and the diagnosing, not to act unilaterally on a relationship.
The Compound Pattern Nobody Holds in Their Head
Detecting that three small negative signals form one serious risk pattern requires someone to hold all of them in their head simultaneously, across every active account, continuously. This almost never happens until it is too late. The tools that exist don't close the gap either: Gainsight and Totango are built for SaaS companies with product usage telemetry — a consultancy has none of the data model those tools assume, at $50K a year and a six-month implementation. A CRM records what happened; it has no predictive signal detection and no compound-pattern reasoning. The actual incumbent is a spreadsheet and someone's memory. So Sentinel scores every client 0–100 on every run and classifies them healthy, drifting, at-risk, or expansion-ready — with score swings over 20 points automatically damped unless a genuinely concerning event justifies them. A system that cries wolf gets ignored, and an ignored alert is worse than no alert.
Five Agents. One Shared State. Zero Invented Signals.
Every agent reads from and writes to a single shared state object, so each stage builds on what the last one concluded. Agent 0 ingests real email, calendar, and manual notes, then resolves which client each one belongs to — exact address first, then domain, and anything ambiguous goes to a human-reviewed queue rather than a best guess, because a wrong attribution silently poisons two health scores at once. Agent 1 classifies each event's sentiment and concern level, citing verbatim evidence. Agent 2 scores. A conditional router sends only drifting and at-risk accounts to Agent 3 for root-cause diagnosis. Agent 4 drafts the outreach. Work is split across two Groq models by task complexity — an 8b model for high-volume summarisation and classification, a 70b for anything requiring genuine reasoning — which roughly triples effective daily capacity and means a rate limit on one no longer blocks the other.
Whatmadeitwork.
If I rebuilt it: I'd start with real ingestion instead of seeded signals. The intelligence layer — orchestration, prompt design, human review — was sound from early on. The missing 60% was unglamorous engineering: real data in, score stability, error honesty, authentication. And BCC ingestion still only captures our side of the thread, so true silence detection stays weak until full-mailbox OAuth lands.
ThreeofSevenAccountsatRisk.FoundBeforeAnyoneSentaCancellationEmail.
Sentinel is deployed — frontend on Vercel, FastAPI backend on Oracle Cloud behind a Cloudflare tunnel, ten tables on Supabase with row-level security throughout and JWT auth on every mutating endpoint. On the live Apex Advisory Group demo portfolio it flagged three of seven active clients at risk and quantified $565,000 in revenue exposure. The run that mattered was Crossroads Infrastructure, a $175K retainer: three genuinely real events sitting in the ingestion table — a calendar no-show, a note from a chance encounter at a forum, a logged follow-up call. Agent 1 classified all three as negative and concerning, citing the specific evidence. Agent 2 scored the account 0 out of 100. Agent 3 diagnosed relationship breakdown against dated signals rather than inventing a narrative. Agent 4 drafted a re-engagement email and call-prep notes. Thirty-three seconds, no errors. That run is the dividing line in this project between a demo that looks intelligent and a system that actually is — because every one of those three things genuinely happened, was written by a real account manager, and traces back to source.


