Itafika

A delivery orchestration API/control plane for ecommerce checkout in Kenya.

One clean API any online shop can use to orchestrate delivery — locations, transport modes, providers, and rates already built in. At checkout, a customer picks a location and sees real ways to get the goods to them, with clear prices and times. Shops keep customer and order data while Itafika coordinates delivery options and provider handoff state.

One call in. A checkout-ready list out.

This playground shows the Phase 1 quote shape against Itafika's seed dataset. Change the route and the package — watch the options recompute. This is the kind of response a shop's checkout receives from the Worker API.

itafika · quote playground seed data
2.5 kg

Tip: try a route nobody serves yet (e.g. an upcountry-to-upcountry pair) to see what a contribution opportunity looks like.

A bridge between shops and delivery services

Itafika does for delivery what open standards did for transit and maps — put a clean interface in front of a complex system, and let everyone build on top of it.

The precedent · Open standards

One shared layer, many builders

Standards like GTFS made it easy for apps to show bus and train routes. When everyone uses the same format, it becomes much easier for developers to create useful tools for the public.

The move · Itafika

One clean interface over delivery

Itafika asks one simple question — how can this package get from here to there? — and returns one clear answer across riders, matatus, buses, and couriers.

Works with any delivery provider

The core engine is built to handle any courier. It uses small "adapters" to talk to different companies. Each adapter translates the standard request for its own system. Adding a new provider is easy and doesn't change how the core works. Tap a box to see what it does.

E-commerce Client (Shop)
JSON API ↓
Core Routing Engine
standard request, fanned out to every adapter ↓
🛵 RiderBolt · Uber
🚐 Matatu2NK · Mololine
🚌 BusEasy Coach
📦 CourierG4S · Fargo

The Core Routing Engine

Receives every request in one standardized shape, fans it out to all adapters, collects their answers, and returns a unified list. It knows nothing about any specific provider — that's the whole point. Click any adapter to see its job.

A simple, complete API

Five endpoints, set as the official standard in spec/openapi.yaml. Click through them.

Every provider, five simple statuses

Providers each track differently. Itafika puts them into one simple list of statuses, so a shop sees the same updates no matter who carries the package. Advance the delivery.

Three ways to make it yours

Itafika only works if the community helps build it. The most important contribution isn't always code. Tap a card.

🗺️

Contribute data

No code required. Add a stage, hub, or a rate you actually know — this is the most helpful thing most people can do.

Add a route, rate, or stage with a clear source. Phase 2 routes submissions through online moderation into D1 and keeps the open dataset available as a generated public snapshot.
Tap to expand ↓
🔌

Write an adapter

Teach Itafika how to talk to a provider. You only need to follow one simple template, and the core code stays the same.

Three types: static (reads the dataset), live (calls a real API), and person-assisted (a WhatsApp bot where a rider replies “Accept”).
Tap to expand ↓
⚙️

Build the core

Work on the core engine, the Cloudflare Worker, and API tools. We use TypeScript and follow a spec-first approach.

Every API change is documented, making sure the standard and the actual code always match each other.
Tap to expand ↓
spec/data/rates.csv + your contribution
provider_idorigindestinationbase_kesper_kgtimesource
mololineZONE_NBI_CBD_01ZONE_NKR_MAIN40003 hoursfield-2026-06
2nkZONE_NBI_CBD_01ZONE_NYR_MAIN30003 hoursfield-2026-06
The useful unit is still simple: a route, a rate, and a source.

Useful from day one. Built to grow.

Phase 1MVP · now

The basic API

A Cloudflare Worker reads pre-set rates and standardized location IDs; the engine returns useful options from reviewed data. We are starting with these fixed rates to provide value immediately.

In active development
Phase 2Community

Community contributions

We will invite the community to add more providers — live courier rates, a WhatsApp bot for manual riders, or maps for new towns. The core stays the same while more options are added.

Planned
Phase 3Optimization

Better results & scale

We will cover more of Kenya, add more live rates, and improve reliability scores based on actual delivery performance. The system gets smarter and more accurate over time.

Planned

Help map how Kenya delivers

The most important part of this project is the open, community-maintained picture of how parcels actually move. Add a rate. Write an adapter. Help make delivery easy for every shop in Kenya.