ParseCraft
Document intelligence: convert any document into typed structured chunks, with Markdown as a deterministic projection
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.13tbuild 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)
| File | Size | Uploaded | |
|---|---|---|---|
| parsecraft-2026.9.2.tar.gz | 109.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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