Goal
All document formats named in the customer request are parsed into segments with stable locators, including scanned PDFs, so evidence always points to a findable place.
Acceptance criteria
Not part of this task
- Line-item review UI, eval gate
Affected areas
services/ai/src/**/parsing/
services/ai/tests/fixtures/
Test plan
| Criterion |
Check |
| each format |
pytest with small synthetic fixtures generated by a committed script |
| partial failure |
pytest: one corrupt attachment, others still parsed |
| OCR cap |
pytest: OCR-only evidence never found |
Security/Privacy affected?
Yes – untrusted documents: size limits, no macro execution, parser errors never crash the service; security rule parsing/** applies.
Epic: #17 · Architecture: docs/decisions/ADR-0001-pilot-architecture.md
Goal
All document formats named in the customer request are parsed into segments with stable locators, including scanned PDFs, so evidence always points to a findable place.
Acceptance criteria
Sheet!A1locators (one segment per non-empty cell or row – documented choice)ocr: true; a field whose only evidence is OCR text is at mostuncertainNot part of this task
Affected areas
services/ai/src/**/parsing/services/ai/tests/fixtures/Test plan
foundSecurity/Privacy affected?
Yes – untrusted documents: size limits, no macro execution, parser errors never crash the service; security rule
parsing/**applies.Epic: #17 · Architecture:
docs/decisions/ADR-0001-pilot-architecture.md