Permit Office
in-progressA playable ArcGIS Pro city-management prototype where Python rules, map layers, and geoprocessing become the game engine.
Overview
Permit Office is a turn-based city-management game that runs inside ArcGIS Pro, using the GIS platform as its engine. You play the permit clerk, not the mayor: you shape the city through paperwork, inspections, approvals, denials, and reports.
Each week a docket of permit applications, civic incidents, and proposals lands on your desk. You select districts on the map, inspect cases, and approve, mitigate, or deny, spending limited action points and budget. Approvals spawn real point, line, and polygon features (businesses, housing, transit, hazards) whose effects ripple through a district and into its neighbors. After 12 weeks, a final audit grades you.
Every game is randomly seeded, so the city layout and docket differ each playthrough. The point was not to make a novelty map demo. It was to see whether GIS data structures could carry a real game loop: state on the map, player input through selections, and rules that resolve spatial consequences.
How it’s built
- ArcGIS Pro as the engine: feature classes hold districts, permit features, dockets, and logs; map selections are how the player gives input.
- ArcPy geometry and cursors resolve proposals, spatial spillover, district state, and saving to a file geodatabase.
- Tkinter provides the docket dashboard.
- A pure-Python rules layer (decisions, turns, audit scoring) stays separate from the ArcGIS adapter, so the gameplay is unit-testable outside ArcGIS Pro.
This project started while I was reusing logic from Evocatio. The docket-and-rulings control scheme I worked out here is what later gave Evocatio its interface.
Status
Playable prototype. The full loop works: seeded city, weekly docket, inspection,
approve/mitigate/deny decisions, district effects, end-of-week processing, and
the final audit. A deterministic 12-week seed-2026 regression test covers the
game rules outside ArcGIS Pro, with additional fake-ArcPy coverage around the
adapter. Core ArcGIS launch/render/repaint has been smoke-checked; full live
smoke-test recording and demo polish remain. Built in Python on ArcGIS Pro’s
bundled arcpy.
Screenshots




