# Canonical URL patterns

Last updated: 2026-04-13

Minimal set of **public** URLs that are useful for AI discovery. For full product behavior, use `/llm/*.md` and `/llm-info`. Not exhaustive.

## AI / machine-readable

- `/llms.txt`: plain-text index (points to markdown below)
- `/llm/overview.md`, `/llm/dispatch-policy.md`, `/llm/verification-standards.md`, `/llm/homeowner-faq.md`, `/llm/contractor-faq.md`, `/llm/service-area.md`, `/llm/urls.md`: `text/markdown`
- `/llm-info`: human HTML summary; **do not duplicate long factual paragraphs here.** Prefer markdown above.

## Core marketing

- `/`: home
- `/about`, `/about/business-model`, `/contact`: company / canonical business-model explainer / contact
- `/privacy`, `/terms`: legal

## Homeowner intake and status

- `/get-help/hvac/estimate/scheduled`: example scheduled estimate entry
- `/get-help/hvac/estimate/emergency/no-heat`: example emergency estimate entry (emergency uses issue segment; not a single bare `/estimate/emergency` page)
- `/get-help/:service/status/:leadId`: primary status URL after intake and in outbound links (`?token=` when issued); nested `/tracking` where enabled
- `/account/status/:leadId`: same status UI when opened from the signed-in homeowner dashboard (optional `?token=`)
- `/homeowners`: homeowner marketing hub (subpages such as `/homeowners/emergency`, `/homeowners/faq`, etc.)
- `/homeowners/what-is-zwivio`: canonical homeowner explainer (dispatch vs leads, privacy, texts, quotes; aligns with `/about/business-model`)

## Contractors (marketing)

- `/contractors`: hub
- `/contractors/join`: application
- `/contractors/what-is-zwivio`: canonical contractor explainer (offers, assignment, charge timing vs pay-per-lead; aligns with `/about/business-model`)
- `/contractors/resources`: contractor resource hub for evaluating Zwivio, linking to contractor explainers, pricing, protections, routing, offer preview, onboarding, FAQ, and walkthrough paths
- `/contractors/earnings`: contractor Pricing & Earnings (current fee schedule and calculator; unlocked after business name and team size on that page)
- `/contractors/mission-control`: public marketing overview of the contractor portal (“Mission Control”) screenshots and positioning (not the authenticated `/pro` app)
- `/contractors/protection`, `/contractors/how-it-works`, `/contractors/why`: reference pages

## Contractor token links (do not guess tokens)

- `/offer/:offerId?token=...`
- `/job/:leadId?token=...`

## Contractor app (authenticated)

- `/pro/*`: contractor dashboard (login required)

## Locations (Wisconsin: open counties)

- `/locations/wi`: Wisconsin hub; counties shown match **live public coverage** (see `/llm/service-area.md`)
- `/locations/wi/:countySlug` and `/locations/wi/:countySlug/:citySlug`: county and city hubs for open counties

## Services (public service pages)

- `/services`: service hub; **today** the only public, dedicated trade hub under it is **Emergency HVAC** in Wisconsin (see `/services/emergency-hvac` and `/llm/service-area.md` for coverage alignment with `/locations/wi`)
- `/services/emergency-hvac`: Emergency HVAC service hub; county navigation follows the same public coverage as `/locations/wi` (see `/llm/service-area.md`)

## Retired public surfaces (do not link)

- `/availability` and subpaths: **not published** (404).
- `GET /api/public/availability/v1/dispatch-slots`, `/api/public/availability/v1/openapi.json`, `/api/public/availability/v1/task-status`: **not published** on the public API (404). Internal eligibility and cache refresh remain for operations.
- `/api/public/pricing/v1/openapi.json`: **not published** (404). `GET /api/public/pricing/v1/platform-fees` remains **410 Gone**; contractors use `/contractors/earnings` (pricing-access unlock) for line-item fees and the calculator.

## Pricing (contractors)

- `GET /api/public/pricing/v1/platform-fees`: returns **410 Gone**; **anonymous machine-readable fee JSON is not published.** Contractors use `/contractors/earnings` (pricing-access unlock) for line-item fees and the calculator.

## Estimate redirect helper

- `/estimate?serviceType=...&requestType=...`: redirects into the `/get-help/...` intake paths
