2026

Custom Addresses

Address entry for job sites Google can't find, with a map pin so every job keeps the coordinates Roofr reports need. I prototyped it with Claude Code, then paired with a backend engineer to build the first version in Roofr's codebase.

Custom Addresses

Case highlights

Stability

Staged rollout

jobs and report orders held steady

~400/month

Jobs using a custom address

stuck contractors unblocked, requests stopped

Roofr First

Designer-built code

Claude Code prototype to real-codebase branch

Role
Staff Product Designer · Lead
Team
1 PM · BE dev partner · FE/BE squad
Timeframe
2026
Stakeholders
C-suite · VP Engineering · CRM PM Lead
01
  1. Friction at scale. 40% of surveyed users hit address issues; 55.8% cite “address doesn’t show up” as the #1 complaint.
  2. Direct revenue risk. Reports require coordinates. A text-only fallback would create jobs that can’t order reports.
  3. Data integrity. Contractors used fake addresses to work around the limit, corrupting downstream metrics.
  4. Sales objection. “We can’t adopt Roofr until we can enter new-construction addresses.”
02
01

Launch

Unblock and protect

  • 01 Unblock new-construction and rural jobs.
  • 02 Capture exact coordinates for the measurement team.
  • 03 Roll out in stages: closed beta, top-tier plan, then everyone.
02

Strategy

Protect revenue, set up platform

  • 01 Protect the report-revenue mechanic across rollout.
  • 02 Keep the job address as the single anchor for every job.
  • 03 Make AI-native design the team standard.
03

The project ran as a progression of artifacts.

  1. Static Figma + PRD with Claude. Layout was right; interaction questions stayed open.
  2. HTML/CSS/JS prototype with Claude Code. Leaflet, Nominatim, glass form panel, floating and anchored pin states. First AI-created prototype at Roofr. Won CPO and VP Engineering approval for the map version.
  3. Real-codebase branch, BE-dev partnered. The eng squad used it as their spec in place of Figma.
  4. Staged rollout. Closed beta in July, then the top-tier plan, then everyone in August.
  5. Design-team onboarding. The Claude Code workflow became the team standard.
04
FIG V1 candidate. Text-only custom address. Would have created jobs without coordinates, breaking the roof-report funnel.
FIG V2 candidate. Right idea, but a static mockup couldn't show the two-way sync, the pin behavior, or the auto-fill state system.
05

Built in Claude Code as the sales-tool prototype. Autocomplete + manual fallback, glass form panel, floating + drag-to-anchor pin, reverse-geocode backfill, JSON output.

REEL Prototype walkthrough

Full prototype walkthrough. Autocomplete to manual fallback to anchored pin to output JSON.

Open the prototype
06

Sacred-data. Any user input (typed or pinned) is locked once entered. System guesses render purple with an “Auto” badge; user-confirmed values render in normal text. The pin mirrors the fields: floating purple dot is the system’s guess, anchored blue teardrop is user-placed and immovable until released.

FIG Output JSON. 'verification: google-verified' (autocomplete path) or 'verification: user-custom' (manual + anchored pin). Lat/lng forwarded to Measurements either way.
07

Built in Roofr’s real codebase on a staging branch. The BE dev did the database and an interface shell. I built the UI, the pin-matching logic and every helper and error state. The eng squad then rebuilt it for production using the branch as their spec.

REEL Real-codebase walkthrough

Full walkthrough of the real-codebase build. Same flow, inside Roofr proper.

08

The sacred-data rules running in the real codebase: field states, pin states and map feedback, plus the mobile build.

Auto-fill state system. Empty to suggested (purple text + Auto badge) to locked (normal text, no badge) once a user edits.

Pin states. Floating (purple dot, follows form input via debounced geocode) and anchored (blue teardrop, user-placed, immovable until released).

Status banners across the top of the map: locating, found, not found. Reverse-geocode feedback surfaced inline so the user knows what just happened.

Mobile build. Same flow, same sacred-data contract, native mobile constraints.

09
01

Skip V1 by prototyping in code

Built map + pin in Claude Code (faster than an interactive Figma). The working prototype won the argument for the complete release.

02

Partner on the real codebase

The HTML prototype was the sales tool. The real-codebase branch replaced Figma as the spec. BE dev on the database, me on the UI and pin logic.

03

Cut multi-address

The job address is the folder that holds a project together. Multiple addresses would reshape the whole platform for an extreme edge case.

10
  • Unchanged

    Jobs and report orders through rollout

    Job creation and report orders held steady through the whole rollout, and the closed beta and both release stages went out without a single issue.

  • Stopped

    Requests and complaints

    Customers stopped asking for it once it launched. Usage is small, but the suggestions and complaints ended.

  • ~400/month

    Jobs created with a custom address

    398 in August, the first month fully live. Contractors who were stuck can now create the job.

  • First at Roofr

    AI-created prototype-in-codebase

    Built in Claude Code, then in the real codebase with a BE-dev partner.

  • All 10 designers

    AI workflow rolled out

    Same Claude Code practice, now the in-house reference for AI-native design at Roofr.

KPIs instrumented from rollout day one. Defined before launch so success criteria don’t get reverse-engineered to whatever the data shows.

  • Feature adoption. Share of jobs created via the custom-address flow vs the Google autocomplete path.
  • User unblock rate. Users who type 4+ chars, get no Google match, switch to manual, and complete job creation.
  • Sales unblocked. New deals closed because Roofr now supports new-construction addresses.
  • Operational savings. Reduction in “Address Not Found” support tickets.
  • Unblocked revenue. Volume and dollar value of proposals, reports, and invoices on jobs created via the custom-address feature flag.
11
  • Figma isn’t always enough. When the interaction questions are the design, move to code.
  • Sacred-data is a contract. Purple plus the “Auto” badge is portable to any auto-fill surface in the product.
  • AI workflow ≠ AI output. The model didn’t choose sacred-data, V1-skip, or the BE partnership. It accelerated PRD drafting and interaction-to-code translation.
  • Push back on vocal-minority priorities. 40% of surveyed users said they had the problem. The fix gets about 400 jobs a month. Size a problem by what people do before committing a squad.

Shipped August 2026. Low adoption, so no further investment is planned.

Deep dive

Curious about the specifics?

Adoption cohorts, revenue pivot data, prototype walkthrough videos, and the internal PRD are available on request during a portfolio review.