TL;DR

I built cclarity.io from zero to a 24-page website with 13 blog posts, dynamic industry landing pages, interactive tools, structured data for AI search engines, and PostHog analytics. No developer. No template. No terminal commands. Just conversations with Claude Code on the Mac app. I told it what I needed (SEO, AI search optimisation, programmatic content at scale) and it recommended the entire architecture. Here is the exact stack, the step-by-step process, and what I would do differently.

Why I Needed a Website for a LinkedIn Agency

Most LinkedIn agencies do not have a proper website. They rely on LinkedIn itself, maybe a one-page landing site, and word of mouth. That works until it does not.

I needed a website for four specific reasons:

Google SEO. People search for “LinkedIn lead generation agency”, “LinkedIn outreach for B2B”, and similar queries every day. If Cclarity does not show up, those leads go to someone else. A website with optimised pages and blog content is the only way to capture that traffic.

AI search engines. When someone asks ChatGPT, Perplexity, or Claude “how do I generate leads on LinkedIn”, I want Cclarity to appear in the answer. This is the next frontier for discovery, and most competitors are not even thinking about it yet.

Topical authority. A blog with 13+ posts across 4 content pillars signals to Google (and to AI models training on web data) that Cclarity is a genuine authority on LinkedIn lead generation. Not just another agency with a landing page.

Converting search traffic. Once people find Cclarity through search, the website needs to guide them toward booking a call. Every page has a clear next step.

The question was not WHETHER to build a website. It was HOW to build one without hiring a developer or spending months on it.

Here is the important part: I did not choose these tools. I told Claude Code three things:

  1. The site needs to be optimised for Google SEO
  2. It needs to be optimised for AI search engines (ChatGPT, Perplexity, Claude)
  3. It needs to support programmatic SEO so I can launch new landing pages and blog posts at scale without rebuilding anything

Claude Code recommended the entire architecture based on those requirements. I reviewed the reasoning and agreed.

LayerToolWhy Claude Code Chose It
FrameworkAstroStatic HTML output (fast for SEO), MDX for blog posts, content collections for programmatic pages
HostingNetlifyFree tier, instant deploys from a build folder, custom domain with automatic SSL
Blog formatMDXWrite content in markdown, embed custom HTML components when needed
Content schemaZod via AstroType-safe validation so new pages can not break the site
RSS feed@astrojs/rssAuto-generates feed for search engine discovery
Sitemap@astrojs/sitemapAuto-generates XML sitemap so Google indexes every page
StylingHand-written CSSNo framework dependency, full control, tiny bundle size
AnalyticsPostHogFree tier, event tracking, privacy-friendly
Structured dataJSON-LDMakes every page directly citable by AI search engines
FontsGoogle FontsDM Serif Display for headlines, Inter for body. Clean B2B look.
DomainNamecheapDNS pointed to Netlify for hosting

I did not pick any of these tools myself. I described what I needed (SEO, AI search, programmatic content at scale) and Claude Code recommended the architecture. The total dependency count is 4 npm packages. No React. No database. No backend. Just static HTML that loads fast and ranks well.

Step 1: Set Up the Project

I used Claude Code through the Mac app. I never opened a terminal. I never ran an npm command. The entire process was conversational: I described what I wanted, Claude Code wrote the code, created the files, ran the commands, and deployed. I reviewed the output and gave feedback.

Here is roughly what I asked, in plain English:

“Set up a new website project that generates static HTML pages. I need it to support blog posts, be deployable to Netlify, and have a content system where I can add new pages just by creating new files.”

Claude Code set up the Astro project, installed the 4 dependencies, created the config files for Astro and Netlify, and built the folder structure:

The first deploy happened within the same session. I described the project, Claude Code built it, and it was live on Netlify.

DescribeTell Claude Code what you need
BuildClaude Code creates project
ReviewCheck the output
FeedbackAsk for changes
DeployLive on Netlify

Step 2: Build the Design System

I described the visual identity I wanted: professional, clean, navy and white, no generic startup look. Claude Code built a design system using CSS variables:

The key decision was NO CSS framework. No Tailwind. No Bootstrap. Claude Code wrote hand-crafted CSS with design tokens stored as variables. The entire stylesheet is under 500 lines. It loads instantly and I have full control over every element.

3
Shared components (Nav, Footer, Head)
2
Layout templates (Base + Blog Post)
<500
Lines of CSS for the entire design system

Three shared components handle the stuff that appears on every page. Head.astro generates all the SEO meta tags, Open Graph tags, JSON-LD structured data, and analytics scripts. Nav.astro renders the navigation (including dropdowns that auto-populate from the content collections). Footer.astro handles links and branding.

Two layout templates handle page structure. BaseLayout.astro wraps every page with the head, nav, content slot, and footer. BlogPostLayout.astro adds the article header, author bio, related posts, and conversion CTAs specific to blog posts.

Step 3: Create the Content Engine

This is where the programmatic SEO requirement paid off. I asked Claude Code to set up a system where I could create a new blog post or industry landing page just by adding a single file, with no code changes needed anywhere else.

The solution was Astro’s content collections with Zod schemas. In plain terms: there is a config file that defines exactly what fields every blog post needs (title, description, category, FAQs, etc.) and what fields every industry page needs (26+ fields covering SEO, content, onboarding steps, and buyer fit criteria). When I add a new file, Astro validates it against the schema at build time.

This is CRITICAL when working with AI. If Claude Code writes a blog post with a missing field or wrong data type, the build fails with a clear error message before anything reaches production. The schema acts as a safety net.

For blog posts: I create an .mdx file in the blog folder with the required frontmatter (title, description, category, FAQs, canonical URL slug). Then I write the content in markdown with HTML components where I want something visual. Build and deploy.

For industry landing pages: I create a .json file in the industries folder with all the required fields. Build and deploy. The navigation dropdown and footer links auto-update. No code changes needed.

The blog now has 13 posts across 4 content pillars: LinkedIn Profile, LinkedIn Content, LinkedIn Outreach, and LinkedIn Lead Generation. Each pillar targets a cluster of search queries. Each post links to related posts in other pillars, building internal link authority.

Step 4: Set Up SEO and Structured Data

This is what makes the site discoverable, not just by Google, but by AI search engines.

Every page automatically gets:

Every blog post automatically gets JSON-LD structured data:

The FAQ schema is especially important for AI search engines. When ChatGPT or Perplexity crawls the page, the FAQ markup tells them “here are the questions this page answers.” That makes it far more likely they will cite your content in their responses.

The single most important thing for AI search engines is structured data. If your FAQ is hidden inside a JavaScript accordion, ChatGPT and Perplexity can not read it. Make it static HTML with JSON-LD markup. Every FAQ on this site is rendered as plain HTML that any crawler can parse.

The sitemap is auto-generated with correct URL extensions. The robots.txt file allows all crawlers and points to the sitemap. Nothing is blocked from indexing.

Step 5: Add Analytics and Deploy

PostHog handles analytics. The tracking snippet loads on every page through the shared Head.astro component. It tracks pageviews, page leaves, and custom events. The free tier is generous enough for a site this size.

Deployment follows a simple pattern that Claude Code handles end to end:

WriteCreate or edit content
BuildGenerate static HTML
StageDeploy to staging URL
VerifyCheck everything works
ShipDeploy to production

The domain (cclarity.io) is registered on Namecheap with DNS pointed to Netlify. SSL is automatic. I never configured a server, set up a database, or managed infrastructure. Netlify’s free tier handles everything.

Step 6: Build Interactive Tools (Optional)

Once the core site was running, I added three interactive tools:

Each tool is a single page file with embedded JavaScript. No backend, no API calls, no external dependencies. Everything runs in the browser. Claude Code built each one from a description of what I wanted the tool to do.

These are more advanced than the blog and landing pages. If you are building your own site, start with the content engine first. Add tools later once you have traffic.

What Claude Code Did Well (And Where It Struggled)

After building 24 pages, 3 interactive tools, and a complete content system, here is an honest assessment:

What Claude Code Did Well

  • ArchitectureRecommended the right stack for my requirements
  • ConsistencyMaintained code patterns across 24 pages
  • Structured dataBuilt JSON-LD schemas correctly every time
  • Responsive CSSDesktop and mobile from a single description
  • SpeedIdea to deployed page in one session
  • Programmatic pagesDynamic routing from JSON files, auto-updating nav

Where I Had to Step In

  • PositioningAI can not decide your brand voice
  • Content strategyChoosing which topics to write about is a human decision
  • Knowing when to stopAI will iterate forever if you let it
  • Voice and toneGetting British spellings and writing style right took guidance
  • Long sessionsContext window limits mean some things get lost
  • Design tasteKnowing what LOOKS right requires a human eye

The pattern is clear. Claude Code is exceptional at implementation. Architecture, code, structured data, responsive layouts, deployments. It handles the HOW.

But it can not handle the WHAT or the WHY. What should the site say? Who is it for? Which topics matter? What does the brand sound like? Those are founder decisions. The tool removes the technical barrier. It does not remove the strategic one.

Could You Build This Yourself?

The Build-Your-Own-Website Readiness Test

If you checked 4 or more, you can build a site like this. The tool handles the code. You handle the strategy. If you checked fewer than 4, work on your positioning first. Read why your LinkedIn strategy has nothing to do with LinkedIn for a starting point.

The barrier to building a proper web presence has collapsed. A non-technical founder can go from zero to a 24-page, SEO-optimised, AI-search-ready website in conversational sessions. The bottleneck is no longer technical. It is strategic.

You still need to know your audience. You still need clear positioning. You still need to decide what content to create and why. Claude Code can build anything you describe. The question is whether you can describe the right thing.

What This Means for B2B Founders

Building the website was the easy part.

The hard part is the system that makes it work: knowing who to target, creating content that attracts the right people, engaging on their content to build recognition, and following up in a way that starts real conversations.

The website is a component of that system. It captures search traffic, builds credibility, and converts visitors. But without the LinkedIn lead generation strategy behind it, it is just a nice website.

If you want help with the strategy side, specifically using LinkedIn to generate qualified leads for your B2B business, book a free strategy call with Keith.

Frequently Asked Questions

What is Claude Code?

Claude Code is Anthropic's AI coding tool. You describe what you want in plain English and it writes and edits code directly in your project files. Keith used it through the Mac app, not the terminal. It handles everything from creating files to running build commands to deploying, all from a conversational interface. You review the output, give feedback, and iterate.

How much did it cost to build cclarity.io?

Claude Code subscription costs roughly 20 USD per month during the build phase. Netlify hosting is free tier. The domain from Namecheap costs roughly 15 USD per year. No developer fees, no design agency, no template marketplace purchases. Total cost for the first year was under 100 USD.

How long did the full site take to build?

The initial site with homepage, pricing page, and first 6 blog posts took about a weekend of focused sessions. Industry landing pages, interactive tools, and 7 more blog posts were added over the following weeks. Each blog post takes roughly one conversational session with Claude Code. The site now has 24 pages and growing.

Do I need to know how to code to build a website with Claude Code?

No. Keith used the Claude Code Mac app and never typed a terminal command. But you do need to know what you want. Claude Code handles the implementation, but you make the decisions about positioning, content strategy, design direction, and what pages to build. Think of it as hiring a very fast developer who needs clear briefs, not code.