Problem: ISP billing and customer operations require payments, customer accounts, network provisioning, vouchers, and tenant-specific operations to work together. Fragmented manual workflows cause billing discrepancies, delayed service activation, and operational overhead.
Key Engineering Decisions
Storage-layer idempotency prevents duplicate M-Pesa payment processing across webhook retries via a UNIQUE constraint on mpesa_receipt_number.
Redis-backed arq background jobs decouple payment acknowledgment from router network provisioning.
WireGuard private tunnels isolate MikroTik router administration from the public internet.
Query-level tenant scoping strictly enforces data isolation across all billing entities.
Case study by Fredrick Nyang'au, Backend Engineer based in Nairobi, Kenya, open to remote roles worldwide. Builds backend systems with Python, FastAPI, PostgreSQL, and M-Pesa Daraja integrations.