Portfolio Prototype · Powered by Public City Data

PermitPulse

Pool Project Opportunity Monitor

PermitPulse watches official City of Mesa building-permit data, filters newly issued residential pool projects, and turns those records into a focused contractor opportunity dashboard and weekly digest.

AstroTypeScriptNetlify FunctionsSocrata APIPublic DataAutomation
PermitPulse dashboard: summary statistics, six filters, a weekly permit-activity chart, and scored permit cards with masked Mesa addresses

The problem

Contractors often rely on expensive shared leads, referrals, or manual searches. Public permit records contain useful commercial signals, but the data is scattered, noisy, and rarely delivered in a contractor-friendly format.

The approach

Watch → Filter → Deliver

01 · WATCH

Retrieve newly issued residential pool permits from the official City of Mesa Socrata API.

02 · FILTER

Normalize, deduplicate, score, and prioritize records using recency, valuation, permit relevance, and data completeness.

03 · DELIVER

Present opportunities through a responsive dashboard and prepare a weekly email digest.

The build

Small surface, finished edges.

·

Official public API. Socrata SODA queries with server-side field whitelisting — no scraping.

·

Netlify serverless function. All retrieval, normalization, and scoring run server-side.

·

Deterministic scoring. A documented 0–100 model: recency, valuation, relevance, completeness. No AI where none is needed.

·

Six dashboard filters. Date range, priority, minimum valuation, status, contractor, and free-text search.

·

Responsive permit cards. Priority chip, masked address, valuation, contractor, and a plain-English score explanation.

·

Detail dialog. Full description, copyable permit number, and a four-part score breakdown.

·

Weekly digest preview. An email-safe digest rendered from the same data path as the dashboard.

·

Scheduled-function architecture. A cron-configured Netlify function prepares the Monday-morning digest in dry-run mode.

·

Live-data fallback. If the city API is unreachable, a cached sample of real records loads — clearly labeled.

·

Address masking. Residential street numbers are masked server-side before data ever reaches the browser.

PermitPulse dashboard on a phone, with stacked summary cards and filters
Mobile dashboard
Permit detail dialog showing a masked address, declared valuation, contractor, and a transparent four-part score breakdown
Permit detail with transparent score breakdown
Weekly email digest preview listing the top-scored pool permits of the week with masked addresses
Weekly digest preview — prepared by a scheduled function, dry-run only

Outcome

What the finished build showed.

142

live records retrieved during verification (180 days)

68

permits in the default 90-day view

20

permits in the latest 30-day view

~$3.2M

total declared valuation in that view

~$52.3K

average declared valuation

15

high-priority records

Live

City of Mesa open-data API

$0

data-acquisition cost for the prototype

Figures observed during build verification against the live API (July 2026) — not permanent market statistics.

Technical architecture

Five stages, one direction.

01

City of Mesa Socrata API

02

Netlify Function

03

Normalize / Deduplicate / Mask

04

Transparent Opportunity Scoring

05

Dashboard + Weekly Digest

Privacy and responsible design

  • · Residential street numbers are masked before data reaches the browser.
  • · No homeowner contact enrichment is performed.
  • · Scores prioritize records for review — they do not predict job availability.
  • · Permit activity does not guarantee that work is available or unassigned.

Validation status

PermitPulse is a working portfolio prototype. The remaining business question is whether pool-barrier work is commonly unassigned when a permit is issued and whether the records are actionable enough for contractors to pay for recurring access.

It demonstrates: turning public data into an understandable business workflow · serverless API integration · scheduled monitoring architecture · transparent scoring · responsive product design · digest automation · graceful error handling · privacy-conscious data presentation.

Watch → Filter → Deliver

What information are you still checking manually?

I build focused tools that watch changing information, filter out the noise, and deliver the results that matter.

Get in touch