The Open Method
The Navi Works Playbook.
Every check, every framework, every piece of consumer psychology we apply to every project we ship — written down, in plain English, free to take and run with.
The Deal
You can hire us to do all of this for you, or you can read this page, take the playbook, and run it yourself. Both are fine.
Most people who read this think, "I don't want to do all of that." That's where we come in. The work is the moat — not the knowledge.
Last updated: April 29, 2026. Living document. We add to it as we ship more.
CHAPTER 01
The Audit — what to find first
Before designing or building anything, audit the existing site. Most of the answers about "what should we do?" come from "what's broken right now?"
An audit isn't a vibes-check. It's a structured pass through nine categories, each producing a list of specific findings. Done right, it generates the entire scope of the rebuild — so you don't end up arguing about features later.
The 9 audit categories
- Reputation surface — what reviews exist on Google, Yelp, Nextdoor, BuildZoom, vertical-specific platforms? Are any of them shown on the site?
- Portfolio surface — does the site show actual work? Real photos, before/after, case studies? Or stock images?
- Platform / stack — what's it built on? When was the framework's last update? Are there obvious tech-debt smells (e.g.
?id=123 URLs, /home.html patterns, jQuery 1.x)?
- Mobile performance — measure on a real phone. Time to first paint. Cumulative Layout Shift. Touch-target sizes. Horizontal-scroll bugs.
- Conversion path — count the clicks to "I want to buy / book / call." Is the phone number sticky on mobile? Is there a quote form? Does it qualify the lead or just collect names?
- SEO surface — title tags, meta descriptions, OG tags, schema markup, canonical URLs, sitemap, robots.txt. Most small business sites have at least 3 of these broken.
- Local SEO — Google Business Profile completeness, NAP consistency (Name/Address/Phone matching everywhere), service-area accuracy.
- Brand consistency — does the email domain match the site domain? Logo on every page? License numbers visible? Social-media handles tied in?
- Security / hygiene — HTTPS, HSTS, mixed content, CSP, cookie consent, privacy policy. Not glamorous; matters legally.
Did we do this?
- 9 categories covered, with concrete findings in each
- Every finding either fixable or flagged with a reason it isn't
- Findings translate directly into rebuild scope (not vague hopes)
CHAPTER 02
Visual Foundation — color & type
People form trust judgments in roughly 50 milliseconds, based on color and font alone, before they read a single word. Get this right and the rest of the site has tailwind. Get it wrong and the rest is uphill.
Color palette
Pick a palette that distinguishes the brand from competitors in the same vertical. Most painter sites are blue. Most plumbers are red/blue. Most landscapers are green. Doing the same thing makes the site visually invisible in search results.
Look at the top 10 Google results for the client's main service. Don't pick any color you see in 3+ of them. Pick a palette that signals the brand's identity: heritage, modern, premium, scrappy, family-run, etc.
Typography pairing
One serif + one sans-serif, almost always. Serif for headings = gravitas, tradition (newspapers, banks, heritage brands). Sans for body = readable, modern, clean.
Default safe pairings:
- Modern professional: Inter (body) + Source Serif 4 or Fraunces (headings)
- Heritage / craftsman: Helvetica or system-ui (body) + Georgia or Playfair Display (headings)
- Local / friendly: Nunito (body) + Lora (headings)
- Tech / startup: Inter throughout, vary weight only
The brand consistency layer
Once a palette and type pairing exist, they apply everywhere: the website, the email signature, the invoice, the business card, the truck wraps. Inconsistency dilutes trust. Consistency compounds it.
Did we do this?
- Picked a palette no major local competitor uses
- Selected one serif + one sans-serif, paired deliberately
- Confirmed the palette signals the right brand identity (heritage / modern / etc.)
- Documented the palette + type as a 1-page brand sheet for the client
CHAPTER 03
Mobile-First Design
For most local-business websites, 65–80% of traffic is mobile. Designing for desktop first is designing for the minority audience. Flip the priority.
The non-negotiables
- Sticky bottom click-to-call bar — the thumb's natural rest is the bottom of the screen. Phone CTA always one tap away.
- Touch targets ≥ 44 × 44 pixels — Apple's HIG minimum, Google's Material recommends ≥ 48px. No buttons smaller than this. Period.
- No horizontal scroll, ever — set
html { overflow-x: hidden; }. Then individually clip any overflowing element. Audit on a real 375px iPhone.
- Tap-to-call links — every phone number is
<a href="tel:...">. Email is mailto:. Address links to Maps.
- Forms with
inputmode + autocomplete — phone number fields get inputmode="tel" + autocomplete="tel". ZIP gets inputmode="numeric" pattern="[0-9]{5}". Email gets autocomplete="email". Auto-fill is a conversion feature.
- Fixed-position elements respect safe-area — iPhone home-indicator zones eat the bottom of fixed bars. Use
padding-bottom: env(safe-area-inset-bottom);.
The mobile-first CSS pattern
Write mobile styles in the unprefixed CSS. Add desktop overrides only inside @media (min-width: 768px). Reverse engineering desktop-first to mobile is consistently more painful and bug-prone.
Did we do this?
- Tested on a real iPhone at 375px and a real Android phone, not just dev tools
- All CTAs reachable in one thumb-tap from any scroll position
- Zero horizontal scroll on any page
- All touch targets ≥ 44px
- Forms fire native keyboards correctly (numeric for ZIP/phone)
CHAPTER 04
Trust Signals & Social Proof
Trust isn't earned over time on a website. It's front-loaded in the first 2 seconds. The visitor decides "this is legit" before scrolling.
Front-loaded credibility anchors
Within the first viewport on mobile, the visitor should see at least 4 of these:
- ★ Star rating with review count (concrete: "5.0 · 18 reviews")
- Years in business ("Since 2002")
- License / credentials number (CSLB, contractor #, NAR member, etc.)
- "Family-run" / "Local" / "Veteran-owned" identity signal
- Service area / city named
- Response promise ("Free quote in 1 hour")
Six types of social proof, in order of impact
- Identity-aligned reviews — neighborhood-named ("Janet R., Land Park · Yelp"). 3× more persuasive than generic praise.
- Numbered aggregate — "40+ reviews," "200+ clients" — concrete, falsifiable.
- Star ratings with platform attribution — "5.0 on Yelp," "4.9 on Google." Platforms add credibility.
- Logos / badges — BBB, CSLB, manufacturer certifications, "As seen in." Visual shorthand for legitimacy.
- Case studies / before-and-after — high effort, high payoff. Photos of YOUR work doing YOUR thing.
- Generic celebrity / authority quotes — least effective. Skip unless the source genuinely matters.
Always specific over generic. Always named over anonymous. Always platform-attributed over freestanding.
Did we do this?
- 4+ trust anchors visible in the first mobile viewport
- 3 reviews surfaced on the home page minimum, with names + neighborhoods + platforms
- Total review count cited (concrete number, not "many" or "lots")
- Star ratings tied to platform names (Yelp, Google, Nextdoor)
CHAPTER 05
Copy & CTA Design
The headline does 80% of the work. The CTA does the rest. Everything in between is supporting infrastructure.
Three battle-tested copy frameworks
AIDA — Attention, Interest, Desire, Action. Classic for landing pages. Headline grabs attention → benefits build interest → social proof builds desire → CTA closes.
PAS — Problem, Agitate, Solve. Strong for service businesses. State the problem the visitor has → make them feel it → show how you solve it.
Before-After-Bridge (BAB) — Where they are now → where they could be → how you bridge the gap. Highly effective for transformations (renovation, fitness, finance).
Headline rules
- Specific beats clever. "Painting Sacramento homes since 2002" beats "Quality You Can Count On."
- Outcome beats feature. "Save 5 hours a week" beats "Custom workflow automation."
- Short beats long. 6-9 words on mobile. The eye scans, doesn't read.
- Local beats abstract. Name the city. Name the neighborhood if possible.
CTA design rules
- Action verb first. "Get a Free Quote" beats "Free Quote." "Book Your Spot" beats "Booking Available."
- Color contrast. CTA color appears nowhere else on the page (no other element competes for attention).
- Specific over vague. "Quote in under 1 hour" beats "Contact us."
- Reduce risk. Add micro-copy: "Free · No obligation · 1-hour response." Each phrase removes a hesitation.
- Big enough to tap. ≥ 48px tall. Full-width on mobile.
- 3 CTA placements minimum: hero, mid-page, sticky bar. Visitor doesn't scroll back up.
Specific beats clever. Outcome beats feature. Short beats long. Local beats abstract.
Did we do this?
- Headline names a city, includes specifics, ≤ 9 words
- Sub-headline answers "what do they do?" in one sentence
- Primary CTA is action-verb-first and color-distinct
- Each CTA appears at least 3 times on the page
- Risk-reducer micro-copy under each major CTA
CHAPTER 07
Pricing Psychology
When to show pricing — and when to hide it — is one of the highest-leverage decisions on the site. Default to revealing.
Show pricing when…
- The vertical typically hides it (competitors all say "Contact us"). Showing creates contrast.
- The price range is broad but predictable ($X–$Y per square foot, $X–$Y per visit).
- Projects are commoditized enough that visitors will Google around regardless.
- You want to disqualify low-budget visitors before they call.
Hide pricing when…
- Every project is bespoke and the range would be misleading ($1K–$200K).
- The conversation IS the value (consulting, advisory).
- You can't honor the lowest number you'd publish (legal liability).
Display patterns that work
- Range-and-anchor — "Most projects $4,500–$7,500" with one specific anchor: "Typical 1,800 sq ft single-story: $5,800."
- Three tiers — Starter / Growth / Operator. Visitors anchor to the middle. Set the middle as the most-likely sale.
- Comparison columns — Plan A vs Plan B. Frame as a choice, not a yes/no.
- "Starting at" — only when the floor is genuine and the high end won't shock.
Anchoring in the wild
The first price the visitor sees becomes the reference point for every subsequent price. If you show $15,000 first, $5,000 feels cheap. If you show $500 first, $5,000 feels expensive. Order matters.
Did we do this?
- Made a deliberate show-or-hide decision (not by accident)
- If shown: range + anchor, or 3-tier comparison
- Prices appear in a deliberate order (anchor strategy)
- FAQ explains "why prices vary" — heads off objections
CHAPTER 08
Consumer Psychology Toolkit
A short reference of the named principles we apply on every site. Each one is a small lever — used together, they compound.
Decision & behavior
- Hick's Law — Decision time grows with the number of choices. Fewer visible CTAs = faster decisions.
- Fitts's Law — Time to acquire a target depends on size and distance. Bigger, closer buttons get tapped faster.
- Progressive disclosure — Reveal information in steps, not all at once. Reduces overwhelm.
- Sunk-cost commitment — Once a visitor has invested 3 small "yes" decisions (radio buttons), they're psychologically biased to finish.
- Decision fatigue — Every choice depletes willpower. Reserve choices for moments that matter.
Persuasion (Cialdini's six)
- Reciprocation — Free advice, free consult, free audit. Creates a debt the visitor wants to repay.
- Commitment / consistency — Small "yes" → bigger yes. Foot-in-the-door.
- Social proof — Reviews, ratings, "people like you chose this."
- Authority — Credentials, certifications, years in business, named expertise.
- Liking — Same identity (local, family-run, similar background as visitor).
- Scarcity — "Only 2 booking slots in May." Use sparingly; overuse breaks trust.
Cognitive biases that shape conversion
- Anchoring — First price seen sets the scale.
- Loss aversion — "Don't miss out" beats "gain X." Roughly 2× pull.
- Endowment effect — Once a visitor uploads a photo or fills the form, they psychologically "own" the lead.
- Identity alignment — Reviews from people the visitor identifies with (same neighborhood, same demographic) outperform generic reviews 3:1.
- Specificity bias — Concrete numbers feel more truthful than vague claims. "5,847 customers" beats "thousands of customers."
Trust microcopy
Tiny phrases that close hesitation gaps. Place under or near every major CTA:
- "Free · No obligation · No upselling"
- "Quote in under 1 hour"
- "30-day satisfaction guarantee"
- "We never share your info"
- "Cancel anytime"
- "Pay only if it works"
CHAPTER 09
SEO & Schema Fundamentals
Most small business sites have at least 3 broken SEO basics. Fix the basics and you outrank competitors who paid an "SEO agency" thousands.
The non-negotiable SEO checklist
<title> tag on every page — unique, includes city + service, under 60 chars.
<meta name="description"> — 140–160 chars, includes keyword + value prop. This is the search-result snippet.
- Open Graph tags —
og:title, og:description, og:image, og:url. Required for proper iMessage / Facebook / Slack share previews.
- Twitter Card tags —
twitter:card, twitter:title, twitter:image. Same idea, different platform.
<link rel="canonical"> on every page — tells Google which URL is the master version.
- One H1 per page — the page's primary topic.
- Logical heading hierarchy — H2s under H1, H3s under H2s. Don't skip levels.
- Image alt text — descriptive, keyword-aware, not stuffed.
- Sitemap.xml — lists every page you want indexed. Submit to Google Search Console.
- robots.txt — allow what you want indexed, disallow what you don't (admin, staging, escrow).
Schema.org structured data — the unfair advantage
JSON-LD blocks tell Google explicitly what your business is, where it operates, what it costs, who endorses it. Result: rich snippets in search results (stars, hours, phone, prices) that get measurably higher click-through rates than plain blue links.
Pick the schema type matching the vertical:
- LocalBusiness — base type. Almost everything inherits from this.
- Painter, Plumber, Electrician, Roofer — specific home-services types.
- Restaurant, FoodEstablishment — food service.
- Dentist, MedicalBusiness — healthcare.
- Product — e-commerce items.
- Service — for service offerings within a business.
- FAQPage — for FAQ sections (gets "People Also Ask" placement).
Always include: name, image, telephone, address, areaServed, aggregateRating (if available), priceRange, openingHours.
Common SEO mistakes that kill ranking
- Same title tag on every page (only the homepage ranks).
- Title tag mentions only one city (every other city is invisible to search).
- One consolidated services page (no targeting for individual services).
- Zombie template pages indexed (e.g.
under_construction.html, main.html).
- Canonical URLs all point to the homepage (de-indexes every interior page).
- Mixed case in URLs (
/Services.html vs /services.html = 2 pages competing).
Did we do this?
- Unique title + meta description per page
- OG + Twitter card tags filled with real values + image
- Canonical tag on every page
- JSON-LD Schema matching the vertical
- Sitemap submitted to Google Search Console
- robots.txt explicitly disallows /admin, /staging, /escrow
CHAPTER 10
Local SEO & Per-City Pages
For local businesses, ranking #1 in Sacramento doesn't help you in Roseville. Each city is a different battle. The architecture has to match.
The Google Business Profile (GBP)
The single highest-leverage piece of local SEO is a fully filled GBP. It powers the map pack — the three results above the regular search results — and accounts for 40–60% of local clicks.
- Claim and verify the listing.
- NAP consistency — Name, Address, Phone identical on the site, GBP, Yelp, BBB, Nextdoor, Facebook. Even punctuation differences hurt.
- Categories — primary + secondary. Pick the most specific available.
- Service areas — list every city you'll travel to.
- Photos — 10–20 minimum. Real photos of work, team, vehicles, location.
- Hours — accurate, including holiday adjustments.
- Q&A — pre-populate with common questions. Don't let competitors plant misleading ones.
- Posts — a weekly post (offers, updates, project photos) signals "this business is active."
- Reviews — ask for them after every job. Respond to every review (positive and negative).
Per-city × per-service landing pages
For a contractor serving Sacramento, Fair Oaks, Roseville, Folsom, Citrus Heights, Carmichael (6 cities) with 5 services (Interior, Exterior, Cabinets, Decks, Commercial), the site should have:
- 1 home page
- 1 services overview page
- 5 per-service pages
- 6 per-city pages
- 30 per-service × per-city pages (the SEO engine)
Each per-service-per-city page has:
- Title tag: "[Service] in [City], [State] · [Brand]"
- City-specific neighborhoods named (12+ chips on the page)
- City-attributed reviews (3 with neighborhood names)
- City-specific FAQ (one question with the city name in it)
- Schema.org with addressLocality + areaServed
- Internal links to the other cities (footer or breadcrumb)
Citations & directories
Get listed in: Yelp, BBB, Yellow Pages, Nextdoor, BuildZoom (for contractors), Houzz, Angi, vertical-specific directories. Each consistent NAP citation feeds Google's confidence in the business's existence and location.
Did we do this?
- GBP claimed, verified, fully filled
- NAP identical across site, GBP, Yelp, BBB
- One landing page per service × per city for SEO targeting
- Each city page has neighborhoods + reviews + FAQ specific to that city
- Listed in at least 5 directories beyond GBP
CHAPTER 12
Analytics & A/B Testing
If you don't measure it, you're guessing. Set up the basics on day one — you can't retroactively learn what visitors did before tracking was on.
The day-one analytics stack
- Google Analytics 4 (GA4) — free, baseline traffic + behavior. Set up conversion events for every CTA (call clicks, form submits, photo uploads).
- Google Search Console — free, shows which queries surface the site, click-through rates, indexing issues, mobile usability.
- Microsoft Clarity — free, session recordings + heatmaps. Watch real visitors interact. Faster than guessing.
- Plausible / Fathom — paid alternatives if privacy-conscious or EU clients. No cookie banner needed.
Conversion events to track
- Phone CTA tap (
tel: link click)
- Email CTA tap (
mailto: link click)
- Quote form started (first field focus)
- Quote form submitted
- Photo uploaded in form
- Page scroll depth (50%, 90%)
- External link click (Yelp / Google reviews / GBP)
A/B testing — when to bother
Most small business sites don't have enough monthly traffic to A/B test rigorously. Rule of thumb: need at least 1,000 monthly visitors for a meaningful test in under 30 days. Below that, test sequentially (change A, observe 30 days, change B, observe 30 days).
What's worth testing first:
- Hero headline (highest leverage)
- Primary CTA copy ("Get a Quote" vs "Free Quote in 1 Hour")
- CTA color (sometimes shocking results)
- Form length (3-field vs 5-field qualifying)
- Pricing display (show vs hide)
What's not worth testing: minor visual tweaks, button shadows, font weights. These move conversion fractionally and need huge samples to prove.
The CRO loop
- Form a hypothesis from data (heatmap shows people miss the CTA).
- Make ONE change.
- Measure for ≥ 30 days.
- Decide: keep, revert, or iterate.
- Document the result.
Most "CRO experts" violate step 4 (multiple changes at once) and step 5 (no documentation). Don't.
Did we do this?
- GA4 + Search Console + Clarity installed
- Conversion events configured for every meaningful CTA
- Search Console verified, sitemap submitted
- Tracking documented in a 1-pager so the client can run it solo
CHAPTER 13
The Master Checklist
The single page we run through before any client mockup ships. If anything's unchecked, it's either done before launch or flagged on the Navi Notes page as something the client must unblock.
The Pre-Ship Gate
- Audit complete — 9 categories, concrete findings, scope translates from findings
- Color palette + type pairing chosen and applied consistently
- Mobile-first CSS — tested on a real iPhone at 375px and Android phone
- Sticky bottom click-to-call bar on mobile
- All touch targets ≥ 44 × 44 pixels
- Zero horizontal scroll on every page
- Trust bar with 4+ credibility anchors above the fold
- 3+ reviews on the home page, named + neighborhoods + platforms
- Hero headline ≤ 9 words, names city, specific outcome
- Primary CTA action-verb-first, color-distinct, repeats 3+ times
- Risk-reducer microcopy under each major CTA
- Qualifying quote form with progress indicator + photo upload
- "Or call now" alternative after submit
- Native keyboards trigger correctly on mobile inputs
- Pricing decision made deliberately (show or hide)
- Title tag unique per page, includes city + service
- Meta description 140–160 chars, includes value prop
- OG + Twitter card tags filled with real image
- Canonical tag on every page
- Schema.org JSON-LD matching the vertical
- One H1 per page, logical heading hierarchy
- Image alt text on every image
- Sitemap.xml + robots.txt
- Per-service × per-city pages if local SEO is the play
- GBP claimed + verified + filled
- NAP identical across site, GBP, Yelp, BBB
- LCP < 2.5s, INP < 200ms, CLS < 0.1 on mobile
- WCAG AA color contrast verified
- Keyboard navigation reaches every interactive element
- Form fields have associated labels
- HTTPS + HSTS active
- GA4 + Search Console + Clarity installed
- Conversion events configured
- Privacy policy + cookie footer if applicable
- Navi Notes page with design rationale + client-blocked items only
- Hamburger menu wired across all pages
- Mockup banner visible until the site goes live
37 boxes. We don't ship until they're all checked or transparently flagged.
ADDENDA
Vertical Addenda
The 13 chapters above apply to every site we ship. Each vertical also has its own quirks — what the visitor's actually trying to do, which trust signals matter, which schema type to use. Three to start: musicians, practitioners, restaurants. We'll add more as we build more.
A · Musician EPK
Defining outcome: A booker, journalist, fan, or label rep can hear the music, see upcoming dates, and email the artist within 30 seconds. Everything else is decoration.
Hero pattern: Artist name as the H1, one-line tagline (genre + city), and 3–5 platform-link buttons (Spotify · Apple Music · YouTube · Instagram · Bandcamp). No carousel, no video autoplay, no parallax. Bookers scan on mobile between meetings — give them what they need above the fold.
Section order that converts: Listen first (embeds), then bio, then upcoming dates, then gallery, then contact. Bio is for the curious, not the gatekeeper. The booker wants the music and the email.
Trust signals specific to musicians:
- Verified Spotify / Apple Music artist URLs (the link itself is proof of legitimacy)
- Press quotes with publication name, even small ones (Sac News & Review, local NPR affiliates)
- Notable past venue names ("Played: Old Ironsides, Crest Theatre, Harlow's")
- Festival appearances or opening slots, if any
- Photos at named venues (visual proof of the past venue list)
Schema.org type: MusicGroup (band / solo artist) with track, album, and event nested for upcoming shows. Adding sameAs arrays of Spotify/Apple/YouTube URLs cross-validates the artist for Google Knowledge Panel.
Gigs as structured data: Every upcoming show is an Event with location (Place), startDate, offers (ticket URL + price). Google surfaces these directly in search results.
Bandcamp / Spotify / Apple embeds: Always lazy-load (loading="lazy"). One Bandcamp embed alone can add 800ms to LCP if it loads above the fold. Hold them below the fold or behind a "Load player" click.
Newsletter / mailing list: Single email field, no name or "interests" checkboxes. Mailchimp / Buttondown / ConvertKit. Frame the value: "Get a heads-up when I drop a new song or play your town" beats "Subscribe to my newsletter."
Common gotchas:
- Hardcoded "next show" copy that goes stale within a week. Always use a structured gig list with display dates so future-Alex doesn't have to remember.
- Soundcloud embeds eating LCP. Prefer Spotify or Apple Music — faster, more brand-trusted.
- Press kit as a downloadable PDF that's two years out of date. Rebuild it as a `/press/` page on the site instead.
Did we do this?
- Music embeds before bio
- Upcoming dates as structured list with venue, city, ticket link
MusicGroup schema with sameAs across all platforms
Event schema for each upcoming show
- Booking email is mailto link with subject pre-filled (
?subject=Booking%20inquiry)
- Newsletter signup, single field, value-framed
- OG image is a real press shot, not the site logo
- Lazy-loaded embeds, never autoplay
B · Practitioner / Wellness (Chiropractor · PT · Therapist · Acupuncture · Massage)
Defining outcome: A pain-or-anxiety-driven visitor — already deciding "do I make an appointment today?" — finds the booking link, sees that the practitioner takes their insurance, and clicks book within 60 seconds.
Hero pattern: Practitioner name + credentials (DC, DPT, LAc, LMT), a single sentence outcome ("Get out of pain in fewer visits than you think"), one trust micro-line ("Insurance accepted · Same-week appointments · Sacramento"), and a primary CTA: Book now (or Call now as the secondary).
Booking is the whole game. Embed Calendly / Square Appointments / Jane / SimplePractice directly. If the booking system needs an account or a 6-step intake, lead with a "Call to book" button as primary and the embedded scheduler as secondary.
Trust signals specific to practitioners:
- License number + state ("DC #12345, California Board of Chiropractic Examiners")
- Years in practice + "trained at [school]" credential
- Insurance logos accepted (Aetna, Blue Shield, Kaiser PPO, Cash) — with a clear "we'll verify your benefits" line for nervous visitors
- Google Business Profile reviews surfaced with patient name + neighborhood
- "As featured in" if local press has covered them
- Before-and-after for visible verticals (PT range-of-motion, posture, scar work) — gated behind a click and with patient consent
Schema.org type: MedicalBusiness (or specific subtype: Chiropractic, PhysicalTherapy) with medicalSpecialty, availableService, acceptedPaymentMethod = `["Insurance", "Cash"]`, and openingHoursSpecification.
Service pages do the SEO work: Per condition, not per modality. "Low back pain treatment in Sacramento" outranks "Chiropractic services." Visitors search the symptom, not the technique.
Compliance is real here. No specific outcome claims ("cures sciatica" → don't). No before-photos without a HIPAA-compliant consent form on file. Privacy policy must explicitly cover health information. If you collect intake forms on the site, encrypt in transit (HTTPS) AND at rest, and confirm the form host is HIPAA-covered (most basic Google Forms / Typeform setups are not by default).
Common gotchas:
- "Schedule online" CTA that opens a booking system requiring a 12-field intake before showing availability. Front-load: show availability first, collect after.
- Stock photos of generic spines / acupuncture needles. Replace with photos of the actual practice space within 30 days of launch.
- Listing every modality in the hero ("Chiropractic, Acupuncture, Cupping, Dry Needling, Sports Therapy"). Pick one outcome the visitor cares about — pain — and lead with it.
Did we do this?
- License # + state visible on home + about pages
- Insurance logos in trust bar with "we'll verify" reassurance
- Booking embed or "Call now" within first viewport on mobile
MedicalBusiness (or vertical-specific) schema
- Per-condition service pages, not per-modality (one for "low back pain," one for "neck pain," etc.)
- Privacy policy covers PHI explicitly; intake forms HIPAA-aware
- No specific outcome claims; testimonials say "I felt better," not "she cured my X"
- Real practice-space photos within 30 days post-launch
C · Restaurant & Bar
Defining outcome: A hungry visitor — deciding right now where to eat tonight — sees today's hours, the menu, the location on a map, and the reservation link without scrolling. If reservation isn't available, they tap the phone number to call.
Hero pattern: Restaurant name, one-line concept ("Wood-fired pizza & natural wine — Land Park, Sacramento"), today's hours surfaced live ("Open today: 5–10pm"), reservation CTA, and a tap-to-call number. No video. No parallax. No "Welcome to our website."
The menu is critical and notoriously broken. Never a PDF. Never an image. Always HTML, indexable, mobile-readable, and updatable without a developer. If the kitchen changes the menu daily, build a menu.json that the kitchen edits via a tiny admin (or even a Google Sheet → JSON pipeline) and the page renders.
Trust signals specific to restaurants:
- Star rating + review count from Google + Yelp + Tripadvisor (whichever has the highest, lead with it; surface the others below)
- "Since 1998" or "Family-run since 2010" — restaurants live and die on age
- Press quotes with publication ("Best new pizza in Sac" — Sacramento Bee)
- Award badges (Michelin Bib Gourmand, James Beard semifinalist, "Top 100 in Yelp")
- Photos of food (the actual food they serve, taken in the actual restaurant)
- Photos of the room (so visitors can self-select fit: date night vs. family vs. business lunch)
Schema.org type: Restaurant (or BarOrPub) with servesCuisine, priceRange, menu URL, acceptsReservations, openingHoursSpecification for every day, geo coordinates, and aggregateRating if you have it. Google Maps surfaces this directly.
Reservations + ordering integrations: OpenTable / Resy / Tock for reservations; Toast / Square / Clover for online ordering; DoorDash / Uber Eats / Caviar for delivery. Don't link them buried in a nav — surface as primary CTAs in the hero (Reserve a table) and an obvious section (Order online).
Live hours: Render today's open/close from openingHoursSpecification with a real-time "open / closed / closes in 30 min" indicator. Hard-coded "Mon–Fri 5–10pm" copy goes stale, breaks during holidays, and erodes trust on the most important moment — when someone's deciding tonight.
Photos do 70% of the conversion. The single highest-impact thing on a restaurant site is great food photography. If the budget is $500 and choices are "fancy site with stock photos" or "simple site with one professional photo shoot," choose the photo shoot.
Common gotchas:
- Menu as PDF. Visitor on mobile won't pinch-zoom. Bounce.
- Hours as static text that don't reflect today's actual schedule.
- Stock photos of unrelated food.
- "Welcome to [restaurant name], where we serve great food in a warm atmosphere" — every visitor closes the tab. Lead with the dish, not the platitudes.
- No phone number above the fold. People still call restaurants — especially Mom on Mother's Day.
Did we do this?
- Today's hours rendered live from structured data, with open/closed/closes-soon state
- Phone number tappable in mobile header
- Reservation CTA (or "Walk-ins only" honest signal) in hero
- Menu as HTML, not PDF, mobile-readable, indexable
Restaurant schema with full openingHoursSpecification, menu, geo, aggregateRating
- Photos of actual food, in actual room, professionally shot or replaced within 30 days
- Review count + rating from at least two platforms surfaced
- Online ordering link, if applicable, in hero or nav
- Holiday hours updated for the next 4 quarters' worth of major dates
More verticals get added the moment we ship for them. Currently shipping for: tree care (May), chiropractic (May), winery (live).
Want all of this, applied to your business?
We do this work for local Sacramento businesses — websites, automation, AI tools. Most projects ship in under a week. Free 10-minute audit before you spend anything.
Reading this and thinking "I can do all this myself"? Good — that's the deal. Take it. Run it. The work is the moat, not the knowledge.
Navi Works LLC · Sacramento, CA · Computers, apps, networks, websites — if it turns on and off, we can make it or fix it.