One week of raw collection, and what survives it
ILLUSTRATIVE SHAPE · ONE COMPETITOR
Raw collection is a fire hose. Alerts and mention trackers forward everything that names a company, unverified and unclassified. Every raw candidate goes through four stages, and a candidate that fails any of them does not become a signal. The counts below are illustrative of the shape, not a figure from your workspace.
The last row is not attrition — it is synthesis. Ninety-six verified signals become nine implications, and each of those nine has to cite the signals it rests on or it never gets stored.
The four gates, and what dies at each one
Then the citation rule
Verified signals are facts about what happened. The layer above them is analysis: what a set of signals implies, and what you might do about it. That layer is where a language model can be most useful and most dangerous, so it is the layer with the hardest rule.
Each implication must reference the signals it rests on. Those references are checked against the signals that actually exist for your workspace. An implication that cites nothing, or cites something that cannot be found, does not get stored and therefore never reaches a briefing, a digest or the API.
Where the signals come from in the first place — the eight public sources, and the lines we will not cross to collect them — is on the grounding page.
What this looks like on the page
The rule is only visible if the product shows its work. Every implication is rendered with the verified signals it was drawn from, linked to their sources, so the walk from conclusion to evidence is one click rather than a support request.
You can check it yourself
Grounding is only worth something if you can verify it rather than trust it. Every analysis served by the API carries the ids of the signals underneath it, and each of those ids resolves against the signals endpoint. You can walk from a conclusion back to the evidence without asking us.
The same record is reachable over the REST API and a hosted MCP server, so an AI assistant can trace the same path.
# an implication, with the signals it was drawn from curl https://api.vaartahq.com/v1/analysis \ -H "Authorization: Bearer vt_live_..." # then resolve any id in basis_signal_ids curl https://api.vaartahq.com/v1/signals \ -H "Authorization: Bearer vt_live_..."