When a number cannot be supported by the books, the honest move is to withhold it, not to estimate it. Here is what fail-closed means for the signals AI.FO computes.
AI.FO team / 2026-08-10
A signal that fires on thin evidence is worse than no signal at all, because a founder acts on it. So the engine is built to withhold rather than guess: where the ingested data cannot support a read, the signal reports as not applicable instead of producing a number that looks precise and is not.
That is a deliberate default. Not every signal evaluates for every company, and which ones apply depends on the business and on what its data can carry. Saying so plainly beats implying that all of them fire for everyone.
Inside a signal, first: several signals only evaluate when the ingested data carries the inputs they need, and report not applicable otherwise. An input that is missing is treated as missing, never as a passing result.
Around the whole engine, second: an independent, fail-closed verifier re-runs the engine every night and has to agree before any narrative can publish. If it cannot agree, nothing ships. The current run's status is public, with figures derived from committed artifacts anyone can recompute.
A read you can trust is one that tells you when it does not know. Every threshold the engine does apply traces to a published methodology, and a constants audit runs in the pipeline to keep that sourcing honest as new signals ship. Fail-closed is what lets the rest of the library be blunt: when a signal does fire, you know the data supported it.