Case: benidorm.co.uk
Checked 25 Oct 2026, Dubai time (UTC+4). [V] I checked it this run. [R] from a team document. [U] unverified. Project locations are in PROJECTS.md.
Level 1: For someone who does not work with data
What it is. A website for people from the UK planning a holiday in Benidorm, Spain. It has 752 pages: hotels, bars, restaurants, shows, flights, weather, what a holiday really costs. [V]
Why it is different. Most Benidorm pages are brochures. This one answers practical questions with checked numbers, each with the date it was checked. Examples from its own data: August hotel rates averaged €175 a night against €78 in January 2026; a Benidorm Palace show costs about €40, with dinner €60–110; there is no tourist tax. [R, data feeds]
What "data layer" means here. Seven data feeds hold the facts (prices, weather, flights, buses, events). The pages are built from the feeds by a script. If a price changes, the feed changes and the page is rebuilt. Nobody edits a page by hand.
An assistant too. "Brenda" is a planner that works out a holiday from the same data. AI assistants can also ask the site directly through a connection called MCP. It answered a test call live. [V]
Who it is for. It is a test with Fintan O'Rourke of Visit Travel Group. The idea: a UK-style .co.uk site with clean data and good AI visibility can earn affiliate bookings. The plan in the project notes is a revenue share and a three-month comparison against fresh control sites. [R]
First results. From 13 to 24 Oct, Google Search Console shows 70 clicks and 6,421 impressions. Between 20 Sep and 25 Oct, ChatGPT sent 101 visits and Google search 84. [V] That is early and small. It shows the pages are found and quoted within days.
What is missing. A before-launch baseline, and the control sites for the comparison (not registered per the 14 Oct notes [R]).
Level 2: For a businessman
The model. Publish useful, dated, comparable prices for a destination that UK holidaymakers search for. Earn commission when readers book hotels, tickets and tours through partners.
The partner. Partner: Fintan O'Rourke, Visit Travel Group / CostelloGlobalTechnology.com. A 3-month A/B test is planned; I did not re-verify the revenue-share terms here [U, parent brief]. [R: CLAUDE.md]
The market. The 14 Oct research (DataForSEO, UK, 20 queries; USD 0.08 per run [R]): about 45,900 UK searches a month for the exact name benidorm.co.uk, the highest of the .co.uk geography names examined. Page-one owners were Facebook, TripAdvisor, TUI, YouTube and Tiqets, with 15 independents. AI Overviews appeared on 12 of 20 queries. The plan avoids head terms like "benidorm holidays" and goes after the long tail: excursions, boat trips, shows, airport transfers, November, families, safety, old town. [R]
What exists now.
| Item | Value |
|---|---|
| Pages | 752 (bars 269, hotels 119, restaurants 111, ask-brenda 37, holiday 37, flights 28, cafes 20, weather 15, holiday-costs 13) [V] |
| Typical page | median 1,878 words in a 60-page random sample; all 60 indexable, canonical, dated [V] |
| Assistant interface | MCP server at /mcp/ with 9 read-only tools [V] |
| Machine files | llms.txt 221 KB; llms-full.txt 4.9 MB [V] |
| Traffic | 70 clicks, 6,421 impressions (13–24 Oct); GA4 20 Sep–25 Oct: direct 144, ChatGPT 101, Google organic 84 [V] |
| Tracking | GA4 added 15 Oct [R] |
What it costs. Mostly agent time and data fetches. The SERP research cost USD 0.16 in total [R]. I did not find a cost ledger for the whole site [U].
Business risks.
| Risk | Detail |
|---|---|
| No control group | The 3-month A/B needs other domains; not registered as of 14–17 Oct [R]. Without it, the test proves nothing about lift. |
| Affiliate tracking | A 25 Oct check of /excursions/, /boat-trips/, /things-to-do/ and /theme-parks/ found GetYourGuide links carry a partner_id; one generic city link per page does not [V]. An earlier note of "13 links without a partner id" did not reproduce [U]. Whether bookings are being credited is not checked. |
| Template risk | 499 of 752 pages (66%) are venue listings. They read substantively in the sample, but Google can treat repeated templates as scaled content. [V] |
| Small traffic | 70 clicks. The signal is real but small. |
| Rights on partner and listing data | Terms of the price sources not reviewed here. Notes say a Google Places scrape was flagged earlier [R]. |
What to decide. Fund the control domains and confirm affiliate crediting first. Everything else is already built.
Score today: 6.6 out of 10 (20-scorecard.md).
Level 3: For an engineer
Architecture
Pieces [R unless marked]
- Build.
scripts/build_all.pywithMANIFEST.txt(98 lines, about 55 steps): derive → pages → inject → skin → schema → llms → index. Rule: "HTML is output, never edit by hand." - Determinism. freezegun clock.
build_stamp.jsonclock 2026-10-23T18:59 Dubai time [V]. Same inputs, same pages. - As-of dates.
scripts/asof.pytakes "data captured" from git history, never from the build date. - Fetch scripts write to
data/; the build never fetches. - Schema.
inject_schema.pybuilds a graph. Rule: no Review or AggregateRating. [R] Live check: the only "Rating" in sampled pages is HotelstarRating(e.g. Barceló Benidorm Beach "4"). [V] - Machine surfaces.
llms.txt221 KB,llms-full.txt4.9 MB, sitemap 752 URLs,robots.txtallows all except?q=and?to=. [V] - MCP.
https://benidorm.co.uk/mcp/answers JSON-RPCtools/list. Livetools/listreturns nine tools:plan_holiday,find_hotels,ask_brenda,search,fetch,get_transfer_options,get_boat_trips,get_bus_times,get_events. All are marked read-only. [V] (CLAUDE.md names three; my earlier count of eight was wrong.) - Publish. Only from GitHub
mainthrough Vercel. Projectbenidorm-co-uk; last production deploydpl_FGxXiC132FhMCavx2T1SfmSMwSvg, 25 Oct 13:10 Dubai time. [V] - Repo.
anthonybooth71-code/fintan-travel, 1,351 commits, working tree on Studio branchwt/studio. [V] - EEAT.
data/eeat/sources.mdregister. [R] The research notes warn against copying Google Places review text after an earlier scrape was flagged. [R]
Live sample [V, 25 Oct]
| Check | Result |
|---|---|
| 60 random sitemap URLs | 0 noindex; 60 canonical; 60 with a checked or updated date [V] |
| Words | median 1,878 [V] |
| Sitemap lastmod | 588 of 752 on 24 Oct, 68 on 20 Oct, 50 on 23 Oct, 43 on 22 Oct, 3 on 21 Oct [V] |
Gaps
- CI file not found. The build script and
CLAUDE.mdsaybuild-check.ymlrebuilds and fails ifsites/differs..github/workflowsdoes not exist in the Studio working tree on branchwt/studio. It may live onmain[U]. - No number lint equivalent that I found. Dates and canonicals are present; numbers are not traced to fact IDs on the page [U].
- lastmod semantics. 78% of URLs moved on one day. Confirm lastmod follows data change, not rebuild time.
- A/B control domains not registered (14–17 Oct notes).
- Affiliate tracking. Not shown to be broken (see Level 2). Confirm in the partner dashboard that clicks and bookings are credited [U].
- Coverage. Not assessed beyond the live sample [U].
- Venue-page template share: 66% of URLs.
- Baseline. GA4 tag added 15 Oct [R]; the GSC series starts 13 Oct. No pre-launch baseline.
What to copy from this build
Frozen-clock deterministic build; git-derived as-of dates; one source register with a checked date per figure; HTML as pure output; main-only publishing; MCP for answer engines; a rule against review markup.
Traffic [V, Supermetrics read-only]
GSC (sc-domain), 13–24 Oct: 70 clicks, 6,421 impressions. GA4, 20 Sep–25 Oct: direct 144, chatgpt.com 101, Google organic 84. First ChatGPT session 19 Oct; first Google organic 17 Oct. [V]
Caution: direct traffic may include our own tests; GA4 internal-traffic filtering is unconfirmed [U].
Against outside cases (../research/cases.md)
- Nearest documented analogues are Tripadvisor and Booking tails (96.7% and 94.8% of pages at 100 visits a month or less, Ahrefs estimates) and Nomad List. No clean destination-data case was found.
- The 66% venue-listing share is the part most like those tails. Build fewer, better pages; watch which listing pages earn clicks in Search Console.
- Ken Lin's 160 geo sites (project notes, his X posts) report 1–2 bookings a day across all sites and four-figure first-year revenue. Self-reported. Set expectations to that scale, not to ChatGPT visit counts.
- Official guidance:
../research/best-practice.md.