# Swiss exact-match quote prototype

This is a synthetic n8n portfolio artifact. It is not client work and it is not a commercially valid Swiss quotation.

## Boundary

- Only synthetic data is used.
- No customer data, credentials, external SaaS, or LLM API is used.
- The `extracted_items` field simulates untrusted LLM output. The workflow validates it, then performs a deterministic exact-reference catalog match.
- A missing reference returns `NEEDS_REVIEW` with no total. A price claimed by extraction is ignored.
- The catalog and rates are synthetic. VAT is a fixed 8.1% fixture for this test, not tax advice.
- The Docker network is internal, so the lab cannot reach the external network.

## Reproduce

From the repository root, run:

```sh
pnpm lab:n8n-swiss-quote
```

The runner imports and publishes the workflow in a temporary n8n 2.33.7 container, executes five HTTP cases, exports an inactive public copy, writes `workflow.json` and `summary.json`, then removes the containers and volume.

## Files

- `workflow.json`: inactive n8n export without credentials
- `summary.json`: five measured HTTP cases
- `SHA256SUMS`: integrity hashes for the workflow and summary

Production use still requires a real catalog connector, authenticated input, durable audit storage, concurrency tests, monitoring, legal/tax review, and human approval before sending any quote.
