jn-bot
An audit agent that reads one account end-to-end, cites its evidence note by note, and throws out its own findings when it can't ground them.
It reads one customer's account in a roofing company's CRM and surfaces the few things a manager should actually act on — overdue money, a stalled job, the wrong person on a file — each tied to the exact note it's citing. It can only read the CRM; it never changes anything.
Run it live
embedded · interactiveHow it works
tap a node · drag + zoomThe ideas behind it
tradeoffs, statedThe agent reads one account's data through a GET-only wrapper and never touches a write endpoint — no status changes, no notes, no task creation, nothing pushed back to the CRM. It identifies risk and the evidence behind it; a person decides and acts inside the CRM through normal channels. That boundary is enforced in the wrapper, not left to a prompt or a setting someone could flip under deadline.
Every concern the audit agent emits has to cite a real note id from that account's bundle — or the deterministic Tier-A header, flagged as such. A separate pass checks each citation against the actual input set; a concern that cites an id the model invented is dropped, and any recommended action that leaned on a dropped concern is cascade-dropped with it. The model that writes the finding is the worst judge of whether it's grounded, so grounding isn't its job.
A cheap, fast model handles the ~70% of accounts that are routine; a stronger model is routed in only where the file earns it. The router is real infrastructure — the open work is the routing strategy: knowing which accounts need the careful reasoning and which don't. That's account-domain judgment, not a bigger GPU.
A second, independent model audits the same account in parallel. Cross-model agreement is the quality signal: where two models land on the same risk, confidence is high and it goes on the desk; where they diverge, that account jumps to the top of the curator's review queue. The point isn't a perfect bot — it's knowing which of its outputs to check first.
The honest version of this tool isn’t “the bot caught everything.” It’s that the bot reads every note on every stalled file every day — which no manager has time to do — and puts the few that matter on the desk with the evidence attached. Where it gets severity wrong (it will over-escalate a routine handoff on a closed-and-paid file, for instance), that’s the curator’s job to catch: right observation, wrong framing. The system is designed so that’s a correction, not a silent error — the cited evidence is right there to check.
The demo above is the owner portal with every customer and team name anonymized at build time. The renderer is fail-closed: if a known real name survives the scrub, it aborts rather than publish. That’s the same discipline this whole site runs on.