About Ottobiz

Ottobiz is an AI-powered assistant for small and medium businesses that sell through chat. It plays out the whole journey — a customer asking about a product, paying for it, getting it delivered, and following up afterwards — with a separate AI agent handling each part of the job. This page is a portfolio walkthrough of how it's built and why, in plain language.

What it does

Many small businesses sell over WhatsApp, DMs, or a website chat widget, while juggling stock, payments, and couriers separately by hand. Ottobiz brings those three jobs together into one system:

Customer

Asks about products, places an order, pays, and tracks delivery.

Vendor

Manages inventory, confirms payments, and prepares orders.

Logistics

Picks up and delivers the order.

Each party has their own chat, and this demo lets you play all three roles at once — pick a customer and a business, chat in three panes side by side, and watch the catalog, orders, and inventory update as the agents work.

How it works, in plain terms

  1. The customer sends a message — the conversational agent replies, or hands off to a specialist (product lookup, payment check, complaint).
  2. When the vendor or the delivery company needs to be told something, the central agent steps in — it's the only agent that talks across all three sides.
  3. The central agent decides who hears about it next, updates the order in the database, and sends the message.
  4. The vendor or logistics company replies in their own chat — either handled directly ("show my inventory") or relayed back through the central agent.
  5. The customer only ever sees a clean, final reply — the back-and-forth between vendor and courier stays behind the scenes.

Two rules are enforced everywhere: an order is never created until payment is confirmed, and logistics is never contacted until the vendor is ready to hand the order off.

Meet the agents

Instead of one do-everything chatbot, Ottobiz uses several small, focused agents. Splitting the work up keeps each agent's behaviour predictable and easy to reason about.

Conversational agent

The main shop assistant customers talk to. Figures out what the customer wants and calls in a specialist when needed.

Product agent

Looks up products, checks stock and price, and shares payment details with the customer.

Payment verification agent

Confirms a payment really happened — either a Paystack payment or an uploaded bank transfer receipt.

Central agent

The coordinator. Passes messages between customer, vendor, and logistics, and creates the order once payment is confirmed.

Business chat agent

Helps the vendor with day-to-day tasks (analytics, inventory) and relays messages from customers/logistics.

Logistics agent

Answers delivery questions and loops in the central agent when other parties need to be involved.

Customer complaint agent

Handles complaints calmly and escalates to the vendor when it can't resolve something alone.

Upselling & marketing agents

Suggest alternatives when something is out of stock, and recommend related products after a purchase.

What it's built with

Python + FastAPI

The backend API — fast, async, and a natural fit for calling multiple AI agents per request.

Pydantic AI

Gives each agent a typed, structured toolbox instead of loose text parsing — fewer surprises from the LLM.

PostgreSQL

The source of truth: products, orders, businesses, and payment records live here.

Redis

Fast, short-lived memory for active conversations and open orders-in-progress — cleared between demo sessions.

Next.js + Tailwind CSS

The three-pane demo UI you're using right now, plus the live catalog/orders panels.

Paystack

Real payment processing per vendor, with webhook confirmation so a payment counts even if the customer leaves the chat.

Docker

Packages the backend, database, and Redis so they run the same way anywhere.

Built to be transparent

This is a portfolio project, and it's set up to be looked at, not hidden behind a login. A few deliberate choices worth knowing about:

  • Demo data resets on restart — the same set of sample users, businesses, and products come back every time the backend restarts, so the demo is always in a known, working state.
  • Live panels refresh on a timer (every few seconds) rather than pushing instant updates — simpler to build and plenty fast for a demo.
  • No login screen — you pick a persona instead of signing in, so you can jump straight into any of the three roles.
  • Currency conversion is approximate and happens in the browser for display only; the backend always stores amounts in USD.