← playbookhome →

Chapter 02

One template.
400 pages.

bord doesn't write sites. bord runs a factory. One Next.js template, programmatic page generation, AI writes the copy, agents deploy. Day one to live in under 24 hours.

The stack

Next.jsNext.js
ReactReact
TailwindTailwind
VercelVercel
CloudflareCloudflare
GeminiGemini
MailgunMailgun
GA4GA4
plombiersgeneve.ch — the bord reference template
plombiersgeneve.ch — the reference Swiss template, replicated 116 times
01

The template

Every site is a Next.js 15 + React 19 + Tailwind v3 monorepo entry under sites/<domain>. The reference template is plombiersgeneve.ch — Swiss quality, real interactive map, 8–12 brand partner logos, phone-first CTA, trust badges, payment icons in footer. Black, white, neutral grays. No blue, no purple unless brand-specific.

15
Sections per homepage
12
Brand partner logos
< 24h
Time to first deploy
116
Live sites today
02

Programmatic pages

One site is not one page. It is service × location × language. Geneva alone has 22 neighborhoods. 10 services × 22 zones × 2 languages (FR + RU) = 440 unique pages, each with its own H1, meta description, schema, internal linking and 1500 words of localized copy. AI writes them. Agents deploy them.

  1. 01
    Define the service list
    10 verticals: emergency plumbing, leak repair, drain unblocking, boiler service, hot water, etc.
  2. 02
    Define the city zones
    22 Geneva neighborhoods scraped from open street map.
  3. 03
    Spin the cross-product
    service × city = the URL slug. Flat, no folders.
  4. 04
    AI generates one page per cell
    Each page is contextual: name of the neighborhood, distance from city center, typical price, response time.
  5. 05
    Agents write images
    Realistic-photo generator (Gemini) for service photos. Wikipedia images for landmarks. No stock library.
  6. 06
    Sitemap built and submitted
    GSC API submits the sitemap.xml within an hour of deploy.
03

Russian /ru/

Geneva has a real Russian-speaking population, mostly Eastern European migrants and Russian expats. Nobody localizes for them. Every CTP site duplicates content under /ru/ with full Russian copy, same structure. That is +30% organic traffic most competitors leave on the table.

The cheapest +30% traffic in any local market is the language nobody else bothers with. In Bali it's Indonesian. In Geneva it's Russian. In Milan it's Romanian.
04

Brand partner logos

Every site has 8–12 brand partner logos in a strip near the top. Real logos, not text cards. Wikipedia for major brands, official brand sites for niche, seeklogo.com / freebiesupply.com / cdnlogo.com as fallback. Saved as PNG/SVG in public/images/brands/. Used with next/image + object-contain.

This element does more than it looks like. It is the cheapest trust signal that exists. Customers don't verify the partnership; they just see the logos and infer legitimacy.

05

Deploy

One git push to main. Vercel auto-deploys. Cloudflare DNS already pointing. SSL by default. Sitemap submitted. Analytics wired (GA4 + Microsoft Clarity + GSC). Mailgun routes set for info@<domain>. Done.

The factory is the door at scale. Adding the 117th site is the same command as the 116th. That's the unit economic.