❯ Platform · Marketplace · 2026
AgriLink
A B2B agritech supply-chain aggregator connecting Nigerian farming cooperatives directly to urban bulk buyers, cutting out predatory middlemen.
The problem
Farm cooperatives in Nigeria sell through middlemen who take a large cut of the margin, and urban bulk buyers cannot source directly because there is no trusted channel. The gap is not technology; it is trust and logistics. Farmers need fair prices, buyers need reliable supply, and someone has to move the produce.
The approach
AgriLink is a multi-modal platform because the three users live on different devices. Farmers order via USSD and SMS through AfricasTalking, where feature phones dominate. Buyers work a React dashboard. Drivers get an Android app with offline route manifests for patchy connectivity. Behind those surfaces, domain-partitioned services handle the hard parts: a matching engine, vehicle routing and route optimization, escrow, pricing, and notifications, over PostgreSQL, Redis, and S3 with a durable at-least-once job queue with retries.
Architecture
- Farmers (USSD/SMS)
- Buyers (Web Dashboard)
- Drivers (Android App)
- Domain Services
- Escrow Payments
- PostgreSQL / Redis / S3
FLOWS
- Farmers (USSD/SMS)ordersDomain Services
- Buyers (Web Dashboard)bulk ordersDomain Services
- Drivers (Android App)offline manifestsDomain Services
- Domain ServicespersistPostgreSQL / Redis / S3
- Domain Servicesrelease fundsEscrow Payments
Payments are escrow-based via Paystack and Flutterwave, with payouts to mobile money. The escrow is the trust anchor that makes direct sales viable. Buyer verification runs through the CAC API, cooperatives identify via NIN and BVN, and data is AES-256 at rest under NDPR. The product is localized in Hausa, Yoruba, Igbo, and Pidgin. Live delivery tracking streams over Server-Sent Events, produce carries QR batch-grade tags, and an ops admin panel with MFA handles disputes and moderation.
Key decisions
USSD first
The farmer is the supply side; a phone number is a lower barrier than an app.
Escrow as the trust anchor
Neither side trusts the other, so the platform holds the money until delivery confirms.
Domain-partitioned services
Matching, routing, and payments fail and scale independently.
Localized flows from day one
Four languages are a requirement, not a feature flag.
QR batch tags over per-item tracking
Graded batches are enough for bulk buyers and far cheaper in the field.
What I'd do differently
The design was written before validating the routing assumptions with real driver and road data; VRP output is only as good as the input graph. I would run a pilot with one cooperative before building the full platform. The driver sync semantics also deserved more edge-case work before implementation.