Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for PolicyProof

Inspiration

Insurance teams handle documents that mix useful policy facts with contact, identity, and account data. A model can suggest what looks sensitive, but a suggestion is not authority to destroy information—and drawing an opaque box over text is not secure redaction. PolicyProof makes that boundary visible: software proposes, a person decides, and a document service performs the irreversible operation.

What it does

PolicyProof runs a four-step evidence pipeline:

  1. It extracts PDF text and identifies inspectable email, phone, policy-number, and SSN candidates.
  2. It masks those candidates and requires a reviewer to approve every removal.
  3. It sends only the approved exact-text plan and the synthetic PDF to Nutrient DWS.
  4. It returns a permanently redacted PDF plus a receipt containing timestamps, operation names, categories, and SHA-256 hashes—not the original values.

The public demo accepts only its built-in deterministic synthetic policy packet. It stores work in process memory, rejects arbitrary uploads, and caches the first successful DWS result so repeat visitors cannot drain sponsor credits.

How we built it

  • FastAPI and Uvicorn provide the bounded web/API workflow.
  • pypdf extracts inspectable text candidates.
  • ReportLab generates the deterministic synthetic policy packet.
  • The reviewer approves masked candidates in a responsive HTML/CSS/JavaScript UI.
  • Nutrient DWS executes createRedactions followed by applyRedactions.
  • SHA-256 binds the original document, approved findings, and result without repeating raw sensitive values.
  • The public Azure deployment runs as an unprivileged systemd service on localhost behind Nginx and Cloudflare.

Nutrient DWS does the heavy lifting: it performs the irreversible content removal; PolicyProof does not substitute a local black rectangle for secure redaction.

Challenges we ran into

The hardest design issue was not the visual workflow; it was preserving an honest trust boundary. A public hackathon demo also creates two risks of its own: visitors could upload real documents or repeatedly consume API credits. We made the sample PDF byte-deterministic, allowlisted only that artifact, required all four synthetic findings to be reviewed, bounded in-memory sessions, and cached the first successful DWS output.

Accomplishments that we're proud of

  • Real Nutrient Processor API integration, not a mocked sponsor logo.
  • Permanent redaction verified by extracting text from the output and confirming all four synthetic source values are gone.
  • A no-PII receipt with four hashed finding records.
  • Thirteen unit/API tests, public-artifact validation, and desktop/mobile browser validation with no console errors or horizontal overflow.
  • A synthetic-only public demo that rejects arbitrary documents with HTTP 403.

What we learned

Trustworthy document automation is easiest to explain when each component has a narrow, testable responsibility. Detection should be inspectable, destructive actions should require human authority, the document engine should remove real content, and audit evidence should prove lineage without reproducing the data it is meant to protect.

What's next for PolicyProof

PolicyProof is a hackathon prototype, not legal advice or a compliance certification. A production version would add authenticated tenant isolation, encrypted object storage with deletion policies, OCR-aware review, confidence thresholds, role-based approvals, retention controls, and independently reviewed regulatory mappings before accepting real insurance documents.

Links

Prior work disclosure

AgencyTech had prior insurance-domain experience and an existing POM AI Policy Concierge product. PolicyProof's standalone redaction review flow, Nutrient DWS integration, synthetic-only public mode, hash receipt, tests, and contest UI were built for the DevNetwork 2026 Nutrient challenge. No production customer data or production Policy Concierge service was used or modified.

Built With

Share this project:

Updates

Submission history