Metadata-Version: 2.4
Name: swisstip-builder
Version: 0.2.4
Summary: Swiss TIP workstation tools: source acquisition, text extraction, release build and the admin console
Author: Alexander Bobrovsky
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/bobrovsky420/hackathon2026
Project-URL: Source, https://github.com/bobrovsky420/hackathon2026
Project-URL: Issues, https://github.com/bobrovsky420/hackathon2026/issues
Keywords: mcp,grounding,switzerland,crawler,curation
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: fastapi<1,>=0.115
Requires-Dist: jinja2<4,>=3.1
Requires-Dist: lxml==6.1.3
Requires-Dist: pydantic<3,>=2.11
Requires-Dist: pypdf==6.18.0
Requires-Dist: pypdfium2==5.13.0
Requires-Dist: python-multipart<1,>=0.0.20
Requires-Dist: pyyaml==6.0.3
Requires-Dist: swisstip-core==0.2.4
Requires-Dist: uvicorn<1,>=0.30
Provides-Extra: office
Requires-Dist: olefile==0.47; extra == "office"
Requires-Dist: striprtf==0.0.33; extra == "office"
Dynamic: license-file

# swisstip-builder

**Last update:** 15 September 2026

The workstation tools of Swiss TIP, the grounding MCP server for Swiss public
information. They turn a source catalogue into a validated, reviewed knowledge
release that `swisstip-mcp` serves.

| Command | Does |
| --- | --- |
| `swisstip-admin` | Local web console: sources, saved documents, reading view, review queue, tool sandbox, release |
| `swisstip-build` | The whole pipeline of a pack: acquire, gaps, extract, validate, build, accept, ready |
| `swisstip-download`, `swisstip-gaps` | Bounded source acquisition (robots.txt, rate limits, request budget) and the gap report |
| `swisstip-extract`, `swisstip-extract-validate` | Saved pages and PDFs to labelled text blocks with offsets and hashes |
| `swisstip-build-release` | Curation file plus text dataset to `release.json` |
| `swisstip-concepts`, `swisstip-concepts-package` | Model-proposed concept candidates with a separate review |

## Install

Python 3.14 or newer. Install it as an isolated tool; the extraction
libraries are pinned exactly, because the text hashes of a release depend on
them:

```bash
uv tool install swisstip-builder              # or: pipx install swisstip-builder
uv tool install "swisstip-builder[office]"    # adds legacy Office and RTF extraction
```

## Use

The tools work on a directory that holds `releases/<pack>/` (a source
catalogue, a curation file, saved pages and a text dataset), for example a
clone of the repository or an unpacked pack workspace. Pass it as `--root`:

```bash
swisstip-admin --root .                      # console on http://127.0.0.1:8765
swisstip-build mvp-zurich --root . --from build --until accept
swisstip-build mvp-zurich --root . --from accept --until ready --attested-by "A. Person"
```

The resulting `releases/<pack>/release.json` and `readiness.json` are what
`swisstip-mcp --release` serves.

Licence: Apache-2.0.
