When we started Undertone, we made one rule before we wrote any code: every sentence the product writes must point to where it came from. Two years later that rule shapes almost every part of the system.
The problem with fluent answers
Language models are good at producing text that sounds right. In most places that’s fine. In investment research it’s a liability. An analyst can’t put a sentence in front of a portfolio manager, or in a published note, without knowing where it came from. If the tool can’t show its source, the analyst has to find it, and then the tool has saved no time.
So we don’t treat citations as a feature. They’re the output format.
How it works
First-party sources only. Undertone reads what companies say and publish: earnings calls, investor days, filings, slide decks and press releases. It doesn’t use news articles, forums or broker summaries as sources, because those are interpretations, and we want you to start from the original.
Every source is addressable. Each call is transcribed with speaker labels and word-level timestamps. Each filing and deck is split into pages and sections. Every chunk the system can use has an address: HLDN · Q3 FY26 call · 00:31:48 · CFO, or 10-Q · p. 14 · Risk factors.
Answers are built from addresses, not memory. When you ask a question, Undertone first finds the passages that answer it, then writes the answer only from those passages. Each sentence carries the address of the passage it came from. Click it and you land on the exact line, with the audio cued up for calls.
No source, no sentence. If the passages don’t answer the question, Undertone says so, and tells you where it looked. “Halden didn’t discuss China demand on the Q3 call; it was last mentioned on the Q2 call at 12:40.” A clear “not found” is more useful than a confident guess.
What we check
We test the system every week on a fixed set of questions answered by our research team, who are former buy-side and sell-side analysts. We measure two things:
Support: does the cited passage actually say what the sentence says?
Coverage: did the answer miss a relevant passage that should have been cited?
Sentences that fail the support check are treated as bugs, not quality issues.
What we got wrong at first
Our first version cited whole documents: “Q3 call transcript”. It was technically true and practically useless, because checking a claim still meant reading 10,000 words. We moved to paragraph-level citations, then to sentence-level for calls, where the timestamp lets you hear the exact words.
We also learned that analysts care about *who* said something as much as *what*. A revenue comment from the CFO in prepared remarks carries different weight from the same comment by the CEO in an unscripted answer. Every citation now includes the speaker and whether it came from the script or the Q&A.
Finally, we stopped merging sources in a single sentence. If a point is supported by both the call and the filing, you get two citations, not one blended claim. It makes answers slightly longer and much easier to check.
What this means for you
You can check any line in a brief in one click.
Compliance can review a note without asking where a claim came from.
When Undertone doesn’t know, it says so.
The same rule applies everywhere the data goes: in briefs sent to Slack, in exports to Excel, and in answers given to Claude or ChatGPT through the Undertone MCP server. The source always travels with the sentence.
