Milestone 1 was defined as Wake and Forsyth, email only, the founder as the first customer. By the end of the day it started, the code for it was on main.
Ingest
Raleigh is live and scheduled nightly. Cary, Forsyth, and Wake County have connectors built but switched off: the first two wait for written permission, the third for the county’s open-data file to refresh. A hard deny-list in the code makes it impossible for any connector to touch Wake’s map server, the one whose robots file forbids crawling, whatever a future change might try. Owner and contractor names are scrubbed of phone numbers, emails, and addresses before storage. A README in the ingest code documents the legal gates and the fact that a source is switched on by a database migration, not a flag someone can flip in a hurry.
App
- The daily email digest, with a one-click unsubscribe on every message and a “stop all” that silences everything at once.
- The one-tap manage page the messages link to.
- A permit page that shows the contractor’s name only on a paid plan and never shows the owner’s contact details.
- My Alerts, with edit, pause, delete, and undo.
- Rate limiting on the sign-in code, so the passwordless door cannot be hammered.
What the reviewer stopped
Two merges were blocked and reworked:
- The name scrubber, which strips contact details out of a name field, used a pattern that also truncated ordinary names. “Ralph” lost letters. Fixed and re-verified against real names.
- A race: editing a stopped alert and resuming it in the same instant could get a Free user past the one-county limit. Closed.
Two manager rulings
Migrations are named by the time they are written and owned by table, after it became clear that a numbered range would have broken the first production push. And “no passwords” on the hosted auth service’s free plan is done by having no password route in the app and self-serve sign-up switched off, since the server-side hook that would enforce it is a paid feature.
What is left
The last slice of Milestone 1 is a staging deployment the owner can sign up to. Everything it needs is something only the owner can create: the hosting, database, and email accounts, a domain, a project mailbox, and the product’s name. Plus the three emails to agencies that the owner sends in their own voice.