We already ran the extractor. We still don’t have a knowledge base.
Someone ran LlamaParse, Unstructured, or a house script. The PDFs became markdown. The ticket closed. Then the on-prem model still invents a number, quotes chrome, or sounds sure about a blank page. The extractor did its job. Words came out. A folder of markdown is not a knowledge base.
How we see the problem
Extraction optimizes words out. That is a
sound upstream step — competitive and often necessary. Call
the complacency what it is: the
markdown illusion — ticket closed because
.md files exist.
- PDF → extractor → markdown folder
- Ticket closed. Chaos, now in .md
Words out. Ticket closed. Nothing muted.
- Extract (on the line) → plant craft
- → portable knowledge brick ZIP
Mute, list, bound. Then retrieve.
What raw extract cannot do
It does not decide what the model may quote. It does not mute a lying table. It does not hand you a portable package with craft limits.
Next month, different engineer
Extraction also fails the handoff test. A folder of markdown has no board a second engineer can open next month — no list of what was empty, garbled, or taken off the answer path. Durability is not “we still have the .md files.” It is a leave-behind someone else can audit without re-living the parse.
So teams confuse a successful parse with a finished corpus. They point RAG at the markdown dump. Retrieval searches the mess faithfully. The model completes fluently. Leadership thinks data work is done because “we extracted” — the markdown illusion. That is how corpus fitness stays off the cost slide.
What you already tried
Tune the extractor
Better settings. Another vendor. Bounding boxes. Still words out — still no mute list.
Bigger context / “only use the markdown”
More markdown does not invent a residual board. A bigger window does not say what is fit to cite.
Fair comparison
Extractors
Sound for getting text out of PDFs and decks. Keep them when you need raw material. Stage on the line — not the product.
RAG
Sound for searching an honest corpus. Keep it for the package.
Manufacture
Sound when you need a leave-behind: structured where possible, junk muted off the answer path and listed, brief, portable ZIP. Different objective — not a slight on parsers.
How we mill it
We manufacture a knowledge brick you keep.
Extraction may happen on the line; it is not the product. The
product is an owned leave-behind — not a
.md folder. Public shelf ZIPs carry
SECURITY_REPORT.md, craft_brief.md,
and muted junk listed on the LIBRARY_CARD (and in chunk mute
flags). That listed mute story is the residual board —
card + flags, not a separate board file. Desk tooling like
coverage reports stays in the plant; it is not the customer
leave-behind. You
drop files in the bin. You
pay only if we produce. One job does not require a staffed project.
Argue with the package if “markdown was enough.” Same shelf, three shapes — clean ops wiki (Plane), dense tables (Params), scan-hard OCR (Skylab): Public brick shelf · HF eval (re-run cosine).
What this costs
$10 a brick track manufacture difficulty, not page count — and not the extractor’s per-page sticker. Drop the pile on the mill.