v0.0.20: Paid Placements, Prompt Demand & Light Appearance
See when an AI answer carries a sponsored block, rank tracked prompts by demand already in your scan history, grade structured data inside the site audit, and use the product in light appearance. Plus a deeper pass across rankings, alerts, traffic, search, reports and domains.
See the ads sitting next to you
Paid Placement Detection
ChatGPT answers and AI shopping surfaces now carry labelled ads. Every scan flags an answer that contains a “Sponsored” or “Ad” block, a paid shopping or product card, or any other clearly promotional placement, and the Rankings page shows that flag per engine and per answer. Organic mentions stay organic: a missing flag is not a confident “no ads”, because older scans never recorded the field.
Rank prompts by what engines already talk about
AI-Query Demand
The prompt library now ranks your tracked prompts by demonstrated demand from your own scan history: how many distinct phrases engines have already been asked, or already claimed, that share a significant keyword with the prompt. High / medium / low is a coarse band over that overlap count, not a market volume. With no completed scan yet, the library reads as “no evidence yet”, never as measured demand. Search Console import still carries estimated monthly volume where a keyword provider is configured; this band is the AI-side counterpart.
Measure the schema, don’t just recommend it
Technical AEO Audit
The site-wide content audit now grades each page’s structured data with the same structural validator the schema validator already ships: a 0–100 score from the JSON-LD in the page <head>, plus the schema.org types it actually covers. A missing schema is a missed opportunity (not a zero); a broken one scores worse. Weak grades come with a concrete next step, so the audit names the fix instead of only advising that schema would help.
A dashboard you can use in daylight
Light Appearance
The product now follows the system appearance, or a light / dark choice you set yourself. Marketing pages, the dashboard and shared reports all share the same tokens, so a client opening a report in daylight is not dropped into a dark theme they did not ask for.
Deeper every surface
Rankings, Alerts and Content Gaps
Rankings gained per-query deltas, win/loss, sentiment, a Google-gap annotation and a JSON export. Alerts gained an unread bell, more trigger types, and per-project threshold overrides on paid plans. Content gaps split citation from mention and added an engine-visibility matrix.
Traffic, Search and Domains
Traffic gained a realtime view, UTM channels, custom date ranges and CSV export. Search Console now flags sustained content decay (clicks that fell past the same floor in two consecutive windows, not a one-week blip). Domains gained a CNAME verification method, a score-history sparkline and an SSL-expiry callout.
Reports You Can Edit, Template and Host
A scheduled shared report can now be edited after it is created (recipients, cadence, pause), and shows its delivery history. Saved templates remember a report-builder config. Agency workspaces can serve the report on their own host (reports.youragency.com): the branding tab attaches and verifies the domain, and a custom mail From is set once the sending domain is verified.
Take the data with you
CSV on Every Read, and on the API
Every dashboard table (recommendations, Search Console, traffic, the monitoring hub) now exports CSV. The public API gained the same shape on its read routes. A scan still exports one scan at a time from the browser; there is no bulk history dump.
Want to shape what we build next?
See what we're building next, and tell us what you need.

