fenic vs unstract
Semantic DataFrames: PySpark-style select, filter and join alongside AI operators — extract, classify, summarize, embed, semantic join — compiled on an engine built for inference. — versus — LLM-driven platform turning unstructured documents into structured data: a no-code Prompt Studio to define extractions, then deploy as APIs or ETL pipelines. Self-hosted, AGPL + enterprise.
Both turn unstructured input into structured rows you can deploy. Unstract is a no-code Prompt Studio with an API/ETL deploy path; fenic is code — typed DataFrame operators for engineers who want lineage, caching and cost accounting in the query model.
| fenic | unstract | |
|---|---|---|
| Stars | 665 | 7.1k |
| Forks | 41 | 704 |
| Language | Python | Python |
| License | Apache-2.0 | AGPL-3.0 |
| Last activity | 3 days ago | 4 days ago |
| Topics | data, orchestration | ocr, rag |
| Curated connections | 3 | 4 |
fenic — the curator's take
Use it when an agent's data discovery has to survive the chat: express the work as typed operators and the pipeline is already the artifact — `explain()`-able, rerunnable, row-level lineage, per-query cost and tokens, promotable to a table, view or MCP tool. `semantic.extract(PydanticModel)` replacing regex-plus-one-off-prompt is the whole pitch, and the engine handles batching, rate limits, retries and response caching so you aren't hand-rolling them. Not the tool for streaming or petabyte scale, and not a pandas replacement: it's a lazy query engine you configure models on, so single-row interactive work feels heavy and every operator is a real inference bill.
unstract — the curator's take
The platform play in document extraction: where parsers hand you markdown, Unstract hands you the FIELDS — Prompt Studio lets a domain expert define and test per-document-type extraction prompts, then ships them as stable APIs or ETL pipelines into warehouses, with the connector surface (S3, databases, DMS) that ops teams actually need. Docker-compose up and it runs. NOT a parsing engine: quality rides on the LLM you wire in and per-page LLM calls at volume cost real money — for clean-layout bulk conversion a deterministic parser is cheaper; and mind the AGPL + enterprise split when embedding.