← Back to Vasily Starostenko Consulting
🚀 Tenant Websites: Build a Full Multi-Page Website Inside Your Callpage
Release date: 2026-10-13 Feature: Tenant Websites v1.0 Showcase: The Vasily Starostenko Consulting Website — 60 pages live Status: ✅ Live in production
The consulting website home — sixty pages of life story, career, consulting practice, teaching, and memoir chapters, all living inside a single Callpage whose call button and products were never touched.
---
🌟 What is Tenant Websites?
Tenant Websites is the biggest expansion of what a Callpage can be since the call button itself.
Until today, a Callpage was one page: your business, your products, your call button. Powerful — but a single page. If you wanted to publish articles, guides, a knowledge base, a memoir, an industry playbook, or a multi-page resource center, you needed a separate website, a separate CMS, a separate hosting bill, and a separate SEO strategy.
Tenant Websites changes that completely.
Every Callpage can now host a complete, full-featured, multi-page website at `/p/<your-slug>/web/` — with its own home page, unlimited topic pages, sub-sections, images, cross-links, SEO metadata, sitemap, breadcrumbs, and mobile-optimized rendering. Your products stay exactly where they are. Your call button keeps working. But now, behind a single elegant link, there's an entire publication.
Think of it this way:
| Before | After | |---|---| | One page, one message | One Callpage + an entire website | | Call button OR content | Call button AND a 60-page publication | | External blog on another domain | Articles living at `/p/you/web/` | | SEO split across properties | All authority concentrated on your Callpage | | "Link in bio" | "Explore our resource center" |
The showcase proves the scale: the consulting website is 60 pages — 54 short-form topic pages plus 6 long-form memoir chapters totaling ~13,000 words — all authored in Markdown, all heavily cross-linked, all richly illustrated, all served from Cloudflare's global edge in milliseconds.
Every page is a node in a web, not an isolated document. Breadcrumb back-links, "Related:" lines, "Keep exploring" lists, and in-paragraph links connect all 60 pages into one dense, navigable publication.
---
⚡ Cloudflare at Scale: The Infrastructure Behind the Magic
Let's take a moment to appreciate what makes this possible — because the engineering here is genuinely beautiful.
🌍 The Global Edge
Every Tenant Website page is served by Cloudflare Workers running on Cloudflare's global edge network — 300+ cities, 120+ countries. When a visitor in Tokyo opens the Waymo page, it renders from the Tokyo edge. When someone in São Paulo reads the Puerto Rico chapter, it comes from São Paulo. No origin server round-trips. No "please wait while we fetch from Virginia."
The result: sub-50ms time-to-first-byte worldwide, for every page, on every visit.
Cloudflare Workers run your website's code in 300+ cities simultaneously. There is no "server" to scale, no region to pick, no CDN to configure. It just works — everywhere.
🗄️ D1: The Database at the Edge
Content lives in Cloudflare D1 — a serverless SQLite database replicated to the edge. The `site_pages` table is elegantly simple:
```sql site_pages ( id TEXT PRIMARY KEY, tenant_slug TEXT, -- which Callpage owns this site path TEXT, -- URL slug: '' = home, 'waymo', 'book/california-decade' lang TEXT, -- 'en', 'es', ... (multi-language ready) title TEXT, -- page title meta_description TEXT, -- SEO meta description content_md TEXT, -- the Markdown source status TEXT, -- 'published' or 'draft' sort INTEGER, -- ordering for navigation created_at, updated_at ) ```
That's it. No CMS. No admin panel bloat. No plugins to update. Just rows of Markdown, served at edge speed. The consulting website's 60 pages are 60 rows — and the same table scales to 6,000 pages without breaking a sweat.
🚀 Workers Builds: Deploy on Every Merge
Here's the part that makes engineers smile: deployment is automatic and free.
The worker is connected to GitHub via Cloudflare Workers Builds — Cloudflare's native git integration. The release flow is:
``` feature branch → PR → staging (review) → PR → master (merge) ↓ Cloudflare detects the push ↓ node build.js → dist/deploy-worker.js ↓ Deployed to 300+ edge locations ↓ Live in ~4 minutes. Zero cost. ```
No GitHub Actions minutes burned. No deploy scripts to babysit. No "oops, I forgot to deploy staging." Push to `master`, and the world's fastest CDN picks it up. This is how the image rendering fix and the compact navigation fix went live — merged, built, deployed, verified, all in minutes.
📈 Auto-Scaling: From Zero to Viral
Because it's Workers + D1, there is nothing to scale:
- 1 visitor or 1 million visitors — same architecture, same speed, same cost curve
- No servers to provision, no containers to orchestrate, no database to shard
- DDoS protection, WAF, and Bot Fight Mode included at the Cloudflare edge
- If one of your pages goes viral on social media, Cloudflare absorbs it. Your site doesn't flinch.
This is infrastructure that a solo founder in San Juan gets for free — the same edge network that serves Fortune 500 companies.
Workers + D1 means no servers, no scaling config, no 3 AM pages. Your website handles whatever traffic arrives — and you never think about it.
---
👑 For Page Owners: A New Dashboard Experience
Tenant Websites isn't just for visitors — it transforms what you can do as a page owner.
✍️ Create Pages in Seconds
From your Callpage dashboard's Website tab:
- Click New page
- Set the path (the URL slug — e.g. `pricing-guide`)
- Write a title and meta description (for Google)
- Write the body in Markdown — headings, lists, bold, links, images
- Hit Publish — live instantly, worldwide
No code. No FTP. No "please allow 24 hours for DNS propagation." Your words are on the global edge in seconds.
🖼️ Images That Just Work
Markdown image syntax renders as responsive, lazy-loaded images automatically:
```markdown
```
becomes:
```html <img src="https://example.com/photo.jpg" alt="Engineers testing a driverless car" loading="lazy" style="max-width:100%;height:auto;border-radius:8px;margin:16px 0;"> ```
Lazy loading means pages stay fast even with dozens of images. The `max-width:100%` means they never break mobile layouts. And unsafe sources (`javascript:`, etc.) are rejected — alt text only, XSS-safe.
🔍 SEO Controls Built In
Every page gets:
- `<title>` — from your page title
- `<meta name="description">` — your one-sentence pitch to Google
- Open Graph tags — pretty previews when shared on social media
- Canonical URLs — no duplicate-content penalties
- Automatic sitemap — every published page appears in `/p/<slug>/web/sitemap.xml`, which you submit to Google Search Console once
The consulting website's 60 pages each carry unique titles and meta descriptions — that's 60 indexed entry points to one Callpage.
📊 Analytics-Ready
Because every page is a real URL on your Callpage's domain, your existing analytics (and Google Search Console, once you submit the sitemap) track every pageview, every referrer, every search query — per page, per topic, per chapter. You'll learn which topics pull traffic, which chapters keep readers, and which consulting pages convert to calls.
✏️ Edit and Delete — The Universal Lifecycle
Every page you create is editable and deletable from the same Website tab — no exceptions. Draft status hides a page while you work; publishing makes it live. This follows Callpages' universal object-lifecycle rule: if you can create it, you can edit it and remove it.
New pages go live in seconds. Edit anytime. Delete anytime. Your website evolves as fast as your business does.
---
🧭 For Visitors: A Browsing Experience That Feels Like a Real Publication
🗺️ Navigation That Makes Sense
Every page carries:
- Breadcrumb back-link at the top: `← Back to [Site Home]` — you're never lost
- Compact top nav — the 10 most important pages, in a single scrollable row (no ugly multi-row wrapping, even on a 60-page site)
- "Related:" links at the bottom of topic pages — 2–3 sibling topics to explore next
- "Keep exploring" lists on narrative pages — numbered paths through the story arc
- Chapter transition hooks in long-form content — narrative bridges that pull you into the next chapter
📱 Mobile-First, Always
- Responsive images that never overflow the viewport
- Readable typography with comfortable line lengths
- Touch-friendly link targets
- The compact nav scrolls horizontally on small screens instead of wrapping into an ugly stack
Over 60% of web traffic is mobile. Tenant Websites treats mobile as the primary experience, not an afterthought.
🔎 SEO-Friendly URLs
Clean, descriptive, hierarchical URLs:
- `https://callpages.me/p/vasily/web/` — home
- `https://callpages.me/p/vasily/web/waymo` — topic page
- `https://callpages.me/p/vasily/web/book/california-decade` — chapter
No query strings. No numeric IDs. URLs that humans can read and Google can understand.
Every page tells you where you are, where you came from, and where to go next. That's what makes it feel like a website instead of a pile of documents.
---
📚 The 60-Page Showcase: A Complete Catalog
The consulting website is the reference implementation — proof of what Tenant Websites can do at serious scale. Here's every page, grouped by theme.
🌱 Life Story (17 pages)
The personal arc: Russia → America → Puerto Rico. The strongest thread running through the entire site.
| Page | Link | What it covers | |---|---|---| | Home | callpages.me/p/vasily/web/ | The hub: world-class consulting across transportation, autonomous systems & fintech | | Childhood Russia | childhood-russia | A boy who treated every problem like physics homework | | MIPT | mipt | Surviving one of the world's hardest universities — with honors (1998–2004) | | NES | nes | From particles to people: the economics of human systems | | Moscow | moscow | Forged in Moscow: physics, economics, championship swimming | | Moving to America | moving-to-america | Arriving with everything to prove — starting over from zero | | Stanford MBA | stanford-mba | Two years that rewired his ambition (GSB 2008–2010) | | Learning English | learning-english | "The hardest product he ever shipped" | | US Citizenship | us-citizenship | Belonging to two cultures at once | | Moving to Puerto Rico | moving-to-puerto-rico | A new chapter on a Caribbean island | | Learning Spanish | learning-spanish | Third language, third lens | | Languages | languages | A life in three languages | | San Juan | san-juan | Building real companies from the Caribbean | | California | california | A decade at the center of tech | | Cambodia | cambodia | Co-founding a tech company in Phnom Penh (2008) | | Japan | japan | One trip, and a permanent standard for craft | | Travel | travel | Travel as the real education |
Read Childhood Russia and MIPT.
💼 Career (7 pages)
Four companies that defined an era — plus the patents and the early years.
| Page | Link | What it covers | |---|---|---| | Waymo | waymo | Driverless cars from research to revenue (2019–2021) | | Tesla | tesla | Scaling Model 3 sales systems in the breakout year | | Uber | uber | Products millions of drivers earned a living on (2014–2017) | | Revolut | revolut | Head of Product through a multi-billion-dollar scale-up (100+ teams) | | Early Career | early-career | Stanford internships to co-founding companies | | Lightfish | lightfish | Two years in the startup trenches | | Patents | patents | Four granted US patents in AV safety (11,826,146 · 12,024,206 · 11,912,307 · 11,738,763) |
Read Waymo, Tesla, and Patents.
🎯 Consulting Practice (14 pages)
The heart of the site for potential clients — fourteen advisory areas, each a concise brief.
| Page | Link | Advisory focus | |---|---|---| | Autonomy | autonomy | AV commercialization: prototype → multi-city deployment | | FinTech | fintech | Embedded payments that scale under regulation | | Compliance | compliance | Risk & governance tech for FinTech/BankTech | | Scaling | scaling | Platform scaling, unit economics, operational excellence | | FX Banking | fx-banking | Cross-border FX, digital banking, remittances | | Due Diligence | due-diligence | Investor & M&A diligence in mobility and FinTech | | AI Safety | ai-safety | Ship AI systems people can trust | | Marketplaces | marketplaces | Fix supply-demand balance before it breaks you | | Fleet Operations | fleet-operations | Run robot fleets like a commercial operation | | Team Building | team-building | Scale from a handful to 100+ teams | | Customer Experience | customer-experience | Turn CX into your moat | | Fractional CPO | fractional-cpo | A veteran CPO without the full-time hire | | Startup Advising | startup-advising | Advice from someone who's built and backed startups | | Product Philosophy | product-philosophy | Maximum impact through experiments, not opinions |
Read FinTech, Compliance, and Due Diligence.
🎓 Teaching & Thought Leadership (6 pages)
| Page | Link | What it covers | |---|---|---| | Udemy | udemy | Product Management for Maximum Impact — thousands of students | | Speaking | speaking | On stage: the craft of building for maximum impact | | TalkMarkets | talkmarkets | Essays on product leadership | | EmployeeStocks | employeestocks | Turning startup equity into liquidity | | Investing | investing | Backing founders who build for impact | | Mentoring | mentoring | Passing on twenty years of product lessons |
🌴 Personal & Ventures (10 pages)
| Page | Link | What it covers | |---|---|---| | Swimming | swimming | Champion of the Moscow Region — before product | | Fitness | fitness | Staying active as a founder and executive | | Discipline | discipline | What swimming taught him about building companies | | Beaches Puerto Rico | beaches-puerto-rico | Where the ocean is the best reset button | | Books | books | The reading habit behind the operator | | Technology | technology | From physics equations to beloved products | | Callpages | callpages | Why he built Callpages | | Sleep Shop | sleep-shop | Real metal bed frames in San Juan | | Entrepreneurship | entrepreneurship | Building as a way of life | | Future | future | Where he's headed next |
Read San Juan, Beaches, and Callpages.
📖 The 6 Long-Form Book Chapters
Memoir-style narrative in close third person — 2,000+ words each, ~13,000 words total — written as the backbone of a future book. Each chapter carries 5–8 images placed at scene breaks, ends with a transition hook into the next chapter, and closes with a contact CTA.
| # | Chapter | Link | Words | Images | |---|---|---|---|---| | 1 | The Boy Who Treated Every Problem Like Physics Homework | book-growing-up-russia | 2,116 | 5 | | 2 | The Forge — MIPT, Moscow, and the Making of a Mind | book-mipt-moscow-years | 2,122 | 7 | | 3 | Starting Over — America, English, and Stanford | book-moving-to-america | 2,079 | 7 | | 4 | The California Decade — Tesla, Uber, Waymo, and the Education of an Operator | book-california-decade | 2,546 | 8 | | 5 | The Third Crossing — Puerto Rico | book-moving-to-puerto-rico | 2,086 | 8 | | 6 | San Juan — Where the Ocean Is the Best Reset Button | book-life-in-san-juan | 2,058 | 8 |
Chapter 1 opens in Russia — physics-and-math school culture, competitive swimming, Moscow Region championships. Read it here, then see the short-form companion pieces: Childhood Russia and Swimming.
Chapter 2 is the forge: MIPT 1998–2004 (MS with Honors in Physics) overlapping with an Economics master's at NES (2002–2004), all while winning ten Moscow Region swimming championships. The "mental operating system" chapter. Companion pages: MIPT, NES, Moscow, Discipline.
Chapter 3 is reinvention: learning English as an adult, internships, Stanford GSB 2008–2010. Companion pages: Moving to America, Learning English, Stanford MBA, US Citizenship.
Chapter 4 is the professional core — 2,546 words, the longest chapter: Uber Driver Growth → Tesla Model 3 → Waymo driverless fleet → Revolut, with all four patent numbers and grant dates. Companion pages: Uber, Tesla, Waymo, Revolut, Patents, California.
Chapter 5 crosses to Puerto Rico: learning Spanish, building Sleep Shop and Callpages from San Juan, the November 2024 citizenship certificate. Companion pages: Moving to Puerto Rico, Learning Spanish, Languages.
Chapter 6 lands in the present: owner-operator daily life in San Juan, the ocean-as-reset philosophy, teaching on Udemy. Companion pages: San Juan, Beaches Puerto Rico, Udemy, Future.
Six chapters, ~13,000 words, 43 images. Start with Chapter One.
---
📏 Content Standards: What Makes a Website Feel Real
Tenant Websites ships with standing content standards — non-negotiable requirements for every website built on the platform:
1. 🔗 Heavy Cross-Linking — Every Page Links to Several Others
A website is a web, not a pile of documents. Every page must include:
- Breadcrumb back-link at the top: `← Back to Home`
- "Related:" lines on topic pages: 2–3 inline links to sibling topics
- "Keep exploring" lists on narrative pages: numbered paths through the arc
- In-paragraph links whenever you mention another covered topic
- Chapter transition hooks in long-form content
The consulting website's autonomy page is the model: breadcrumb at top, "Related:" links (Due Diligence · Scaling) at bottom, every mention of patents linked to the patents page.
2. 🖼️ Rich Imagery — 3+ Images Per Page
- Images placed mid-content at natural breaks — never all stacked at the top
- Personal pages lead with real photos (headshots, workplace shots)
- Meaningful alt text on every image
- Lazy loading keeps pages fast even with dozens of images
3. 📐 Two Lengths, One Site
- Short pages (350–500 words): scannable, SEO-friendly, quick reads
- Long chapters (2,000+ words): authority-building, immersive, keep readers on site
- Start short, expand what performs
4. 🚫 No Isolated Pages
If a page has no inbound links and no outbound links, it doesn't belong on the site. Every page must be reachable from at least two other pages and must link out to at least two others. The site is a graph — every node connected.
Internal links are the difference between a website and a file dump. They guide readers, distribute SEO authority, and turn casual visitors into deep explorers.
---
🌺 Industry Playbook: Flower Shop
How a flower shop uses Tenant Websites to bloom online.
Meet Petal & Stem — a fictional flower shop in San Juan. They have a Callpage with their arrangements and a call button. Now they add a 15-page website:
Pages they'd create:
- Home (`/web/`) — "San Juan's flower shop for every occasion" + links to everything
- Wedding Flowers (`/web/weddings`) — packages, galleries, testimonials, booking CTA
- Sympathy Arrangements (`/web/sympathy`) — tasteful guide for difficult times
- Subscription Service (`/web/subscriptions`) — weekly office/home flowers, pricing tiers
- Care Guide: Roses (`/web/care-roses`) — how to make roses last 2 weeks
- Care Guide: Orchids (`/web/care-orchids`) — the #1 asked question, answered beautifully
- Seasonal: Mother's Day (`/web/mothers-day`) — annual page, updated each year
- Seasonal: Valentine's (`/web/valentines`) — same pattern
- Corporate Accounts (`/web/corporate`) — hotels, restaurants, offices
- Flower Meanings (`/web/meanings`) — "what does a yellow rose mean?" (SEO magnet)
- Our Growers (`/web/growers`) — the farms, the story, the freshness
- Delivery Areas (`/web/delivery`) — zones, timing, fees
- About Our Florists (`/web/team`) — the humans behind the arrangements
- FAQ (`/web/faq`) — every question they've ever been asked
- Blog: "5 Flowers That Survive Puerto Rico Heat" (`/web/heat-flowers`) — local SEO gold
Why it works:
- The care guides rank on Google for "how to keep roses alive" — bringing in customers who've never heard of Petal & Stem
- The wedding page with real photos converts browsers into consultations
- Every page links to 2–3 others — the care guide links to the subscription page ("tired of replacing dead roses? get fresh ones weekly")
- The call button is one tap away from every page
See how the consulting site does this: the Swimming page links to Discipline, which links to Team Building — personal story → professional insight → consulting offer.
Fifteen pages, one shop, infinite reasons to visit. That's the power of a real website behind your call button.
---
🚗 Industry Playbook: Car Dealership
How a dealership turns inventory into a content machine.
Meet Auto Isla — a fictional used-car dealership in Bayamón. Their Callpage lists featured vehicles. Their new 20-page website becomes the #1 car-buying resource in Puerto Rico:
Pages they'd create:
- Home (`/web/`) — "Puerto Rico's most trusted used-car dealership"
- SUVs Under $20K (`/web/suvs-under-20k`) — curated inventory category pages
- Sedans Under $15K (`/web/sedans-under-15k`) — same pattern, different segment
- First-Time Buyer Guide (`/web/first-time-buyer`) — "Buying your first car in PR: the complete guide"
- Financing Explained (`/web/financing`) — credit scores, down payments, PR-specific lenders
- Trade-In Value Guide (`/web/trade-in`) — how we appraise, what adds value
- Carfax & History Reports (`/web/history-reports`) — why every car gets inspected
- Warranty Options (`/web/warranty`) — what covers what, in plain Spanish
- Service & Maintenance (`/web/service`) — our shop, our mechanics, our guarantee
- Hurricane Season Prep (`/web/hurricane-prep`) — uniquely Puerto Rican, hugely shared
- Best Cars for PR Roads (`/web/pr-roads`) — potholes, mountains, flooding: what survives
- Fuel Efficiency Guide (`/web/fuel-efficiency`) — gas prices are high; help buyers save
- Family Cars (`/web/family-cars`) — safety ratings, car-seat fit, space
- Work Trucks (`/web/work-trucks`) — for contractors and small businesses
- Customer Stories (`/web/stories`) — "María found her perfect SUV"
- About Our Team (`/web/team`) — meet the salespeople (no pressure, promise)
- Financing Calculator (`/web/calculator`) — interactive, embedded
- FAQ (`/web/faq`) — "Do you take trade-ins with loans?"
- Blog: "5 Red Flags When Buying Used" (`/web/red-flags`) — builds trust, ranks on Google
- Contact & Directions (`/web/visit`) — hours, map, WhatsApp, call button
Why it works:
- Inventory category pages (`/web/suvs-under-20k`) rank for "SUVs baratos Puerto Rico" — high-intent search traffic
- The hurricane prep guide gets shared on social media every June — free marketing
- Financing content answers the questions buyers are embarrassed to ask in person
- Every page ends with "Browse current inventory" + the call button
The consulting site's Due Diligence page works the same way — it's a service page that also educates, building trust before the sales conversation.
Twenty pages that answer every question a car buyer has — before they ever walk onto the lot.
---
🔨 Industry Playbook: Hardware Store
How a hardware store becomes the DIY authority.
Meet Ferretería El Martillo — a fictional hardware store in Carolina. They sell tools. Their 25-page website teaches people how to use them:
Pages they'd create:
- Home (`/web/`) — "Carolina's DIY headquarters since 1985"
- Power Tools Guide (`/web/power-tools`) — drill vs. impact driver vs. rotary tool
- Hand Tools Essentials (`/web/hand-tools`) — the 20 tools every home needs
- Paint Like a Pro (`/web/painting`) — prep, primer, technique, cleanup
- Fix a Leaky Faucet (`/web/fix-faucet`) — step-by-step with photos
- Install a Ceiling Fan (`/web/ceiling-fan`) — PR-specific (everyone needs one)
- Hurricane Shutters Guide (`/web/shutters`) — measure, install, maintain
- Concrete & Masonry (`/web/concrete`) — mixing, pouring, curing in tropical heat
- Electrical Safety Basics (`/web/electrical-safety`) — when to DIY vs. call an electrician
- Plumbing 101 (`/web/plumbing`) — shut-off valves, basic repairs
- Woodworking for Beginners (`/web/woodworking`) — first projects, essential tools
- Garden & Outdoor (`/web/garden`) — tropical gardening, irrigation
- Grill Station Build (`/web/grill-station`) — the ultimate weekend project
- Tool Rental (`/web/rental`) — "don't buy the tile saw, rent it"
- Pro Contractor Desk (`/web/contractors`) — bulk pricing, job accounts
- Workshop Classes (`/web/classes`) — free Saturday demos
- Project: Bookshelf (`/web/project-bookshelf`) — complete tutorial with materials list
- Project: Raised Garden Bed (`/web/project-garden-bed`) — same format
- Seasonal: Hurricane Kit (`/web/hurricane-kit`) — checklist + shopping list
- Brand Guide: DeWalt vs. Milwaukee (`/web/dewalt-vs-milwaukee`) — honest comparison
- Tool Maintenance (`/web/tool-care`) — make your tools last decades
- Safety Gear Guide (`/web/safety-gear`) — eyes, ears, lungs, hands
- About Us (`/web/about`) — three generations of hardware expertise
- FAQ (`/web/faq`) — "Do you cut wood to size?" (yes)
- Blog: "10-Minute Home Fixes" (`/web/quick-fixes`) — weekly series
Why it works:
- Tutorial pages rank for "how to fix leaky faucet" — the searcher is holding a wrench and needs parts NOW
- Each tutorial ends with a materials list linking to products ("Buy the washer kit → call us")
- The hurricane content makes them the community resource every storm season
- Workshop classes drive foot traffic; the website drives class signups
Like the consulting site's Books page (the reading habit behind the operator) → Technology → Callpages — personal interest → professional lens → business.
Twenty-five pages of "how to" that turn searchers into customers and customers into regulars.
---
🔧 Technical Deep Dive
The `site_pages` Table
Every website is rows in D1. The schema is minimal by design:
- `tenant_slug` — links pages to their Callpage (e.g. `'vasily'`)
- `path` — URL slug; `''` is the home page
- `lang` — language code; the same path can exist in multiple languages
- `content_md` — raw Markdown source
- `status` — `'published'` or `'draft'`
- `sort` — controls navigation ordering
The Renderer: `renderMarkdownLite`
Pages are Markdown in, HTML out. The `renderMarkdownLite` function in `src/worker.js` handles:
- Headings (`#`, `##`, `###`) → `<h1>`, `<h2>`, `<h3>`
- Paragraphs → `<p>`
- Lists (bullet and numbered) → `<ul>`, `<ol>`
- Bold/italic → `<strong>`, `<em>`
- Links `text` → `<a href="url">text</a>`
- Images `alt` → `<img>` (added in PR #266)
The image handler runs before the link handler — critical, because `alt` starts with `!` followed by what looks like a link. Without this ordering, images would misparse. Images get `loading="lazy"`, `max-width:100%`, rounded corners, and XSS-safe source validation.
Routing
``` /p/<tenant>/web/ → home (path = '') /p/<tenant>/web/<path> → authored page (path = '<path>') /p/<tenant>/web/sitemap.xml → auto-generated XML sitemap ```
Single-segment paths only (e.g. `waymo`, `book-california-decade`). The router is intentionally simple — complexity lives in the content, not the URL scheme.
SEO
- Per-page `<title>` and `<meta description>` from the `site_pages` row
- Open Graph tags for social sharing
- Breadcrumb structured data (Schema.org)
- XML sitemap at `/p/<slug>/web/sitemap.xml` — submit to Google Search Console
- Clean URLs — no query params, no IDs, human-readable slugs
The entire 60-page website is 60 database rows. Simplicity scales.
---
🕸️ Cross-Linking Strategy: Why It Matters
For SEO
Google's PageRank flows through links. A site with 60 interlinked pages concentrates authority:
- The home page links to all major topics → distributes authority outward
- Topic pages link to siblings → creates topical clusters Google understands
- "Related:" links signal semantic relationships → "these pages are about the same domain"
- Breadcrumb links establish hierarchy → Google learns your site structure
Result: 60 pages ranking for 60 different queries, all reinforcing each other.
For UX
- Reduces bounce rate — readers follow links instead of leaving
- Increases pages per session — the "just one more page" effect
- Builds trust — depth signals expertise
- Guides the journey — from casual reader → engaged follower → consulting client
The Pattern
Every page on the consulting site follows this template:
``` ← Back to Home (breadcrumb)
Title
[3+ images interleaved with content] Body with in-paragraph links --- Related: [Topic A] · [Topic B] (2-3 sibling links) Contact CTA ```
Simple. Repeatable. Effective. Copy it for your own site.
---
🎉 What's Next
Tenant Websites v1.0 is live. The consulting website is the proof — 60 pages, heavily cross-linked, richly illustrated, served from the global edge.
Coming next:
- Sleep Shop website — 7 Spanish-language guides at `/p/sleep-shop/web/` (same standards)
- More book chapters — the memoir continues past California into the Revolut years
- Genuine photography — replacing stock images with real photos across all 60 pages
- Your website — pick a Callpage, open the Website tab, and start writing
Start exploring: callpages.me/p/vasily/web
Learn how: How to Build a Multi-Page Website Inside Your Callpage (Learn KB article)
- Read the story: Introducing the Consulting Website (blog post)
---
Built with Cloudflare Workers, D1, and Workers Builds. Deployed automatically on every merge. Served from 300+ cities worldwide.
Questions? Every page on the consulting site ends with a direct line: +(650) 523-4953.
---
📸 Visual Appendix: The Site in Pictures
A picture is worth a thousand words — and this site has 200+ of them. Here's a visual tour:
The Home Page
The home page — headline, advisory focus areas, gallery images, and the call to explore.
Life Story Pages
Childhood Russia — where every problem was physics homework.
MIPT — survived with honors, 1998–2004.
Stanford MBA — two years that rewired ambition.
Career Pages
Tesla — Model 3 sales systems at scale.
Uber — Driver Growth, 2014–2017.
Consulting Pages
AI Safety — ship systems people can trust.
Marketplaces — the physics of two-sided platforms.
Book Chapters
The California Decade — 2,546 words, 8 images, the professional core of the memoir.
---
🙏 Acknowledgments
Built by: Vasily Starostenko, with Muse (AI assistant) as engineering partner
Infrastructure: Cloudflare Workers, D1, Workers Builds — the global edge that makes this possible
Content: 60 pages authored October 2026, drawing on 20 years of operating experience, public Facebook material, and the standing Tenant Websites content standards
Photography: Stock images (Unsplash) as placeholders — genuine personal photography coming in the next generation, per the owner's directive that real photos beat stock everywhere
Release engineering: PR #266 (image rendering), PR #268 (compact navigation), PR #267 + PR #269 (production releases), all deployed via Cloudflare Workers Builds
---
This is v1.0. The memoir continues. The Sleep Shop site is next. And your website — the one living inside your Callpage — is waiting to be written.
P.S. — If you read this far, you're the kind of person who appreciates depth. The consulting website was built for readers like you. Start with Chapter One — you won't stop at one chapter.
Vasily Starostenko — Consulting
Talk now — free call