← Back to studioCase study · 2026

Nancy Tours Costa Rica. .

Nancy has guided Costa Rica since 2010 with a simple model: she proposes a tour + tentative date, it runs when enough people sign up. Her previous site said "Book now" as if these were fixed events — they weren't. We rebuilt the site around her real model and shipped an admin that a 62-year-old can use from her phone.

Cerro Chirripó summit at dawn — one of Nancy's guided tours
The project

A solo-guide operator. A site built for her.

Client
Nancy Tours Costa Rica
Industry
Guided tours · Costa Rica (7 provinces)
Year
2026
Scope
Pivot to marketplace + non-tech admin + email infra + SEO + A11y
Hero weight
0%
Lighthouse mobile
0/100/100
Cron + inboxes
0 cron · 2 inboxes
Execution time
0 days

⚠ Technical metrics are real from launch. Lead/booking metrics fill in after the first month of use.

The problem

The old site said "Book now". That wasn't true.

  • 01Nancy works on a "I propose, I confirm if enough show up" model — tours materialize when interest crosses a threshold. The previous site used "Book now" as if these were fixed events, leading to frustration when clients discovered the date was tentative.
  • 02Nancy is 62, runs a 2015 laptop, has near-zero tech literacy. Any off-the-shelf admin (WordPress, Wix, etc.) would have trapped her — we needed something designed specifically for her.
  • 03No Search Console, no schema, no pretty previews when sharing a tour link in WhatsApp. The entire catalog shared the same og:image (a generic logo), so when someone forwarded a tour, none of the real experience came through.
  • 04Zero lead infrastructure: when someone actually expressed interest, there was no structured way to capture it, no way to see how many more were needed to confirm a tour, and no way to remind Nancy who she still hadn't contacted.
Where Nancy guides

Costa Rica. All 7 provinces.

Cumbre del Cerro Chirripó
Chirripó · 3 820 m
Lagos del Chirripó
Lagos glaciares
Cavernas guiadas
Cavernas de Venado
Puente en la neblina
Bosque nuboso
Sendero de selva
Senderos primarios
Grupo en Tortuguero
Canales de Tortuguero
Recorrido en bote
Tour fluvial
Señalética del PN Chirripó
Parque Nacional
The approach

4 decisions that respect Nancy.

01

Interest marketplace, not catalog

Swapped "Book now" for "I'm interested" on every tour. Each outing has a minimum and maximum group size; the site shows a public progress bar ("4 of 6 confirmed") without exposing names. When the threshold is reached, Nancy clicks "✓ Confirm tour" and the public sees the firm date and a "Book" button. Like Kickstarter, but for tours.

02

Admin designed for Nancy specifically

18px body, 56-64px tap targets, plain Spanish labels ("How many people minimum to confirm" not "threshold"), preset pickers instead of free-form fields, branded prompts instead of native browser dialogs. 7-day session TTL + 2-hour idle lock — log in once a week without re-auth, but a forgotten open laptop stays protected.

03

Per-tour SSR for social previews + SEO

Every tour has its own og:title, og:image, og:description and Twitter card via Vercel Serverless Functions that hydrate the HTML before serving it. Schema.org TouristTrip + FAQPage + BreadcrumbList per tour. When Nancy shares a tour in WhatsApp, the real hero shows — not a generic logo.

04

Vanilla stack, zero lock-in

HTML + CSS + JS with no build step. Vercel Functions for SSR + Supabase for data + Resend for email + ImprovMX for inbound. Any developer who can edit an HTML file can maintain it. No framework, no webpack, no risk of "the engine this was built on no longer exists".

Delivered

9 pieces in production.

Vanilla HTML/CSS/JSSupabaseVercel FunctionsResendImprovMXSchema.orgWCAG AA
  • Public marketplace with dynamic, state-aware cards (Seeking · Confirmed · Postponed · Completed) and an interest modal with focus trap + accessible progress bars
  • Admin console at /admin with login + tour editor with preset pickers + leads view with WhatsApp deep-links + settings + lists — designed and tested for a 62-year-old user
  • Daily summary email at 7am CR via Postgres pg_cron + pg_net.http_post → Resend — Nancy receives each morning which tours are ready to confirm and which leads she hasn't contacted
  • Per-tour SSR of og:title + og:image + og:description + Twitter card via Vercel Serverless Functions — pretty previews when sharing any tour in WhatsApp / Facebook / Slack
  • Per-tour gallery + fullscreen lightbox (ESC, arrow keys, swipe, neighbor preload, focus trap) + share button with native navigator.share() + fallback to WhatsApp / Facebook / X / Copy
  • Site-wide mobile pass (375-414px breakpoints) — hero h1 36→32px, horizontal-scrolling filter chips, 44×44 lightbox controls, WhatsApp FAB with reserved bottom padding
  • A11y WCAG AA: interest modal with focus-trap + focus restore + role=alert errors, progress bars with aria-value, 44×44 tap targets, lightbox with keyboard nav
  • Custom domain (nancytourscr.com) + complete email infra: Resend for outbound (DKIM/SPF/DMARC verified) + ImprovMX catch-all for inbound (hola@, info@, everything routes to Nancy's inbox)
  • Google Business Profile setup + per-tour Schema.org + dynamic sitemap generated by a Serverless Function pulling from Supabase — ready for Search Console submission
Testimonial
[TODO: 1-2 lines from Nancy after the first month — ideally with a concrete stat like "the first month already had 8 people interested in Chirripó".]
[TODO: Nancy Corea Avendaño] · Nancy Tours Costa Rica

Does your operation need the ?

If you run a business where the public site lies about how you actually work (variable prices, tentative dates, minimum group sizes, last-minute decisions), we'll audit it free in 48h and show you how the site can tell the truth without losing conversions.