Inspiration

When an executive retires, the rules they decided by leave with them. Not the files — those stay. What goes is the decision function: the rule they applied four hundred times and never once wrote down, because to them it was obvious.

The clearest example our system found, unprompted, in the reference corpus:

Kestrel's stated risk appetite is a 2% loss ceiling. It appears in every board deck. Across 233 documents, no decision was ever made at it — behaviour splits into two regimes, 37 decisions near 0.64% and 35 near 4.30%, with nothing between 1.14% and 4.00%. The published figure is the average of two different policies and describes neither.

Nobody at that company could have written that sentence. It contradicts a number in every board pack, and it was derived only from the distribution of decisions.

What it does

Tacit reconstructs a departing executive's decision doctrine from the meeting transcripts, decision threads, post-mortems and memos their organisation already has. Their successor inherits a queryable, evidence-cited model of how they actually decided.

It also asks the person. Where the record runs out, Tacit generates the interview from what the doctrine could not settle — 17 questions from 21 principles, each bound to the finding it probes. The answers come back through the same ingestion path as every other document. The doctrine already knew approvals for immediate-delivery merchants fell from 92.3% to 50.0% around 2021-08-11; only the interview says why, and the agent now cites her own words for it.

How we built it

Gemini 3.5 Flash on Vertex AI, agents on the Google Agent Development Kit SDK, Cloud Run, Firestore, Pub/Sub ingestion with OIDC-authenticated push.

The load-bearing decision: models observe and explain, they never count. Every statistic is computed in ordinary code (20 deterministic functions); the specialists may assert nothing absent from their input findings. This is not stylistic — one agent over all findings recovered 2 of 11 planted targets. Eight bounded specialists, each hunting one pattern class and permitted to return nothing, reached 45.5% credited recall.

Discovery is outcome-blind. The model proposes candidate features and labels episodes without seeing which way any decision went, so it cannot reverse-engineer a flattering answer. Arithmetic decides which survive. That is how it independently proposed a variable nobody named — whether a merchant's founder had previously operated at scale — then measured it at phi = 0.51 (27/41 approved when true, 1/14 when false).

Governance is a property of the system, not of the HTTP layer. The web API, the CLI and the MCP server all reach one policy decision point: 13 ABAC rules, deny by default, GDPR and CCPA overlays. Roles are read from the org's membership record on every request, never from the browser. Consent is the precondition for operating at all, and the right to erasure destroys the induced model, not just its sources — deleting transcripts would leave the conclusions intact, because they were never in any single transcript.

Challenges we ran into

The merge could lose a finding silently. Eight analysts' output is consolidated by one model call, and a real changepoint went in and did not come out — with no record of the decision. Every principle now carries the analysts behind it, a deterministic reconciler repairs that attribution wherever the model's claim disagrees with the evidence, and a merge that lost a finding refuses to publish.

An evaluation you run once is a sample, not a measurement. Six runs were steered by single judge passes. Judging one unchanged doctrine five times moved strict recall from 0% to the best figure the project had ever reported. Every number since is quoted with its spread.

Retrieval is lexical, and it bit. The agent searched for 2% and missed a transcript that says "two percent" — the document was indexed and unreachable. Two defects behind one miss: single digits were being dropped from documents and queries, and there was no expansion between numerals and their spelled form.

Consent failed open. A subject with no record inherited a packaged default belonging to the demo subject, and a Firestore read that threw did the same. Absence of a record is not permission; it now returns a refusal that names which kind it is.

Accomplishments that we're proud of

The agent refuses. Where the executive never faced something, it says so, names the nearest analogue, states how the present case differs, and declines to invent a verdict. A confident answer with no precedent behind it launders invention as institutional memory.

And the subject grades their own doctrine: 22 of 22 principles reviewed, 91% judged true, and 65% of those the subject did not know they held. That last number is the only one that shows the system found something a handover document could not carry.

What we learned

Bounded agents beat capable ones. Four tools, a fourteen-step cap, no ability to spawn anything, and a refusal when the record is silent — that is what makes the output checkable. The interesting failures were never the model being wrong; they were a pipeline that read one source while ingestion wrote to another, a default that made a missing record look like permission, and an auditor that reported a loss and published anyway.

What's next for Tacit

Reconciling interview claims against measured behaviour as first-class objects: a stated claim should corroborate a principle, contradict it, or stand alone marked as stated — never quietly become a revealed one.

Built With

Share this project:

Updates

Submission history