Legitimate presence as deterrence — companion booking + document-only debt recovery for Nigeria
# Vindicate
**Legitimate presence as deterrence.** Someone is with you, and nothing happens *because* they are with you.
Two product lines, built thin:
- **Accompany** — hourly-rate companion booking for the moments Nigerians already improvise a "follow me" for: bank cash withdrawals, marketplace meetups with strangers, apartment inspections, night transit, unfamiliar areas. Map + card-stack discovery, PIN-handshake session start, live tracking, Paystack collection and payout, SOS.
- **Recover** — document-only debt recovery: case intake, evidence vault, tiered demand letters with delivery receipts, and a Magistrate Court small-claims filing pack. No agents, no visits, ever.
## What makes it interesting to build
- **Verification is the product.** Independent providers only, so a tiered pipeline (NIN + liveness, BVN match, guarantors, police character certificate) is the load-bearing system, not a checkbox.
- **The booking state machine lives in Postgres.** Every transition is a `SECURITY DEFINER` RPC validated against a transitions table; the app never writes `bookings.state`. The valid-transition matrix is data, so the test suite enumerates it.
- **Safety features shaped by local infrastructure.** A dead-man's switch that distinguishes "provider in trouble" from "Lagos power cut killed the phone" is a real distributed-systems problem.
- **Abuse resistance by schema.** Service categories are a closed enum; there is no free-text "what do you want them to do" field, so confrontational jobs are unrepresentable, not just prohibited.
## Stack
Next.js (App Router, TS) · Supabase (Postgres + PostGIS, RLS, RPCs) · Paystack · Vercel
## Docs
- v1 build plan — scope, schema, phases, legal checklist
- Decision log — why it's built the way it is
## Status
Phase 0 in progress: schema, RLS, and state-machine RPC skeleton.