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-26Intermediate

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.

Gemini 35Gemini Flash2AdMob9Parallel ExecutionCost Optimization13Indie Developer13

In mid-May I opened the AdMob monthly report and wondered: if I sent the same CSV to both Gemini 3 Pro and Gemini 3 Flash at once, would the two summaries leave me torn over which to trust? I am Masaki Hirokawa — an artist and creator who has been building iOS and Android apps independently since 2014. After the cumulative download count crossed fifty million, I noticed that the time I spend just staring at monthly revenue reports kept growing.

These are my implementation notes from ten mornings of sending the same AdMob report to Pro and Flash in parallel, measuring cost, latency, and summary quality. The short version: rather than pick one, I landed on a workflow where each model plays a different role in the same day.

Why I Wanted to Run Them Side by Side

Back in 1997, when I first got online at sixteen, I used to post the same question on three different forums and read the differences between the replies to understand a problem in three dimensions. Trying Pro and Flash together felt like an extension of that habit. Rather than trusting one model's answer, I find that reading the gap between two answers sharpens my own judgement as an indie developer.

The practical motivation was more concrete:

  • The monthly AdMob CSV is split into three sheets — eCPM by country, RPM by ad unit, and fill rate — and I always end up staring at it for fifteen minutes or more
  • Pro alone gives plausible conclusions but it is hard to feel the accuracy difference on months with small movements
  • Flash alone is fast and cheap, but occasionally summarises numerical interpretation a bit loosely
  • Putting them side by side might help me decide where to act next month, faster

After twelve years of indie app development, I know that more data points just slow decisions down. So I deliberately constrained the experiment: two models in parallel, the human still synthesises.

Parallel Setup

The setup is small: Python's asyncio sending the same prompt to Pro and Flash, then laying the two summaries side by side.

import asyncio
from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_GEMINI_API_KEY")
 
PROMPT = """
For the attached AdMob monthly report (CSV text), write the following
three points as a bullet list in English:
- Countries where eCPM moved by 5% or more vs last month, with a hypothesis
- Ad units where fill rate is dropping and probable causes
- Adjustments to test next month (floor price, mediation order, new formats)
Prefix any speculative reasoning with "Speculation:".
""".strip()
 
async def call(model: str, csv_text: str) -> dict:
    resp = await client.aio.models.generate_content(
        model=model,
        contents=[csv_text, PROMPT],
        config=types.GenerateContentConfig(
            temperature=0.3,
            max_output_tokens=1200,
        ),
    )
    usage = resp.usage_metadata
    return {
        "model": model,
        "text": resp.text,
        "input_tokens": usage.prompt_token_count,
        "output_tokens": usage.candidates_token_count,
    }
 
async def run(csv_text: str):
    return await asyncio.gather(
        call("gemini-3-pro-latest", csv_text),
        call("gemini-3-flash-latest", csv_text),
    )

If you let asyncio.gather fail on either side you lose both responses, so in production I wrap the try/except inside each call and keep the half that succeeded. Both of my grandfathers were temple carpenters, and watching them build assuming they would have to repair things later left me with a habit of putting these small fallbacks in early.

Ten Days of Measurements — Cost and Latency

From May 15 to May 24 I sent the same CSV (running month-to-date through the previous day) every morning. Averages over ten runs:

  • Input tokens: around 9,500 (CSV fed in as raw text)
  • Pro latency: 11.4 seconds average, output 540 tokens
  • Flash latency: 3.2 seconds average, output 480 tokens
  • Cost feeling: Flash came in at roughly one-seventh of Pro's cost based on the published pricing table

Over the ten days, total API cost was about 80 yen for Pro and 12 yen for Flash. For someone who has done indie development for twelve years, that is well within the value of recovering "fifteen minutes of staring at a spreadsheet" each morning.

The latency gap was more felt than I expected, and a natural rhythm emerged: read Flash's reply first, then decide whether to wait for Pro. The first three lines of Flash usually tell me whether Pro is worth waiting for.

Where the Summaries Differed — Depth of Numerical Reading

Reading the ten days side by side, the difference between Pro and Flash was less about what they picked up and more about how deeply they read the numbers.

For example, one day India's eCPM was up 18 percent month-on-month.

  • Flash's summary: "India eCPM up 18%. Probably seasonal demand."
  • Pro's summary: "India eCPM up 18%. Same month's fill rate dropped 3 points, so this may not be a demand surge — fill is tightening and only the higher-CPM inventory is passing through. Recommend raising the floor price by 0.05 to see how fill responds."

Flash was not wrong, but Pro reached into the relationship with fill rate. That kind of multi-indicator reading is where the difference showed up most.

Conversely, Flash was better at "short, listed, scannable" outputs. For a Slack-ready summary or a quick weekly note, Flash sometimes read more naturally to me.

Where I Settled — Split Roles

After the ten days, I settled on this split:

  • Daily check: Flash only. The three-second reply tells me whether it is a Pro day
  • Weekly deep read: Pro only. Multi-indicator interpretation and concrete next-week tests
  • End-of-month summary: Both in parallel — Flash's list combined with Pro's interpretation, then I write the final note myself

Official docs frame Pro as the reasoning model and Flash as the speed-and-cost model. After using both daily in a real project, I find a two-tier flow — "Flash to scan the whole picture, Pro to read deeply" — fits indie operations better than picking just one.

What I Want to Try Next

The next experiment is a two-stage pipeline: let Pro write the long interpretation, then have Flash compress it into three lines for Slack. I am also testing the Gemini Batch API for processing the previous month in bulk overnight.

At the scale of fifty million downloads, time evaporates just watching numbers. Letting the AI handle the "first reading" and reserving my own attention for "what to actually change" feels more realistic in year twelve of indie development.

If you also run AdMob solo, I hope these notes help.

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 →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

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-24
Apple Vision Framework × Gemini API: Hybrid Image Recognition — Cutting Wallpaper App Cloud Inference Costs by 70%
How I built an on-device prefilter with Apple Vision Framework to cut Gemini Vision API calls by more than half in my iOS wallpaper app. Real cost, accuracy, and latency numbers, with the gotchas an indie developer hits along the way.
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 →