deckgen

deckgen // citation-backed presentations from your reports

Every number on the slide traces to its source.

deckgen turns scattered internal PDFs into presentations where every figure is backed by a verified citation — composed by a pipeline of reasoning agents, checked against an evidence ledger, and reviewed before it ships.

01ingest02extract03orchestrate04exploreexploreexplore05distill06compose07verify08review09export
the pipeline

Hover or tap a stage to see what it does. It runs left to right, from raw PDFs to a deck where every figure is cited.

fig.01 — the pipeline · hover any stagerunning

the problem

AI can draft a deck in seconds. The trouble is the numbers. A slide that claims "revenue grew 40%" is worthless if no one can say which report it came from — or whether the model invented it. deckgen works from the opposite end: no figure reaches a slide unless it traces to a line in a source document.

02

How a deck gets made

From a folder of PDFs to a presentation you can trace line by line. The hard part isn't writing slides — it's never letting a number onto one without its source.

  1. 01

    Ingest & extract

    Your PDFs are parsed page by page, and structured facts are pulled into an evidence ledger — each one tagged with its document, page, exact quote, and a confidence score.

    ledger ← {doc, page, value, quote, conf}
  2. 02

    Index for meaning and for value

    Facts are stored two ways: vector embeddings for semantic search and the structured ledger for exact figures — so a query can find the right passage and the verified number behind it.

    pgvector · semantic + ledger · exact
  3. 03

    Orchestrate & fan out

    An orchestrator reads your prompt, routes it against each report, and spawns one explorer agent per relevant report — running in isolated contexts, in parallel.

    orchestrate → explorer × N · parallel
  4. 04

    Reason, per report

    Each explorer works over only its own report, selecting the facts that matter to your prompt and carrying their ledger ids forward — so the composer sees focused findings, not the raw corpus.

    distill · cite-only · carry ledger ids
  5. 05

    Compose the slides

    The builder writes the deck from the union of findings. Every figure it places onto a slide carries the citation it came from — numbers are never written from free reasoning.

    slide.figure → ledger.row
  6. 06

    Verify against the ledger

    Before the deck is final, every figure on every slide is checked back against the ledger. Anything that doesn't resolve is flagged — a hard gate, not a hint.

    verify · 56/56 → ledger · 0 dangling
  7. 07

    Review & ship

    You resolve any flags — accept, regenerate, or attest a manual value that stays permanently marked "not from source" — then export a deck where every number traces to its origin.

    resolve → export · pdf · pptx
03

How the agents reason

deckgen uses an orchestrator–worker pattern. The orchestrator never reasons over the whole corpus at once — it fans the work out to explorer sub-agents, each confined to a single report in its own context. That keeps coverage balanced and lets the corpus grow past any one context window. And because every explorer stays cite-only, nothing it produces can outrun the evidence.

reportQ3_Report.pdf
scoped retrievalledger + chunks · this report only
cite-only distillselect facts · carry ledger ids
findingspoint + [ledgerId …]

one explorer's path · runs once per report, in parallel · the verifier is the second gate

04

Four ideas hold the accuracy together

The pipeline is built so a generated slide can never assert a number that isn't grounded in a source — and when a human edits it, that guarantee survives.

Evidence Ledger

Every extracted fact carries its source document, page, exact quote, and a confidence. Slides are composed only from verified ledger rows — numbers never come from free reasoning.

ledger.row {
  doc   "Q3_Report.pdf"
  page  4
  value "$1.2B"  conf 0.97
  quote "…revenue of $1.2 billion…"
}

Fan-out Reasoning

An orchestrator spawns one explorer agent per relevant report, in isolated contexts, in parallel — so coverage stays balanced and the corpus can scale past any single context window.

orchestrate → fan-out
 ├ explorer · Q3 Report     ✓
 ├ explorer · Risk Memo     ✓
 └ explorer · Market Scan   ✓
 → distill → compose

Citation Verifier

Before a deck is final, every figure on every slide is checked back against the ledger. Unsupported claims are flagged, not shipped — a hard gate, not a suggestion.

verify deck
 ✓ 56/56 figures → ledger row
 ✓ 0 dangling citations
 ✗ 0 unsupported claims
 status: ready

Human Review

Flagged claims are resolved by accept, regenerate, or an attested manual value that is permanently marked "not from source" — and can never silently become a citation.

flag · slide 3
 value not found in source
 [ accept ]  [ regenerate ]
 [ ✋ manual — not from source ]
05

Built on a split architecture

The web app, the agent pipeline, and the evidence layer run on three surfaces — with the service-role key confined to the worker and row-level security enforcing every read.

Next.js · webTrigger.dev · agent orchestrationSupabase · Postgres · pgvector · RLSGemini · extraction + compositionTurborepo · monorepo

web → Vercel · agent pipeline → Trigger.dev · evidence + auth → Supabase

06

How it was built

The accuracy isn't an accident of prompting — it's enforced by how the system was engineered, and proven the same way every time.

Spec-driven

Every capability began as a written specification and change proposal before any code — so the durable spec always matches what actually shipped.

Test-driven

Unit tests and database-level security tests gate every change. The accuracy core is locked with tests before the interface on top of it is built.

Live-verified

Green tests aren't the bar — the real gate is the live run. Every pipeline path is proven end to end against a real database, where the seams actually live.

Dogfooded

Built and proven on real reports — multi-report decks with every figure resolving to its source document, and zero dangling citations.

194unit tests
100%figures cited
0dangling citations
9pipeline stages

See it run on your own reports

Upload a set of PDFs and watch the pipeline build a deck you can trace, line by line.