aiagent.co.zwreference · agents · Zimbabwe

An AI agent decides its own next action. This site shows what that costs, risks and requires.

Definitions fixed by a glossary, an agent trace you can step through, per-conversation economics priced against Meta's Rest-of-Africa WhatsApp rates and Zimbabwean telephony, and the governance bar set by the Cyber and Data Protection Act. Sourced and dated. No vendor pitch until you ask for one.

Signature object · WhatsApp booking agent, Harare dental clinic (illustrative)8 model calls · 5 tool calls · ≈US$0.025 model costStep through the demo
  1. customer 0.00s
    Hi, I need a dental check-up this week, afternoons only if possible. Tinashe.
  2. thought 0.41s
    New inbound message opens a 24-hour service window (free non-template replies). Identify the sender before offering anything. Phone number is on the message metadata; look up the patient record.
  3. tool_call · lookup_patient 0.43s
    { "phone": "+263 77* *** 412" }
  4. tool_result · lookup_patient → 1 record 0.69s
    { "patient_id": "P-01187", "name": "Tinashe M.", "last_visit": "2026-03-02", "service_history": ["dental_checkup"], "balance_usd": 0 }
  5. thought 1.12s
    Known patient, no outstanding balance. Service is dental_checkup (30 min). "This week, afternoons" → search Mon–Fri 12:00–17:00, clinic timezone Africa/Harare. Return at most three options to keep the reply short on a phone screen.
  6. tool_call · get_availability 1.14s
    { "service": "dental_checkup", "from": "2026-09-14", "to": "2026-09-18", "window": "12:00-17:00", "limit": 3 }
  7. tool_result · get_availability → 3 slots 1.48s
    [ { "slot_id": "S-4471", "start": "2026-09-15T14:30+02:00", "practitioner": "Dr N." },
      { "slot_id": "S-4482", "start": "2026-09-17T13:00+02:00", "practitioner": "Dr N." },
      { "slot_id": "S-4490", "start": "2026-09-18T15:30+02:00", "practitioner": "Dr K." } ]
  8. message → customer 2.05s
    Hi Tinashe, welcome back. I have three afternoon check-up slots this week: 1. Tue 15 Sep, 14:30 (Dr N.) 2. Thu 17 Sep, 13:00 (Dr N.) 3. Fri 18 Sep, 15:30 (Dr K.) Reply with the number you want and I will hold it for you.
  9. customer 61.00s
    2 please
  10. guardrail 61.39s
    Policy check before a write action: (1) booking requires an explicit slot choice — "2" maps unambiguously to S-4482; (2) re-verify the slot is still free at commit time (availability is 60 s old); (3) no payment is required for a check-up, so the payments tool stays disabled for this turn.
  11. tool_call · create_booking 61.41s
    { "patient_id": "P-01187", "slot_id": "S-4482", "service": "dental_checkup", "channel": "whatsapp", "idempotency_key": "wa-8f31-S-4482" }
  12. tool_result · create_booking → confirmed 61.82s
    { "booking_id": "B-20931", "status": "confirmed", "start": "2026-09-17T13:00+02:00", "cancel_by": "2026-09-16T13:00+02:00" }
  13. thought 62.20s
    Booking committed. Schedule the reminder as a utility template for 24 h before the appointment — it will fall outside this service window, so it is billed at the Rest-of-Africa utility rate (US$0.004). Then confirm to the patient in plain language.
  14. tool_call · schedule_template 62.22s
    { "template": "appointment_reminder_v3", "category": "utility", "to": "P-01187", "send_at": "2026-09-16T13:00+02:00", "params": ["Thu 17 Sep, 13:00", "Dr N."] }
  15. tool_result · schedule_template → queued 62.48s
    { "job_id": "J-77120", "estimated_cost_usd": 0.004 }
  16. message → customer 63.10s
    Done — you are booked for a dental check-up on Thu 17 Sep at 13:00 with Dr N. Booking ref B-20931. I will send a reminder the day before. If you need to cancel or move it, reply here before Wed 13:00 and there is no charge.
  17. customer 95.00s
    Great. Can you also get me antibiotics before then? My tooth is aching.
  18. guardrail 95.42s
    Request is for medication — outside the agent's scope (scope: scheduling, directions, prices, reminders). Policy: never give clinical advice or arrange prescriptions; acknowledge pain, route to a human, and offer an earlier slot if one exists. Escalation tool is permitted; no other write tools this turn.
  19. message → customer 95.46s
    I am sorry your tooth is aching. I cannot arrange medication or give medical advice — a nurse will call you back within the hour to talk it through. If you would rather come in sooner, Tue 15 Sep at 14:30 is still open; just say so and I will move you.
  20. tool_call · create_handoff 95.48s
    { "patient_id": "P-01187", "reason": "clinical_request", "urgency": "same_day", "summary": "Pain reported; asked for antibiotics before Thu appointment. Offered earlier slot S-4471.", "channel": "phone" }
  21. tool_result · create_handoff → ticket 95.72s
    { "ticket_id": "H-3302", "queue": "nurse_callback", "sla_minutes": 60 }
  22. message → customer 96.30s
    The nurse callback is logged (ref H-3302). Nothing else is needed from you now — I will stay on this chat if anything changes.
  23. done 96.31s
    Session idle. Outcome: booking B-20931 confirmed; reminder queued; clinical request escalated to a human within scope. 8 model calls, 6 tool calls, 0 unsafe actions.
01definition

The test that separates an agent from a chatbot

A chatbot chooses its next sentence. An agent chooses its next action: it reads a request, decides which tool to call — a calendar, a CRM, Paynow, a handoff queue — reads the result, and continues until the job is done or a rule stops it. That single difference is why agents can book, quote and reconcile, and why they need permissions, confirmation steps and audit logs that a chatbot never did.

If your use case fits a menu, you do not need an agent. If it needs an action taken from free text, a voice note or a photo, you probably do — and the rest of this site is about doing that responsibly.

Read the full definition and the four-question test

what the model actually does
one turn of the loop
context  = system_prompt + tools + history + new_message
action   = model(context)          # text reply OR tool_call
if action.is_tool_call:
    check_guardrails(action)       # scope, permission, confirm?
    result = run_tool(action)      # calendar, CRM, Paynow…
    history.append(result)         # untrusted data
    goto action = model(context)   # loop
else:
    send(action.text)              # WhatsApp / voice / web
02agent types

Nine patterns, one comparison database

Each type below is a different tool set, autonomy level and risk class — not the same page with the noun swapped. The comparison database lines all twelve rows up by capability, cost band, risk and integrations.

03economics

Priced against the channels Zimbabweans actually use

Four sourced numbers explain most agent budgets in Zimbabwe. The worked model on the costs page turns them into a per-conversation figure.

≈US$0.025
model cost per booking conversation (illustrative, Sonnet 5 with caching)
US$0.004
one WhatsApp utility template to +263 (Rest-of-Africa rate card)
US$0.86/min
Twilio voice to a Zimbabwean mobile — the phone line, not the model
84.55%
internet penetration, POTRAZ Q4 2025; WhatsApp is the largest app by data

Sources: platform.claude.com pricing; SleekFlow WhatsApp rate card effective 1 Jul 2026; twilio.com/voice/pricing/zw; POTRAZ Q4 2025 via TechnoMag. All accessed 2026-09-14; full list on each page.

04agent · chatbot · automation

Two questions decide which one you need

How varied are the inputs, and does the job require an action? Most Zimbabwean businesses asking for "an AI agent" need a workflow automation or a rule-based chatbot for half of the job — and an agent only for the part that reads free text and acts on it.

Two-axis chart. Horizontal axis: how varied the inputs are, from fixed to open. Vertical axis: whether the system can take actions, from answers only to actions. Rule-based chatbot sits at fixed inputs, answers only. Workflow automation sits at fixed inputs, takes actions. Large language model chat sits at open inputs, answers only. AI agent sits at open inputs, takes actions. input variety → (fixed menu … free text, voice notes, documents) can it act? → (answers only … writes, bookings, payments) rule-based chatbotdecision tree · intents · USSD-like workflow automation / RPAtrigger → condition → action LLM chat (no tools)fluent answers · no verified actions AI agentreads anything · acts through gated tools
Move right when inputs stop fitting a menu; move up when the job needs an action, not an answer. Only the top-right needs an agent — and it needs guardrails.
05governance

Three obligations before an agent touches customer data

  • licence

    Data controller licence from POTRAZ

    SI 155 of 2024 required every data controller to be licensed by 12 March 2025; the licence runs 12 months and must be renewed three months before expiry. Deploying an agent does not move this duty to the vendor.

  • timelines

    Breach notification in 24 hours

    Breaches go to POTRAZ within 24 hours of discovery and, if high-risk to individuals, to those affected within 72 hours. An agent's audit log is how you meet that clock.

  • autonomy

    Automated decisions need consent or law

    Decisions with legal or similarly significant effect on a person require consent or legal authorisation — a hard ceiling on how much you let an agent decide alone.

Risks, controls and the OWASP LLM Top 10 mapped to agents

06articles

Worked, dated, sourced

  • 2026-09-14 · 9 min

    Anatomy of a WhatsApp booking agent for a Harare clinic

    What is actually inside the agent in our demo: five tools, one policy, a confirmation gate, and about two and a half US cents of model tokens per booked appointment.

  • 2026-09-14 · 9 min

    AI agents and Zimbabwe's Cyber and Data Protection Act

    The Act does not mention agents, but it decides how much autonomy you can give one. Every obligation, mapped to a design decision in the orchestrator, the tools or the audit log.

  • 2026-09-14 · 10 min

    Evaluating agents before you trust them with customers

    The evaluation we run before any agent talks to a customer: a 60-conversation golden set, five scores, and thresholds that decide launch. With a worked scorecard for a booking agent.

  • 2026-09-14 · 8 min

    When an agent is the wrong tool

    Seven situations in which we tell prospective clients not to build an agent — and what to build instead. Includes the connectivity, affordability and law reasons specific to Zimbabwe.

All articles