All projectsCase studyAI search How it's built
AI search · SaaS
Citable
Audits how a website shows up for search engines and AI assistants, then proposes and applies fixes.
Phases 0–4 built Code
Next.jsTypeScriptNode.js workerPrismaClaude APIStripe
- Problem
- People increasingly ask AI assistants instead of searching, and most site owners can't tell whether those assistants can reach their site, understand it, or describe it correctly.
- Who it's for
- Small businesses, and the agencies that look after their websites.
- Design decisions
- A dashboard per site with a health score and findings ranked by urgency, each written as concrete steps for the site's own builder (WordPress, Shopify, Wix and others). Agencies get white-label branding and switch between client workspaces.
- Technical decisions
- Next.js App Router with server actions, plus a separate Node worker that polls a job table, so there is no Redis to run. Prisma scopes every table to an organization, and an API-call log records each billable external call so pricing can be checked against real cost. Stripe handles plans and per-client billing; the read-only public API uses hashed keys and rate limits.
- The hard problem
- Letting users point a crawler at any URL safely, and checking what AI says. Every outbound fetch goes through a guard that blocks private network addresses on each redirect hop. The accuracy monitor checks stored AI answers against facts the owner enters, and the optional Claude judge discards any verdict whose quote isn't actually on the page.
- Result
- Five phases built: audits, platform detection, scheduled checks and alerts, a fix engine with WordPress and Shopify connectors, attribution, agency workspaces and a public API. An end-to-end suite runs the whole stack against a fixture site with planted problems.
Data model
Prisma, organization-scoped tenancy
Jobs
Database queue + Node worker
AI
Claude judge with quote checks
Next project
Sealcloak