Work / Hilife · 2022
ezsales
The management console behind the field force: distributors, outlets, and the geographic “beats” that decide who visits which shop on which day.
The problem
A beat is a sales territory — a set of outlets one officer covers on one day. They were being planned in spreadsheets by people who knew the city in their heads, which worked until those people went on leave.
What I built
A console where a beat is drawn directly on the map. You pick a distributor, trace the route, and the outlets inside it bind to that beat and the officer assigned to it. Route files upload in bulk for territories already mapped elsewhere.
Everything downstream — the field app’s daily list, coverage reporting, the order-splitting algorithm’s notion of who serves what — reads from these definitions, so the map is the single source of truth rather than a picture of one.
Admin UI that respects the operator
Dense sortable tables, server-side pagination, inline row actions and a persistent search. The people using this spend their whole shift in it, so I optimised for keyboard reach and information density rather than for looking spacious in a screenshot.
What it came to
- Map-first
- Territories drawn, not described
- Bulk import
- Route files uploaded in batches
- Single source
- Field app and reporting read the same data
- Django
- Python
- MySQL
- Mapping APIs
- JavaScript
Screens
Open to senior engineering roles
Tell me what you are building.
Full-time roles, contract work, or a system that needs someone to own it. I read everything and reply within a few hours.