{
  "video": {
    "id": "dZgA6btnb_s",
    "title": "Do Not Let Models Invent Numbers - Vinoo Ganesh, Kepler",
    "duration": 1258,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "dZgA6btnb_s",
    "title": "Do Not Let Models Invent Numbers - Vinoo Ganesh, Kepler",
    "one_liner": "In finance, don't let the LLM write numbers at all: let it plan and point to pre-extracted citations, let deterministic code do the maths, and have a post-processing filter remove any number that can't be traced to a trusted source.",
    "summary": "Kepler CEO Vinoo Ganesh argues that LLMs are 'probability machines' that fail in three ways when they handle financial numbers. They retrieve the wrong source, they pull the right source but the wrong number (unit, scale, period, or even a page number), and they do unreliable mental maths. Kepler's answer is an architecture where 'the model cites the numbers, but never writes them'. Retrieval on TurboPuffer finds the source, human-written deterministic code does the arithmetic, a citation registry types every fact, and a post-processing filter removes uncited numbers. He backs this with eval figures: run natively on Claude or ChatGPT, outputs had 10,981 citations refused, and about 3,810 of those were simply wrong numbers. His conclusion is that plain RAG over a vector database isn't enough for work that needs numerical accuracy and auditability.",
    "key_points": [
      "Three ways numbers go wrong. First, the wrong source, such as Seeking Alpha or a 'random YOLO blog'. Second, the right source but the wrong number: is '17' millions, billions, yen, a 2023 figure inside a 2025 10-K, or the page number? Third, mental maths, because models don't reliably compute growth rates, margins or multiples.",
      "Kepler pre-processed the whole SEC corpus (30+ million documents). It registered 'citations': deterministic numbers pulled from filings, covering revenue, income statements, balance sheets and MD&A text such as 'revenue grew 37%'. He quoted about 20,000 of these, and about 21,000 citations correctly extracted by the filter.",
      "The LLM only plans. It builds a plan knowing the tools, the deterministic retrieval steps, the citation filter and the bounding boxes. Tools then retrieve, compute, build tables and register every fact in a citation registry, typed with value, unit, scale and period, plus a display value so output can be shown in thousands or yen.",
      "Retrieval stack: ZeroEntropy embeddings (1280 dimensions) in a TurboPuffer namespace, with approximate nearest neighbours plus BM25 hybrid search. Results go through reciprocal re-ranking down to about 60 documents, then a 'trusted' re-ranking that favours more reliable sources, then a cross-encoder, before going back to the model. The strategy is 'search wide then re-rank', and it depends on cheap re-embedding as new data arrives.",
      "XBRL is wrong about 10% of the time, and investors also rely on private data (OneDrive, BIP sync, SharePoint, Box, Outlook). So Kepler structures data where it is structured and uses search where it isn't. Conflicts, such as an earnings call disagreeing with the 10-K, are 'not a bug, it's a feature' and have to be deconflicted.",
      "Tenant isolation: every search hit is re-authorised in Postgres (citation, value, document), each builder adds a filter, only the auth service can mint scoped tokens, and the user comes from a signed device. The aim is that Citadel Desk 1 never sees Desk 2's research.",
      "During inference the LLM 'dereferences the pointer' against the citation registry, and any number without a match is removed. A third of all citations are 'math the model didn't do'. For older data, such as 2005 revenue, the model may answer from its training data, which can't be traced. Some uncited numbers go through an agentic 'citation repair' step instead of being removed; he kept the details vague because it's Kepler's IP.",
      "Evals: Kepler's filter, run over native Claude or ChatGPT output, refused 10,981 citations, of which about 3,810 were straight-up wrong numbers. Every number in the product is clickable through to the source 10-K, 10-Q, 8-K or deck and the calculation (for example, a 6.4% growth figure for Apple's 2025 revenue). The same query always gives the same result."
    ],
    "takeaways": [
      "Never let the model produce numbers directly. Pre-extract facts into a registry with IDs, value, unit, scale and period, and have the model reference IDs that deterministic code resolves.",
      "Move arithmetic to human-written deterministic code (the compute layer), not the model or code the model writes.",
      "Add a post-processing filter that removes or repairs any number that can't be traced to a trusted source, and accept that the system becomes less 'creative' as a result.",
      "For retrieval, search wide (embeddings ANN plus BM25 hybrid), then re-rank in stages: reciprocal rank fusion, source-trust weighting, then a cross-encoder. Explicitly deconflict sources that disagree.",
      "Enforce document-level authorisation on every retrieval hit, not just at the query layer, and measure recall. Don't assume wiring an LLM to a vector database gives accurate numbers."
    ],
    "topics": [
      "hallucination",
      "citations",
      "rag",
      "hybrid search",
      "financial ai",
      "deterministic computation",
      "evals",
      "multi-tenancy"
    ],
    "tools": [
      "Kepler",
      "TurboPuffer",
      "ZeroEntropy",
      "BM25",
      "Postgres",
      "XBRL",
      "Anthropic",
      "Claude",
      "ChatGPT",
      "OpenAI",
      "Gemini",
      "Palantir",
      "Citadel",
      "Seeking Alpha",
      "SharePoint",
      "Box",
      "OneDrive",
      "Outlook",
      "BIP sync"
    ],
    "quotes": [
      {
        "text": "LLMs don't actually read your documents, despite what many people think.",
        "at": "02:43",
        "url": "https://www.youtube.com/watch?v=dZgA6btnb_s&t=163s"
      },
      {
        "text": "where the model sites the numbers, but never writes them.",
        "at": "04:06",
        "url": "https://www.youtube.com/watch?v=dZgA6btnb_s&t=246s"
      },
      {
        "text": "Kepler's not a super useful tool if you rely on model hallucinations.",
        "at": "15:19",
        "url": "https://www.youtube.com/watch?v=dZgA6btnb_s&t=919s"
      },
      {
        "text": "The platform is structurally incapable of producing hallucinated numbers. The model can still hallucinate and it definitively does.",
        "at": "18:22",
        "url": "https://www.youtube.com/watch?v=dZgA6btnb_s&t=1102s"
      }
    ],
    "words": 4309
  },
  "summary_url": "/#dZgA6btnb_s",
  "transcript": {
    "html": "/transcripts/dZgA6btnb_s.html",
    "txt": "/transcripts/dZgA6btnb_s.txt",
    "vtt": "/transcripts/dZgA6btnb_s.vtt"
  }
}