A liquor rep's territory is thousands of bars and stores, and the only public record of who buys what is a set of state spreadsheets and PDFs. Reps plan calls from memory, a distributor printout, or whoever answered last time. The numbers that say which accounts matter already exist and are public, but nobody can use them from a parking lot.
Spirits Territory Map turns the MLCC purchase files into a map a rep can use on a phone. Every active license shows what it bought in 2025 and how that compares to the four years before, so the big accounts and the growing ones stand out at a glance. Near me plus a ranked list answers the field question directly: of the places around me right now, which are worth the stop. No login and no backend; add it to the home screen and it keeps working without signal.
A Python pipeline downloads the state's files, parses the 2025 Excel workbooks and the 2021-2024 history (published only as PDFs of an old mainframe report), and joins them to the master license list on license number and license type. Joining on the number alone looked right and was wrong: numbers repeat across license classes, and a number-only join matched 43 terminated licenses to a different, active license and showed the wrong name. Parsed totals are checked against the totals printed in each source file. Addresses geocode through the US Census batch geocoder with OpenStreetMap as the fallback, bounded to Michigan and checked against the county. The front end is a static Vite + React + TypeScript app on MapLibre GL with OpenFreeMap tiles, so there is no server and no API key. A Playwright suite checks every feature against the built data on desktop and phone, and runs before every GitHub Pages deploy.