Everything your company knows,searchable by your agents.

Contracts, spreadsheets, calls and repos become a private knowledge base an agent investigates page by page and cites.

Sources
25+ file types, plus web pages and repos
Parsing
Auto-routed, or pick a method
Grounding
Every claim bound to a page
Interfaces
REST, Python and TS SDKs, MCP
POST /ask-sourcesthinking_level: accurate
question
What is the termination notice period in the Marumbi MSA?
list_sourcesquery="marumbi msa" → 3 candidate files
grep_in_sourcespattern="termination|notice" → 11 matches
get_pages_markdownmarumbi-msa.pdf pages=[14]
verifyamendment-2.pdf supersedes §8.2
60 days written notice, reduced to 30 if the breach is uncured. The 90-day term in §8.2 was superseded by Amendment 2.
marumbi-msa.pdf · p.14amendment-2.pdf · p.3
Toolbelt
semantic_searchgrep_in_sourcesget_pages_markdownanalyze_visualsget_sections_markdownlist_sources_with_metadataget_tabular_rowsget_elementextract_full_fileget_pages_infoget_dataset_infoget_tabular_headersget_elements_info_from_pageget_sections_infoopen_artifactget_total_pagessemantic_searchgrep_in_sourcesget_pages_markdownanalyze_visualsget_sections_markdownlist_sources_with_metadataget_tabular_rowsget_elementextract_full_fileget_pages_infoget_dataset_infoget_tabular_headersget_elements_info_from_pageget_sections_infoopen_artifactget_total_pages

The agent investigates before it answers.

One embedding query returns whatever is nearest and hopes it's right. The Graphor DocumentAI runs a real tool loop: it narrows the files, searches semantically and by regex, opens the pages it needs, sends the charts to a vision model, and reconciles what disagrees.

get_dataset_info · list_sources_with_metadata01 / 06

Narrow

Before searching anything, the agent filters the dataset down to the files that could plausibly hold the answer, using file names, document annotations and metadata.

→ 1,204 files → 6 candidates

You decide how hard it looks.

Every request carries an effort level, and the level is a real budget: how much searching the agent may do before it has to answer from the evidence it already has. Cheap lookups stay cheap. Hard questions get the depth they need.

fast

Bounded lookup

Narrow to the likely file, read the relevant pages, answer. For questions where you already know roughly where the answer lives.

depthshallow
balanced

The default

Room to confirm a finding against a second source before answering, without turning every question into an investigation.

depthmedium
accurate

Multi-part questions

For questions that span many files and several sub-answers, where partial evidence is worse than no answer at all.

depthdeep
max

Investigation

Reconciling documents that contradict each other, or auditing a whole corpus for what is missing.

depthexhaustive

Depth doesn't cost coherence: observational memory and inline compaction keep the evidence trail intact, so a long investigation still remembers what it found at the start.

Where a standard RAG stack breaks.

Most teams get 80% of a retrieval system working in a week, then spend six months on the rest. This is the part that takes six months.

Embed-and-retrieve
Graphor DocumentAI
Search strategy
One vector query per question, top-k by cosine distance.
A tool loop: narrow the files, then semantic search, regex grep, page reads and vision calls, for as long as the question needs.
Exact matches
Embeddings blur codes, dates and clause numbers into their neighbours.
Full Python regex over sources, batched across files, paginated past the first ten hits.
Tables
Flattened into text, so rows and headers stop lining up.
Tabular sources read by header and row; tables that split across pages are stitched back together.
Charts and scans
Invisible. If it is not text, it is not in the index.
Rendered pages and elements go to a vision model with a specific question, up to eight at a time.
Contradictions
Both chunks are retrieved; the model averages them into a confident wrong answer.
Conflicts are surfaced and resolved by following references between documents.
Long searches
Context fills, early findings fall out of the window.
Observational memory and inline compaction keep the evidence trail intact however deep the search goes.
Provenance
Chunk ids, if you kept them.
Every claim carries the file, page and passage. Unsupported claims are marked, not invented.
Debugging
A black box you re-prompt until it looks right.
Answers arrive with the pages behind them, so a wrong answer points you at the parse or the source, not at a guess.

Five ways to read the same document.

Let Auto route each page to the method that can read it, or pick one of the four by hand. Every run is versioned: compare methods on the same file and switch the active version without re-uploading anything.

Auto

per-page routing

Auto classifies every page first, then routes each range to the cheapest method that can actually read it. One setting for documents that are mostly plain text with a few pages that are not.

Recovers
Plain pages stay on the cheap parser
Tables, scans and charts escalate on their own
Billed on the real breakdown, never a flat Auto rate
Available for PDFs
One 20-page document
1–6
Fastplain text
7
Accuratenested table
8–15
Fastplain text
16–17
Agenticscanned chart
18–20
Fastplain text
billed: 17 Fast · 1 Accurate · 2 Agentic0 pages billed as Auto

25+ file formats

PDF, Office, HTML, CSV/XLSX, images, audio and video, all through one ingest call.

Web and crawl

Ingest a URL and optionally follow its links to capture a whole documentation tree.

GitHub repos

Point at a repository and its code and docs become searchable alongside your documents.

Calls and video

Audio and video are transcribed, so what was said in a meeting is queryable like a document.

Ask for prose.Or ask for a table.

Define the fields you want and Graphor returns them as structured JSON across a whole batch, with the page each value came from. Same agent, different output shape, and it can hand back a CSV or markdown file when you ask it to export.

Schema
invoice_numbertextThe unique invoice identifier
issue_datetextInvoice date in YYYY-MM-DD
total_amountnumberTotal amount due
line_itemsarrayDescription, quantity and unit price per row
signed_bytextName on the signature block, if present

Instructions stay plain language:"use YYYY-MM-DD for dates, USD for amounts."

extract → 47 documentspage-level provenance
invoice_number: "INV-2318"p.1
issue_date: "2026-05-14"p.1
total_amount: 48120.00p.3
line_items: [ 14 items ]p.2–3
po_number: "PO-8841"p.1
signed_by: "M. Okonkwo"p.4
47 rows · 0 fields unresolved→ invoices-q2.csv

One call from folder to cited answer.

Everything in the product is an endpoint: ingest, reprocess, list, get elements, retrieve chunks, extract, ask. Python and TypeScript SDKs, plus a 12-tool MCP server so your coding agent queries your knowledge base directly.

pip install graphor

from graphor import Graphor

client = Graphor()                    # reads GRAPHOR_API_KEY

with open("marumbi-msa.pdf", "rb") as f:
    build = client.sources.ingest_file(file=f, partition_method="auto")

file_id = wait_until_ready(client, build.build_id)   # get_build_status()

res = client.sources.ask(
    question="Which contracts auto-renew before September?",
    file_ids=[file_id],
)

print(res.answer)
for c in res.citations:
    print(f"{c.file_name} p.{c.page_number}")

Bring your own model

Claude, GPT, Gemini and Cerebras agents share one tool schema. Enterprise accounts can run the agent on their own Anthropic key.

Citations by default

Every answer returns the file, page and passage behind each claim, so a bad answer is something you can trace back instead of guess at.

Versioned builds

Re-parse a source with a different method and compare. Only the active build serves retrieval, and switching is instant.

What teams already ask it.

Legal

"Which of these 400 contracts auto-renew before September, and what notice does each require?"

Contracts, amendments and side letters, where the amendment overrides the clause you would have found first.
Finance

"Does the investor deck contradict the audited statements anywhere?"

A slide chart against a table on page 31, a comparison only a vision model can make.
Engineering

"How is rate limiting implemented, and where is it documented?"

A GitHub repo plus its docs site, ingested together and searched as one corpus.
Insurance

"Which claims in this batch are missing the required medical report?"

Scanned claim files where the answer is the absence of a document, not its content.
Procurement

"Extract every invoice above its PO amount into a CSV I can send to finance."

A batch extraction that ends in a downloadable artifact, not a chat reply.
Customer research

"What did customers say about onboarding last quarter?"

Call recordings, tickets and email threads, transcribed and searched by theme.

Your documents are not our training data.

Contractual no-training commitments down the whole provider chain, tenant isolation at every layer, and a Trust Center that states the posture plainly, including what isn't certified yet.

No training on your content

Contractual no-training commitments with every model provider in the chain, passed through in the DPA.

Tenant isolation

Isolation enforced at the application, database, storage and API-token layers, not by convention.

Retention you control

Documented retention per data category, with deletion mechanisms that satisfy LGPD art. 18 and GDPR art. 15–22.

Data residency

Stated regions for every component of the production environment, with the transfer regime spelled out.

72-hour breach SLA

A written incident-response process with an escalation matrix and a post-mortem commitment.

Honest compliance status

Inherited subprocessor certifications listed alongside the compensating controls where a formal certification does not exist yet.

Subprocessor list, DPA template and residency detail in theTrust Center.

Point us at your worst folder.

Bring a document that currently takes forty pages of reading and a question nobody can answer quickly. In thirty minutes you see the agent working on it, not on a generic demo.

We reply within one business day.
On the call
01You describe the documents and the questions you need answered from them.
02We run the agent on one of your cases, with the parsing method that material calls for.
03You leave with an honest read on what works today and what does not.