GEMINI LABJP
NANOLITE — Nano Banana 2 Lite is here: Google's fastest and most cost-efficient Gemini Image model, made for running lightweight image generation cheaplyOMNIFLASH — Gemini Omni Flash is in public preview, a natively multimodal model that lets enterprises and developers build custom, dynamic video workflowsAGENTS — Managed Agents expand with background: true for async server-side runs and polling, remote MCP server integration, and refreshing credentials across interactionsMEMORY — The Memory Bank IngestEvents API is generally available, decoupling event ingestion from memory generation so you can stream content continuouslyTHROUGHPUT — Provisioned Throughput now lets you submit up to seven pending orders for the same model and regionDEPRECATE — Image generation models shut down on August 17, and the Grok 4.1 family on the Gemini Enterprise Agent Platform on August 20NANOLITE — Nano Banana 2 Lite is here: Google's fastest and most cost-efficient Gemini Image model, made for running lightweight image generation cheaplyOMNIFLASH — Gemini Omni Flash is in public preview, a natively multimodal model that lets enterprises and developers build custom, dynamic video workflowsAGENTS — Managed Agents expand with background: true for async server-side runs and polling, remote MCP server integration, and refreshing credentials across interactionsMEMORY — The Memory Bank IngestEvents API is generally available, decoupling event ingestion from memory generation so you can stream content continuouslyTHROUGHPUT — Provisioned Throughput now lets you submit up to seven pending orders for the same model and regionDEPRECATE — Image generation models shut down on August 17, and the Grok 4.1 family on the Gemini Enterprise Agent Platform on August 20
Articles/API / SDK
API / SDK/2026-05-20Advanced

Surfacing AdMob Floor Price Candidates from Weekly Reports with Gemini 2.5 Pro — A Six-App Indie Operations Note

A practical pipeline for moving AdMob floor price tuning from gut feel to data, using Gemini 2.5 Pro to read weekly CSV exports. Notes from operating six wallpaper apps in parallel, with Function Calling to produce structured candidate values.

Gemini 2.5 Pro17AdMob9MediationFloor PriceIndie Developer13CSV AnalysisFunction Calling16

Premium Article

The first thing that surprised me about AdMob floor prices was how long it takes to know whether an adjustment was a good one. A week is the minimum honest window, and even that often gets contaminated by seasonality or weekday effects. Move floors too aggressively and you mistake noise for signal. Leave them alone and you let bidders win cheaply on impressions that should have been priced higher. Running six apps in parallel as an indie developer, I watched AdMob mediation get quietly more involved over time. Manually pawing through weekly CSV exports stopped scaling, so I shifted the floor-price reading work over to Gemini 2.5 Pro — not to have the model decide, but to have it lay out the same decision material in the same shape every week.

These notes describe the implementation I actually use to feed AdMob CSV exports into Gemini 2.5 Pro and get structured floor price candidates back. Because the ad network's eCPM numbers are inherently a black box, the goal is not to ask AI to produce the optimal value. The goal is much smaller: produce the same comparison table every week in the same shape, so a human can read it quickly and decide.

Why "gut feel" on floors loses precision over time

An AdMob floor price tells each ad unit (or each bidding participant) "skip bids below this number." Setting it does not produce instantly observable change. You need enough auction volume to accumulate before fill rate and eCPM both start moving. From the wallpaper apps I operate (DAU in the low thousands to low tens of thousands), the rules of thumb I have built up empirically look like this.

  • Raising a floor by 30% on rewarded units typically drops fill rate by 5 to 10 percentage points and lifts eCPM by tens of percent. The variance by unit and by country is wide
  • Set the floor too low (or leave it unset) and some bidding networks come in extremely cheap, dragging median eCPM down
  • Within one app, Open Ads, Interstitial, and Rewarded each have a different sensitivity. Open Ads has thinner demand, so raising the floor too far breaks fill quickly

Keeping all that in your head while you reconcile six apps multiplied by three or four units multiplied by five to ten major countries every week is, in practice, impossible. Color-coding a spreadsheet only takes you so far before something slips. A human still has to decide what to observe; Gemini can do the observing.

What weekly viewing looks like across six apps

Every Monday morning I download fourteen days of metrics from the AdMob console in two slices. One slice is at ad unit granularity, the other at country granularity. That produces six apps times two slices, or twelve CSV files, which I park in a dated folder like ~/admob-weekly/2026-05-20/. Before any of it touches Gemini, I open one or two CSVs by eye to make sure no unfamiliar column has appeared in the export.

Past floor changes live separately in floor-history.csv, which I edit by hand. The columns are simply date, app_id, ad_unit, country, old_floor, new_floor, reason. This file is the anchor that lets me tell Gemini "only treat last week's changes as a possible explanatory factor." The idea is to feed the model context I have committed to, rather than letting it invent reasons.

~/admob-weekly/
├── 2026-05-20/
│   ├── kabegami_lite_iOS_ad_unit.csv
│   ├── kabegami_lite_iOS_country.csv
│   ├── kabegami_lite_Android_ad_unit.csv
│   ├── kabegami_lite_Android_country.csv
│   ├── ...(remaining four apps x two OSes x two slices)
│   └── floor-history.csv
└── 2026-05-13/
    └── ...

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
Concrete implementation that extracts eCPM dips from AdMob weekly CSVs with Gemini 2.5 Pro and emits structured floor price candidates
Real-world numbers for eCPM, fill rate, and ARPDAU from operating six wallpaper apps in parallel, with a candid view of what changed and what didn't
Function Calling pattern that returns 'next floor to try' and 'units to hold' as JSON, ready to feed into a Slack approval flow before AdMob console edits
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 $10 for lifetime access
View Membership →

Related Articles

API / SDK2026-05-27
Letting Gemini Flash Decide continue / pause / rollback for Staged Rollouts: An Indie Developer's Three-Signal Engine
How I built a Gemini Flash decision engine that reads Firebase Crashlytics, App Store / Google Play reviews, and AdMob revenue together, and outputs continue / pause / rollback for each staged rollout across six indie apps. Numbers from two months of production use included.
API / SDK2026-05-26
Running Gemini 3 Pro and Flash in Parallel on AdMob Monthly Reports — Notes from Ten Mornings
Implementation notes from sending the same AdMob monthly report to Gemini 3 Pro and Gemini 3 Flash in parallel for ten days. Cost, latency, and summary quality compared from an indie developer's perspective.
API / SDK2026-05-22
A Gemini API Control Plane for Indie Developers Running an App Portfolio
When you run several apps (wallpaper, healing, manifestation) on Gemini API, keys scatter and per-app cost attribution disappears. This is the three-layer control-plane architecture I have used for twelve months, with the traps that only show up over time.
📚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 →