A language model will happily tell you that a vessel "likely" went dark to evade inspection. The word likely is doing enormous work in that sentence, and none of it is grounded. Our entire After-Action analyst is built to make that sentence impossible to write without a citation behind it.
The After-Action analyst is the agent that closes a case or a session. It replays the full timeline, identifies the decisions that mattered, benchmarks them against historical base rates, and produces a report a procurement officer can file and a faculty member can sign. The hard part was never the prose. It was making the prose defensible.
The grounding contract
Every agent in insigz inherits the same contract: a claim about the world must cite at least one observation, by ID, or it does not ship. Observations are the atomic unit of our data model — timestamped, geolocated, signed facts produced by an ingestor. They look like [OBS-50412] in the text and resolve to the raw record, its source, and its provenance signature.
The contract is enforced in two places. The agent's system prompt requires it, and a server-side validator rejects any drafted claim whose citations don't resolve to real observations in the tenant. If the model invents [OBS-99999], the draft fails closed and is regenerated. The model cannot talk its way past the validator, because the validator never reads the prose — it reads the citation graph.
The model proposes the sentence. The data layer decides whether the sentence is allowed to exist.
Base rates instead of adjectives
When the analyst wants to say something is "unusual," it has to say unusual relative to what. We keep a canonical layer of historical distributions — AIS gap durations by vessel class and sea state, throughput deviations by cable segment, designation cadence by sanctions list. The analyst queries that layer and writes the number, not the adjective.
So instead of "the vessel suspiciously loitered," the report reads: "the vessel held position for 4h12m; the 90th-percentile loiter for this class in this corridor is 38 minutes [OBS-50118]." The reader does the judging. The agent does the retrieval. That division of labour is the whole product.
The confidence-interval compromise
We wanted every quantitative claim to carry a confidence interval. We could not honestly do it. For many of our derived events the sample is too small or too non-stationary to put a defensible interval on, and a fake interval is worse than none — it launders uncertainty into false precision.
So we compromised. The analyst emits an interval only where the underlying base-rate sample crosses a minimum size and recency threshold; otherwise it emits the point estimate, the sample size, and an explicit "interval withheld — n too small" note. Reviewers told us the honest gap was more trustworthy than a confident-looking band. We agree, and it cost us a feature we'd announced internally.
What the appendix carries
The body of the report is for humans in a hurry. The appendix is for the motivated reader and the auditor. It carries the full reasoning trace: the tool calls the agent made, the observations it pulled, the candidates it considered and discarded, and the prompt revision that produced the final draft. If a faculty member disputes a consequence months later, we can walk it back through events to specific signed observations.
Detect and draft, continuously. Cite every claim. Withhold precision we can't defend. A human signs the artifact — their name is on every outcome.
None of this makes the analyst smarter than the person reading it. That was never the goal. The goal is an analyst that is boring in the right way: it never surprises you with a claim it can't back, and it never hides the work.
