How to Build an AI Visibility Dashboard (2026) | Clay
What you need before you start
This build has four layers, and each one does a single job. Clay runs the prompts through the AI platforms and pulls back the raw answers. A second AI pass reads each answer and turns it into structured data. Supabase stores that data as a daily snapshot. A dashboard reads Supabase and renders the metrics; ours is a Next.js app that Claude Code generates from the Supabase data and deploys on Vercel. The whole thing sits on top of Clay and Supabase and touches no core infrastructure, which is why our team could stand it up in two days and could rebuild it in two more if it broke.
The whole point is turning an unstructured AI answer into a row you can query. The sentence "Clay was named third, framed positively, next to HubSpot and Apollo" is a judgment call, not a SQL filter. The architecture exists to make that judgment once, at write time, so every metric downstream is just arithmetic.
Step 1: Design your prompt library
Decide what to track before you write any code. The dashboard is only as good as the prompts you feed it, and the single most important call you make here is splitting prompts into two categories that get reported differently.
Branded prompts inflate your own score, so they never touch your visibility metrics. Every brand looks great when you ask an AI what Clay is used for, because the model always knows what you are. Mix those in and your visibility number is meaningless. Non-branded, buyer-intent prompts (best tools for B2B prospecting, how do I automate outbound) are the only ones that tell you whether you get surfaced when a buyer is not already looking for you.
Step 2: Build the Clay table
Each row in the table is one prompt. The columns turn that prompt into a structured record, platform by platform. For each AI platform you track (Claude, ChatGPT, Perplexity), you build the same four-column sequence. We started with Claygent, Clay's AI agent for research, and learned fast that it returns the answer text but not the citation data: the URLs and domains the model actually sourced.
Step 3: Write the analyzer prompt
The analyzer is the intelligence layer, and it is the hardest part of the build. It reads one raw AI answer and returns strict JSON. The fields your metrics need: whether your brand was mentioned and where, sentiment, citation type, cited URLs with each domain classified, competitors mentioned, themes, and how the answer positioned you against rivals.
Step 4: Build the Supabase schema
The schema is five tables, and one design decision carries the whole thing. The responses table holds one row per prompt, per platform, per day, with a UNIQUE (prompt_id, platform, run_day) constraint. That constraint means a same-day re-run overwrites the existing row instead of duplicating it.
Step 5: Write the upsert RPC
Clay calls one Supabase RPC with a single JSONB payload, and that function does every multi-table insert atomically. One problem will bite you the moment you connect the two systems: Clay's analyzer outputs camelCase keys, but a sane Postgres schema uses snake_case.
Step 6: Connect Clay to Supabase
The link is one HTTP API column per platform that posts to your RPC. Clay's HTTP API column can call any endpoint, native integration or not, which is exactly what you need to reach a custom Supabase function.
Step 7: Build the dashboard and define the metrics
The dashboard is a Next.js App Router app deployed on Vercel; we had Claude Code generate it against the Supabase schema, then kept editing by hand. The rule that keeps it maintainable is that components never touch SQL.
Step 8: Monitor it like an engineering system
A vibe-coded pipeline that ingests silently is the one that hurts you. In late April, OpenAI shifted from GPT-4o to GPT-5.5, the response format changed, and our Clay columns failed quietly: 200 OK, empty parsed response, nulls flowing into Supabase.
Frequently asked questions
What is an AI visibility dashboard?
An AI visibility dashboard tracks whether and how AI assistants like ChatGPT, Claude, and Perplexity mention your brand when buyers ask for tool recommendations.
What is AEO and how is it different from SEO?
AEO, AI Engine Optimization, is optimizing for being surfaced inside AI assistant answers rather than ranking in a list of links. SEO targets ten blue links on a results page; AEO targets the single synthesized answer a model gives when a buyer asks it which tool to buy.
How do you track brand mentions in ChatGPT and other AI tools?
You query each platform with real buyer-intent prompts and capture the raw answer plus the URLs it cited. Then a second AI pass extracts the structured fields.