Our team specializes in custom courier delivery systems. Delivery volume grows — 50, 100, 300 orders per day. Aggregator commissions eat margins. An in-house courier service solves both: you control quality and save up to 40%. Based on our experience, operational costs drop 25–40% after implementation, and delivery time averages a 20% reduction. For example, a business with 100 orders daily can save over $5,000 per month (based on average aggregator fees). Development cost for a turnkey system typically ranges from $15,000 to $30,000 depending on features. Our engineers have completed 30+ courier delivery projects for e-commerce and food delivery. In 8–12 weeks, you get a turnkey system with a dispatcher panel, courier mobile app, and customer tracking. The courier management system consists of three components: backend, web panel, and mobile app. This article covers architecture, data models, distribution algorithms, and key implementation questions. Contact us for a detailed estimate for your system.
System Architecture
Components
- Backend: REST API + WebSocket server for real-time coordinates. Handles up to 1000 orders per day.
- Dispatcher panel: web interface for managing couriers and routes.
- Courier mobile app: React Native or PWA for receiving tasks and sending GPS coordinates every 30 seconds.
Data Model
couriers ( id, user_id, name, phone, vehicle_type, status: offline | available | busy | on_break, current_lat, current_lng, last_seen_at, zone_ids (jsonb) -- delivery zones the courier is responsible for ) delivery_tasks ( id, order_id, courier_id (nullable), status: pending | assigned | picked_up | in_transit | delivered | failed, pickup_address, delivery_address, scheduled_at, picked_up_at, delivered_at, proof_photo_url, -- photo on delivery recipient_signature_url, -- recipient signature failure_reason ) courier_routes ( id, courier_id, date, task_ids (jsonb, ordered), -- delivery order total_distance_km, estimated_duration_min ) Dispatcher Panel
Map with real-time couriers (Yandex Maps or Leaflet). List of unassigned orders, drag-and-drop assignment, task queue with reordering. Monitoring: if a courier hasn't moved for 20 minutes — alert to dispatcher. Route history and daily efficiency.
Courier Mobile App
Main screens:
- Task list — current route, next point.
- Navigation — integration with Yandex Navigator via deep link.
- Delivery confirmation — photo, signature, or SMS confirmation code.
- Error handling — reason: door not opened, reschedule, refusal.
Customer Tracking
Customers receive an SMS/push with a link to a tracking page for real-time delivery tracking. The page shows a real-time map with the courier and ETA, recalculated every 2 minutes.
Delivery Zones
Geographic zones — polygons on the map, stored in PostgreSQL with the PostGIS extension. PostGIS delivery zones enable efficient geospatial queries. Query executes in 5–10 ms:
SELECT * FROM delivery_zones WHERE ST_Contains(polygon, ST_SetSRID(ST_MakePoint(lng, lat), 4326)); Handling Failed Deliveries
If courier didn't find the recipient, status becomes failed with reason. Automatically schedules a redelivery for the next day or the customer picks a new time. Dispatcher gets notified.
Infrastructure Requirements
Two servers suffice: one for backend and database, another for WebSocket server and queues. For up to 1000 orders per day, use PostgreSQL with PostGIS and Redis for caching. Optimal configuration: 4 vCPU, 8 GB RAM per server.How Does Automatic Order Assignment Work?
Manual assignment: dispatcher drags an order onto a courier on the map — suitable up to 50 orders per day. Automatic routing uses the Vehicle Routing Problem (Wikipedia) algorithm. Route optimization is achieved via VRP algorithms. For small volumes, a greedy algorithm (nearest available courier). For serious optimization, Google OR-Tools or services like OptimoRoute, Route4Me. Automatic assignment is 100–600 times faster than manual dispatch.
| Criteria | Manual Assignment | Automatic (VRP) |
|---|---|---|
| Dispatch time per order | 5–10 min | 1–2 sec for entire route |
| Route optimality | Depends on experience | Mathematically optimal |
| Scalability | Up to 50 orders/day | Any quantity |
| Implementation cost | Free (built-in) | Requires OR-Tools integration or API |
Switching to automatic distribution reduces dispatch time by 100–600 times. Contact us to discuss automating your dispatch.
# Simple heuristic: assign nearest available courier def assign_courier(task): available_couriers = Courier.objects.filter(status='available') nearest = min(available_couriers, key=lambda c: haversine(c.location, task.pickup_address)) task.assign(nearest) Routing Tools Comparison
| Tool | Type | Free? | Accuracy | Scalability |
|---|---|---|---|---|
| Google OR-Tools | Library | Yes (Apache 2.0) | High | Up to 200 points |
| OptimoRoute | API | Commercial | Very high | Unlimited |
Why Is In-House Delivery More Profitable?
In-house delivery is 2–3 times cheaper than using aggregators. Aggregator commissions eat margins. In-house delivery costs 2–3 times less than aggregators starting at 100 orders per day. The system pays off at 50+ orders per day. Savings on aggregator commissions reach 40% at 100+ orders, with payback period of 6–8 months. You gain full brand control, flexible pricing, delivery cost calculation, and all data for analytics. ETA accuracy is ±3 minutes. We guarantee stable operation even during peaks — proven on 30+ projects.
Implementation Process
- Analytics: study your business process, order volume, geography.
- Design: architecture, data model, interface prototype.
- Development: backend, dispatcher panel, mobile app.
- Testing: load testing, usability tests with real couriers.
- Deployment: on your server or cloud, team training.
What's Included
- REST API and WebSocket server for real-time tracking
- Dispatcher panel on React with map and drag-and-drop
- Courier mobile app (React Native) with navigation and photo capture
- CRM/ERP integration via API
- Documentation and training
- 3 months warranty support
Our turnkey development process includes all stages. Development time for a complete turnkey system is 8–12 weeks. Cost is calculated individually based on your requirements. For a consultation and estimate, contact us.







