I decided no LLM would go near my compliance decisions.

If a tool decides whether your AI system is legal to ship, the last thing I want deciding that is another model nobody can explain.

Opencomplai's rule engine (packages/core) and CLI are fully deterministic. No LLM. No ML inference. Not anywhere in the compliance decision path.

That's a design constraint, not a line for the landing page, and I don't just assert it. CI enforces it. Every pyproject.toml, package.json and requirements*.txt in the repo is scanned for unapproved AI/LLM packages on every PR, with excludes for tests, examples and fixtures so a demo notebook doesn't fail the build.

Add a transformers import to the risk engine without going through approval and the build breaks before it merges.

There is an ML-adjacent path. packages/ai is an optional plugin. It includes a deterministic matcher that needs no model download (fixed Annex III, prohibited-practice and limited-risk signal lists, no model inference), which is the one scan --propose uses unless --ai-model is given. A local model needs the optional [deep] extra, which runs local GGUF models via llama-cpp-python, and the configured default model for --ai-intent is one of these, so on a base install --ai-intent prints "AI intent skipped". It's opt-in, off by default, and advisory, and it's sandboxed to its own package. With --ai-intent it classifies code call sites, and what it finds can raise a scan's severity and, when --fail-on is set, change its exit. It doesn't decide whether Article 5 applies to you.

I use AI every day. Last month I ran a workflow with more than 200 agents for more than 75 hours. So this isn't fear of the tool.

What I'm afraid of is an audit trail that says "the model decided this was compliant." That's not an audit trail. That's a liability with extra steps.

A regulator, or your own legal team, needs to trace why a system got classified high-risk down to a specific readable rule, not a probability distribution.

The scanner and the full inventory are in the repo if you want to see exactly what is allow-listed and why: github.com/Opencomplai/opencomplai, docs/security/ai-inventory.md.

Updated October 2026 (release 0.12.0): scan --propose uses the deterministic matcher unless you pass --ai-model. The configured default model for scan --ai-intent needs the [deep] extra, so a base install prints "AI intent skipped".