Vouchsafe — Project Story
Inspiration
Addiction rarely fails in a dramatic moment — it fails in the thirty seconds right after money lands in someone's hands. A paycheck arrives, and before any real decision gets made, it's already gone: one bet, one bar tab, one impulsive transfer. We watched this pattern play out for people close to us, and the tools that exist today only offer two extremes — total, rigid blocking (which people abandon the first time it's inconvenient) or nothing at all.
We also noticed a second, quieter problem: money sent for a real purpose — tithe, rent, supporting family — often arrives with zero context, forcing an awkward phone call just to explain what it was for. We realized both problems shared the same missing piece: purpose. If every payment carried its reason, two things become possible at once — no more explaining yourself over the phone, and a trusted person can make a real judgment call on the transactions that actually need one.
That's Vouchsafe: not a lock, not a lecture — a second set of eyes, exactly when it matters.
What it does
Vouchsafe adds a human checkpoint to spending:
- Every transaction requires a purpose — a category (Rent, Chama, Alcohol, Betting, etc.) and an optional note, so recipients and the sender's own records always have context, no phone call required.
- Risky transactions require approval — anything above an agreed threshold, or tagged under a high-risk category, is held as pending until a trusted accountability partner approves or declines it.
- Partners see only what they need to — amount, category, and recipient. Never the sender's balance or incoming money. Full financial oversight isn't the goal; a second opinion at the right moment is.
- The category engine catches disguised spending — not just large transactions. If "Rent" gets used twice in a month, or someone starts routing the same recipient through three different category labels to dodge scrutiny, Vouchsafe flags it with clear context for the partner to review.
How we built it
- Backend: FastAPI, chosen for speed of development and automatic API docs — useful both for our own testing and for demoing live to judges.
- Database: SQLite, kept deliberately simple for the hackathon timeline — zero setup, one file, no server configuration eating into build time.
- Payment layer: a mocked/simulated payment service standing in for a real processor (M-Pesa was our original inspiration and target market). It logs and returns realistic responses so the full approval-to-execution flow works end-to-end without real payment integration overhead.
- Category validation engine: the core differentiator — rules for frequency limits, duplicate-use detection, always-flagged categories, and amount-threshold checks, all running server-side before any transaction is allowed through.
- Frontend: a lightweight React interface with two views — the sender's transaction flow and the partner's approval queue — so the full loop is visible and demoable in one sitting.
Challenges we ran into
- Scoping down without losing the point. The full product vision includes real payment processor integration, mobile apps, SMS notifications, and much richer pattern detection. Fitting the core mechanic — purpose tagging plus category-aware approval — into a 14-hour build meant cutting hard and being honest in our writeup about what's simulated versus production-ready.
- Making the category rules genuinely useful, not just decorative. It would have been easy to build a simple amount-threshold check and call it done. Getting the duplicate-detection and always-flagged logic actually working — and explainable to the partner in plain language — took real iteration.
- Designing partner permissions correctly. Deciding exactly what a partner can and can't see took real thought: too little visibility and their approval is meaningless; too much and the tool becomes financial surveillance instead of support.
Accomplishments that we're proud of
- A working end-to-end flow: a transaction gets created, validated against category rules, routed to a partner when it should be, and resolved — all functioning together, not just as separate pieces.
- Category-abuse detection that goes beyond a simple dollar-amount check, catching the exact evasion pattern (splitting or relabeling spending) that a naive threshold system would miss entirely.
- A permissions model that respects both the sender's dignity and the partner's need for real context — no full financial surveillance, just the information necessary to make one good decision.
What we learned
- How real financial compliance systems detect structuring (splitting transactions to evade oversight) — and how directly that same logic applies to personal accountability tools, not just banks.
- The importance of designing friction thoughtfully: too much, and people abandon the tool the first time it's inconvenient; too little, and it doesn't protect anyone. Every rule we built, we tried to justify against that balance.
- That a good accountability system isn't about restriction — it's about giving someone the context to make one good decision, at one important moment.
What's next for Vouchsafe
- Real payment processor integration, starting with M-Pesa's Daraja API — the market this was originally designed for, where mobile money is the primary way people transact.
- Mobile-first apps for both the sender and the accountability partner, with push notifications replacing our current in-app/simulated alerts.
- Backup accountability partners and smarter fallback handling for when a partner is unreachable, so the tool never becomes a hard blocker on someone's daily life.
- Richer structuring detection, tuned with real usage data rather than hardcoded thresholds.
- Piloting with real users and their real accountability partners — the actual test of whether this helps people, beyond a hackathon demo.
Built With
- css
- fastapi
- fetch-api
- html
- javascript
- json
- pydantic
- python
- react
- rest-api
- sqlalchemy
- sqlite
- vite
Log in or sign up for Devpost to join the conversation.