GraphRAG for released records

Turn a document dump into a map of who knew what, when— and what's still classified.

↑ Yes, that's a real redaction — hover it to declassify. Around here, blacked-out text isn't missing data. It is data.

FOIAtlas reads released FOIA/RTI documents, extracts the people, organizations, meetings and topics into a knowledge graph, and treats every redaction as a first-class lead you can query. Ask questions in plain English, get answers grounded in the records — or tell the agent to reshape the graph itself.

Why FOIAtlas

Other tools search the words. FOIAtlas finds the network — and treats what got hidden as evidence.

DocumentCloud & full-text readers

Does: Search the words

Misses: Relationships between entities across documents

Aleph (OCCRP)

Does: Cross-reference entities

Misses: Tuned to leaks/sanctions data, heavy to operate

Manual review

Does: Everything, eventually

Misses: Weeks of a journalist's time per dump

FOIAtlas

Does: reconstructs the who-talked-to-whom-when network automatically

Also: treats every redaction as a queryable, first-class lead

Transparency laws only create accountability if someone can actually process what gets released — the impact is concrete, not theoretical:

Investigative journalists

Weeks of manual cross-referencing

An explorable graph in minutes

Civic-tech & transparency groups

Redaction patterns are anecdotal

Measurable — by agency, by exemption, by topic

Policy researchers

Primary sources scattered across PDFs

A cited, queryable dataset

Anyone filing the follow-up request

Guessing what to ask for next

The graph shows exactly what's still hidden, and where

The domain

What's a FOIA/RTI release?

FOIA · USA · 1966RTI · India · 2005

Transparency laws that let any citizen force the government to hand over its internal records — emails, memos, meeting minutes, invoices. It's how journalists find out what officials actually did, not what they announced.

Before release, officials black out passages under legal exemptions — and must cite which one next to every bar:

b(4) commercialb(5) deliberativeb(6) privacy

So every black bar is labeled evidence: it tells you what kind of thing was hidden, right where it was hidden.

Why this needs to exist

01

Released is not the same as read

Millions of pages come out of FOIA/RTI requests every year — and most are read by nobody. Transparency laws only create accountability if someone can actually process what gets released.

02

The story lives between documents

The same consultant on both sides of a deal. A meeting right before a vote. A report that vanishes after one email. Full-text search indexes words; the truth is a network.

03

What's hidden is the best lead

A privacy redaction next to “approved the payment” isn't missing data — it's a signpost. Redaction patterns tell you exactly what to request next. No other tool treats them as data.

Built for — investigative journalists (weeks of cross-referencing → minutes), transparency & civic-tech groups (redaction patterns become measurable), policy researchers (primary-source networks with citations), and anyone filing the follow-up RTI/FOIA request that actually hits.

Loading corpus stats…

The game changer

Don't just ask your graph. Tell it.

Most knowledge graphs are read-only artifacts. FOIAtlas ships a LangGraph agent with write access — type what you want changed, in plain English, and it happens. Delete a duplicate. Rename an alias. Wire two entities together. No query language, no forms.

  • Resolves names to exact nodes before touching anything
  • Schema-validated — it cannot create a link the graph forbids
  • Runs the same operations as the public REST API, nothing more
  • Reports precisely what changed, every time
Command the graph →

/chat · live session

connect Alice Vasquez to Acme Corp
find_nodes → Person:alice-vasquez · Organization:acme-corp
connect_nodes → AFFILIATED_WITH ✓
Connected Alice Vasquez —AFFILIATED_WITH→ Acme Corp.
link the lab report to Riverside Fund
connect_nodes → ✗ schema violation
A Document can't link to an Organization that way — allowed: MENTIONS. Want me to use that?

The schema is the guardrail: the agent physically can't corrupt the graph — it negotiates instead.

01

Extract

Gemini reads each document against a fixed graph schema — Person, Organization, Document, Event, Topic, and RedactedSpan — resolving aliases as it goes.

02

Connect

Entities and relationships are merged into an embedded Kùzu knowledge graph. The same person across dozens of emails collapses into one node.

03

Investigate

Ask questions over a GraphRAG retriever, walk the graph visually, or edit it by chat. Redactions surface as red nodes — the leads worth chasing.

Everything in the box Declassified

One pipeline, one typed schema, one graph — read it, question it, reshape it.

Exhibit A

Redactions as first-class leads

Every blacked-out span becomes a RedactedSpan node with its exemption code and context — queryable, visible, chaseable. Hover the bars:

MEMO · Atwater Mill site assessment

Sampling at the north lot found benzene at 40× the limit b(4). Recommend halting Phase 2 approval b(5) pending review by R. Calloway b(6).

Exhibit B

Ask, and get grounded answers

Semantic search finds the documents, one-hop graph expansion pulls in connected entities and redactions, and the answer streams back citing the records.

who buried the contamination report?
The lab summary (gf-003) reached R. Calloway on May 2; the closed-session minutes (gf-004) show the finding was dropped from the agenda — the deciding exchange sits behind a b(5) redaction linked to the same meeting.
§01

Schema-guided extraction Gemini structured output constrained by a typed graph schema — it can't invent a type the graph doesn't know.

§02

Entity resolution “Robert Calloway”, “Bob”, and “R. Calloway” collapse into one Person node across the corpus.

§03

A real graph API create, search, rename, delete — nodes and relationships over REST, schema-validated like the agent.

§04

Live-pipeline uploads drop PDFs and watch parse → extract → resolve → embed → write stream stage-by-stage.

§05

Visual explorer the whole graph color-coded by type, redactions ringed in red, every node inspectable.

§06

Zero-setup embedded graph Kùzu embedded database, tables generated from the schema — clone, ingest, run. No server.

The demo corpus: Project Greenfield Synthetic

The bundled dataset is a synthetic release in which a fictional city fast-tracks a riverside development while a contamination finding is quietly buried. It contains planted aliases, a hidden meeting chain, an undisclosed dual-role consultant, and exemption-coded redactions (b4/b5/b6) — so every feature of the engine fires predictably. The same pipeline runs on real public sets like the Clinton email release, the FBI Vault, or MuckRock dumps.