๐ฆ Dispatcher playbook
Your daily operating manual. Read once, bookmark, use every morning.
1Your first morning
Open tariq.codeator.ai on your desktop. Sign in with your dispatcher email and password. The Orders page is your home base.
- 1The nav bar โ every admin page is one click away. Orders is always your starting point.
- 2The SLA badge appears when an order sits
pending longer than your company's SLA window (default 24 hours).
- 3COD is shown in orange IQD โ this is what the driver must collect.
๐ก Morning routine: filter by status=pending, scan for red SLA badges, decide if any need to be reassigned or escalated before you generate today's routes.
2Adding one order
The fast path for a single phone call. Most fields you'll fill once and move on.
- Phone number โ start typing; if the customer has ordered before, suggestions appear below the input. Tap one to auto-fill name, area, and last-known coordinates.
- Customer name โ Arabic or English, both work.
- Area โ the district name (e.g. Karrada, Mansour, Zayouna).
- COD (IQD) โ amount in Iraqi dinars, numbers only.
- GPS โ paste the customer's shared location from WhatsApp, Google Maps, or apple maps. The form extracts the coordinates automatically. Alternatively, click on the map to pick a spot.
๐ก GPS shortcut: when a customer sends you a Google Maps link on WhatsApp (https://maps.google.com/...), paste the whole thing into the GPS field. The form detects the coordinates and the border turns green.
3Bulk import from CSV/Excel
When you have 50 orders this morning, you don't type them in one at a time. Export them from Excel as CSV, drop them on Tariq.
Required columns: phone, customer, area, cod.
Optional columns: lat, lng, notes. Without lat/lng, the order lands without coordinates and needs GPS added later before it can be routed.
โ Encoding: if your CSV has Arabic characters, save it as UTF-8. Excel on Windows defaults to ANSI, which breaks names. Use "Save As โ CSV UTF-8" in Excel.
4Generating optimized routes
Once your orders are in with coordinates, the Routes page assigns them to drivers in the smartest order.
- Pick the depart hour. 08:00 runs traffic-aware routing as if drivers leave at 8am. 14:00 does the same for mid-day. Stop orders will differ โ Karrada at 8am has different traffic than Karrada at 2pm.
- Hit Optimize. The server calls OSRM for drive times, applies Baghdad rush-hour multipliers, and OR-Tools solves the vehicle routing problem.
- Review the cards. Each driver gets a card with stops numbered. Look for obviously weird sequences โ they're rare, but the optimizer isn't omniscient.
- Send to drivers. Each driver's stops are already assigned. They see them the moment they open their PWA link.
๐ก Rush-hour preview: generate once at 08:00 and once at 14:00. Compare the two. This shows you which routes are genuinely traffic-sensitive vs. which are identical regardless of time.
5Notifying customers on WhatsApp
After routes are generated, one button tells every customer their order is out for delivery, with a tracking link.
The customer receives a WhatsApp message like:
Hello Ahmed ๐
Your Tariq order #142 is out for delivery with Ali (vehicle: white Kia).
Track live: tariq.codeator.ai/track/142?t=...
โ If the notify button doesn't send anything: notifications are owner-only to turn on. Ask your owner to visit Settings and flip the toggle. Without that, the button queues a no-op (safe, but no messages actually go out).
6Bulk reassigning orders
When a driver calls in sick, you don't re-assign 20 orders one by one.
- Check the boxes next to orders you want to move.
- The orange bulk bar appears at the top with a count.
- Pick a target driver from the dropdown, hit Reassign.
- Generate routes again โ the sick driver's queue is redistributed.
7End of day โ cash reconciliation
Every driver carried a pocketful of cash today. You need to zero it out before tomorrow.
- Driver hands you the physical cash. Count it.
- Click Reconcile on their row. Confirm the total matches.
- Their outstanding balance drops to 0. The audit log now records who reconciled each order and when.
๐ก The driver can see the same number from their end โ on their PWA they have a "Handed in to dispatcher" button. When both sides click, the record has two independent timestamps for accountability.
8The daily report
One page tells you what happened today: how many delivered, what went wrong, how much cash came in.
Use the From / To date pickers to look at any time range, not just today. Switch stores with the store dropdown if you run multiple.
9Drag-and-drop route reordering
After the optimizer generates routes, you can manually reorder stops by dragging them โ useful when you know something the algorithm doesn't.
- Generate routes as normal on the Routes page.
- Grab any stop and drag it up or down within a driver's card.
- Click Save Order on that driver's card to persist the change.
- The driver sees the new stop order immediately on their phone.
๐ก Use this when a VIP customer needs to be visited first, or when you know a road is blocked that the optimizer can't know about.
10Barcode management
Assign barcodes to orders for fast identification. Drivers can scan them with their phone camera.
How barcodes work:
- Assign a barcode string to any order (e.g.
PKG-2026-0142 or any format you use).
- Drivers tap the scan button on their app to open their phone camera โ it reads the barcode instantly.
- The matching order scrolls into view so the driver knows which package they're holding.
- Customers can also look up their order by barcode on the Customer Portal.
๐ก If your orders already have printed barcodes from your e-commerce system, just assign those same codes in Tariq โ no need to reprint.
11Predictive analytics
The Predictions tab on the Report page shows patterns that help you plan ahead โ failure hotspots, demand days, and peak hours.
What each section tells you:
- Failure by area: which neighborhoods have the highest failure rates โ focus your address verification there.
- Demand by day: which days are busiest โ plan driver availability accordingly.
- Peak hours: which hours see the most deliveries โ schedule route generation around these windows.
- Average orders/day: your baseline โ if today is significantly above, you may need an extra driver.
12Customer self-service portal
Customers can check their order status without calling you โ via order number or barcode.
Two ways customers can track:
- Quick lookup: visit
/customer-portal, enter order number or barcode โ instant status.
- Tracking link: the WhatsApp notification includes a unique tracking URL that shows real-time status + driver info.
๐ก Share the customer portal link /customer-portal on your company's social media โ reduces "where's my order?" calls by letting customers check themselves.
13Troubleshooting
The five problems that come up most often, and their fix.
"Optimize Routes" button does nothing
You have no pending orders with GPS coordinates. Check the orders table: if the ๐ pin icon is missing from the map column, add coordinates via the GPS field.
Driver says their link is broken
Their token may have been rotated by the owner. Ask the owner to open Drivers page โ rotate token โ share the new link on WhatsApp.
Customer says they never got the WhatsApp
Two possibilities: (1) notifications are disabled in Settings, or (2) Twilio sandbox mode requires the customer to "join" the sandbox number first. Ask the owner to check both.
CSV import shows every row as an error
Column headers don't match. Required names are phone, customer, area, cod โ all lowercase, no spaces. If Arabic names look broken in preview, re-export the CSV as UTF-8.
Outstanding cash doesn't match driver's count
Check the Audit page for that driver: every delivered order is timestamped with its COD. If a driver marked something "Delivered" that wasn't, the number will be off โ find the order, status=failed with a note, reconcile.