Vayoo — Canadian Microfinance Operations
An admin-first, ledger-backed operations platform for personal loans, cheque cashing, gold buy, and currency exchange in a single tenant model.
Challenge
Microfinance operators (cheque cashing, gold buy, FX, short-term loans) typically operate on a stitch of spreadsheets, paper receipts, and per-product legacy software — none of which agree about what cash is in the till at end of day. Regulatory expectations are rising. The brief: build one platform where the till, the loan book, the FX inventory, and the gold log all roll up into one auditable money model, with tenant isolation so a multi-branch operator can run several locations without crossover.
Approach
- 01
Built Next.js 15 + Prisma + Supabase Postgres as the core, with Supabase Auth for staff identity and Supabase Storage for private customer documents and ID images.
- 02
Designed a ledger-backed money model from day one — every till transaction, loan disbursement, cheque cashed, gold purchase, and FX trade lands on a double-entry-style journal with reconciliation tooling, not a free-floating balance.
- 03
Enforced tenant isolation via Prisma + SQL RLS policies that live in the migration files (the schema is the source of truth, not a separate policy document).
- 04
Layered Upstash Redis for rate limiting, idempotency keys, short-lived locks on till operations, and cached FX rate snapshots.
- 05
Built a forms-heavy UI on React Hook Form + Zod with shared validation between server actions and clients, plus a full QA harness covering form alignment, cheque cashing parity with the legacy tool, and approval-flow regression.
- 06
Added approvals on operations above per-role thresholds (e.g. cash advances over a tier limit) with audit trail and per-action reasoning.
Outcome
End-of-day reconciliation moves from "count and pray" to a tally against a journal the system kept all day. Multi-branch operators run several locations under one tenant boundary with no data crossover, and the audit trail satisfies the standards a regulator or acquirer expects without manual evidence collection.
The stack we used.
More work.
A Canadian-first listings, AVM, and CRM platform built to outflank Realtor.ca.
A consumer real estate portal and an SSOT-driven brokerage CRM, designed together so the listing event stream feeds the campaign engine and the campaign engine answers back with conversion data. Built monorepo-style with Next.js, Expo, NestJS, and Supabase.
A Toronto brokerage's web presence converted into a real lead engine — HST rebate calculator included.
An independent realty brokerage needed a marketing site that did more than display agent photos. We rebuilt the public site with a real lead-capture spine, transactional email via Resend, and a specialized HST rebate calculator for new-build buyers.
A multi-role automotive advisory marketplace at 141K+ lines of production code.
A platform connecting independent customers to specialist mechanics and workshops for advisory sessions, in-person inspections, and brand-specialist work. Multi-role RBAC, Stripe billing, scheduled-session lifecycle, and a 5-provider AI failover for diagnostic assistance.
Bring us the hard one.
Tell us about the system you are trying to build. We will be back with you within one business day.