OpalMinds Client Review — Build Runsheet

TikMax — 7‑Day MVP Execution Plan

One corridor, one country, one real operator — proving mobile money collection and zero-double-booking seat inventory end to end.

NAIROBI origin BOARDING STAGE one operator · live inventory MOMBASA destination ⇔ scroll to see full route
Fleet62-seat + 14-seat
Lock TTL15:00 auto-release
Payment railSTK Push
TicketHMAC-signed QR

Before Day 1 — Client-Side Dependencies

Parallel · not on our clock

Kicked off the moment the contract is signed. We build on sandbox credentials by default so engineering isn't blocked.

M-Pesa Daraja sandbox → shortcode
Client / SafaricomSandbox same-day · paybill days–weeks
Risk: demo runs on sandbox only
MoMo / Paystack / Flutterwave account
Client1–5 days
Risk: same — sandbox fallback
One real bus operator — route + seat map
ClientImmediate on warm intro
Risk: Day 5 portal has nothing real to demo
SMS sender ID (Africa's Talking / Termii)
Client1–3 days
Risk: falls back to shared sender
Explicitly out of MVPWhatsApp Business API — Meta approval runs 1–3 weeks. SMS is primary; WhatsApp is fast-follow.

Build Sequence

7 days
1
Core Schema & Locking Foundation
  • Trip / route / bus / seat / booking schema (Postgres)
  • Redis seat-lock — acquire → 15-min TTL → auto-release
2
Seat Maps & Schedules
  • 62-seat coach + 14-seat mini-bus — the pilot's real fleet
  • Schedule CRUD, seat map UI, single currency
3
Mobile Money IntegrationCore technical proof
  • STK Push (M-Pesa / MoMo), idempotent webhook on txn reference
  • Poll: Selected → Locked → Push Sent → Pending → Confirmed/Failed
Passenger app Agent portal Seat 14A LOCKED → CONFIRMED REJECTED → RETRY ⇔ scroll to see full diagram
Concurrent lock race on the same seat — one request wins, the other fails clean. No double-sell.
4
Passenger Web App
  • PWA — phone + OTP or guest checkout
  • Search → seat select → pay → confirmation, one live route
5
Agent Booking PortalDifferentiator
  • Clerk screen: pick trip → seat → mark cash collected → lock instantly
  • Same lock engine as passengers — first-come-first-served for MVP
Fast-followAgent-priority lock weighting, narrated live but not built — the safe concurrency logic is a week-two item.
6
Ticketing & Delivery
  • SMS dispatch with boarding point, plate number, seat
ROUTE NBO → MSA SEAT 14A DEP 07:00 SIG 8F3A·C102 · OFFLINE-VERIFIABLE ⇔ scroll to see full ticket
HMAC over trip / seat / passenger / timestamp — verification tool built, lightly tested this week.
7
End-to-End Demo & Resilience Testing
  • Scripted concurrent-lock race, live — proves the core claim
  • 3G throttle check + full walkthrough: pay → agent sale → SMS → QR scan

Where This Leaves Us

3Claims proven live
  1. Mobile money works end-to-end — async delay, idempotent confirmation, not a mockup
  2. Seats cannot be double-sold under concurrent load
  3. A real operator's inventory is live, not seed data
6Items fast-follow
  • Agent-priority lock weighting
  • Border manifest / passport + compliance (DPA/NDPR)
  • Multi-currency, multi-language
  • WhatsApp delivery
  • Production-grade offline scanner + load testing
  • Refunds, payouts, analytics