A city published its requirements. Here is a working prototype, built against them.
In February 2026 the City of Medina, Ohio (pop. ~26,000) published an RFP for permitting and code-enforcement software: ten enumerated capabilities, real volumes (about 2,700 records and 2,400 inspections a year), seven staff users with three in the field, and a requested proposal structure. Proposals closed March 13. This is an independent, retrospective forward-deployment exercise against that public document: a demonstration system whose catalog and form fields come from the city's own published documents, whose fee and workflow rules are labeled as assumptions, and whose written spine supplies the requirement mapping, discovery questions, rollout plan, and cost anchors the RFP asked proposers to address. It was built without stakeholder access, and says so; discovery with the agency is where a real deployment would begin.
Demonstration only, with synthetic data; all names are fictional. Not a bid; not affiliated with, endorsed by, or submitted to the City of Medina, Medina County, or any software vendor. The city's contractor registration now runs on a commercial permitting platform and its permit applications remain PDF forms as of August 2, 2026; this exercise analyzes a closed public procurement. Contact: michael@vismu.co.
01 / The ten requirements
Every RFP requirement, mapped and graded honestly.
The RFP enumerates ten required capabilities. The grades below are deliberately strict: BUILT means the demo does the thing end to end; PARTIAL means a meaningful subset works and the gaps are named; SIMULATED and PLANNED mean what they say. A demo that grades itself generously would be arguing against its own thesis.
| # | City's requirement (paraphrased from the RFP) | What the demo does, and does not | Grade |
|---|---|---|---|
| 1 | Records for permits, code enforcement, contractor registration, and boards; workflow steps; links to related records, parcels, fees, inspections, documents; multi-department access; staff customization | Does: one record store, guarded workflow, parent-child links (trade permits link their building permit at intake), fees, inspections, documents-by-name, notes. Does not: code-enforcement or board record types, roles or per-department access, staff-customizable fields | PARTIAL |
| 2 | Online applicant interface: submit applications and documents, pay fees, request inspections, interact with staff, view records | Does: type-specific submission, live fee preview, status tracker. Does not: real payment, real document upload, applicant-initiated inspection requests, two-way messaging | PARTIAL |
| 3 | Automated temporal renewals, such as annual contractor registration | Does: watches expirations, queues eligible registrations, generates a linked renewal once per source record. Does not: run on a schedule without a staff click; window and term are assumed | PARTIAL |
| 4 | Create, assign, customize, and track inspections | Does: scheduling, assignment, tracking, results, automatic reinspection after a failure, latest-attempt-per-type governs issuance. Does not: staff-customizable inspection types (the taxonomy is assumed) | PARTIAL |
| 5 | Field use on mobile devices | A phone-width worklist where an inspector records pass/fail and notes on site; failing schedules the reinspection automatically | BUILT |
| 6 | Automatic fee generation from record information | Fees compute from type and valuation at draft time and gate the workflow. Every amount and formula is an assumption, labeled in the interface: the city's posted fee-schedule link returned 404 when checked (2026-08-02) | BUILT |
| 7 | Off-site or cloud data storage sized to the department | Demo persists locally in the browser by design (no real data should exist here). Production storage is a platform concern | PLATFORM |
| 8 | Integration of Medina County Auditor property data, auto-updating | A parcel lookup by PPN pre-fills property data from a fabricated feed, refreshed only on lookup. The RFP prefers automatic updating; the real feed's access method and cadence are discovery items | SIMULATED |
| 9 | Customizable reporting, exportable to PDF, CSV, or Excel | Does: fixed operational summaries, records CSV, inspections CSV. Does not: user-configurable reports, filters, or chosen dimensions | PARTIAL |
| 10 | Migration of all data and documents from the current software | Not buildable without the incumbent's export; treated as its own phase with a parallel-run gate in the plan below | PLANNED |
02 / Honesty ledger
Which rules are the city's, and which are mine.
| Status | Items |
|---|---|
| SOURCED | The 19-type application and permit catalog (the city's page lists 4 applications, 12 permits, 4 planning/zoning entries; the Board of Building Code Appeals application is out of demo scope); the Building Permit form's fields (PPN, lot, historic-district flag, improvement and use types, construction classes I-A through V-B, sub-permit cross-references); the submittals-reviews-fees-inspections workflow order; volumes, user counts, dates, and population from the RFP; the broken fee-schedule link |
| DEMONSTRATED | Everything the demo actually executes: guarded transitions, fee gating, reinspection-after-failure, latest-attempt supersession, renewal generation with a once-only latch, exports |
| ASSUMED | All fee amounts and formulas, plan-review routing and its price, the inspection taxonomy, the 60-day renewal window and 365-day registration term, the uniform five-step workflow across all types, contractor registration handled in-catalog (the city runs it through a separate portal) |
| UNKNOWN | Everything only discovery can supply: the real fee schedule, exception paths, the Auditor feed's shape, the incumbent's export, counter traffic, multi-department permissions, the Director's success measures |
The role this exercise responds to pairs a forward-deployed PM with a forward-deployed engineer: reusable scaffolding versus per-agency configuration. The demo tags its views accordingly, and this ledger is the same discipline applied to the claims.
03 / Discovery questions
What the RFP does not answer, and I would not guess.
A working prototype is not a deployment. These are the questions I would open discovery with, because the answers change the build and no public document contains them.
04 / Implementation plan
The rollout the RFP asked proposers to describe.
| Phase | Weeks | Work | Gate to proceed |
|---|---|---|---|
| Discovery | 1-2 | The questions above, on site; fee schedule and workflow captured as configuration; sample export from the incumbent | Director signs the workflow map and fee table |
| Configuration | 2-4 | Permit catalog, forms, fees, roles configured; staff walkthrough against real cases they choose | Staff complete five real record types end to end in the sandbox |
| Migration and parallel run | 4-8 | Full data migration; new applications enter both systems; discrepancies logged and burned down | One full week of parallel operation with zero unexplained discrepancies |
| Cutover readiness | 8-10 | Counter-assisted mode rehearsed; field devices in staff hands; support path agreed; rollback plan written | Staff, not the vendor, call the go date; the incumbent stays read-only, not off |
| Measurement | Through week 22 | 90-day scorecard against the baseline set in discovery, reviewed with the Director | Renewal decision on evidence, not inertia |
Timeline honesty: this assumes the incumbent can export and the Auditor feed has a machine-readable form. Discovery exists to test those assumptions in week one, not to discover them in week six.
05 / Cost anchors
What the buyer budgeted, and what comparable cities pay.
The RFP requests costs as initial setup, recurring, and miscellaneous. Inventing a vendor quote here would be theater; what public record supports is a buyer-side anchor and verified comparables, each checked against the primary council document before inclusion.
The buyer's own anchor: Medina's authorizing Ordinance 215-24 estimated "$50,000.00 for initial setup and $35,000.00 annually" for these services. Against the RFP's ~2,700 annual records, the city's own recurring budget is about $12.96 per record per year, with all the limits of a budget estimate.
| Government (2020 pop.) | Setup | Recurring | Term | Public record |
|---|---|---|---|---|
| Medina County, OH (the adjacent county, 2026) | $59,500 | $72,500/yr | 5 yr; $132,000 Year 1 | Resolution 26-0476 |
| Peekskill, NY (25.4k) | $5,000 | $15,000/yr | 2-yr minimum | Adopted minutes, Feb 2026 |
| Manor, TX (13.7k) | $0 (discounted) | $34,000/yr | 3 yr | Council order form, Nov 2025 |
| Panama City, FL (32.9k) | $14,500 | $33,000/yr | 3 yr; $113,500 total | Agenda item, Mar 2024 |
| Gadsden, AL (33.9k) | within Year 1 | $59,000 y1; $39,000 y2-3 | 3 priced yrs | Resolution R-466-24 |
The parametric model a real quote would need: users and field seats, annual record and inspection volume, migration scope from the incumbent's sample export, document storage, integration count and depth (Auditor feed, payments), training and counter-assisted intake, support tier, and an uncertainty band that narrows at each discovery gate. Each is a line an owner can check, not a contingency bucket.
06 / Colophon
How this was made, and what it does not claim.
- Sources: the city's published RFP, its applications and permits page, its published Building Permit and Electrical Permit PDFs, and Ordinance 215-24. Cost comparables arrived as external research leads and each included figure was re-verified against the primary council document before use.
- Build: agentic tools end to end (Claude Code driving research, extraction, code, and browser verification), across two working sessions on 2026-08-02: an initial build, then a structured adversarial review that found real defects (an issuance path that skipped payment, discarded form fields, overstated capability grades), then this corrected version. The review-then-fix cycle is part of the demonstration, not an embarrassment to hide.
- Truth standard: factual claims about the city cite its documents; everything simulated or assumed is labeled in place and in the ledger above. Where a claim could not be verified, it was removed or downgraded rather than hedged.
- What this does not claim: stakeholder discovery, which no artifact can perform; client delivery or commercial outcomes, which belong to real engagements; a production security posture; or any affiliation with the City of Medina, Medina County, GovWell, or Concourse.