Day 11: image-first seeding, and a second city
LocalShoot got an image-coverage overhaul (Openverse as a second photo source, an honest 'be the first to shoot here' placeholder, image-first candidate tooling) and Galveston launched as a second city with 12 verified spots on its own map.
A full Thursday on LocalShoot’s image system.
The licensing problem, and the placeholder fix
LocalShoot can’t display Instagram or other user-uploaded photos for spots that haven’t been shot yet — those aren’t licensed for redistribution. The map had been padding gaps with a blank gradient, which read like an unfinished card. Two changes today.
Second photo source. Openverse joined Wikimedia as a licensed-image upstream (commit 480dd4f). Filter is strict: only CC BY / CC BY-SA / CC0 / Public Domain. The output of either source is safe to display.
Honest placeholder. The 42 Houston spots with no licensed image got an explicit “be the first to shoot here” card (commit f7ff3cf) instead of a blank gradient. AI-generated location photos were considered and rejected — a fabricated image of a real place is misleading to a creator scouting where to shoot.
Image-first seeding
A new rule landed today: no spot ships without a verified image. Commit 5a027d8 extracted the image-search code into a shared module and added a candidate script that finds and downloads a licensed photo before a spot is seeded. The flow is: candidate list → automated search → human eye on every result → seed only the verified winners.
That rule got tested twice in the same day.
houston_v7 (commit c5964c2). 20 candidates searched, all 20 viewed by eye, 14 correct and seeded, 6 dropped (wrong-subject or archival). Houston grew 110 → 124 spots, every new spot with a real verified image.
Galveston launches as a second city (commit 991869e). Same flow, different city: 20 candidates, 12 correct, 8 dropped. Galveston is its own /galveston map, not folded into Houston. This is an expansion of an existing counted site — LocalShoot is already counted launch #1 — not a new counted launch.
The “shipped but unreachable” bug
Galveston deployed cleanly. /galveston worked. But the header still said “Houston” as a hardcoded link, so a visitor on any other page had no way to reach Galveston. The map existed; it was invisible.
The fix landed past midnight in the same continuous session (commits adfd834, 012b836): the header nav is now registry-driven from the cities list with a city-picker dropdown. Adding a third city in the future is a one-entry change.
Carries
LocalShoot beta outreach still hasn’t started. Week 1 weekly review is owed. Handyman sites (Day 10) still need production deploy + GA4 to close the §5 gate.
Day 11 of 132. 121 days remaining. Three of 25 counted launches.
Tomorrow: close the Week 2 Hub gap, run the weekly review, and decide what closes the handyman gate.
Follow the build
One email a week. Real numbers, real lessons. No hype.
Unsubscribe in one click. No selling, no sharing.