unstract is a free, open source ai development platforms project written in Python and released under AGPL-3.0. It has 7,244 GitHub stars, 716 forks and 96 open issues, and was last pushed 57 minutes ago. On this registry it ranks #70 of 116 tracked projects in AI Development Platforms, with 5 head-to-head comparisons available.

What is unstract?

Unstract is an open-source platform that uses large language models to extract structured JSON from unstructured documents such as PDFs, images, and scans, and it is built for teams in finance, insurance, healthcare, and KYC/compliance that need that extraction delivered as an API or an ETL pipeline.

What it is

Unstract is a Python project, licensed under AGPL-3.0, that turns unstructured documents into structured JSON. Extraction schemas are defined in natural language rather than code, and the resulting configuration can be shipped as a REST API endpoint or as an ETL pipeline that pulls documents from a folder, processes them, and loads the output into a warehouse. The platform runs as a set of services — frontend, backend, worker, and platform service — that are started together with Docker Compose. It integrates with LLM providers including OpenAI, Anthropic, Bedrock, and Ollama, so the extraction model is a pluggable choice rather than a fixed dependency.

The concrete problem it solves is the per-document-type engineering grind that precedes any downstream use of document data. Without Unstract, a team writes regex and builds a separate template for every vendor or document variant, spends days of development on each new document type, hand-rolls its own LLM integration pipeline, and ships all of it on custom infrastructure that returns unstructured text blobs. Unstract replaces that combination: one prompt is written once and absorbs variations, a new document type takes minutes in Prompt Studio, and the output arrives as clean JSON that is ready for a database instead of text that still has to be parsed.

Key capabilities

  • Prompt Studio defines document extraction schemas in natural language, so one prompt covers vendor and format variations instead of one template per variant.
  • API Deployment accepts a document over a REST API and returns JSON, making extraction callable from existing applications.
  • ETL Pipeline pulls documents from a folder, processes them, and loads the results into a data warehouse.
  • MCP Server exposes the platform to AI agents such as Claude through the Model Context Protocol.
  • n8n Node drops Unstract into existing n8n automation workflows.
  • Provider-agnostic LLM integration supports OpenAI, Anthropic, Bedrock, and Ollama.
  • run-platform.sh manages the Docker Compose deployment, including version-tagged pulls (-v), upgrades (-u), local image builds (-b), env-only setup (-e), and detached mode (-d).

Who uses it and how

  • Finance, insurance, healthcare, and KYC/compliance teams that receive high-variation document sets and need fields in a database rather than in text blobs.
  • Data engineering teams that already run a warehouse and want extraction to land there through the ETL Pipeline path instead of a custom loader.
  • Application teams that need extraction behind an HTTP boundary and therefore deploy the API Deployment path over REST.
  • Automation teams that already standardise on n8n and add Unstract as a node rather than as a separate service to call.
  • Agent builders connecting Claude and similar assistants to document extraction through the MCP Server.

Getting started

Clone the repository and run ./run-platform.sh; prerequisites are Linux or macOS on Intel or M-series hardware, Docker and Docker Compose, Git, and at least 8 GB of RAM. The platform then serves at http://frontend.unstract.localhost with the default credentials unstract / unstract, and a managed cloud option exists in addition to self-hosting.

How it compares

No list of paid products that Unstract replaces is provided, and no comparable tool is named in the topics or README. On the facts available, it stands alone in this registry.

When to use it — and when not to

A self-hoster must operate a multi-service Docker Compose stack — frontend, backend, worker, and platform service — supply LLM provider credentials, and safeguard the ENCRYPTION_KEY stored in backend/.env or platform-service/.env, since losing that key makes existing adapters inaccessible. Teams without Docker, without a Linux or macOS host, or without 8 GB of RAM to spare should not choose the self-hosted path. The project carries 96 open issues and an actively pushed repository as of 2026-09-18, so operators should expect to track a moving platform rather than a frozen one.

project readme (upstream, from github) — read inline

Unstract

Turn Unstructured Documents into Structured Data

Documentation | Enterprise

License Tutorials Uptime Status Docker Pulls Ask DeepWiki CLA assistant

Python Version from PEP 621 TOML uv Vite Bun Biome

pre-commit.ci status Quality Gate Status Code Smells Duplicated Lines (%)

What is Unstract?

Unstract uses LLMs to extract structured JSON from documents — PDFs, images, scans, you name it. Define what you want to extract using natural language prompts, and deploy as an API or ETL pipeline.

Built for teams in finance, insurance, healthcare, KYC/compliance, and much more.

Current State vs. Unstract

Task Without Unstract With Unstract
Schema definition Write regex, build templates per vendor Write a prompt once, handles variations
New document type Days of development Minutes in Prompt Studio
LLM integration Build your own pipeline Plug in any provider (OpenAI, Anthropic, Bedrock, Ollama)
Deployment Custom infrastructure ./run-platform.sh or managed cloud
Output Unstructured text blobs Clean JSON, ready for your database

⭐ If Unstract helps you, star this repo!

Star Unstract

✨ Key Features

Prompt Studio — Define document extraction schemas with natural language. Docs →

Prompt Studio

API Deployment — Send a document over REST API, get JSON back. Docs →

API Deployment

ETL Pipeline — Pull documents from a folder, process them, load to your warehouse. Docs →

MCP Server — Connect to AI agents (Claude, etc.) via Model Context Protocol. Docs →

n8n Node — Drop into existing automation workflows. Docs →

🚀 Quickstart (~5 mins)

System Requirements & Prerequisites

  • Linux or macOS (Intel or M-series)
  • Docker & Docker Compose
  • 8 GB RAM minimum
  • Git

Run Locally

# Clone and start
git clone https://github.com/Zipstack/unstract.git
cd unstract
./run-platform.sh

That's it!

📦 Other Deployment Options

Docker Compose

# Pull and run entire Unstract platform with default env config.
./run-platform.sh

# Pull and run docker containers with a specific version tag.
./run-platform.sh -v v0.1.0

# Upgrade existing Unstract platform setup by pulling the latest available version.
./run-platform.sh -u

# Upgrade existing Unstract platform setup by pulling a specific version.
./run-platform.sh -u -v v0.2.0

# Build docker images locally as a specific version tag.
./run-platform.sh -b -v v0.1.0

# Build docker images locally from working branch as `current` version tag.
./run-platform.sh -b -v current

# Display the help information.
./run-platform.sh -h

# Only do setup of environment files.
./run-platform.sh -e

# Only do docker images pull with a specific version tag.
./run-platform.sh -p -v v0.1.0

# Only do docker images pull by building locally with a specific version tag.
./run-platform.sh -p -b -v v0.1.0

# Upgrade existing Unstract platform setup with docker images built locally from working branch as `current` version tag.
./run-platform.sh -u -b -v current

# Pull and run docker containers in detached mode.
./run-platform.sh -d -v v0.1.0

🔐 Backup Encryption Key

[!WARNING] This key encrypts adapter credentials — losing it makes existing adapters inaccessible!

Copy the value of ENCRYPTION_KEY from backend/.env or platform-service/.env to a secure location.

🏗️ Unstract Architecture

┌────────────────────────────────────────────────────────────┐
│                          Unstract                          │
├─────────────┬─────────────┬─────────────┬──────────────────┤
│  Frontend   │   Backend   │   Worker    │ Platform Service │
│  (React)    │  (Django)   │  (Celery)   │   (FastAPI)      │
├─────────────┴─────────────┴─────────────┴──────────────────┤
│                      Cache (Redis)                         │
├────────────────────────────────────────────────────────────┤
│                  Message Queue (RabbitMQ)                  │
├────────────────────────────────────────────────────────────┤
│                   Database (PostgreSQL)                    │
├────────────────────────────────────────────────────────────┤
│  LLM Adapters    │  Vector DBs    │  Text Extractors       │
│  (OpenAI, etc.)  │ (Qdrant, etc.) │  (LLMWhisperer)        │
└────────────────────────────────────────────────────────────┘

Also see architecture.

📄 Document File Formats

Category Formats
Documents PDF, DOCX, DOC, ODT, TXT, CSV, JSON
Spreadsheets XLSX, XLS, ODS
Presentations PPTX, PPT, ODP
Images PNG, JPG, JPEG, TIFF, BMP, GIF, WEBP

🔌 Connectors & Adapters

LLM Providers

Provider Status Provider Status
OpenAI Azure OpenAI
OpenAI Compatible Anthropic Claude
AWS Bedrock Google Gemini
Ollama (local) Mistral AI
Anyscale

Vector Databases

Provider Status Provider Status
Qdrant Pinecone
Weaviate PostgreSQL
Milvus

Text Extractors

Provider Status
LLMWhisperer
Unstructured.io
LlamaIndex Parse

ETL Sources & Destinations

Sources: AWS S3, MinIO, Google Cloud Storage, Azure Blob, Google Drive, Dropbox, SFTP

Destinations: Snowflake, Amazon Redshift, Google BigQuery, PostgreSQL, MySQL, MariaDB, SQL Server, Oracle

Full Connector List

🛠️ Development

Chang

readme truncated — read the full docs on github

Frequently asked questions

Is unstract free to use?

unstract is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does unstract do?

LLM-Driven Extraction of Unstructured Data — Built for API Deployments & ETL Pipeline Workflows

What is unstract written in?

unstract is primarily written in Python. Its source is publicly available at https://github.com/Zipstack/unstract, and it has 7,244 GitHub stars.