# POL-003 — An uploaded policy document must fit the provider file constraints

> Where a policy is uploaded rather than linked, the file must be a PDF, PNG or JPEG within the tightest provider size cap.

- **Rule ID:** POL-003
- **Layer:** Policy pages (`POLICY_PAGE`)
- **Checks:** `campaign policy document upload`
- **Severity:** BLOCKING — Breaking this rule gets the submission rejected outright.
- **When it bites:** Gates approval — get this wrong and registration is refused
- **How it is detected:** Deterministic (settled in code from the submitted values)
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** AWS, TCR, Bandwidth, Telnyx
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/policy-page/pol-003/

## Why this rule exists

Uploading is the sanctioned route for a brand with no website or an offline opt-in, and the caps differ by an order of magnitude — 500 KB at AWS against 10 MB at TCR — so a file that uploads cleanly at one destination is rejected at another with an error about the campaign rather than about the file. A scanned policy from an office printer is several megabytes without anyone intending it to be.

## How to fix it

Re-export the document as a PDF under 500 KB — print to PDF rather than scanning, or downsample the scan to 150 dpi — and re-upload. Done when the file is one of PDF, PNG or JPEG and under half a megabyte.

## Example of a compliant value

```text
acme-privacy-policy.pdf · application/pdf · 210 KB
```

## Common mistakes

- A hosted URL is preferred wherever a website exists; WEB-054 fails a PDF that stands in for a page the brand could have published.

## Notes

Applies only where a document was uploaded, which no applicability dimension expresses — the check passes immediately when the registration carries none. The 500 KB ceiling is AWS's, taken as the tightest cap so a submission survives a destination that has not been chosen yet.
