## TL;DR

The redaction filter missed personal data (names, card numbers, addresses) or errored before storing. Layer detection (pattern matching plus a name/address recognizer), verify the redacted output before storing, and quarantine anything the verifier cannot confirm clean.

## Error

```text
agent failed to redact pii from receipts before storing: filter error
```

## Steps

1. Define what counts as PII on receipts for your use case: card numbers, names, addresses, phone numbers. Expected: a concrete redaction target list.
2. Apply layered detection: regex patterns for card numbers and phones, plus a named-entity recognizer for names and addresses. Expected: each layer catches what the others miss.
3. After redacting, run a verification pass on the output for remaining pattern matches. Expected: a clean-or-quarantine verdict per receipt.
4. Store only verified-clean receipts; quarantine the rest for human review. Expected: no unreviewed PII reaches storage.
5. Log redaction failures with the receipt ID (not the PII itself) to tune the filters. Expected: a feedback loop that improves detection.

## When to use

- An agent must strip PII from receipts before storage.
- The redaction filter errors or misses personal data.

## When not to use

- The task is OCR accuracy, not privacy (see the OCR skills).
- PII handling policy is undefined (define it with legal first).

## Tool compatibility

- Custom agent storage pipelines; regex plus NER-based redaction.

## Variant phrasings

### PII redaction failed on receipt

Same failure, shorter wording.

### Personal data leaked into receipt storage

The impact phrasing of the same failure.

## Why it happens

Receipts mix business data with personal data in unpredictable layouts. A single pattern list misses the variety; layered detection plus verification closes the gaps.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_eXyQ9XUqEpIeMyNtr_AD-w
