Inspiration Most Nigerian small businesses already live on WhatsApp — that's where they talk to customers, suppliers, and each other. But every bookkeeping tool asks them to leave that world and enter a spreadsheet or a formal app instead, which is exactly the friction that makes informal traders abandon record-keeping within a week. We wanted an AI business operator that meets merchants where they already are: no data entry screens, no accounting jargon — just tell it what happened, the way you'd tell a person, in English or Pidgin, by voice, text, or a photo of a receipt.
What it does
SabiStock is a WhatsApp-first AI business operator. A merchant says "I sold two bags of rice to Amaka for ₦40,000, she paid half" and SabiStock extracts the sale, updates stock, records the payment, and tracks the ₦20,000 still owed — with a confirmation step for anything uncertain, or instant auto-commit (with an undo window) for entries that clearly fit the owner's own configured limits. The same AI operator works identically across WhatsApp, the web app, and voice input, backed by real multi-branch inventory, customer debt tracking, team roles (8 permission levels), e-signature documents, and a daily business summary — all bilingual in English and Nigerian Pidgin.
How we built it
Backend: NestJS API + BullMQ worker, PostgreSQL via Prisma, Redis, deployed on Google Cloud Run (API service, worker pool, and a migration job), Cloud SQL, Memorystore. AI: Google Gemini via Vertex AI, using Application Default Credentials rather than API keys, with capability-matched models — a stronger model for image/audio extraction against a strict schema, a lighter one for conversational responses. Channels: WhatsApp Business Cloud API (webhook-driven, signature-verified) and a Next.js web app sharing the exact same ingestion and confirmation pipeline. Infra: GitHub Actions CI/CD via Workload Identity Federation (no long-lived cloud keys), Secret Manager for all credentials, Resend for transactional email, custom domain at sabistock.com.
Challenges we ran into
WhatsApp message IDs are standard base64 and routinely contain =, +, / — none of which are URL-safe, which silently broke every single transaction recorded through WhatsApp until we hashed the ID instead of using it directly. Vertex AI's structured-output schema is a proto-based subset of OpenAPI, not the public Generative Language API's JSON Schema — nullable: true instead of type: ['string','null'], discovered only by testing against a real receipt image. WhatsApp Business Platform requires two independent subscription layers (app-level and WABA-level) before webhooks deliver at all — missing either one fails silently with no error, just total inbound silence. Getting Meta to approve a display name that doesn't match the legal business name required proving the relationship on the public website itself, not just inside Meta's own console.
Accomplishments that we're proud of
A genuinely live, production deployment — not a demo. Real domain, real WhatsApp Business number, real database, real customers able to register today. End-to-end WhatsApp verified with real message traffic: correct AI extraction, confirmation flow, inventory updates, and delivered replies. Found and fixed a deterministic production bug (the idempotency-key issue) the same day it surfaced, with a working retry-notification model that only alerts users after genuine failure, not on every transient retry. A trust-calibrated automation design: AI autonomy is opt-in, capped by the owner's own limits, fully audited, and reversible within an undo window — not blind automation. Real bilingual support (English/Pidgin) built into the product end-to-end, not a translated layer bolted on afterward.
What we learned
Trust in AI-driven bookkeeping isn't won by being right most of the time — it's won by being honest about uncertainty (clarifying questions, confidence scores) and reversible when wrong (undo windows, audit trails). We also learned that WhatsApp Business Platform has real operational complexity that only surfaces in production, not in documentation — dual subscription layers, non-URL-safe message IDs, display-name review tied to your public website. And meeting users in the channel they already trust matters more for adoption in this market than a polished separate app ever could.
What's next for Sabistock AI
With the production WhatsApp number already live and verified end-to-end, next is expanding beyond Nigeria to other African markets, alongside a real Nigerian-accented voice for spoken replies (currently the free browser voice), payment provider integration for live billing, and pilot validation with real merchants across literacy and smartphone-confidence levels.
Built With
- ai
- api
- argon2
- bullmq
- css
- gemini
- graph
- jwt
- meta
- nestjs
- next.js
- postgresql
- prisma
- react
- redis
- resend
- sql
- tailwind
- typescript
- vertex
Log in or sign up for Devpost to join the conversation.