# llm-ingestion-okf > Turn a folder of documents (PDF, DOCX, XLSX, PPTX, MD) into a bundle a model can answer from with a source on every claim. Offline and deterministic: no model call anywhere in the run path. Security is delegated to llm-ingestion-guard. Requires Python 3.10+ and [uv](https://docs.astral.sh/uv/). Neither this package nor the guard it depends on is on a package index yet; one command resolves both: ```sh uv tool install "llm-ingestion-okf[extract] @ git+https://git.fromaitochitta.com/open/llm-ingestion-okf.git@v0.8.2" ``` Then, in the folder you want to work from: ```sh okf project ~/my-documents claude ``` `okf project` writes the bundle to `.okf//` and a Claude Code skill to `.claude/skills/-consume/` in the current directory. Start `claude` there and ask in plain language. Three shapes of request are supported and the generated skill states the rules for each: a **question**, a **hypothesis** (answered per premise as `confirmed` / `refuted` / `undecidable-from-bundle`), and a **task whose answer is a document** (every claim in the written file carries its source; an ungrounded paragraph is written and marked, never dropped). ## Docs - [Consume in Claude Code](README.md#consume-in-claude-code): the same thing in steps, several bundles in one project, and what was measured. - [README](README.md): the pip-only fallback if uv is unavailable, the guard pairing per tag, the build flags, phase status, and the upstream OKF version policy.