mdfi turns anything — PDF, Word, PowerPoint, Excel, email, images, audio, web pages — into clean structured markdown for LLMs and RAG pipelines. It runs entirely inside your own infrastructure.
In its default configuration, mdfi sends nothing to a third party. No document, no page image, no fragment of text leaves your machine. Model weights download once, on first run; your documents never do.
Everything above runs locally. Nothing crosses this boundary.
This line is dashed because you decide whether it exists. The optional vision tier and field extraction are the only steps that send your documents anywhere, and both are off by default. Point them at your own GPU (vLLM, Ollama, LM Studio) and this line disappears entirely — configuration, not code. Point them at Mistral and it stays under EU jurisdiction. Separately, a first run downloads model weights from the public model hubs; that is software, not your data, and the status table below states exactly what is and is not covered.
Every serious document-parsing service in 2026 — Reducto, LlamaParse, Mistral, LandingAI, Azure Document Intelligence, AWS Textract — is a hosted API. Using one means your documents leave your perimeter.
For a growing set of European organisations, that is no longer a trade-off they are allowed to make.
Not just conversion. mdfi scores the quality of its own output and escalates hard documents to stronger processing, so you spend heavy compute only where it is actually needed.
Documents, Office formats, email archives, images, audio transcription, web pages and source code — one pipeline, one output shape.
Every conversion returns a 0–100 score. Crucially it detects parses that look like valid markdown but are not — truncated tables, unclosed fences, a model that degenerated into filler — and tells you which, in words. A silent bad parse is the expensive failure in a RAG pipeline.
Fast local parsing first. Only documents that score below your threshold escalate to heavier processing. Predictable cost, no blanket VLM spend.
REST API with async jobs, batch submission, webhooks, Redis persistence and S3 archival. API-key auth with per-user isolation and usage records.
Heading-aware overlapping chunks with breadcrumb metadata and character offsets, ready for direct vector-database ingestion.
Ships an MCP server, so Claude and other LLM clients can convert documents directly — still without anything leaving your network.
The model tier is a swappable interface, not a hard-wired vendor. Point it at inference on your own hardware, at an EU-jurisdiction provider, or at a hosted API — your compliance posture, your call.
This is working software, not a waitlist page — but it is pre-release, and you should know exactly what exists before you spend time on it.
| Capability | Today | Detail |
|---|---|---|
| Local conversion, all formats | Shipping | 427 automated tests, failure paths included |
| Zero outbound calls by default | Shipping | Default tier performs no external requests |
| REST API, jobs, batches, webhooks | Shipping | Docker Compose stack, non-root containers |
| Quality scoring and chunking | Shipping | 0–100 score, heading-aware RAG chunks |
| Failed-conversion detection | Shipping | Catches truncated tables, unclosed fences, degenerate model output |
| Vision tier on your own hardware | Shipping | vLLM, Ollama, LM Studio, llama.cpp — page images never leave the host |
| Vision tier under EU jurisdiction | Shipping | Mistral, via the same adapter — no CLOUD Act exposure |
| Scanned PDFs on your own hardware | Shipping | Pages rendered locally, then read by your local model |
| Field extraction from schemas | Shipping | Runs on whichever model you configured; a hosted API if you configure none |
| Air-gapped installer | In progress | Model weights pre-bundled, no download at runtime |
| Immutable audit log | Planned | Per-conversion record of who, what, when, which engine |
| SOC 2 / ISO 27001 | Not held | No certification claimed |
Teams in legal, healthcare, insurance, financial services and the public sector who need to put documents into an LLM pipeline and cannot send those documents to a third-party API.
If your current answer is "we built something with PyPDF and it mangles tables", or "we would use a parsing API but legal said no", this is aimed squarely at you.
We are talking to a small number of teams before the first release, to make sure the air-gapped build solves the real problem rather than the imagined one. If document processing inside your own perimeter is a live constraint for you, we would like thirty minutes of your time.
No demo script and no pitch — the useful conversation is about your constraint, your volumes, and what your security review would ask for.
We use what you send only to reply to you. No newsletter, no CRM, no analytics, no third party in the loop — the form posts to this domain. Ask us to delete it and we will, the same day.
Prefer to read code first? The repository opens shortly under Apache-2.0. Ask and we will send it early.