{
  "video": {
    "id": "HGfsfKaVuGY",
    "title": "Parsing the Epstein Files for JMail — Palak Agarwal & Omar Alhait, Reducto",
    "duration": 1769,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "HGfsfKaVuGY",
    "title": "Parsing the Epstein Files for JMail — Palak Agarwal & Omar Alhait, Reducto",
    "one_liner": "Reducto parsed more than 3 million pages of redacted, scanned and handwritten Epstein files for JMail. Most of the hard work was in the parsing layer, and the PDF metadata it read exposed text hidden under badly drawn redaction boxes, so the JMail team had to redact it again themselves.",
    "summary": "Reducto's Palak Agarwal and founding engineer Omar Alhait describe how Reducto served as the document-parsing layer for JMail. JMail is a Gmail-style fork, first built in five hours, that lets you log into Jeffrey Epstein's inbox, and it grew into a suite with JFlights, JCal, J Drive and J Photos. Omar demos the Reducto Studio workflow: parse first, define an extraction schema, check the results, then deploy as an API call or pipeline snippet. In Q&A they cover schema generation, hybrid OCR, failed redactions, benchmarking and data labeling. Their main argument is that parse is the foundation for everything downstream, and that a good product on top of accurate extraction is the 'one-two punch'.",
    "key_points": [
      "Scale of JMail: built by Riley Walls and Luke in five hours last November when the Epstein files were released. By February it had over 450 million visits and 18 million users. Reducto parsed over 3 million pages of redacted PDFs, scanned documents, complex forms and tables, and messy handwriting.",
      "Reducto's approach: it rasterizes documents ('look at your document like a human would'), and its agentic OCR flags what it is uncertain about and corrects it instead of committing to a single pass. It has five core capabilities: parse, split, extract, edit and classify.",
      "For JFlights, Omar built a separate extraction config with one schema covering shoddy handwritten flight logs. He tested accuracy in Studio before scaling to around a million documents. The overnight bulk parse put so much stress on the infrastructure that the on-call engineer, Alvin, asked him to slow down.",
      "Redaction problem: Reducto also parses PDF metadata, so on badly redacted files it recovered the text under the box ('you can't just stick a box on a PDF'). That left the JMail team responsible for redacting it themselves, to avoid legal exposure.",
      "Schema tooling: basic schema generation is a quick LLM call that builds a JSON schema from your request. 'Enhanced schema generation' parses the documents first and tailors field descriptions to their content. Omar mentioned a recent customer schema with 156 fields, and said the nesting limit is roughly four or five layers.",
      "Hybrid OCR decides when to use strict OCR output and when to use embedded PDF metadata. A separate citation model links each extracted value back to where it came from in the document. Omar mentioned an NVIDIA paper on fast citation finding.",
      "Extraction is framed as 'all the needles in a haystack' rather than needle-in-a-haystack. They fix weaknesses such as long-context recall by training on data where the model does poorly, which depends on heavy manual data labeling.",
      "Omar's first productization idea, a RAG chatbot over the emails, was 'pretty shoddy'. What drew hundreds of millions of visits was a familiar product built on top of accurate extraction."
    ],
    "takeaways": [
      "Don't treat a black box drawn on a PDF as a redaction. Any parser that reads the PDF's metadata or text layer will recover what's underneath, so check that redacted content is actually gone before publishing.",
      "Parse first, then build extraction, splitting (e.g. by chapter) and classification on top of the parse output. For nuanced fields, generate the schema from the parsed documents rather than from a prompt alone.",
      "Build your own benchmark. Start with a vibe eval on a small set in a studio-style UI, then move to a systematic eval on 100 to 1,000 documents. Make sure the vendor config is right before comparing vendors head to head, because misconfiguration often skews results.",
      "For hard layouts (blueprints, logos, handwriting), tune the per-model system prompts and layout prompts instead of accepting default output.",
      "Put product effort into the interface on top of extracted data. A familiar UX like a Gmail clone did better than a generic RAG chatbot."
    ],
    "topics": [
      "document parsing",
      "ocr",
      "structured extraction",
      "redaction",
      "evals",
      "unstructured data",
      "schema design"
    ],
    "tools": [
      "Reducto",
      "Reducto Studio",
      "JMail",
      "JFlights",
      "JCal",
      "J Drive",
      "J Photos",
      "ChatGPT",
      "Harvey",
      "Scale",
      "Benchmark",
      "Kino",
      "NVIDIA",
      "ARC-AGI",
      "Claude Code",
      "Codex"
    ],
    "quotes": [
      {
        "text": "Because you can't just stick a box on a PDF and then expect it to actually be fully redacted, right?",
        "at": "14:21",
        "url": "https://www.youtube.com/watch?v=HGfsfKaVuGY&t=861s"
      },
      {
        "text": "Our our our tool was working a little too well.",
        "at": "15:20",
        "url": "https://www.youtube.com/watch?v=HGfsfKaVuGY&t=920s"
      },
      {
        "text": "But the real deeper answer here is you typically have to make your own benchmarks unfortunately.",
        "at": "22:39",
        "url": "https://www.youtube.com/watch?v=HGfsfKaVuGY&t=1359s"
      },
      {
        "text": "At the end of day, at the end of the day, you still have to label that data.",
        "at": "25:59",
        "url": "https://www.youtube.com/watch?v=HGfsfKaVuGY&t=1559s"
      }
    ],
    "words": 5720
  },
  "summary_url": "/#HGfsfKaVuGY",
  "transcript": {
    "html": "/transcripts/HGfsfKaVuGY.html",
    "txt": "/transcripts/HGfsfKaVuGY.txt",
    "vtt": "/transcripts/HGfsfKaVuGY.vtt"
  }
}