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. An empty corpus (no completed scan yet) 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, from data you already paid to collect.
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, a sentiment score, a Google-gap annotation, position volatility, and an alert when a query changes position class, plus sort and a JSON export. Alerts gained an unread bell, row drill-down, baseline score and sentiment dips, citation-rate and unranked-spike triggers, a per-engine list filter, competitor-opt-in findings, and per-project threshold overrides on paid plans. Content gaps split citation from mention, added an engine-visibility matrix, table search, a gap-count trend and competitor-authority qualifiers.
Traffic, Search and Domains
Traffic gained a realtime view, engagement micro-events, UTM channels, a source filter, custom date ranges, previous-period spike and drop warnings, per-bot 4xx/5xx rates on statused requests, and CSV export. Search Console now flags sustained content decay (a query or page whose clicks fell past the same floor in two consecutive equal windows, not a one-week blip), plus gap drill-down with engine detail, page-one bands and drop warnings. Domains gained a CNAME verification method, a score-history sparkline, nightly re-check of existing proofs, an SSL-expiry callout and a monitoring-hub CSV.
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; a what-changed narrative sits on the share itself. Agency workspaces can serve the token-gated 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 Resend-verified.
Take the data with you
CSV on Every Read, and on the API
Every dashboard read that was already a table (recommendations, Search Console, traffic, the monitoring hub) now exports CSV. The public API gained the same shape on its read routes, so a script can pull what the page shows without scraping it. A scan still exports one scan at a time from the browser; there is no bulk history dump.
Under the hood
- Industry benchmarks shipped as an opt-in, anonymised percentile index and stay labelled experimental: the public page publishes a bucket only once five or more workspaces in that industry have opted in.
- Launch-gate hardening across assistant suspension, brand-safety lookups, stacked alerts, Search Console date windows and the latest-scan surfaces (SEO-data and companion scans no longer appear as your brand’s latest result).
- Phase-3 security: tighter throttles, cache and token cutoffs, and policy-role checks.
- Tenant-isolation and scan-pipeline fixes on the money path (paid budget accrual, dedup revival, and adopt-path reconcile), so a retry cannot double-charge.
Want to shape what we build next?
See what we're building next, and tell us what you need.

