
Case study 04 / Windows local web app
PinHarbor
A Docker-free Go and Playwright workflow with clearer presets, resilient supervision, local job history, and truthful telemetry.
Conceptual artwork / product evidence follows
Product direction, interface, workflow integration, telemetry, and verification by Kirsten Trimaley; built on the attributed upstream foundation.
I use AI to explore and accelerate, but I own the product decisions, the verification, and the responsibility for what ships.
- Runtime
- Go + Playwright · no Docker
- Progress
- Live rows, rate, and estimated ETA
- Recovery
- Supervisor restart verified
The real product
Built to be used,
not just viewed.
A Windows-local Google Maps business collector with completion-driven runs, honest live progress, and focused CSV exports.
Complete application frame · source aspect ratio preserved · privacy-safe data

What I changed
- Built a compact workflow around Auto complete, Quick, Balanced, Deep, and Custom collection modes.
- Connected the interface to real job CSV rows and thread-safe progress, then added a supervised Windows launcher and recovery checks.
Boundaries first
- Progress cannot promise a fixed total because new places may be discovered while the run is active.
- Existing jobs, SQLite state, CSV exports, and upstream MIT attribution must remain intact.

Decisions
- Keep active jobs below 100 percent and label ETA honestly as calculated, finalising, stopped, or bounded by configured limits.
- Run directly with Go and Playwright on Windows instead of requiring Docker or WSL.
Proof of work
- Go tests, focused runner and web tests, browser checks, export-field coverage, and supervisor recovery passed.
- After a forced process stop, the launcher replaced the listener and the health endpoint returned ok.
Foundation and attribution: PinHarbor retains the MIT license and attribution for the gosom/google-maps-scraper project it builds on.
What comes next
Keep the collector focused on responsible, operator-directed research and maintain upstream compatibility as dependencies change.
Discuss a project