Batterboard
Turns scattered public building-permit records into a ranked call list: who is building what, where, and how to reach them — before competitors hear about the job.
- Client
- HIGHSPUR · Sioux City region
- Type
- Construction lead-intelligence tool
- Status
- Working tool · public demo
- Proves
- Systems and Operations
The real app on a public copy of the data. Permits are real; every contact name, phone and email is fictional. It may take ~30 seconds to wake up.
The problem
Subcontractors learn about new construction late. Permit records are public, but of the 334 towns within 100 miles of Sioux City that issue permits, only two publish a usable online portal — the rest sit in clerks' offices, in inconsistent formats, with no link to the builder behind the job.
What I did
- Defined the data model: permits tied to county parcels, projects, builders and contacts.
- Wrote the matching, enrichment and trade-relevance scoring rules, and the review process for uncertain matches.
- Ran records requests to small-town clerks to cover towns with no online portal.
- Directed AI-assisted development and tested each stage against hand-reviewed benchmark records.
How it works
Collect
Pull permits from city portals and clerk records requests; pull county parcel data.
Standardize
Normalize addresses and permit types; tie each permit to a parcel and project.
Resolve
Match each filing to the company doing the work and enrich it with business contact details.
Rank
Score every job by relevance to a trade (insulation, roofing, HVAC…) and freshness.
Work the list
Browse by builder or job, log calls, export a CSV or printable lead sheet.
Built with
Python, PostgreSQL + PostGIS, SQLAlchemy / Alembic, Streamlit, and pandas