Brand Studio documentation
Every provider we call, every check a report runs, what each costs, and the environment variables to run the whole thing yourself with your own keys.
Answers are written from these documentation pages and nothing else, and every page used is linked underneath. If the pages do not answer it, it says so instead of guessing. For an exact match, the search in the sidebar reads the same pages, costs nothing, and never paraphrases.
What this is for
Brand Studio turns your brand's whole online presence into context — so you, and the tools you work with, can create on your brand's behalf. That only works if every fact is right. So every fact here carries its receipt.
This is not a report you read and file. It is your brand's presence turned into context that you and your tools then create from — which is why a wrong fact is not a small error. It is a bad instruction to everything downstream.
Start here
Quick start
How it works
What the report contains
The APIs, in depth
Where a model touches your report
Run it yourself
For agents
The fourteen checks
Fourteen checks, in the order the report prints them. Each has its own page: what happens, which calls it makes, whether a model is involved, what it costs, and what absent looks like.
| # | Check | What it answers |
|---|---|---|
| 01 | Websites & pages | Up to 30 pages of your own site, rendered and kept — nav, services, locations, the lot. Not the homepage and a guess. |
| 02 | Search | Real Google results for your brand: who shows up, in what order, on the page a customer actually sees. |
| 03 | Social | Your live profiles across Instagram, Facebook, YouTube, TikTok, LinkedIn and X — follower counts, recent posts, real published dates. |
| 04 | Screenshots | Rendered captures of the pages we read, so every claim about colour, layout and hierarchy has a picture sitting behind it. |
| 05 | SEO | Every keyword's real search volume, difficulty and cost-per-click — and where you actually rank for it — plus who overlaps you and the terms they win that you don't. |
| 06 | Reputation | Wikipedia, news, app stores, podcasts, employer sites, trademarks, forums: what the public record already says about you, gathered in one place. |
| 07 | Ads | What you are running right now across four ad networks — creative, copy and start dates — from the archives the platforms are obliged to publish. |
| 08 | Logos | Every mark on your site at usable size, each with the page it came from — and a clear label on any we had to fill in from elsewhere. |
| 09 | Colors | Your palette read off the rendered page and its stylesheets, each swatch carrying the evidence line for where it was found. |
| 10 | Typography | The typefaces actually declared and loaded, split into headings and body — resolved through CSS variables, so you get font names and never variable names. |
| 11 | Voice | How you sound, written as claims — and every claim quotes the sentence of yours that proves it. A claim with no quote behind it is dropped, not softened. |
| 12 | AI visibility | What ChatGPT and Gemini say about you when someone asks, which sources they lean on to say it, and how often you are mentioned in AI answers at all. Parked in the alpha: it does not run or bill in alpha reports. |
| 13 | Reviews | Your Google Business ratings — multi-location aware, so a chain is not collapsed into one listing — and your Trustpilot score with the reviews behind it. |
| 14 | Backlinks | Who links to you, how many domains do it, how healthy that profile is, and how it compares against the competitors the run found. |
The APIs
Every outside party this product calls — including the ones wired but not configured, and the free public endpoints called with no account at all.
| Provider | What it unlocks |
|---|---|
| DataForSEO | Search, SEO, reviews and backlinks. DataForSEO supplies the search data for paid reports and the beta weekly search check; its AI lanes stay parked, and the free read never calls it. |
| ScrapeCreators | Social profiles and posts across seven platforms, the brand's own video transcripts, organic mentions, and the ad-transparency archives. |
| Firecrawl | The site capture — and with it logos, colors, typography and screenshots. |
| Context.dev | Six optional units, all off by default behind the same two gates: the report's design-system section (rendered style guide), a second opinion on five finished report claims, the quality reviewer's cross-source receipts, industry + NAICS/SIC seeding only where no human or domain-verified source exists, a one-credit competitor list beside DataForSEO's, and two rescues — interview prefill chips before a pull, and page recovery when a site blocks the crawler. None can alter a collector's output, outrank a human answer, or change the pull outcome. |
| OpenAI | The fallback door for four of the five model calls — the voice read, the confirm-step adjudicator, the quality review and the confirm-step suggestions — on a deployment that holds no Gateway key. The fifth, the AI-visibility grid, needs the Gateway and is parked in the alpha. |
| SerpApi | Four things nothing else in the stack can do, all inside the reputation check: Google's AI Mode answer for your city, whether your category's sites are buying ads, who talks about you on YouTube, and your search-interest curve. DEEPEST SETTING ONLY, AND CITY-GATED: your Google Maps listing's own verbatim reviews (with the owner's replies), and — for the home-services/legal/healthcare brands Google's Local Services program actually covers — who holds the Google Guaranteed box in your city. Without it the report still maps your category's shelves — that sweep runs on DataForSEO — but loses the AI-answer surface and the panels above. |
| Vercel AI Gateway | The door every model call goes through when AI_GATEWAY_API_KEY is set — the voice read, the confirm-step adjudicator, the quality review, the confirm-step suggestions and the AI-visibility grid. Unset it and the first four fall back to calling OpenAI directly, unchanged; the grid needs the Gateway and is parked in the alpha. |
| Resend | Delivery of the weekly change summary email, only to an account that has turned it on and only to that account's verified address. No report reads it, and it is never called on signup or when you open a report. |
| Stripe | Card checkout for credit packs and the signed payment notification that grants the credits. Off until the merchant account is confirmed; no report, balance read or provider call goes through it. |
| Supabase | Accounts, saved reports and the credit ledger. Required only for the hosted app. |
| Vercel | Hosting and the cron that drains the pull queue. Required only for the hosted app. |
| Serper | Set it and the search leg routes here instead of DataForSEO. |
| Brave Search | Web search for the local collection lane's search-context collector. |
| Apify | An alternate route to Instagram and TikTok profiles. |
| YouTube Data API | YouTube straight from Google on a free daily quota, instead of through ScrapeCreators. |
| Meta ad library (Graph API) | Real Facebook and Instagram ad rows from Meta's own archive, free. |
| Brandfetch | A logo fallback for sites whose own markup carries none. |
| Google Places API | Nothing on the hosted report — it is used only by the local brand-md collection lane. |
| Public web sources (no account, no key) | Everything below runs with no key at all, and always has. |
| Google PageSpeed Insights | Site Health — the one dimension of the website leg nothing else in the stack measures: real Lighthouse scores and Core Web Vitals for your own homepage. |
| USPTO TSDR (Trademark Status & Document Retrieval) | Brand protection — real trademark status (live/dead/pending) for a KNOWN serial or registration number. This pipeline has no name -> number lookup step yet, so this call is real but usually idle; the deterministic tmsearch.uspto.gov search link stays the default path for a bare brand name. |
Where the old links go
This page used to be the whole documentation, and it published an anchor for every section, every check and every provider. Those links still answer here — each one lands on the row below, one click from the page that now holds it.