Files
diana/specification/37-seo-content-spec.md

57 KiB
Raw Blame History

37 — SEO & Content Specification

HER — Home Enhancement and Renovation

Phase 3 Spec | Static site, no CMS | Placeholder domain: https://her-sf.com

⚠️ Replace all placeholder values marked below (telephone, email, postal code, domain) with Diana's actual production values before deployment.


Table of Contents

  1. URL Structure
  2. Title Tags
  3. Meta Descriptions
  4. Heading Structure
  5. Schema.org Structured Data (JSON-LD)
  6. Open Graph & Twitter Card
  7. sitemap.xml
  8. robots.txt
  9. Content Requirements Per Service Page
  10. Internal Linking Strategy
  11. Image SEO
  12. Service Area Signals
  13. Page Speed & Technical SEO Notes
  14. Requirements Traceability

1. URL Structure

All URLs use trailing slashes. Each page declares a <link rel="canonical"> pointing to itself at the production domain with the trailing slash.

Page URL Canonical
Homepage / https://her-sf.com/
Services Hub /services/ https://her-sf.com/services/
Painting /services/painting/ https://her-sf.com/services/painting/
Tile Setting /services/tile-setting/ https://her-sf.com/services/tile-setting/
Drywall & Sheetrocking /services/drywall/ https://her-sf.com/services/drywall/
Minor Plumbing /services/plumbing/ https://her-sf.com/services/plumbing/
Minor Electrical /services/electrical/ https://her-sf.com/services/electrical/
Carpentry & Mounting /services/carpentry-and-mounting/ https://her-sf.com/services/carpentry-and-mounting/
Flooring & Wood Refinishing /services/flooring/ https://her-sf.com/services/flooring/
Security & Safety Equipment /services/security-safety/ https://her-sf.com/services/security-safety/
Boat Work /services/boat-work/ https://her-sf.com/services/boat-work/
About Diana /about/ https://her-sf.com/about/
Testimonials /testimonials/ https://her-sf.com/testimonials/
Contact / Request a Quote /contact/ https://her-sf.com/contact/
Thank You (post-form) /thank-you/ — (noindex; no canonical needed)

Implementation notes:

  • The Caddy configuration (or build output) must issue a 301 redirect from any non-trailing-slash URL (e.g., /services/painting) to its trailing-slash equivalent. Inconsistent trailing slashes create duplicate-content signals.
  • The /thank-you/ page must carry <meta name="robots" content="noindex, nofollow"> in <head>. It is excluded from the sitemap and disallowed in robots.txt (see Sections 7 and 8).
  • Total indexable pages: 14 (excluding /thank-you/).

2. Title Tags

Formula

Page type Formula
Homepage HER — Handywoman San Francisco | Home Enhancement and Renovation
Services Hub Handywoman Services in San Francisco | HER
Service detail pages [Service] in San Francisco | HER Handywoman ¹
About About Diana | HER — San Francisco Handywoman
Testimonials Client Reviews | HER — San Francisco Handywoman
Contact Request a Quote | HER — San Francisco Handywoman
Thank You Thank You | HER — San Francisco Handywoman (noindex)

¹ Formula note — why the suffix is shortened for service pages: The originally specified formula [Service] in San Francisco | HER — Home Enhancement and Renovation produces titles of 6584 characters for every service page — consistently above Google's ~60-character SERP display threshold. The suffix | HER — Home Enhancement and Renovation alone is 40 characters, leaving fewer than 20 characters for the service name and city before truncation. The shortened suffix | HER Handywoman (16 chars) preserves the brand acronym and the differentiating keyword "Handywoman" while keeping every title under 56 characters. For the three service pages with longer names (Drywall & Sheetrocking, Flooring & Wood Refinishing, Security & Safety Equipment), even | HER Handywoman is dropped to | HER to stay comfortably under 60 characters. The full brand name "Home Enhancement and Renovation" appears in the og:site_name tag, the footer on every page, and in the LocalBusiness schema — it remains fully indexable.

Page Recommended Title Tag Chars Status
Homepage HER — Handywoman San Francisco | Home Enhancement and Renovation 64 ⚠️ See note ²
Services Hub Handywoman Services in San Francisco | HER 42
Painting Painting in San Francisco | HER Handywoman 42
Tile Setting Tile Setting in San Francisco | HER Handywoman 46
Drywall & Sheetrocking Drywall & Sheetrocking in San Francisco | HER 45
Minor Plumbing Minor Plumbing in San Francisco | HER Handywoman 48
Minor Electrical Minor Electrical in San Francisco | HER Handywoman 50
Carpentry & Mounting Carpentry & Mounting in San Francisco | HER 43
Flooring & Wood Refinishing Flooring & Wood Refinishing in San Francisco | HER 50
Security & Safety Equipment Security & Safety Equipment in San Francisco | HER 50
Boat Work Boat Work in San Francisco Bay Area | HER 41
About About Diana | HER — San Francisco Handywoman 44
Testimonials Client Reviews | HER — San Francisco Handywoman 47
Contact Request a Quote | HER — San Francisco Handywoman 48
Thank You Thank You | HER — San Francisco Handywoman 42 (noindex)

² The homepage title at 64 characters is marginally over the 60-character rule. Google's rendering engine measures pixel width (~580px), not raw character count; short words like "HER" and narrow characters in "Renovation" mean it is likely to display in full. Use Google Search Console's "URL Inspection" tool after indexing to confirm no truncation, and shorten if needed (e.g., HER — Handywoman San Francisco | Home Enhancement & Reno).


3. Meta Descriptions

All descriptions target: service/page keyword + city or Bay Area + trust signal + CTA verb. Maximum ~155 characters.

Page Meta Description ~Chars
Homepage Diana is San Francisco's trusted female handywoman serving the Bay Area. Painting, plumbing, tile, electrical & more. Get a free quote from HER today. 150
Services Hub Explore all handywoman services by HER in San Francisco and the Bay Area — painting, tile, drywall, plumbing, electrical & more. Request a free quote. 150
Painting Professional interior and exterior painting in San Francisco by HER handywoman Diana. Quality prep, clean finish, Bay Area coverage. Request a quote today. 155
Tile Setting Expert tile installation in San Francisco — bathroom, kitchen backsplash, floor, and shower tile by HER. Serving the Bay Area. Get your free quote. 147
Drywall & Sheetrocking Drywall repair, patching, and sheetrocking in San Francisco by HER handywoman. Bay Area homeowners trust Diana for quality, tidy results. Get a quote. 150
Minor Plumbing Minor plumbing in San Francisco — faucets, toilets, sinks, and fixture installation by HER handywoman Diana. Bay Area coverage. Request a free quote. 149
Minor Electrical Minor electrical work in San Francisco — light fixtures, ceiling fans, outlets, and switches installed by HER. Trusted Bay Area handywoman. Get a quote. 152
Carpentry & Mounting Carpentry, furniture assembly, TV mounting, and shelf installation in San Francisco by HER handywoman. Reliable Bay Area service. Request a quote. 145
Flooring & Wood Refinishing Hardwood floor refinishing, flooring installation, and deck refinishing in San Francisco by HER. Trusted Bay Area handywoman. Get a free quote today. 149
Security & Safety Equipment Grab bars, deadbolts, cameras, and smart locks installed in San Francisco by HER handywoman. Bay Area safety and security upgrades. Request a quote. 148
Boat Work Marine repairs, boat painting, woodwork, and hardware installation in San Francisco Bay by HER handywoman. Serving Bay Area marinas. Get a quote. 144
About Meet Diana — San Francisco's trusted female handywoman and project coordinator. Skilled, reliable, and easy to work with across the Bay Area. 140
Testimonials Read what Bay Area homeowners say about HER handywoman services in San Francisco. Real reviews from real clients who trust Diana's quality work. 142
Contact Ready to get started? Request a free quote from HER — San Francisco's trusted female handywoman. Serving the Bay Area within a 50-mile radius. 141
Thank You (Not indexed — no meta description required.)

Verify before deployment: Run each description through a meta tag length checker (e.g., Sistrix Snippet Generator or Google's own SERP preview tools) at final content-lock, as small wording changes during copywriting can push lengths over the limit.


4. Heading Structure

H1 Rule

  • Exactly one <h1> per page. No two pages share the same H1 text.
  • The H1 carries the strongest on-page keyword relevance signal. It must include the primary keyword for that page and, where natural, a geographic reference (city or Bay Area).
  • The H1 does not need to match the <title> tag word-for-word but must be thematically aligned.
  • The H1 should be the first visible text element inside the page <main> landmark, not buried inside a decorative hero component.

H1 Per Page

Page H1
Homepage San Francisco's Trusted Female Handywoman
Services Hub Handywoman Services in San Francisco & the Bay Area
Painting Professional Painting Services in San Francisco
Tile Setting Tile Setting & Installation in San Francisco
Drywall & Sheetrocking Drywall Repair & Sheetrocking in San Francisco
Minor Plumbing Minor Plumbing Services in San Francisco
Minor Electrical Minor Electrical Services in San Francisco
Carpentry & Mounting Carpentry & Mounting Services in San Francisco
Flooring & Wood Refinishing Flooring & Wood Refinishing in San Francisco
Security & Safety Equipment Security & Safety Equipment Installation in San Francisco
Boat Work Boat Repairs & Marine Work in San Francisco Bay
About About Diana — San Francisco's Handywoman
Testimonials What Our Clients Say
Contact Request a Free Quote

H2/H3 Structure — Service Detail Page Template

Each of the 9 service detail pages follows this heading hierarchy:

h1  [Service] in San Francisco              ← Primary keyword + city
  h2  What's Included                       ← Opens the service scope list
  h2  Why Choose HER for [Service]          ← Trust + differentiation copy
  h2  Serving San Francisco & the Bay Area  ← Local relevance signal
  h2  Frequently Asked Questions            ← Optional; only on designated pages
      h3  [Question 1]
      h3  [Question 2]
      h3  [Question 3]
  h2  Ready to Get Started?                 ← CTA section

Content guidance for each H2:

  • "What's Included" — The list of specific sub-services should be a <ul> with <li> items, not individual <h3> tags. Reserve <h3> for meaningful content sub-sections (e.g., splitting "Interior Painting" from "Exterior Painting" if page depth warrants it). Keyword-dense sub-service names belong in the list item text, not forced into heading tags.
  • "Why Choose HER for [Service]" — This is the primary location for Diana's differentiating copy: years of experience, aerospace team-lead background, female handywoman positioning, project coordination skills, and trustworthiness (FR-16, FR-17, FR-18). 24 sentences minimum.
  • "Serving San Francisco & the Bay Area" — Name 48 specific cities or SF neighborhoods inline (see Section 12). This adds hyperlocal signals without thin-content pages.
  • "Frequently Asked Questions" — Only include this H2 on pages that carry the FAQPage schema (see Section 5.5: Painting, Tile Setting, Minor Plumbing). Do not use this schema on pages without a visible FAQ section.

5. Schema.org Structured Data (JSON-LD)

Schema Assignment by Page

Page JSON-LD Block(s)
Homepage (/) LocalBusiness
Services Hub (/services/) LocalBusiness, BreadcrumbList
All 9 service detail pages LocalBusiness, BreadcrumbList, Service [, FAQPage]
About (/about/) LocalBusiness, BreadcrumbList, Person
Testimonials (/testimonials/) LocalBusiness, BreadcrumbList
Contact (/contact/) LocalBusiness, BreadcrumbList
Thank You (/thank-you/) None (noindex page)

Each schema block goes in a separate <script type="application/ld+json"> element inside <head>. Multiple blocks per page are valid and preferred over combining unrelated types into a single object.


5.1 LocalBusiness — Concrete Example (included on every page)

The @id value (https://her-sf.com/#business) acts as a stable identifier for this entity. Other schema blocks (Service, Person) reference it by @id rather than repeating the full object.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://her-sf.com/#business",
  "name": "HER — Home Enhancement and Renovation",
  "url": "https://her-sf.com",
  "telephone": "+1-415-555-0100",
  "email": "diana@her-sf.com",
  "image": "https://her-sf.com/assets/diana_photo-min-1-scaled.webp",
  "logo": "https://her-sf.com/assets/Group-433.png",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94103",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "areaServed": [
    { "@type": "City", "name": "San Francisco" },
    { "@type": "City", "name": "Oakland" },
    { "@type": "City", "name": "Berkeley" },
    { "@type": "City", "name": "San Jose" },
    { "@type": "City", "name": "Palo Alto" },
    { "@type": "City", "name": "Daly City" },
    { "@type": "City", "name": "South San Francisco" },
    { "@type": "City", "name": "Burlingame" },
    { "@type": "City", "name": "San Mateo" },
    { "@type": "City", "name": "Redwood City" },
    { "@type": "City", "name": "Menlo Park" },
    { "@type": "City", "name": "Fremont" },
    { "@type": "City", "name": "Alameda" },
    { "@type": "City", "name": "Tiburon" },
    { "@type": "City", "name": "Sausalito" },
    { "@type": "AdministrativeArea", "name": "Marin County" }
  ],
  "sameAs": []
}

⚠️ Placeholders: Replace telephone, email, and postalCode with Diana's actual values before deployment. Add any verified social/directory profile URLs (Yelp, LinkedIn, Nextdoor, etc.) to the sameAs array when they exist.


5.2 Service Schema (each service detail page)

Place in addition to LocalBusiness. The provider field references the LocalBusiness entity by @id. Adapt name, description, serviceType, and url for each page.

Pattern — Painting page:

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Painting Services in San Francisco",
  "description": "Professional interior and exterior painting for homes in San Francisco and the Bay Area, including wall painting, cabinet painting, trim painting, and thorough surface preparation.",
  "serviceType": "Painting",
  "provider": {
    "@id": "https://her-sf.com/#business"
  },
  "areaServed": [
    { "@type": "City", "name": "San Francisco" },
    { "@type": "City", "name": "Oakland" },
    { "@type": "City", "name": "Berkeley" },
    { "@type": "AdministrativeArea", "name": "San Francisco Bay Area" }
  ],
  "url": "https://her-sf.com/services/painting/"
}

serviceType and name values per page:

Page serviceType name
Painting Painting Painting Services in San Francisco
Tile Setting Tile Installation Tile Setting & Installation in San Francisco
Drywall & Sheetrocking Drywall Repair Drywall Repair & Sheetrocking in San Francisco
Minor Plumbing Plumbing Minor Plumbing Services in San Francisco
Minor Electrical Electrical Minor Electrical Services in San Francisco
Carpentry & Mounting Carpentry Carpentry & Mounting Services in San Francisco
Flooring & Wood Refinishing Flooring Flooring & Wood Refinishing in San Francisco
Security & Safety Equipment Security Installation Security & Safety Equipment Installation in San Francisco
Boat Work Marine Repair Boat Repairs & Marine Work in San Francisco Bay

5.3 Person Schema (About page only)

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Diana",
  "jobTitle": "Handywoman",
  "description": "Diana is a professional female handywoman and project coordinator based in San Francisco, serving the Bay Area. With years of hands-on experience and an aerospace team-lead background, she brings expertise, reliability, and clear communication to every project.",
  "image": "https://her-sf.com/assets/diana_photo-min-1-scaled.webp",
  "worksFor": {
    "@id": "https://her-sf.com/#business"
  },
  "url": "https://her-sf.com/about/"
}

5.4 BreadcrumbList (all inner pages)

Service detail pages use a 3-level breadcrumb (Home > Services > [Service]):

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://her-sf.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Services",
      "item": "https://her-sf.com/services/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Painting",
      "item": "https://her-sf.com/services/painting/"
    }
  ]
}

Non-service inner pages (Services Hub, About, Testimonials, Contact) use a 2-level breadcrumb (Home > [Page]):

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://her-sf.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "About Diana",
      "item": "https://her-sf.com/about/"
    }
  ]
}

Breadcrumb label reference:

URL Breadcrumb label (name)
/services/ Services
/services/painting/ Painting
/services/tile-setting/ Tile Setting
/services/drywall/ Drywall & Sheetrocking
/services/plumbing/ Minor Plumbing
/services/electrical/ Minor Electrical
/services/carpentry-and-mounting/ Carpentry & Mounting
/services/flooring/ Flooring & Wood Refinishing
/services/security-safety/ Security & Safety Equipment
/services/boat-work/ Boat Work
/about/ About Diana
/testimonials/ Client Reviews
/contact/ Request a Quote

The breadcrumb labels must match the visible breadcrumb component rendered on the page (see 33-frontend-spec.md §6.9).


5.5 FAQPage Schema (optional; 3 designated pages)

Add FAQPage schema only when a visible FAQ section exists in the page body. Do not include this schema if the questions are not rendered to the user — Google's quality guidelines explicitly prohibit hidden FAQ schema.

Recommended on: Painting, Tile Setting, Minor Plumbing.

Pattern — Tile Setting example:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What types of tile do you install?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "HER installs ceramic, porcelain, natural stone, and glass tile for bathroom floors and walls, kitchen backsplashes, shower surrounds, and more throughout San Francisco and the Bay Area."
      }
    },
    {
      "@type": "Question",
      "name": "Do you include waterproofing for shower tile work?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Cement backer board and a waterproofing membrane are always installed in wet areas before tile is set."
      }
    },
    {
      "@type": "Question",
      "name": "Can you match and repair existing tile?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Tile repair and close-match replacement is a core part of HER's tile setting service for San Francisco homeowners."
      }
    }
  ]
}

Suggested FAQ questions by page:

Page Question 1 Question 2 Question 3
Painting Do you handle both interior and exterior painting? Is surface preparation (patching, sanding, priming) included? Can you paint kitchen cabinets?
Tile Setting What types of tile do you install? Do you include waterproofing for shower tile? Can you match and repair existing tile?
Minor Plumbing What counts as "minor plumbing"? Do you pull permits for plumbing work? Can you install a new toilet or faucet?

6. Open Graph & Twitter Card

Required Meta Tags (every page)

<!-- Open Graph -->
<meta property="og:type"        content="website" />
<meta property="og:site_name"   content="HER — Home Enhancement and Renovation" />
<meta property="og:url"         content="[canonical URL of current page]" />
<meta property="og:title"       content="[title tag value for current page]" />
<meta property="og:description" content="[meta description for current page]" />
<meta property="og:image"       content="[OG image URL — see table below]" />
<meta property="og:image:alt"   content="[OG image alt text — see table below]" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />

<!-- Twitter Card -->
<meta name="twitter:card"        content="summary_large_image" />
<meta name="twitter:title"       content="[title tag value]" />
<meta name="twitter:description" content="[meta description]" />
<meta name="twitter:image"       content="[OG image URL]" />
<meta name="twitter:image:alt"   content="[OG image alt text]" />
  • og:url must match the canonical URL exactly, including the trailing slash and HTTPS scheme.
  • og:title and og:description should use the same values as the <title> tag and meta description for that page — do not create separate OG-only copy.

OG Image Per Page

Page Asset Alt Text
Homepage diana_photo-min-1-scaled.webp Diana, professional female handywoman, HER Home Enhancement and Renovation, San Francisco
Services Hub diana_photo-min-1-scaled.webp Diana, HER handywoman, offering services across San Francisco and the Bay Area
Painting painting-1-min.png Freshly painted interior wall, professional painting service in San Francisco by HER
Tile Setting tile-setting-1-min.png Tile installation in a San Francisco bathroom by HER handywoman
Drywall & Sheetrocking sheetrocking-1-min.png Drywall and sheetrocking work in a San Francisco home by HER
Minor Plumbing plumbing-2-min.png Plumbing fixture installation by HER handywoman in a San Francisco home
Minor Electrical electrical-1-min.jpg Light fixture installation by HER handywoman in a San Francisco home
Carpentry & Mounting diana_photo-min-1-scaled.webp Diana, HER handywoman, carpentry and mounting services in San Francisco
Flooring & Wood Refinishing wood-refinishing-1-min.png Hardwood floor refinishing in a San Francisco home by HER handywoman
Security & Safety Equipment grab-bar-min.png Grab bar installation in a San Francisco bathroom, safety upgrade by HER
Boat Work boat-work-min-scaled.jpg Boat repair and marine work in the San Francisco Bay by HER handywoman
About diana_photo-min-1-scaled.webp Diana, professional female handywoman serving San Francisco and the Bay Area
Testimonials diana_photo-min-1-scaled.webp Diana, HER handywoman, trusted by San Francisco Bay Area homeowners
Contact diana_photo-min-1-scaled.webp Request a free quote from HER — San Francisco handywoman Diana

Implementation notes:

  • The og:image:width / og:image:height values (1200×630) are the required OG dimensions. The existing assets are not necessarily 1200×630px. Before launch, export or crop an OG-specific version of each asset at 1200×630px and serve them from a dedicated /assets/og/ directory. Do not link directly to full-resolution gallery images or thumbnail crops in the OG tag.
  • Some OG crawlers (Facebook, LinkedIn) have inconsistent WebP support. Until a JPG/PNG OG export exists, the existing WebP files are an acceptable fallback — modern crawlers handle them — but plan to produce JPG OG exports in the first post-launch update.
  • The Carpentry & Mounting page has no dedicated photo in the v1 asset library. Diana's portrait (diana_photo-min-1-scaled.webp) is the correct fallback until carpentry-specific images are available.

7. sitemap.xml

The sitemap includes all 14 indexable pages. /thank-you/ is deliberately excluded. Update <lastmod> to the actual build/publish date at deployment; this value can be generated automatically by the build script.

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- ════════════════════════════════════════ -->
  <!-- Homepage — priority 1.0                 -->
  <!-- ════════════════════════════════════════ -->
  <url>
    <loc>https://her-sf.com/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- ════════════════════════════════════════ -->
  <!-- Services Hub — priority 0.9             -->
  <!-- ════════════════════════════════════════ -->
  <url>
    <loc>https://her-sf.com/services/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- ════════════════════════════════════════ -->
  <!-- Service Detail Pages — priority 0.8     -->
  <!-- ════════════════════════════════════════ -->
  <url>
    <loc>https://her-sf.com/services/painting/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/tile-setting/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/drywall/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/plumbing/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/electrical/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/carpentry-and-mounting/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/flooring/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/security-safety/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <url>
    <loc>https://her-sf.com/services/boat-work/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- ════════════════════════════════════════ -->
  <!-- Contact — priority 0.8 (conversion)     -->
  <!-- ════════════════════════════════════════ -->
  <url>
    <loc>https://her-sf.com/contact/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- ════════════════════════════════════════ -->
  <!-- About & Testimonials — priority 0.7     -->
  <!-- ════════════════════════════════════════ -->
  <url>
    <loc>https://her-sf.com/about/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

  <url>
    <loc>https://her-sf.com/testimonials/</loc>
    <lastmod>2025-01-01</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>

</urlset>

Notes:

  • Total: 14 URLs. /thank-you/ is excluded.
  • The <priority> element signals relative importance within this site only; it does not directly affect ranking. The values above reflect: homepage (highest) → services hub → service pages + contact (conversion focus) → trust pages.
  • Submit https://her-sf.com/sitemap.xml via Google Search Console once the domain is live and DNS has propagated.
  • Image sitemap is out of scope for v1 (see Section 11).

8. robots.txt

User-agent: *
Allow: /

# Exclude the post-form confirmation page from indexing
Disallow: /thank-you/

Sitemap: https://her-sf.com/sitemap.xml

Notes:

  • No other paths need to be disallowed on this static site. All non-/thank-you/ pages are public and indexable.
  • The Sitemap: directive must use the fully-qualified HTTPS URL.
  • If a /assets/ subdirectory later holds unlisted or private files, add a targeted Disallow directive at that time. Do not preemptively block /assets/ — Google Images discovery of the service photos is a secondary benefit.
  • The /thank-you/ page is disallowed here as a belt-and-suspenders measure in addition to the noindex meta tag on the page itself.

9. Content Requirements Per Service Page

All 9 service pages use the structural template defined in Section 4. The requirements below specify keyword targeting and content minimums for each page individually.

Word count floors are the minimum for genuine SEO value in a competitive local market (San Francisco). They are not targets to hit mechanically — useful, specific copy always outranks padded generic text.


9.1 Painting (/services/painting/)

Word count floor 400 words
Primary keyword house painter San Francisco / interior painting San Francisco
Secondary keywords exterior house painting Bay Area, room painting contractor San Francisco, cabinet painting San Francisco, trim painting Bay Area, residential painting service SF
Key assets painting-1-min.pngpainting-8-min.jpg

"What's Included" bullets should cover:

  • Interior wall and ceiling painting
  • Exterior siding and trim painting
  • Cabinet painting and refinishing
  • Accent walls and color consultation
  • Surface preparation: hole patching, sanding, priming
  • Clean-up and final walkthrough

FAQPage: Recommended (see Section 5.5).

Internal links out:

Anchor text Target page
"Need drywall work before we paint?" /services/drywall/
"Painting trim and baseboards?" or similar /services/carpentry-and-mounting/
"Request a free quote" (CTA) /contact/

9.2 Tile Setting (/services/tile-setting/)

Word count floor 400 words
Primary keyword tile installation San Francisco
Secondary keywords bathroom tile installation SF Bay Area, kitchen backsplash tile San Francisco, floor tile installation Bay Area, shower tile San Francisco, tile repair and replacement SF
Key assets tile-setting-1-min.pngtile-setting-8-min.png

"What's Included" bullets should cover:

  • Bathroom floor and wall tile
  • Kitchen backsplash installation
  • Shower surrounds and wet areas (with backer board and waterproofing)
  • Porcelain, ceramic, natural stone, and glass tile
  • Grout installation and sealing
  • Tile repair, matching, and replacement

FAQPage: Recommended (see Section 5.5).

Internal links out:

Anchor text Target page
"Need flooring beyond tile?" or similar /services/flooring/
"Renovating a bathroom? We also handle minor plumbing." /services/plumbing/
"Request a free quote" (CTA) /contact/

9.3 Drywall & Sheetrocking (/services/drywall/)

Word count floor 350 words
Primary keyword drywall repair San Francisco
Secondary keywords sheetrocking contractor San Francisco, drywall patching Bay Area, drywall installation SF, hole repair drywall San Francisco, skim coat drywall SF
Key assets sheetrocking-1-min.pngsheetrocking-5-min.png

"What's Included" bullets should cover:

  • Drywall installation (new and replacement panels)
  • Patching holes — nail-hole size up to large openings
  • Taping, joint compound (mudding), and finishing
  • Skim coat and surface texturing
  • Smooth finish ready for painting
  • Water-damage and impact repairs

Internal links out:

Anchor text Target page
"Drywall done? We can paint it too." /services/painting/
"Need trim or woodwork after drywall?" /services/carpentry-and-mounting/
"Request a free quote" (CTA) /contact/

9.4 Minor Plumbing (/services/plumbing/)

Word count floor 350 words
Primary keyword minor plumbing San Francisco
Secondary keywords faucet installation San Francisco, toilet replacement SF Bay Area, sink installation San Francisco, shower fixture replacement SF, plumbing fixture installation Bay Area
Key assets plumbing-2-min.pngplumbing-8-min.png

"What's Included" bullets should cover:

  • Faucet and fixture replacement (kitchen and bathroom)
  • Toilet installation and replacement
  • Sink and vanity hookup
  • Showerhead and tub spout replacement
  • Supply line and drain connection
  • Garbage disposal installation

Scope boundary — state clearly on-page: HER handles non-permitted minor plumbing fixture work. Projects requiring a licensed plumber or building permits are referred to a licensed contractor.

FAQPage: Recommended (see Section 5.5).

Internal links out:

Anchor text Target page
"Renovating a bathroom? We also set tile." /services/tile-setting/
"Adding grab bars near the tub?" /services/security-safety/
"Request a free quote" (CTA) /contact/

9.5 Minor Electrical (/services/electrical/)

Word count floor 350 words
Primary keyword minor electrical work San Francisco
Secondary keywords light fixture installation SF Bay Area, ceiling fan installation San Francisco, outlet replacement San Francisco, GFCI outlet installation SF, switch installation Bay Area
Key assets electrical-1-min.jpgelectrical-8-min.jpg

"What's Included" bullets should cover:

  • Light fixture installation and replacement
  • Ceiling fan installation
  • Outlet and switch replacement
  • GFCI outlet installation (kitchens, bathrooms, outdoor areas)
  • Under-cabinet and accent lighting
  • Dimmer switch installation

Scope boundary — state clearly on-page: HER handles fixture-level electrical work. Panel upgrades, new circuit runs, and permitted electrical installations require a licensed electrician and are referred accordingly.

Internal links out:

Anchor text Target page
"Powering security cameras or smart locks?" /services/security-safety/
"Need mounting or assembly alongside electrical?" /services/carpentry-and-mounting/
"Request a free quote" (CTA) /contact/

9.6 Carpentry & Mounting (/services/carpentry-and-mounting/)

Word count floor 350 words
Primary keyword carpentry services San Francisco / handywoman mounting San Francisco
Secondary keywords furniture assembly San Francisco, TV mounting SF Bay Area, shelf installation San Francisco, door repair SF, baseboard and trim installation San Francisco
Key assets diana_photo-min-1-scaled.webp (no dedicated carpentry images in v1)

"What's Included" bullets should cover:

  • Furniture assembly (flat-pack and pre-built)
  • TV mounting and cable management
  • Floating shelf and wall-unit installation
  • Curtain rod and blind installation
  • Door adjustment, hanging, and hardware installation
  • Baseboard, crown molding, and trim installation

Asset gap note: No dedicated carpentry or mounting photos are in the v1 asset library. Diana's portrait is the correct fallback for page hero and OG image. Adding 35 carpentry-specific photos is recommended before launch or in the first post-launch content update.

Internal links out:

Anchor text Target page
"Need trim or woodwork painted?" /services/painting/
"Installing baseboards or cabinets alongside new flooring?" /services/flooring/
"Request a free quote" (CTA) /contact/

9.7 Flooring & Wood Refinishing (/services/flooring/)

Word count floor 400 words
Primary keyword hardwood floor refinishing San Francisco / flooring installation San Francisco
Secondary keywords hardwood floor refinishing Bay Area, LVP flooring installation SF, deck refinishing San Francisco, stair tread refinishing Bay Area, wood floor repair SF
Key assets wood-refinishing-1-min.pngwood-refinishing-9-min.png

"What's Included" bullets should cover:

  • Hardwood floor sanding and refinishing
  • Stain application and polyurethane sealing
  • LVP (luxury vinyl plank) and laminate installation
  • Subfloor preparation and repair
  • Deck and outdoor wood surface refinishing
  • Stair tread refinishing

Internal links out:

Anchor text Target page
"Related woodwork and trim?" /services/carpentry-and-mounting/
"Refinishing floors and refreshing the walls?" /services/painting/
"Request a free quote" (CTA) /contact/

9.8 Security & Safety Equipment (/services/security-safety/)

Word count floor 350 words
Primary keyword security equipment installation San Francisco / safety equipment installation SF
Secondary keywords grab bar installation San Francisco, door lock installation Bay Area, security camera installation SF, smart lock installation San Francisco, ADA safety upgrades Bay Area
Key assets grab-bar-min.png, security-garage-door-min.png

"What's Included" bullets should cover:

  • Grab bar installation (bathroom, shower, stairway)
  • Deadbolt and door lock installation and replacement
  • Security camera mounting and basic setup
  • Smart lock and keypad entry installation
  • Door reinforcement and peephole installation
  • Motion-sensor and safety lighting installation

Internal links out:

Anchor text Target page
"Need an outlet for your camera system?" /services/electrical/
"Adding grab bars near the tub or shower?" /services/plumbing/
"Request a free quote" (CTA) /contact/

9.9 Boat Work (/services/boat-work/)

Word count floor 300 words
Primary keyword boat repair San Francisco Bay / marine handywoman San Francisco
Secondary keywords boat painting San Francisco Bay, marine woodwork Bay Area, boat hardware installation SF, sailboat maintenance Bay Area, liveaboard repairs San Francisco
Key assets boat-work-min-scaled.jpg

"What's Included" bullets should cover:

  • Marine paint and gelcoat touch-up and refinishing
  • Teak and wood surface cleaning, oiling, and refinishing
  • Deck hardware installation and replacement
  • Liveaboard interior repairs and improvements
  • Canvas and upholstery minor repairs
  • General boat maintenance and handywork

Tone note: This page targets a niche, high-trust market. The copy should emphasize Diana's comfort and experience in marine environments and working on vessels docked at Bay Area marinas. If Diana has worked at specific marinas (e.g., Sausalito, Alameda, South Beach Harbor), naming them adds authenticity and hyperlocal signal.

Asset note: Only one boat-work photo is in the v1 library. Adding 23 more boat-specific images is recommended to bring the image gallery in line with other service pages.

Internal links out:

Anchor text Target page
"Marine painting shares a lot with land-side painting — we do both." /services/painting/
"Wood deck refinishing on boats and homes alike." /services/flooring/
"Request a free quote" (CTA) /contact/

10. Internal Linking Strategy

/ (Homepage)
├── /services/            ← hero "View all services" + nav
│   ├── /services/painting/
│   ├── /services/tile-setting/
│   ├── /services/drywall/
│   ├── /services/plumbing/
│   ├── /services/electrical/
│   ├── /services/carpentry-and-mounting/
│   ├── /services/flooring/
│   ├── /services/security-safety/
│   └── /services/boat-work/
├── /about/
├── /testimonials/
└── /contact/

Every page links back to / and /contact/ via the navigation header and footer. The graph above shows content-body links.

Page Required body links
Homepage /services/ (hub link), all 9 service cards, /about/, /testimonials/, /contact/
Services Hub All 9 service page cards, /contact/
Each service detail page /contact/ (primary CTA, at least twice: inline + CTA band), 2 related service pages (see cross-link table below), /services/ and / via breadcrumb
About /contact/
Testimonials /contact/
Footer (every page) /, /services/, all 9 service pages, /about/, /testimonials/, /contact/

Each service page links out to 2 contextually related service pages. Both directions of each pair are shown; implement both ends.

Page Related page 1 Related page 2
Painting Drywall & Sheetrocking Carpentry & Mounting
Tile Setting Flooring & Wood Refinishing Minor Plumbing
Drywall & Sheetrocking Painting Carpentry & Mounting
Minor Plumbing Tile Setting Security & Safety Equipment
Minor Electrical Security & Safety Equipment Carpentry & Mounting
Carpentry & Mounting Painting Flooring & Wood Refinishing
Flooring & Wood Refinishing Carpentry & Mounting Painting
Security & Safety Equipment Minor Electrical Minor Plumbing
Boat Work Painting Flooring & Wood Refinishing

Anchor Text Guidance

  • Use descriptive, keyword-relevant anchor text for all content body links. Avoid "click here", "learn more", or bare URLs.
  • Good: "our painting services in San Francisco", "drywall repair and patching", "request a free quote"
  • Avoid repeating the same anchor text string for the same target more than once on a single page.
  • CTA buttons may use action-first copy: "Request a Free Quote", "Get in Touch", "Schedule a Visit".
  • Breadcrumb links use short, literal labels ("Services", "Painting") — this is correct and expected for breadcrumbs.

11. Image SEO

Alt Text Guidance

Alt text must describe what is visible in the image and add useful context — not keyword lists.

Formula: [Subject or action visible in photo], [setting or room], [city/context if natural]

Reference table for existing assets:

Asset filename Recommended alt text
diana_photo-min-1-scaled.webp Diana, professional female handywoman, HER Home Enhancement and Renovation, San Francisco
Group-433.png HER — Home Enhancement and Renovation logo
painting-1-min.png Interior wall painted in a light neutral color, living room renovation, San Francisco
painting-3-min.jpg White baseboard trim being painted, close-up detail, professional finish
painting-5-min.jpg Exterior house painting in progress, ladder and brushwork on siding
tile-setting-1-min.png Floor tile installation in progress, bathroom renovation, San Francisco
tile-setting-3-min.png Kitchen backsplash tile being installed, white subway tile layout
tile-setting-6-min.png Finished shower tile surround with grout, clean professional result
sheetrocking-1-min.png Drywall panels installed and taped in a San Francisco room under renovation
sheetrocking-3-min.png Drywall joint compound being applied, taping and mudding stage
plumbing-2-min.png Bathroom faucet being installed on a vanity, plumbing fixture replacement
plumbing-5-min.png Toilet installation in a San Francisco bathroom, new fixture hookup
electrical-1-min.jpg Ceiling light fixture installation in a San Francisco home, wiring in progress
electrical-3-min.jpg Ceiling fan installation, fan attached to mounting bracket
grab-bar-min.png Stainless steel grab bar installed on bathroom wall, safety upgrade for SF home
security-garage-door-min.png Garage door security hardware and lock installation, San Francisco home
wood-refinishing-1-min.png Hardwood floor being sanded and refinished in a San Francisco home
wood-refinishing-5-min.png Freshly refinished hardwood floor with new stain coat, polished and smooth
wood-refinishing-9-min.png Wood deck refinishing in progress, sanding on outdoor surface
boat-work-min-scaled.jpg Boat maintenance and repair work, marine woodwork in the San Francisco Bay

For assets not listed here, apply the same formula. Never use a filename as alt text.

Decorative rule: If any image is purely decorative (e.g., a visual spacer or background element with no informational content), set alt="". All photo assets in the current library are content images and require descriptive alt text.

File Naming Convention

The existing assets follow a consistent, SEO-friendly naming convention ([subject]-[sequence]-min.[ext]). No renaming is necessary. When adding new assets, follow the same pattern:

  • Use lowercase and hyphens only (no spaces, no underscores, no camelCase).
  • Lead with the descriptive subject: carpentry-shelf-1-min.jpg, boat-teak-1-min.jpg.
  • Append -min before the extension to indicate it is an optimized/compressed copy.
  • Never include dimensions in the filename for new assets (the -768x1165 variant in the library is a WordPress artifact; avoid this pattern going forward).

Image Sitemap

Image sitemap is out of scope for v1. The standard sitemap.xml is sufficient at launch. Consider an image sitemap in a future iteration if Google Images referral traffic becomes a goal.


12. Service Area Signals

On-Page Minimum Requirements

Every page must reference San Francisco and Bay Area at minimum — in the H1, body copy, or service area block. Service detail pages and the Contact page must include a dedicated "Service Area" section in the page body (see 33-frontend-spec.md §5.3, Section 6 and §5.6).

Required service area copy (Homepage and Contact page — full version):

HER serves San Francisco and the surrounding Bay Area within a 50-mile radius, including Oakland, Berkeley, San Jose, Palo Alto, Daly City, South San Francisco, Burlingame, San Mateo, Redwood City, Menlo Park, Fremont, Alameda, Tiburon, Sausalito, and Marin County.

Service detail pages — condensed version (embed in the "Serving San Francisco & the Bay Area" section):

Diana serves homeowners and property managers throughout San Francisco and the Bay Area — from Oakland and Berkeley to the Peninsula cities of Palo Alto, Burlingame, and San Mateo, and north into Marin County.

City Coverage Reference

City / Area Type Notes
San Francisco Primary market Mention on every page
Oakland City East Bay anchor
Berkeley City East Bay
San Jose City South Bay anchor
Palo Alto City Peninsula
Daly City City SF adjacency
South San Francisco City SF adjacency
Burlingame City Peninsula
San Mateo City Peninsula
Redwood City City Peninsula
Menlo Park City Peninsula
Fremont City East Bay
Alameda City East Bay; marina proximity for Boat Work
Tiburon City Marin; marina proximity
Sausalito City Marin; marina proximity; high relevance for Boat Work
Marin County County Use as area label, not a city

SF Neighborhood Signals

Within San Francisco, weave neighborhood names into 12 sentences of body copy on relevant service pages. Do not create separate thin pages per neighborhood.

Neighborhood cluster High-relevance service pages
The Mission, Castro, Noe Valley, Bernal Heights Painting, Flooring (older Victorian and Edwardian housing stock)
Pacific Heights, Marina, Cow Hollow Tile Setting, Flooring, Security & Safety (higher-end renovations)
Outer Sunset, Richmond, Excelsior General services — all pages
SoMa, Potrero Hill, Dogpatch, Mission Bay Electrical, Carpentry (condo and loft renovations)
South Beach, Marina District Boat Work (South Beach Harbor, Marina Green proximity)

13. Page Speed & Technical SEO Notes

These notes apply to the static site implementation and must be observed by the implementor. (→ ADR-001, ADR-003, NFR-3, NFR-6)

Static HTML — Crawlability Baseline

Pages are pre-rendered HTML with no client-side rendering. Content is fully indexable by Googlebot on first request without JavaScript execution. No additional render-budget concerns apply (→ NFR-3).

Caddy serves static files directly from disk; no application server latency. TTFB should be well under 200ms on a typical VPS.

Canonical and Robots Meta (every page's <head>)

<link rel="canonical" href="https://her-sf.com/[path]/" />
  • Use HTTPS, the production domain, and a trailing slash. Matches the URL in the sitemap exactly.
  • All pages: no <meta name="robots"> needed (default is index, follow).
  • /thank-you/ only: add <meta name="robots" content="noindex, nofollow" />.

Google Fonts

Two options in priority order:

  1. Self-host (preferred): Download the WOFF2 files and serve from /assets/fonts/. Reference via @font-face in the CSS. This eliminates the third-party DNS lookup entirely and improves LCP.
  2. Google CDN with display=swap: Add the following in <head> before the stylesheet <link>:
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    
    Use &display=swap on the font URL to prevent render-blocking. This is acceptable but sub-optimal for LCP compared to self-hosting.

Images

Use <picture> elements with a WebP source and JPG/PNG fallback. Always include explicit width and height attributes to allow the browser to reserve layout space and eliminate Cumulative Layout Shift (CLS):

<picture>
  <source srcset="/assets/painting-1-min.webp" type="image/webp" />
  <img
    src="/assets/painting-1-min.png"
    alt="Interior wall painting, San Francisco home"
    width="800"
    height="600"
    loading="lazy"
  />
</picture>

Loading strategy:

  • Hero images (above the fold): omit loading attribute or use loading="eager". Add fetchpriority="high" to the primary hero <img> on each page to improve LCP.
  • Gallery and below-fold images: use loading="lazy".

File size targets:

  • Gallery images: < 150 KB per file.
  • Hero images: < 300 KB per file.
  • OG images (exported separately): < 200 KB per file.

The existing *-min.* assets have been through at least one compression pass. Run through Squoosh or cwebp to produce WebP variants if not already present.

Note on WebP availability: The current asset library consists of .png, .jpg, and one .webp file (diana_photo-min-1-scaled.webp). WebP variants of all other assets should be generated as part of the build/asset pipeline. If build tooling is unavailable, the existing PNG/JPG files are valid for v1 launch; add WebP generation in the first post-launch update.

Third-Party Scripts

No analytics, ad pixels, tag managers, or external widgets are present in v1 (→ ADR-005, NFR-7). This is a meaningful LCP and Total Blocking Time (TBT) advantage. The AWS form endpoint (→ ADR-002) fires only on form submission and adds zero blocking time to initial page render.

Do not introduce any <script> loading pattern that blocks the critical rendering path (i.e., no synchronous <script src="..."> in <head> without defer or async).

Core Web Vitals Targets

Metric Target How achieved
LCP (Largest Contentful Paint) < 2.5 s (mobile) fetchpriority="high" on hero image; self-hosted fonts; compressed WebP
INP (Interaction to Next Paint) < 200 ms Minimal JS; no heavy client-side framework
CLS (Cumulative Layout Shift) < 0.1 Explicit width/height on all images; no late-loading layout elements
TTFB (Time to First Byte) < 200 ms Caddy serving static files; no application server

14. Requirements Traceability

Spec Section Requirement / ADR Description
§1 — URL Structure NFR-3 Static HTML; no content behind client-side rendering; all URLs indexable
§1 — URL Structure ADR-004 9 grouped service pages; slugs established by ADR
§2 — Title Tags NFR-4 Each service page must have unique, descriptive metadata targeting service + location
§3 — Meta Descriptions NFR-4 Unique, descriptive metadata per page
§4 — Heading Structure NFR-4 H1 per page as primary on-page keyword relevance signal
§5 — Schema.org NFR-3 Structured data supports rich results; confirms fully indexable content
§5.1 LocalBusiness areaServed FR-9 Site must clearly state service area: SF + 50-mile radius
§5.3 Person schema FR-12, FR-18 About Diana page; highlights experience and credibility
§6 — Open Graph NFR-4 Per-page OG images and descriptions for unique social metadata
§7 — sitemap.xml NFR-5 Site must include a sitemap.xml
§8 — robots.txt NFR-5 Site must include robots.txt; disallow /thank-you/
§9 — Content requirements ADR-004 Each grouped page must have sufficient unique content to serve its target keywords
§9 — Content requirements NFR-4 Keyword + location targeting per service; primary + secondary keyword coverage
§9 — Scope boundaries (Plumbing, Electrical) FR-11 Service page content must accurately represent what HER offers
§10 — Internal linking NFR-3 Crawlable link structure ensures all pages are discoverable
§11 — Image SEO NFR-6 Images optimized and appropriately sized; alt text for accessibility and indexability
§12 — Service area signals FR-9 Service area: SF + 50-mile radius stated on every page
§13 — Page speed NFR-3 Static HTML; no rendering issues for crawlers
§13 — Page speed NFR-6 Fast mobile loading; images compressed; no blocking scripts
§13 — Page speed ADR-001 Static site for SEO-friendly, fast, reliable delivery
§13 — Page speed ADR-003 Mobile-first; performance budget mindset throughout
§13 — No tracking scripts ADR-005 / NFR-7 No analytics, no tracking, no cookie consent banner in v1