Skip to main content

ParseCraft

Document intelligence: convert any document into typed structured chunks, with Markdown as a deterministic projection

Python 3.13 | 3.14+ License CI

ParseCraft turns a document into a typed intermediate representation (IR) of structured chunks. Backends analyze a source and convert bounded page slices into IR pages; a dependency-free renderer projects the IR to deterministic Markdown. The IR is the source of truth — every other output is a projection of it.

The project is at Phase 0. The IR schema, the backend protocol and registry, and the CLI are implemented and covered by tests. Document adapters, the config engine, and concrete OCR/VLM backends arrive in later phases.

Component State
IR schema + Markdown projection (parsecraft.ir) Implemented
Backend protocol + registry (parsecraft.backends) Implemented
CLI (parsecraft, parsecraft backends) Implemented
Entry-point backend discovery Implemented
Document adapters, config engine, OCR/VLM backends Planned
PyPI distribution Not published

Requirements

  • Python 3.13 (GIL only — the free-threaded 3.13t build is not supported)
  • Python 3.14 or newer, including free-threaded builds (3.14t)
  • uv for dependency management
  • mise for the project task runner

Quick Start

git clone https://github.com/jr2804/parsecraft.git
cd parsecraft
mise dev            # uv sync -U --dev --all-extras --all-groups
mise test           # pytest with the 100% coverage gate
uv run parsecraft backends

mise dev installs dependencies only. mise test, mise lint, and mise format run the quality gates.

CLI

Command Description
parsecraft Show help (no_args_is_help)
parsecraft default Print the welcome message
parsecraft backends List registered backends; prints load warnings to stderr
parsecraft backends --json Emit the backend descriptors as JSON
parsecraft --version (-v) Print the package version
uv run parsecraft backends
# No backends registered.        (fresh checkout)

# After installing a backend:
# example-echo             cpu              text
# warning: backend 'broken' failed to load: ...   (stderr)

uv run parsecraft --version
Environment Variable Description
PARSECRAFT_JSON Default for the --json flag on parsecraft backends

Project Structure

parsecraft/
├── .config/mise/               # mise task definitions
├── .github/workflows/          # CI, docs, and release workflows
├── docs/                       # Zensical documentation site
│   ├── adr/                    # Architecture decision records
│   └── reference/              # API + CLI reference
├── examples/
│   └── third_party_backend/    # Working entry-point backend
├── scripts/
│   └── gen_credits.py          # Credits generator for the docs site
├── src/parsecraft/
│   ├── __init__.py
│   ├── __about__.py            # Package metadata
│   ├── backends/               # Protocol, registry, errors
│   ├── cli/                    # Typer app, commands, args
│   ├── ir/                     # IR models + Markdown projection
│   └── py.typed
├── tests/                      # pytest suite (100% coverage gate)
├── pyproject.toml              # uv + hatch + pytest config
├── ruff.toml                   # Linter + formatter config
├── ty.toml                     # Type checker config
└── zensical.toml               # Docs site configuration

Development

mise test       # pytest with the 100% coverage gate
mise lint       # ruff check
mise typecheck  # ty check src/ tests/
mise spell      # codespell
mise format     # ruff format + isort + clean-sort
mise all        # test + lint + spell + format + format-md + docs

Pre-commit hooks run a subset of these on every commit:

pre-commit install
pre-commit run --all-files

The docs site builds with mise docs (uv run zensical build). Serve it live with uv run --link-mode=copy zensical serve.

CI/CD

Workflow Triggers Jobs
CI (ci.yml) push to main, PR to main quality (mise lint + mise spell), test matrix (ubuntu/macos/windows: 3.13, 3.14, 3.14t; ubuntu: 3.15-dev, allowed to fail), docs build
Release (release.yml) push to main, manual compute the next CalVer version, tag it, build the package, create a GitHub release, publish to PyPI, deploy the docs site to GitHub Pages

Documentation

Full documentation: https://jr2804.github.io/parsecraft/

AI Dev-Features

The project ships optional AI-agent tooling. After mise dev, install with:

mise run add-mcp-servers <agent>   # register MCP servers (claude, codex, gemini, ...)
mise run add-skills                # install agent skills

Enabled dev-features are listed in .config/mise/conf.d/mcp.toml and .config/mise/conf.d/skills.toml.

Tech Stack

Layer Tool Purpose
Package manager uv Fast installs, deterministic lockfile
Task runner mise DAG-based tasks, tool version management
Linter + formatter ruff Single-binary code quality
Type checker ty Strict type checking
Testing pytest Test framework with 100% coverage gate
Spell check codespell Code and doc spell checking
Documentation Zensical MkDocs Material with executable examples
Versioning uv-dynamic-versioning Git tag-based versioning
Hooks pre-commit Automated quality gate
CI/CD GitHub Actions Test matrix, docs, PyPI release

License

MIT — see LICENSE for details.


Generated from copier-uv-plus.

Metadata

Release files for parsecraft 2026.9.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parsecraft 2026.9.2
File Size Uploaded
parsecraft-2026.9.2.tar.gz 109.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for parsecraft 2026.9.2
File Interpreter ABI Platform
parsecraft-2026.9.2-py3-none-any.whl Python 3 none any Details

Total release size: 155.2 kB

Release files / parsecraft-2026.9.2.tar.gz

Download URL parsecraft-2026.9.2.tar.gz
Size 109.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e60205d42ad402d4f47444e62eee09d9933b1581de001030d2f701c5eb3f0d68
BLAKE2b-256 checksum
How to use checksums
5d9b89cc96ce9ff0bcd6c4e607084059ddec963e322921a56118ad7b96cf3bbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / parsecraft-2026.9.2-py3-none-any.whl

Download URL parsecraft-2026.9.2-py3-none-any.whl
Size 45.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6215146bff248e0bc45e00f573db04cc5d692c993ba33b964cca1e3219c30a99
BLAKE2b-256 checksum
How to use checksums
c1a66a780ce20fc5d57a8b10e21c1dbb9cae55de6095f39d24bcd701c80f3256
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page