DisputeShield
A script tag, and the clock starts.
- Python
- Django
- PostgreSQL
- Redis
- Celery
The problem
A fintech owes its customers a way to file a dispute and owes its regulator an auditable record of what happened next. Building that means building a ticketing product, which nobody wants to do.
DisputeShield is a sandboxed cross-origin widget for the customer and an SLA-tracked, immutably audited case system for compliance.
What I built
- An embeddable widget — one script tag — plus a session-token API, with no cross-origin access to the host page.
- A Celery-driven SLA engine that alerts before the breach, not after it.
- Every state transition hash-chained and append-only, enforced at the database layer by trigger rather than by convention.
- A regulator-ready export of the whole case history.
Decisions worth naming
- The clock cannot be paused, because a pausable clock is an abusable one.
- There is no code path to a payment, and that is enforced by a call-graph test rather than by a promise in a README.
What is not finished
- Dispute categories are configurable, but the SLA ladder ships with one regime’s defaults.