Inspiration

In South Africa, WhatsApp isn't just for chatting—it's the backbone of commerce. Millions of small merchants negotiate deals, confirm orders, and receive "proof of payment" screenshots daily. But this creates a critical vulnerability: fraudsters send edited screenshots, recycled confirmations, and fabricated bank notifications. By the time a merchant realizes the payment never arrived, the goods are gone.

We watched a family-owned electronics store lose R15,000 in a single week to POP fraud. The owner, like most SME operators, didn't have time to manually verify each payment against bank statements. She needed to trust what customers sent—and fraudsters exploited that trust.

We asked: what if AI could verify payments instantly, and what if AI could run the entire fraud prevention business autonomously?

What it does

VeriPop is an AI-native business where Gemini agents handle core operations:

Payment Verification via WhatsApp Merchants forward payment screenshots to our WhatsApp bot. Gemini Vision extracts structured data—amount, reference, bank, date—from unstructured images across 15+ South African bank formats. A forgery detection model analyzes the image for manipulation. Verdict delivered in under 10 seconds.

Autonomous CEO Agent Our CEO agent makes real business decisions:

  • Evaluates and approves merchant applications
  • Handles pricing adjustments based on volume and risk
  • Responds to merchant inquiries and resolves disputes
  • Logs every decision with full rationale for audit

Autonomous CFO Agent The CFO agent manages finances end-to-end:

  • Imports bank statements and categorizes transactions using Gemini's contextual understanding
  • Extracts vendor invoice data from PDFs via vision
  • Manages accounts payable and receivable
  • Generates real-time trial balance, income statement, and balance sheet by product line

Autonomous COO Agent The COO agent manages operations and quality:

  • Monitors merchant onboarding pipeline and approves pending merchants
  • Tracks false positive rates and adjusts detection thresholds
  • Reviews verdict appeals and processes merchant disputes
  • Monitors system health, acknowledges alerts, and manages capacity
  • Sends operational tips and training materials to merchants

Human Oversight Dashboard A React admin dashboard lets humans monitor agent decisions, review exceptions, and set guardrails—without executing routine operations.

How we built it

Backend Architecture

  • FastAPI (Python) with async PostgreSQL via SQLAlchemy
  • Cloud Run on GCP (africa-south1 region for low latency)
  • WhatsApp Business API for merchant communication
  • Telegram bot as secondary channel

Gemini Integration We integrated Gemini across 13+ distinct features:

Feature Gemini Capability
POP Extraction Vision — structured data from bank screenshots
Forgery Detection Vision — pixel/metadata anomaly analysis
CEO Decisions Reasoning — strategic decisions, marketing, pricing
CFO Decisions Reasoning — financial analysis, transaction categorization
COO Decisions Reasoning — operations, quality, merchant health
Invoice Extraction Vision — vendor PDF parsing
Content Generation Text — blogs, ads, social posts

Double-Entry Accounting Engine We built a proper GL (General Ledger) system with:

  • Chart of Accounts (Assets, Liabilities, Equity, Revenue, Expenses)
  • Product-level P&L tracking (VeriPop, QLeadAI, Qstack)
  • Automated journal entries from agent actions

$$\text{Assets} = \text{Liabilities} + \text{Equity}$$

Every financial transaction maintains this fundamental equation, with the CFO agent ensuring balanced entries.

Agent Decision Framework Agents operate within defined guardrails:

Decision Confidence > 0.85 → Execute autonomously
Decision Confidence 0.60-0.85 → Execute + flag for review
Decision Confidence < 0.60 → Escalate to human

Challenges we ran into

1. Bank Format Chaos South African banks have wildly inconsistent POP formats—FNB, Standard Bank, Nedbank, Capitec, Absa all look different. Some merchants send cropped screenshots, photos of screens, or PDFs. We built a template extraction system that learns new formats, but edge cases still surprise us weekly.

2. Async Agent Coordination When the CEO agent approves a merchant, the CFO agent needs to create their invoice record. Coordinating autonomous agents without race conditions or duplicate actions required careful event-driven architecture.

3. Guardrail Calibration Too strict, and agents escalate everything (defeating the purpose). Too loose, and agents make costly mistakes. We iterated extensively on confidence thresholds, finding that domain-specific calibration outperformed universal thresholds.

4. Timezone-Naive Databases PostgreSQL with asyncpg requires timezone-naive datetimes, but Python defaults to timezone-aware. Small issue, hours of debugging:

# Broke everything
datetime.now(timezone.utc)

# Works with asyncpg
datetime.utcnow()

5. Trust & Explainability Merchants don't trust black-box verdicts. We added detailed explanations for every verification—showing extracted fields, confidence scores, and specific fraud indicators detected. Transparency increased merchant adoption significantly.

6. Growing Revenue Onboarding Merchants is directly linked to ads and engagement that brings. Yet getting the Merchant to use it beyond the trial and free first time check is proving more difficult. We have implemented a Whatsapp ad campaign as well as a daily tip to see if we can engage merchants to use it to generate revenue uptake.

7. Meta integration Integrating into Meta was cumbersome. Telegram was a 10 minute from idea to a bot actually working. In South Africa you cannot use an existing Whatsapp number and integrate it with the Meta APi. We had to purchase a sim card and setup Whatsapp to run the Veripop bot. This took 2 days and then further days to get template approvals. All in all a weeks work compared to Telegrams 10 minutes.

8. Google Cloud Scheduler Google cloud scheduler doesn't not accept location=africa-south1 we had to revert to location=europe-west1 to schedule daily boardroom meetings and daily agent standups. We choose South Africa region to reduce latency. Fortunately the scheduler isn't client facing.

Accomplishments that we're proud of

AI Runs the Business This isn't AI-assisted—it's AI-operated. Our CEO, CFO, and COO agents made hundreds of real decisions in production. When we report revenue, it comes from the same P&L our CFO agent generates for its own analysis. The COO monitors operations and quality metrics autonomously.

94% Categorization Accuracy The CFO agent categorized 200+ bank transactions with 94% accuracy on first pass, matching or exceeding what a human bookkeeper would achieve.

Sub-30-Second Verification From WhatsApp message received to verdict delivered: median 9.4 seconds. Fast enough that merchants verify while the customer waits.

Full Audit Trail Every agent decision is logged with:

  • Input context
  • Reasoning chain
  • Confidence score
  • Outcome
  • Timestamp

Regulators and auditors can trace any business decision back to its AI rationale.

Sample Extraction Logs (Proof of Multimodal Vision)

[2026-08-16T17:49:31.585761Z] Gemini extraction: confidence=0.1, bank=None, amount=None, recipient=None, date=None, status=None, is_pop=False, quality=good

[2026-08-14T07:10:21.324819Z] Gemini extraction: confidence=0.95, bank=Name, amount=14000.0, recipient=??.Olivier, date=2026-07-11, status=Successful, is_pop=True, quality=good

[2026-08-14T06:54:25.831177Z] Gemini extraction: confidence=0.95, bank=X Bank, amount=1000.0, recipient=?? Olivier, date=2026-07-23, status=Successful, is_pop=True, quality=good

[2026-08-14T06:49:49.317940Z] Gemini extraction: confidence=0.95, bank=Y Bank, amount=620.0, recipient=?? Olivier, date=2026-07-28, status=Successful, is_pop=True, quality=good

[2026-08-13T21:29:22.851061Z] Gemini extraction: confidence=0.95, bank=Z Bank, amount=4500, recipient=Qstack, date=2026-06-29, status=Successful, is_pop=True, quality=good

Product-Level P&L We can answer "Is VeriPop profitable?" separately from "Is QLeadAI profitable?" The CFO agent tracks revenue and expenses by product line automatically. Qstack is the business with different product lines and the CFO categorizes it for us. 7 Users are friends and family but the remain 32 are actual users signed up.

Multi Language platform In South Africa we have 11 official languages and it makes it difficult to include all demographics. So if we wanted to be truly demographic agnostic we had to include a multi language functionality. We opted to start out with the 4 dominant language English, Afrikaans, Zulu and Xhosa. So we focus on full inclusion demographics in the South African context.

What we learned

1. Agents Need Boundaries, Not Scripts Prescriptive rules ("if X then Y") break on edge cases. Boundaries ("never approve refunds > R5000 without human review") let agents reason flexibly within safe limits. Our CEO can adjust Google ads spend up to a limit of a R1000 a day. He can approve discounts for users and run refferal campaigns.

2. Start with Human-on-the-Loop, Not Human-in-the-Loop Human-in-the-loop doesn't scale—you've just built a ticketing system. Human-on-the-loop (monitoring dashboards, exception queues) enables genuine autonomy while maintaining oversight.

3. Gemini Vision is Production-Ready We were skeptical that vision models could handle real-world image quality—screen photos, compression artifacts, partial crops. Gemini exceeded expectations, successfully extracting data from images we thought were unusable. PDF verification proved a bit more sensitive and we had to adjust the scores as Gemini wasnt approving the majority of PDF's provided.

4. Finance is the Ultimate Agent Test Anyone can demo an agent making a decision. Making an agent manage actual money—where mistakes cost real cash—forces rigorous engineering. If your agent can do accounting, it can do anything.

5. The Admin Dashboard is the Product For AI-native businesses, the human interface isn't the customer app—it's the oversight dashboard. We invested heavily in making agent decisions visible, filterable, and auditable.

What's next for VeriPop

Expand Bank Coverage Add support for African banks beyond South Africa—Nigeria, Kenya, Ghana. Each market has unique bank formats and fraud patterns.

Agent Collaboration Protocol Enable CEO and CFO agents to consult each other. "CFO, can we afford this marketing campaign?" "CEO, this merchant's payment pattern looks risky." We are working on the following Agents to assist with running our business - COO to run operations, Legal, HR and Developer Departments that will self anneal our code all under the oversight of the COO.

Multi-Currency Support Handle ZAR, USD, NGN, KES with automatic exchange rate integration for cross-border merchants.

Open Agent Framework Package our agent guardrail system as an open-source framework for others building autonomous AI businesses.

Insurance-Backed Verification Partner with insurers to underwrite the verification process. When VeriPop marks a payment as "verified," the merchant receives a financial guarantee—if the payment later proves fraudulent, they're compensated. This transforms verification from a confidence signal into a contractual assurance, unlocking higher-value transactions and enterprise adoption. We're already in conversations with Capitec and SA Banking risk information to explore banking-backed guarantees for verified transactions through real-time OpenApi integration which will assist us in providing the guarantee.


VeriPop: Where AI agents don't assist the business—they are the business.

Built With

Share this project:

Updates