Unstract: Unstructured Document to Structured Data

Use LLMs to turn PDFs, images, and other unstructured documents into structured JSON, deployed as an API or ETL pipeline.

Stars
★ 7.3k
Last updated
3d ago
License
AGPL-3.0
Primary language
Python

At a glance

How it runs
Self-hosted serviceWeb appMCP server
Works with
Universal · cross-platformOpenAI API · Claude API
Cost
Free tier plus a paid hosted plan
Setup effort
Medium · a few setup steps
You'll need
DockerDocker ComposeGit8GB RAMShell / CLINetwork access
Typical use
Finance teams automate data extraction from invoices and bank statements into databases.
Not a fit if
  • Teams that must run fully offline without any cloud LLM
  • Machines with under 8GB RAM or no Docker support
  • Teams needing built-in SSO, human review, and SLA support

What does this agent do, and when should you use it?

Unstract is an open-source platform that uses LLMs to extract structured JSON from documents. It offers Prompt Studio to define extraction schemas in natural language, supports deployment via REST API, and can also act as an ETL pipeline to process documents from folders and load into data warehouses. The platform includes a React frontend, Django backend, Celery workers, and a FastAPI platform service, relying on PostgreSQL, Redis, and RabbitMQ. It comes with adapters for multiple LLMs, vector databases, and text extractors (e.g., OpenAI, Anthropic, Qdrant, LLMWhisperer), and supports MCP server and n8n node integrations. Licensed under AGPL-3.0, it can be quickly deployed via Docker.

Unstract executes document extraction through a complete platform: users define extraction schemas (fields, formats) using natural language in the frontend Prompt Studio; the system invokes the chosen LLM ADAPTER (e.g., OpenAI, Anthropic, Bedrock) to parse uploaded files like PDFs and images; extracted results are returned as JSON. Deployment modes include API Deployment (send a document via REST API, get JSON back) and ETL Pipelines (pull documents from sources like AWS S3 or SFTP, process, and load to destinations like Snowflake or BigQuery). It also provides an MCP server for AI agents like Claude to connect, and an n8n node for automation workflows. Backend components include Django API, Celery workers, and FastAPI platform service, with optional text extractors (e.g., LLMWhisperer, Unstructured.io) for OCR and preprocessing.

  1. Finance teams automate data extraction from invoices and bank statements into databases.
  2. Insurance claims departments extract structured info from PDF claim forms.
  3. Healthcare providers process patient forms and medical records.
  4. KYC/compliance officers extract identity information from documents.
  5. Data engineers build ETL pipelines to ingest large volumes of unstructured files into data warehouses.
  6. AI developers use the MCP server to let assistants like Claude directly read and structure documents.

How do you install or deploy this agent?

  1. System requirements: Linux or macOS, Docker and Docker Compose, at least 8GB RAM, Git.
  2. Clone and start:
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.sh
  1. Visit http://frontend.unstract.localhost and log in with default credentials unstract / unstract.

Script options include -v for version tags, -b to build images, -u to upgrade, and -d for detached mode. For example, ./run-platform.sh -v v0.1.0 or ./run-platform.sh -u.

How do you use this agent?

  1. After login, use Prompt Studio to create an extraction project and define fields and formats in natural language.
  2. In API Deployment, send documents via REST API and receive JSON responses.
  3. Or configure an ETL Pipeline with sources and destinations (e.g., S3 to Snowflake) to process documents automatically.
  4. Optionally, set up the MCP server for AI agents to call via Model Context Protocol, or integrate the n8n node into automation workflows.
  5. Providers: configure LLM providers (e.g., OpenAI) in platform settings, and vector databases if needed.

What are this agent's strengths and limitations?

Pros
  • No-code extraction schema definition via Prompt Studio, reducing development effort.
  • Multi-LLM support (OpenAI, Anthropic, Bedrock, Ollama, etc.) with easy switching, avoiding vendor lock-in.
  • Multiple deployment and integration options: API, ETL, MCP Server, n8n node.
  • Supports a wide range of document formats (PDF, DOCX, images, spreadsheets).
  • Self-hostable via Docker one-liner, giving control over data privacy.
Limitations
  • Requires Docker and at least 8GB RAM; resource-intensive.
  • Default credentials (unstract/unstract) are insecure and must be changed.
  • Advanced features like human-in-the-loop review and SSO may be enterprise-only, limited in open source.
  • LLM API costs can add up with large-scale extraction.
  • Support relies on community; may lack guaranteed SLAs compared to commercial products.

How does this agent compare with similar options?

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Unstract: Unstructured Document to Structured Data This agent 44 · Major gaps Self-hosted serviceFreemium ★ 7.3k 3d ago Python OpenAI API · Claude API
webclaw Web Extraction Engine 66 · Some gaps CLIFreemium ★ 2.4k 26d ago Rust Codex · Claude Code · OpenAI API · Claude API
Xquik X Data API 74 · Some gaps Hosted servicePaid ★ 214 today JavaScript Codex · Claude Code
Bright Data MCP 64 · Some gaps MCP serverFreemium ★ 2.7k today JavaScript Claude Code · Claude.ai

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
44/ 100 5-point scale 2.2 / 5
This review covers the source as of Aug 11, 2026. The project has shipped 20 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 8/29
Reliability 6/14
Adaptability 10/18
Convention 10/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust8 / 29 · 1.4/5

Evidence shows: README mentions encryption key for adapter credentials, tests verify encrypted metadata storage (adapter_metadata_b), indicating basic consideration for sensitive data handling. However, user confirmation mechanism is absent, data flow transparency is limited, dependency security is only indirectly evidenced via CI and lint, external effects (like Posthog analytics) are mentioned but not detailed, rollback mechanism is not mentioned, and source attribution is only via Zipstack brand in README with unverified publisher. Deductions: missing user confirmation, insufficient data flow transparency, weak dependency security evidence, incomplete external effects description, missing rollback, attribution based solely on brand.

Reliability6 / 14 · 2.1/5

Evidence shows: project has detailed CI test workflow (unit, integration, e2e), test files cover critical paths, indicating good internal consistency. However, dependency availability is only indirectly evidenced via Docker images and external services (like LLM providers), and failure messages are not explicitly documented. Deductions: insufficient dependency availability evidence, missing failure message documentation.

Adaptability10 / 18 · 2.8/5

Evidence shows: README clearly identifies target audience (finance, insurance, healthcare, etc.), provides multiple deployment options (local, Docker, cloud), supports various LLM providers and vector DBs, good environment fit. However, trigger precision (like API endpoints, ETL triggers) is not detailed, and capability boundaries (like supported document types, limitations) are partially mentioned but incomplete. Deductions: insufficient trigger precision description, incomplete capability boundaries.

Convention10 / 18 · 2.8/5

Evidence shows: README has clear structure, provides installation instructions (run-platform.sh), has examples and cookbooks, license is AGPL-3.0, maintenance responsibility is evidenced via contribution guide and community channels. However, naming stability is not explicit, known limitations are not listed separately, and versioning changelog is not provided. Deductions: naming stability not stated, known limitations missing, versioning changelog missing.

Effectiveness7 / 13 · 2.7/5

Evidence shows: output is structured JSON, ready for database, marginal value is evidenced via comparison table, but cost-benefit is not quantified, only enterprise features mentioned. Deductions: cost-benefit lacks concrete data.

Verifiability3 / 8 · 1.9/5

Evidence shows: claims in README (like supported formats, providers) have documentation links, but no independent verification sources, and facts vs inferences are not clearly separated. Deductions: limited claim traceability, insufficient cross-source corroboration, unclear fact-inference separation.

Risks and how to mitigate them
  • Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
  • Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
  • Publisher identity is unverified; treat brand claims with caution.
  • Default credentials (username/password unstract/unstract) pose a security risk; change immediately after deployment.
  • Posthog analytics is enabled by default; verify compliance with privacy requirements.
  • Improper management of encryption key may lead to loss of adapter credentials.
Evidence confidence: Low Reviewed Aug 11, 2026 Reviewed revision 6b916eac0f42 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.193.1
    Release notes excerpt
    What's Changed * UN-4176 [FIX] Cut idle PG-queue polling to one autocommit claim per cycle by @muhammad-ali-e in https://github.com/Zipstack/unstract/pull/2349 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.193.0...v0.193.1
    View on GitHub ↗
  2. v0.193.0
    Release notes excerpt
    What's Changed * UN-3494 [FEAT] Email users and groups through PGQueue by @kirtimanmishrazipstack in https://github.com/Zipstack/unstract/pull/2224 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.192.14...v0.193.0
    View on GitHub ↗
  3. v0.192.14
    Release notes excerpt
    What's Changed * UN-1412 [FIX] Mirror API deployment execute errors into message.error by @Deepak-Kesavan in https://github.com/Zipstack/unstract/pull/2334 * UN-4069 [FIX] Cap array rendering in DisplayPromptResult to prevent page crash on dense agentic tables by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2335 * UN-4069 [FIX] Fix socket timeout, page crash, and upload limits for large Prompt Studio outputs by @harini-venkataraman in https://github.com/Zipstack/unstract/pull/2336 Full Changelog: https://github.com/Zipstack/unstract/compare/v0.192.13...v0.192.14
    View on GitHub ↗

FAQ

Which LLM providers does Unstract support?
It supports OpenAI, Azure OpenAI, Anthropic Claude, Google Gemini, AWS Bedrock, Ollama, Mistral, and others via adapters.
What are the hardware requirements?
At least 8GB RAM, Docker and Docker Compose, on Linux or macOS (Intel or M-series).
What output format does extraction produce?
Structured JSON, ready for databases or downstream applications.
Can it handle large volumes of documents?
Yes, via the ETL pipeline, you can batch pull documents from folders or cloud storage, process, and load to destinations.
Is there a free version?
Yes, Unstract is open source under AGPL-3.0, but some enterprise features (like SSO and human review) may require a commercial subscription.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents