Mycroft Update on AI Vendor Tracker
A week of debugging the Mycroft vendor tracker turns up five different failures, all traced back to one habit: nobody checked the AI's evidence against the source.
An AI system that fails loudly is easy to catch. One that fails quietly, producing confident, plausible-looking output that happens to be wrong, is much more dangerous, because nothing about it looks broken. Muskan, a Humanitarians AI Fellow working on the Mycroft vendor tracker, spent a week finding exactly that kind of failure five separate times, and every one of them traced back to the same root cause: an assumption nobody had actually checked.
Confidently wrong five different ways
The week's bug list included empty summaries, an invented executive departure, and a tracing system that logged nothing while appearing to work. On the surface these look like unrelated problems in different parts of the system. But each one came down to the same pattern: something in the pipeline assumed a piece of evidence was present, correct, or being captured, when it wasn't, and nothing in the system was set up to catch the gap.
The headline trap
The first bug was that summaries were coming out empty. The cause was that the AI was writing from the headline of a filing alone, while the actual filing text sat unused in the database the whole time. Once the real filing text was passed into the model, the difference was immediate: a generic line like "an officer change may indicate a shift" became a specific, accurate summary naming the actual executive and role involved. The model wasn't incapable of writing a good summary. It simply never had the real evidence in front of it.
The AMD hallucination
The second bug was worse than an empty summary; it was a wrong one. Every filing of a certain type opens with the same boilerplate language, "departure of directors or certain officers." The AI saw the word "departure" in that boilerplate and reported an executive departure for an AMD filing that was actually an equity plan amendment, not a departure at all. The fix was to strip the boilerplate before the model ever saw it, after which the AMD filing was read correctly. This is a sharp illustration of why passing raw evidence to a model isn't enough on its own; the model also needs to be aimed at the part of the evidence that actually matters.
Fixing the code without fixing the data
Correcting the bug in the code didn't automatically correct the data already collected, because the collector was built to skip anything it had already seen matched on the headline. That meant the bad rows from before the fix would have stayed wrong indefinitely. The solution was a backfill script that rewrote the affected rows in place, running in dry-run mode by default and saving every original value before overwriting it. Eight rows were corrected this way, with nothing deleted and a full record of what the data looked like before the correction.
Silent failures in tracing
The last bug was the most dangerous because it was invisible: tracing appeared to be working fine but was actually logging nothing. A broad catchall error handler had been silently swallowing the underlying error. Fixing that catchall uncovered a second, more serious bug that would have crashed brief generation outright if it had gone unnoticed. Both were shipped together and verified by fetching the trace back from the server to confirm it was actually recording data, rather than trusting that a system printing no errors meant a system with no errors.
The lesson: verify evidence against the source
Five different bugs all reduced to the same failure of verification: an assumption that the model had the evidence, that a fix had reached old data, or that a silent system was actually working. The practical rule that comes out of this is simple to state and easy to skip in practice: take any number or summary an AI system gives you and ask what real evidence it's based on, and whether that evidence has been checked against the source. If you can't point to the evidence, don't ship it.
Key takeaways
- Empty AI summaries were caused by the model writing from headlines alone while the real filing text sat unused in the database.
- An AI hallucination reported a false executive departure at AMD because the model reacted to boilerplate legal language rather than the filing's actual content.
- Fixing a bug in code does not fix data already collected; a dry-run backfill with saved originals corrected eight affected rows without losing history.
- A broad catchall error handler was silently swallowing a tracing error, masking a second bug that could have crashed brief generation.
- The unifying lesson across all five bugs: verify that the AI's evidence actually supports its output before trusting or shipping it.
Try it yourself
Take one number or summary your own AI system produced recently and ask what real evidence backs it up, then check that evidence against the original source. This is part of the ongoing work from Humanitarians AI Fellows on the Mycroft financial AI project, where catching this kind of silent failure early is treated as the cheapest insurance available against shipping wrong data.
Chapters
- 0:00Intro: Confidently wrong five different ways
- 0:20The Headline Trap: Why the AI ignored the actual filing text
- 0:45The AMD Hallucination: How boilerplate text invented an executive exit
- 1:10Fixing the History: Why code updates didn't reach the old data
- 1:35Silent Failures: The danger of broad catchalls in tracing
Full transcript(auto-generated, with timestamps)
Intro: Confidently wrong five different ways
[0:00]Hey, I'm Muskin. This week my vendor tracker was confidently wrong five different ways. Empty summaries and an invented executive departure tracing that logged nothing. Everyone came down to the same thing. An assumption nobody checked. First, the summaries were empty. The AI wrote from the headline alone while the real filing text sat
The Headline Trap: Why the AI ignored the actual filing text
[0:22]Unused in the database. I passed the filing in. A generic "An officer change may indicate a shift" became "The departure of A.J.K. Puri, head of worldwide field operations." Worse, it invented a departure that never happened. Every filing of this type opens with the same boilerplate, "Departure of directors or certain officers." The AI saw the word departure
The AMD Hallucination: How boilerplate text invented an executive exit
[0:45]And reported one for an AMD filing that was really an equity plan amendment. I stripped the boilerplate. AMD reads correctly now. Then, fixing the code didn't fix the data. The collector skips anything it's seen matched on the headline, so the bad rows stayed. I wrote a backfill to rewrite them in place, dry run by default, saving every original. Eight rows corrected, nothing deleted,
Fixing the History: Why code updates didn't reach the old data
[1:11]And tracing looked fine, but logged nothing. A broad catchall had been swallowing the error silently. Fixing it uncovered a second bug that would have crashed brief generation outright. I shipped both and verified by fetching the trace back from the server. Five bugs, one lesson. Every one was an assumption nobody checked that the model had the evidence, that the fix reached
Silent Failures: The danger of broad catchalls in tracing
[1:35]The old data, that a system printing no errors was working. Don't assume, verify. Your turn. Take one number or summary your AI gave you and ask, "What real evidence is this based on, and have I checked it against the source?" If you can't point to the evidence, don't ship it. It's the cheapest bug insurance there is. Confidently wrong. More fixes next week. Humanitarians AI.
More from Mycroft Financial AI
3:01Week 2 of Mycroft's Private AI Valuation Agent: Scaling to 80 Million Rows of SEC Data
5:48Executive Summary of Mycroft
2:45Anjana's update on FinBERT: Why General AI Fails to Understand the Language of Money
3:54Mycroft Update: Do Congressional Stock Trades Actually Beat the Market?
2:44Mycroft Update by Anjana: ECIS Episode 2
3:27