loong.lat
Courier platform for small senders that groups parcels into the cheapest, shortest, or fastest route and prices each option against sending separately.
- Year
- 2026
- Built for
- Meta Hackathon 2026
- Built with
- Go, TypeScript, Modal, Kafka, PostgreSQL, Meta Muse
loong.lat is a courier platform for small senders in Greater Jakarta. It groups many parcels into one route (the cheapest, shortest, or fastest), prices every option against sending each parcel separately, and explains the choice with numbers you can trace. Ten parcels, one route, every rupiah explained.
Built for the Meta Global AI Developer Hackathon 2026.
Three apps, one route
- Sender dashboard: a four-step wizard. Describe the trip in free text, add items by typing, photo, or voice, compare options on a map with an AI summary, then pay from a loong.lat balance. Live tracking ends with proof of delivery by OTP or photo.
- Backoffice: a command center for dispatchers, with a queue that shows what needs attention first, automatic dispatch, a live map, fleet and balance management, and analytics.
- Driver app: a PWA that puts the next stop first, with swipe-to-complete and proof of delivery.
Route math in Modal sandboxes
Every quote is solved by the Go engine inside a Modal sandbox with the network switched off and no secrets inside. A job carries only coordinates, a road distance table, parcel weights and sizes, and the fleet. Names, phone numbers, street addresses, and payment details never leave the servers.
The solver is deterministic, so options are cached by input hash and can be checked again later. On a warm sandbox a job takes about 1 second (p95 1.25 s) and costs roughly US$0.00009. The solver and optimizer must report the same engine version, and if a sandbox can’t start, the optimizer falls back to the same engine in-process.
AI suggests, people decide
Every AI feature goes through one gateway in front of Meta’s Muse models: listing items from a photo, transcribing spoken orders, turning “three boxes to Bekasi before noon” into stops and deadlines, explaining route options in plain words, and a copilot for senders and dispatchers.
No model call can change data. Tools are read-only, arguments are validated, the agent loop has a step limit, user text is treated as data rather than instructions, and every number in an answer must come from a tool result or server-computed facts. The gateway never logs message, image, or audio content.
Under the hood
Go services for the sender console, backoffice, driver app, optimizer, and AI gateway communicate over Kafka topics with dead-letter topics and store data in PostgreSQL. The landing page and the three apps are TypeScript frontends that share UI, domain, and i18n packages.