Case Study

NaNi: WhatsApp-Based Ordering Platform for Township Commerce

We delivered a production-grade, multi-tenant ordering system that keeps informal retailers in their familiar channel while giving distributors structure, visibility, and scale.

Reach

8k+

Spaza shops per distributor

Channel

WhatsApp

Zero new app installs

NaNi Admin Dashboard

Client Overview

NaNi powers township commerce by connecting spaza shops with formal distributors using tools embedded in everyday life. The platform operates across South Africa and handles thousands of high-frequency orders while keeping the experience lightweight and accessible.

The Challenge

Ordering happened through informal WhatsApp chats and calls, creating errors, duplicated effort, and zero verification. Distributors lacked a standardised onboarding process, accurate locations, and a structured order intake flow.

Retailer pain

Manual back-and-forth caused incorrect orders and wasted time for shop owners.

Distributor pain

No consistent onboarding, limited visibility into service regions, and unstructured intake.

Do Not Force Behavioural Change

Every design decision started with a single non-negotiable principle: meet retailers where they already are. Rather than introducing new apps or logins, NaNi keeps WhatsApp at the heart of the journey and introduces web experiences only when absolutely necessary.

WhatsApp-first ordering keeps adoption friction low while ensuring structured data capture.

Distributors own onboarding and approvals, backed by automated checks and location context.

A multi-tenant core separates data and flows per distributor while sharing infrastructure.

Experience Pillars

Accessible

WhatsApp flows and micro UIs replace heavy apps or logins.

Structured

Distributor tooling enforces consistent onboarding and due diligence.

Scalable

Tenant isolation and event-driven workflows support rapid growth.

Customer Onboarding

  • 1. Shop messages the distributor’s verified WhatsApp Business number.
  • 2. Platform resolves the distributor, captures core business details, and enriches the record.
  • 3. Distributor receives a review task with geolocation mapping.
  • 4. Approval instantly unlocks ordering and triggers welcome messaging.

Ordering Journey

A lightweight storefront link keeps transactions structured while reducing friction.

  • Curated catalogue with distributor-specific pricing and availability.
  • Payment and delivery preferences captured in a guided flow.
  • Orders push to distributor dashboards and notify teams instantly.
  • Automated WhatsApp updates keep shops informed without extra effort.

Platform Architecture

NaNi runs on an event-driven, microservices architecture designed for asynchronous scale. Independent services manage distributors, customers, products, orders, payments, and regional data while communicating through messaging queues, ensuring resilience and tenant isolation.

Technology Stack

  • Node.js microservices hosted on AWS
  • AWS SQS and event buses for asynchronous orchestration
  • Vue.js powering distributor dashboards and shop storefronts
  • WhatsApp Business API via Twilio with Meta verification
  • Dedicated notification services for email and WhatsApp events

Outcome & Impact

NaNi is live in production, actively supporting distributors and informal retailers.

  • Dramatically reduced ordering errors and manual follow-ups.
  • Improved distributor visibility with geographic insight and reporting.
  • Scalable foundation ready for payments, credit, and additional distributors.

Role & Status

Led the end-to-end delivery: product definition, architecture, full-stack build, WhatsApp Business integration, and AWS operations.

  • System type: Production
  • Scalability: Thousands of spaza shops per tenant
  • Current state: Active and evolving roadmap

Have a similar challenge?

Let's co-create solutions that respect existing behaviours while delivering enterprise-grade scale.

Start a Conversation