AgentDash is a pure-USSD, offline-first cash-in / cash-out platform for Ghana's mobile money agents. No app to install — any GSM handset works. Batch 10 sends on a single PIN. Undo any transfer for 90 seconds. Built to beat both raw telco menus and Accessibility-Service automators like mBanqer.
*920#, PIN 1739, choose 2 = Batch, paste 0241234567*50;0551234567*100;02*80. Single PIN debits all three.*920*1*01*50# — alias 01 resolves to Mama Ama, skips to confirm.*920*4# within 90s to reverse.*920*1*0244000001*20#.Because we own the server, we can collapse screens, cache identity, and batch settlement — moves that are impossible for a phone-side automator poking at MTN's own USSD tree.
*920*1*number*amount# skips 3 screens. Aliases: *920*1*01*50# resolves to a named contact.
Enter up to 10 recipients separated by semicolons. Single float debit, N async credit jobs on BullMQ. mBanqer physically can't do this — it dials once per customer.
Every confirm sets undo:<ref> in Upstash Redis with a 90s TTL. Dial *920*4# to cancel the BullMQ job before settlement lands.
Last 5 MSISDNs cached 1h. Named contacts (01–99) resolve server-side. Sticky last amount pre-filled on repeat sends.
Every send and every batch line checked against Redis-cached blocklist in a single pipeline — sub-2ms even for 10-line batches.
CBS/wallet API calls (200–500ms) never touch USSD. Session ends immediately with 'Processing' + SMS confirms via async worker.