Case study · 2026
In developmentAI Website Auditor
Turns any URL into a prioritised improvement plan: 47 checks across SEO, performance, accessibility and usability, explained in plain English by Claude.
- Role
- Design & full-stack development
- Year
- 2026
- Stack
- Next.js 16, TypeScript, Tailwind CSS 4, Claude API, Supabase, Vitest

01
Project Overview
AI Website Auditor turns a URL into a clear, prioritised improvement plan. It crawls a site, runs 47 technical checks across SEO, performance, accessibility and usability, and uses Claude to translate raw findings into plain-English explanations and concrete fixes that founders, marketers and junior developers can act on.
02
Problem
Most audit tools produce long lists of technical warnings. Founders, marketers and junior developers struggle to see what matters, why it matters and what to fix first — so the reports get ignored.
03
Solution
A report that scores four pillars from 0 to 100, groups issues by impact and pairs every finding with evidence, a "why it matters" and a suggested fix. Claude writes the summary, the top three priorities and the per-issue guidance, tailored to the detected platform. If the AI is unavailable, each check falls back to its own built-in explanation, so an audit never fails because of AI.
04
My Role
Design & full-stack development
- Crawler that respects robots.txt and checks links, assets, sitemap, redirects and 404 handling
- 47 checks with weighted scoring across four pillars
- Claude integration with structured output (Zod schema) and a built-in fallback
- Streaming audit endpoint with live progress in the browser
- Supabase storage, magic-link sign-in and row-level security, with a local JSON fallback
- SSRF protection, rate limiting and unit tests
- Report UI: score rings, issue explorer, history chart and print-ready PDF export
05
Tech Stack
- Next.js 16
- TypeScript
- Tailwind CSS 4
- Claude API
- Supabase
- Vitest
Connected planets
06
Key Features
01
Four pillar scores
SEO, performance, accessibility and usability each get a weighted 0–100 score, plus an overall score labelled Healthy, Needs work or Critical.
02
Issues grouped by impact
Every failing check becomes an issue with the measured result, affected pages and evidence, ordered by impact and then by points lost.
03
AI explanations and fixes
Claude writes a summary, the top three priorities and a why-it-matters plus suggested fix for each issue, tailored to platforms like Next.js, WordPress or Shopify.
04
Live progress
Audits stream each stage — fetch, crawl, checks, AI, save — to the browser as it happens.
05
Shareable reports
Every audit is saved at its own link, with Copy link, Export PDF and Re-run audit.
06
Progress over time
Re-auditing a domain shows the score change for every pillar and a history chart of past runs.
07
Screenshots





08
Challenges
- 01
Fetching URLs safely
The server fetches whatever visitors type, so every connection passes a DNS check that blocks private and reserved IP ranges — covering redirects and DNS rebinding — with timeouts, size limits and a per-visitor rate limit.
- 02
AI that can't break an audit
Claude returns structured output validated by a Zod schema, scraped content is fenced off as untrusted data, and every check carries its own fallback explanation.
- 03
Long-running audits
A crawl takes 20–60 seconds, so the audit endpoint streams progress events as NDJSON and the interface shows each stage as it happens.
09
What I Learned
- Designing AI features is mostly about designing constraints and fallbacks.
- A server that fetches user-supplied URLs needs SSRF protection from day one.
- Streaming progress makes slow work feel fast.
- Good information hierarchy matters more than more information.
10
Result
A working audit tool that turns technical checks into a prioritised, shareable plan. It runs locally with no keys at all, and adds Claude explanations, accounts and cloud storage when they're configured.
- Automated checks
- 47
- Audit pillars
- 4
- Platforms detected
- 9
Next mission
AutoMarket
A vehicle import and profitability platform for tracking cars from purchase to resale.
Read case study