GEMINI LABJP
CHAT — Tomorrow, August 26, Google Chat becomes the Ask Gemini hub: searching, drafting, catching up on threads, and managing tasks and events all land in one place with Workspace context intactSEARCH — AI Mode in Google Search is now sometimes served by Gemini 3.7 Flash. Response characteristics on the search side shift with it, which is worth checking if you watch your traffic mixSTUDIO — Developer logs now cover the Interactions API. Supported calls can be traced from the AI Studio dashboard, which makes triage easier before you have logging of your ownTTS — gemini-3.1-flash-tts-preview now supports streaming speech generation through streamGenerateContent, so playback can start before generation finishesROBOTICS — gemini-robotics-er-1.6-preview shuts down on August 31, six days out. The ER 2 line succeeds it with spatial reasoning, multi-step tool orchestration, and multi-robot coordinationSTUDENT — Gemini added a student hub, study notebooks, interactive visualizations, and Deep Research in Gemini Live, with a free year of Google AI plans for eligible studentsCHAT — Tomorrow, August 26, Google Chat becomes the Ask Gemini hub: searching, drafting, catching up on threads, and managing tasks and events all land in one place with Workspace context intactSEARCH — AI Mode in Google Search is now sometimes served by Gemini 3.7 Flash. Response characteristics on the search side shift with it, which is worth checking if you watch your traffic mixSTUDIO — Developer logs now cover the Interactions API. Supported calls can be traced from the AI Studio dashboard, which makes triage easier before you have logging of your ownTTS — gemini-3.1-flash-tts-preview now supports streaming speech generation through streamGenerateContent, so playback can start before generation finishesROBOTICS — gemini-robotics-er-1.6-preview shuts down on August 31, six days out. The ER 2 line succeeds it with spatial reasoning, multi-step tool orchestration, and multi-robot coordinationSTUDENT — Gemini added a student hub, study notebooks, interactive visualizations, and Deep Research in Gemini Live, with a free year of Google AI plans for eligible students
Articles/Advanced
Advanced/2026-08-25Advanced

Rebuilding the CTR Denominator After AI Search Fans Out Your Queries

My top five queries by impressions all had zero clicks, and four of them were not phrases a person would type. Here is how I rebuilt the denominator and where I let Gemini make the call.

gemini109ai-modesearch-consoleanalyticsstructured-output28

Premium Article

I sorted last week's search data by impressions and looked at the top of the list. The first five rows all had zero clicks.

My first instinct was that the titles were weak. Decent positions, nobody clicking — that usually points at the headline.

Then I actually read the queries.

rork.com core business features target audience — I could not picture a person typing that into a search box.

The five queries sitting at the top

The site in question is one I run alongside my work as an indie developer: a technical site covering app development tooling. Total impressions for the period were 41,700.

QueryImpressionsClicks
rork.com core business features target audience1,3710
rork max swiftui features and ai capabilities1,2820
onspace vs rork for complex app logic1,1490
expo audio continue playing screen locked react native 20251,0230
rork max swiftui features and native app generation6240

That is 5,449 impressions, or 13.1% of the total, with zero clicks across the board.

Three of the first four read wrong. core business features target audience is a stack of attribute nouns. features and ai capabilities follows the same shape. onspace vs rork for complex app logic even carries its own comparison axis inside the phrase.

People do not search that way. A person types rork max pricing — short, only the words they need.

These are sub-queries that an AI search layer generated internally. One question comes in, and the system decomposes it into somewhere between eight and sixteen retrieval queries to assemble an answer. The behaviour is documented as query fan-out, and Google describes how impressions are counted on AI-powered search surfaces — but the report does not separate them from human searches for you.

So my CTR denominator contains impressions that structurally cannot produce a click.

Never put click count in the classifier

I nearly walked into the obvious trap here.

"Zero clicks plus high impressions" would make a tidy rule. All five rows above satisfy it.

But apply that rule and CTR rises the moment you exclude anything. You are removing exactly the impressions that contribute nothing to the numerator. That is not an improvement; it is arithmetic engineered to flatter itself.

I have built metrics like that before — the kind that always move in the direction you were hoping for. The danger is not the first wrong number. It is that once a metric starts agreeing with you, you stop checking it.

So I decided the classifier would ignore clicks entirely and look only at the shape of the query string. If a high-click query ever gets flagged as synthetic, that tells me the rule is wrong, and I want that failure mode to stay visible.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
You will be able to tell, from your own data, whether a rise in impressions came from readers or from machine-generated sub-queries
You will know when a falling CTR calls for a rewrite and when it calls for a look at what is sitting in the denominator
You will be able to report effective CTR honestly, knowing the exclusion policy alone moves it from 0.73% to 0.81%
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

Advanced2026-08-24
A Provenance Gate That Never Asks Gemini to Name the Country
How I rebuilt the pre-publish provenance check for a ukiyo-e wallpaper app, moving from asking the model to name a country to asking it only to list the marks physically present on the paper. Includes the working code, the decision table that lives on my side, and why an abstain path had to come before accuracy.
Advanced2026-06-14
Trusting Gemini Structured Output in Production — Schema Design, Double Validation, and Bounded Retries
Gemini's structured output guarantees parseable JSON, not correct values. Notes on schema design with @google/genai, why propertyOrdering matters, a Zod double-validation layer, handling MAX_TOKENS truncation, and a bounded-retry extraction pipeline.
Advanced2026-07-12
Spend Deep Reasoning Only Where It's Needed: Per-Request thinking_level Routing in Gemini
Running every request at high thinking_level bloats latency and cost; forcing low drops accuracy on hard questions. This walks through a router that picks Gemini 3.x thinking_level per request from an inexpensive difficulty estimate, keeping p95 latency inside a mobile budget while reserving deep reasoning for the questions that need it — with measured numbers and working code.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →