Platform hardening and the new financing product aren't competing priorities. The hardening work is what makes the financing product's credit signal trustworthy, and the financing product is the forcing function that makes the hardening work worth doing now rather than eventually.
This is the "low-hanging fruit" column from Architecture, done before or alongside the start of financing engineering: cheap, and it removes the specific risks a fintech product would otherwise inherit.
| Item | Why now |
|---|---|
| Lock down Express's CORS policy | Live vulnerability, independent of everything else |
| Fix Express's dual schema-source-of-truth startup pattern | Prevents silent schema drift before more services depend on this pattern |
| Add Express smoke tests | Zero coverage today, cheap to start, expensive to retrofit later |
| Turn on automated Postgres backups for Express | Closes a real data-loss risk immediately, ahead of any RDS migration |
| Fix GPS Dashboard's silent PostgREST truncation | Currently a correctness bug, not just a performance one |
| Write the "revoke anon/authenticated" rule down as a standing checklist | Must apply to the new Financing service's Supabase project from day one |
Goal: a small pilot cohort of 10 to 20 drivers, fully human-verified before automating anything, the same path Tugende and M-KOPA reportedly took before automating. This pilot scale is what the first-6-months cost estimate below is actually sized for.
3 to 5 people: one senior backend engineer owning the lending/fintech domain, one additional backend engineer for KYC/payment integrations (reusing Upahar's Supabase/FastAPI patterns directly cuts this down from generic industry estimates), one mobile/frontend engineer (lighter load if reusing the Upahar app shell for the driver entry point), part-time product/compliance-ops (the NRB KYC/AML workstream is real work, not overhead), part-time QA/DevOps. Roughly 4 to 7 months to a v1, narrower than generic 8 to 10 month industry estimates because of pattern reuse and a deliberately narrow scope. Phase 1 hardening work is comparatively small, days to low weeks of existing-team time, not a separate budget line.
Sized for what Phase 2 actually is: a 10 to 20 driver pilot, using the exact architecture decided in System architecture, not a hypothetical scaled-up driver base. One number per line, not a range, because at this scale usage barely moves the number month to month.
| Item | Monthly, first 6 months | Basis |
|---|---|---|
| Supabase (Postgres + Storage + Auth), own project | $25 | Pro plan floor. Free tier is enough by usage but pauses inactive projects and has no support commitment, not appropriate for live KYC data |
| eKYC (DIY Textract/Rekognition) | $10 | About $0.07/verification, generously sized for pilot volume plus retries |
| SMS (SparrowSMS) | $5 | About NPR 0.85 to 1.4/SMS, 5 to 10/driver/month at 10 to 20 drivers |
| Payment/collection fees | $5 | ConnectIPS-led, Rs 2 to 8/transaction, near-zero at pilot volume |
| App/backend hosting | $20 | One small stateless EC2 container, same shape as Upahar's existing deploy |
| Total | $65/month | About $390 for the first 6 months |
This grows once the pilot cohort grows past Phase 2, most sensitive to eKYC volume and payment-rail mix, but that's a Phase 3 planning question, not a first-6-months one.
| Item | Rough effort |
|---|---|
| Phase 1 low-hanging-fruit fixes (CORS, tests, backups, truncation fix, schema cleanup) | Days to 2 weeks of existing-team time, no new infra spend |
| Express RDS migration | pg_dump/restore during a maintenance window, right-sized for this database's likely scale. 1 to 2 weeks engineering, plus about $15/month for a small Single-AZ instance, likely covered by AWS's 12-month free tier if the account is eligible. Do the immediate ad hoc backup (Phase 1) regardless of when this lands. |
| Canonical identity layer | A single service other products call synchronously, not Kafka/event-driven. Realistically 4 to 8 weeks for a first version covering read access for Upahar + Express, longer if GPS Dashboard's access pattern is retired in the same phase |
| Cross-product analytics layer | 2 to 4 weeks for a lightweight version: one small reporting Postgres database, batch-fed on a schedule. A full warehouse or CDC/Debezium pipeline is confirmed premature at this data volume |
| Express partner API (auth, rate limiting, webhooks, docs) + point-to-point delivery | 4 to 6 weeks, can run in parallel with financing Phase 2/3 |