The answer gate that divided confidence by word count
Sadyr's confidence gate divided retrieval scores by word count; every test passed, every multi-word question abstained. Found and fixed in one day.
Read more »Reading this with an AI? Start at /for-agents/ (orientation) or /llms.txt (index).
Skip to contentSadyr is a governed knowledge platform. It answers people — and, as the interface grows, AI agents — only from approved sources, with the source attached every time. On a revenue deployment, it also runs the sales workflow on top of that: qualifying the visitor, routing the lead, and handing a sales rep a briefed handoff. Answering from approved sources is the platform; running a sales workflow is one thing it does on top of that platform, not what it is.
Status, exactly: the platform is live. It runs in production and has since 30 June 2026. Since late September it also answers visitors directly on Adroit’s own website, from 33 approved public documents published out of Content Ops. There it runs as the sales version: it answers, and it can qualify a visitor and offer a call. Since 27 September a second, answer-only version runs on this site: no scheduling, no contact collection, just an answer with the page it came from, or “I don’t know”. On Adroit’s site, the other 17 documents in that knowledge base were deliberately held back, and it declines to answer from them. It also runs two working demos for prospects: a plan explainer for an insurance provider, built on sample program content, and a rulebook assistant for a national amateur sports league’s managers, built on 98 real documents behind a sign-in.
Most website chatbots will answer anything, which is the problem. A revenue agent that invents a price or a policy is worse than no agent. Sadyr is built on one principle: own the center; wrap, rent, or swap the edges. A small kernel owns the business logic (qualification, routing, scoring, policy, audit). The CRM, the scheduler, the chat channel and the knowledge store sit behind adapters, each with a mock. HubSpot is the first adapter, not the spine. Each client is one configuration file.
That’s why one platform can serve both demos. The public insurance explainer and the gated managers’ assistant differ by configuration: documents carry an audience, surfaces carry a policy, and the public surfaces decline cleanly on manager-only content.
Blueprint to production in twelve days: first commit 18 June, live 30 June, 63 commits on eight working days. Day one was the blueprint, the scaffold and the first sprints. Claude Code writes the code, tests and documentation; I direct, decide and validate. It’s three apps (API, operator console, website widget) and 17 packages.
Tests run on mocks by default, so I also built a headless evaluation battery that pressure-tests the hosted agent with realistic conversations.
The answer gate that divided by word count. Sadyr decides whether it’s confident enough to answer. The gate divided the best retrieval score by the number of words in the question. Against the mock, which returned a raw count of matched words, that looked right, and every test passed. With real embeddings, real scores around 0.4 to 0.6 became 0.03 to 0.05, under the 0.62 threshold, and every multi-word question abstained. Found on the first live run. Fixed the same day: 15 lines added, 6 removed.
The booking that wasn’t. My first chat on staging got a confident “You’re booked” with no email, no calendar and no choice of time. The rule since: a scheduler that isn’t real never confirms a meeting, and nobody gets booked without leaving an email. Booking now runs through HubSpot Meetings. It offers real open slots in production; the first real booking is still waiting on a CRM permission fix, so I’m not calling it live yet.
| Figure | What | Source |
|---|---|---|
| 12 days | first commit to production | git log; claims ledger C-01 |
| 2,816 | automated tests (recorded, not re-run for this page) | Sadyr README / architecture §7, 2026-09-23 |
| 200 of 234 | cases passing in the latest standard evaluation battery | state/repo-state.md, run 2026-09-22 |
| 33 | approved public documents it answers from on Adroit’s site | manifest B-02, 2026-09-21; updated 2026-09-28 per page-pointer sync |
| 2 | working demos | claims ledger C-05 |
More on the receipts page.