Eleven days. That's how long a research pipeline in our shop returned a clean sheet on a protocol nobody had actually parsed. Nine sections. Consistent headers. A composite risk score sitting in the neutral band. A confidence field that read "high." Underneath, the payload was empty โ zero extracted information points, every substantive field a placeholder. Not a wrong number. No number. The template had rendered perfectly, and that is precisely why nobody looked at it twice.
I've broken enough things in production to know what I was looking at. This wasn't a bad analysis. It was a null wearing the costume of an analysis. In a system that downstream desks read as a green light, a null and a pass are the same object. The parser had choked โ a paywall, an image-only post, an anti-bot wall, take your pick โ and instead of failing loudly, it failed in the one shape a trading desk interprets as "nothing to worry about."
The extraction layer died quietly. The reasoning layer kept talking.
Every research stack in this industry is two machines bolted together. Stage one fetches and atomizes: pull the page, strip the chrome, split the text into atomic factual claims โ an information point is the smallest unit of evidence that survives into reasoning. Stage two consumes those points and produces the nine-dimension output everyone sees: technical positioning, token economics, market structure, ecosystem slot, regulatory exposure, team and governance, risk matrix, narrative position, supply-chain transmission.
The visible artifact is stage two. The load-bearing part is stage one. When stage one returns an empty array, stage two does not stop. It does what language models are built to do: it fills the schema. It produces a document structurally indistinguishable from a real one, with every field marked unavailable โ and a reader who scans structure instead of payload reads that document as complete. The document gets consumed in ninety seconds by someone with a position to defend, and the only thing they check is whether the boxes are filled.
Bear markets make this worse, not better. Content volume goes up as price goes down โ more takes, more threads, more "research" โ while source quality degrades. Paywalls multiply. Projects move announcements into images and video. Scrapers hit rate limits and Cloudflare walls. The extraction failure rate rises exactly when coverage demand peaks, and the failure is silent by default because a scraper returning an empty string looks identical to a scraper that returned a page with nothing on it.
I hit the same shape in 2022, tracing LUNA/UST decimals by hand across three nights because a number in a dashboard looked plausible and was wrong by six orders of magnitude. The data was present. The type was wrong. That's the sibling of this bug: one system returns a plausible zero, the other returns a confident nothing. Both pass every format check you own.
The failure mode deserves a name, because unnamed failures don't get instrumented. Call it null coercion โ the moment a pipeline converts absence of evidence into a default value and lets it flow downstream. Three classes of contamination come out of it, and they get progressively harder to detect.
Identity contamination is the loud one. To write a technical section you must first assume which protocol you're describing. Make that assumption at the top and every downstream conclusion hangs off a subject that may not exist in the source. It's loud because it's falsifiable โ anyone who read the original can catch it.
Data contamination is the quiet one. TVL, unlock ratios, vote participation, market share โ all of these can be filled with industry medians formatted exactly like measurements. Correct shape, fabricated provenance. In my experience this is the single most dangerous output a research pipeline can produce, because it survives every review that checks whether the table is populated rather than where the numbers came from.
Narrative contamination is the slow one. The model infers the topic from whatever is hot this month โ L2, RWA, restaking โ and writes a coherent story about an event that never happened. Nobody catches it until the position is on.
The fix is not a better model. It's a type system.
First, distinguish null from zero at the schema level. "Unavailable" and "evaluated, neutral" must never serialize to the same token. One means the input was missing. The other means the input was present and benign. Collapsing them is a type error, and type errors in risk systems cost money.
Second, put a hard gate at the boundary: if extracted information points number fewer than three, the pipeline returns a terminal INSUFFICIENT_INPUT state and blocks. Not a warning banner. Not a footnote. A blocked flow with a non-zero exit code, because a warning is a suggestion and a blocked flow is a fact.
Third, set a placeholder ratio threshold. If more than 60% of substantive fields are unavailable, the document is invalid regardless of how clean it looks. The nine-dimension template is a schema; information points are the payload. A schema with no payload is not a partial analysis. It's a null.
Fourth โ and this is the one people skip โ instrument the extraction layer itself. Count requests where the information-point array returns empty. Bucket them by cause: empty body, paywall, image-only, anti-bot, PDF parse failure. If any bucket exceeds 40% of failures, that's the one to fix. If total empty-return rate crosses 5%, you have a systemic defect, not a bad afternoon.
Here's why I'm aggressive about this. In 2020 I ran an arbitrage bot on Uniswap V2 that executed 47 profitable trades in 72 hours and then died on a reentrancy bug I never audited. The lesson wasn't "audit more." The lesson was that the contract returned success while the state was wrong. A revert costs gas and tells you the truth. A silent write corrupts state and tells you nothing. In data systems the silent write is the empty array, and it costs more than gas.
Same pattern in 2026, when I wired an LLM agent into my dashboard to filter sentiment against whale flow. Backtested over 500 hours, the agent's flags aligned with subsequent price direction 12% of the time without human verification. The model wasn't malfunctioning. It was confident. Manual refinement cut false positives 40%, and the takeaway stuck: automation doesn't fail by being wrong, it fails by being certain with nothing behind the certainty.
The compliance parallel is exact. A KYC checkbox that logs "verified" without verifying anything is the same object as a risk field that logs "neutral" without a data point. Both are theater with a timestamp. Both get filed, both get signed, both get read by someone who assumes the box meant something.
Here's the counter-intuitive part. The entire industry budgets for the reasoning layer and almost nobody instruments the extraction layer. Teams compare model quality, benchmark prompt suites, argue about which LLM reads a governance proposal better. Meanwhile the marginal return on a smarter model is small compared to the return on simply knowing whether your input was empty.
Run the numbers on that trade. Upgrading from a mediocre model to a good one might move your error rate by a few points. Adding a null check that blocks the pipeline when information points equal zero eliminates an entire error class โ the class where the output is structurally perfect and factually empty. One is optimization. The other is a fix.
The second blind spot is cultural, and it's specific to bear markets. When everything is bleeding, the absence of a red flag gets read as a green flag. A neutral risk score feels like relief, so nobody audits whether the neutrality was measured or defaulted. That's how size gets built on a protocol that was never actually parsed โ not through a bad thesis, but through a blank field that everyone agreed to read as safe.
More analysis is not the answer. Fewer, verified facts beat more, inferred ones every time. Efficiency is a feature, not a bug โ and the most efficient thing a research stack can do is refuse to speak.
Next cycle's edge won't come from a better model. It'll come from null-handling discipline โ the unglamorous plumbing that decides what happens when the data doesn't arrive. Infrastructure outlasts innovation, and this is infrastructure.
So watch for the tell: pipelines that report success with zero underlying facts, dashboards whose confidence field never drops, risk scores that never move off neutral. Those aren't calm markets. That's a parser returning an empty string and a template politely covering for it.
One question to leave you with. If your system came back empty tomorrow, would you know โ or would it just look green?