Kilo Docs

Docs / Deliveries/ Auto-assign riders

Auto-assign riders

Updated Aug 12, 2026

Plain English: Auto-dispatch means Kilo tries to give the job to a real rider by itself when the delivery is created — so your staff do not have to open the dashboard and click Assign rider every time.

Who it helps

  • WhatsApp / AI bots that create jobs via the API
  • Public request form customers
  • Busy fleets that already have pricing rules and online riders

Baby steps to turn it on

  1. Dashboard → Settings → Delivery (client / public request settings).
  2. Make sure Require approval is off (auto-assign cannot wait for a human to approve first).
  3. Set pricing to the rules engine and add at least one enabled pricing rule that covers your areas.
  4. Fix any coverage / pricing warnings the screen shows (Kilo blocks auto-dispatch until pricing is safe).
  5. Turn Auto-dispatch ON and confirm the warning modal.
  6. Keep riders active in the app with recent GPS so Kilo can find someone nearby.

What happens on create

  1. Customer (or your API) creates a delivery.
  2. If auto-dispatch is allowed and a fee can be calculated and the job starts as pending:
    • Kilo picks the best nearby available rider with fresh location.
    • Status becomes matched and rider_assigned is true on the API response.
  3. If no rider fits, the job stays pending for a human to assign later. That is normal — not an error.

What auto-dispatch is NOT

Myth Reality
“Every dashboard create auto-assigns” Auto-dispatch runs on the public request / Partner API create path. Staff can still assign manually anytime.
“It works with manual pricing only” Needs rules pricing + coverage set up.
“It ignores Require approval” If approval is required, auto-dispatch stays blocked.
“It invents a rider” Only your org’s linked, available riders with usable location.

How to check it worked

  • Create response / webhook: status is matched and rider_assigned is true.
  • Dashboard Deliveries: rider name appears without you clicking Assign.

Want your own rules instead?

Keep Auto-dispatch off. On delivery.created, your backend can GET /riders and POST /deliveries/{id}/assign. One rider may already have other jobs — that is allowed. See Assign riders and the Auto-assign agent prompt.

  • Assign riders — list / assign / unassign from the API
  • Create a delivery — API response includes rider_assigned and tracking.url
  • Webhooks — listen for delivery.status_changed when status becomes matched