It was a Monday morning in May 2026, and I was doing what I usually do at that hour: opening the AdMob console and walking through the mediation waterfalls for my four wallpaper and relaxation apps. One ad network's eCPM had collapsed in the past week. Another smaller network was suddenly outperforming. I'd reorder the waterfall, then repeat the same dance across the remaining three apps. Even when I was focused, it took around forty minutes — the most productive block of my Monday morning, quietly disappearing into clicks and copy-paste.
I've been running these apps as an indie developer since 2014, and the catalog has grown into something close to 50 million cumulative downloads. AdMob mediation revenue is the spine of the whole thing, which is exactly why I can't take human judgment out of it entirely. But the part where I'm just shuffling rows on a web console — that part probably didn't need me anymore.
Two weeks ago, I pointed Antigravity's Browser Sub-Agent at this workflow. I wasn't aiming for full automation. The goal was to move into a model where the AI drafts the work I used to do by hand, and I show up only for the final call. Here's what came out of those two weeks.
Why I started — the manual sweep had become low-value time
I want to be honest first: I never disliked the mediation review itself. I actually enjoyed it. The shifts between ad networks often told me something about the broader market — seasonal demand, macro mood, regional creative trends — and those signals sometimes fed back into app-side decisions, like when to push a featured collection or schedule a campaign.
But once the catalog grew to four apps, each with three to five ad units, and each unit running five to eight mediation sources, just reading the data started consuming thirty to forty minutes. I was spending more time on page transitions than on actual judgment. That ratio started feeling wrong earlier this year.
My grandfathers on both sides were temple carpenters, so I tend to give weight to manual craft. But even they almost certainly separated the rough prep from the careful chisel work. Mixing the two was my own sloppiness in workflow design, not a sign that the prep itself was sacred.
What I delegated, what I kept
The first thing I locked down was where the responsibility line sat. The Browser Sub-Agent can actually click around inside the AdMob console, and giving an AI free hand on revenue-affecting changes was a non-starter. So I split it roughly like this:
- Delegated to the AI: pulling the past 7-day eCPM, fill rate, and impressions for each mediation group; summarizing the change versus the prior four weeks; emitting a recommended reordering as Markdown; surfacing the delta between recommendation and current state
- Kept for myself: actually moving the rows; adding new mediation sources; toggling between open bidding and traditional waterfall; touching the eCPM floor
- Shared: deciding what to leave alone this week (if the AI's recommendation matched my gut, hold; if not, ask the AI to re-explain)
In short, the agent observes and proposes; the human still commits the change. I redrew this line a few times during the first three days, but by week two it had settled.
The flow that actually ran
The workflow that ended up running every Monday at 7 a.m. looks like this:
- Antigravity spins up a Browser Sub-Agent session and logs in to the AdMob console. The two-factor prompt still goes to my phone — I have to be physically present for that one moment, but only for that
- The agent walks through the mediation groups for all four apps and grabs the past 7-day and past 28-day metrics
- It organizes the data inside the Antigravity workspace and diffs it against last week's snapshot
- It surfaces only the sources where the change crossed a threshold I set (in my case, eCPM swing of ±15% or fill rate swing of ±5%) and emits reorder proposals as Markdown
- I read the output in the IDE and tag each item as "accept," "hold," or "needs my own dig"
- I — not the agent — apply the accepted changes by hand inside the AdMob console
First Monday: twelve minutes of actual time at the keyboard from 7 a.m. Second Monday: eight minutes. The agent flagged an average of 2.4 sources per week as above-threshold; only one per week genuinely required deliberation.
The unexpected parts, and what I had to fix
Not everything went smoothly. Three things bit me hard enough to be worth writing down.
First, dynamic rendering inside the AdMob console. On the very first session, the agent grabbed only the top five rows of each waterfall because it never expanded the "show more" affordance. It just read what was already on screen. Adding an explicit instruction to my prompt — "press the 'show more' button at the bottom right of each table until it disappears" — fixed it. Browser agents treat anything off-screen as non-existent; what humans do reflexively (scrolling) has to be spelled out.
Second, session expiry between apps. AdMob logs you out after a quiet stretch. On one early run, the agent hit a login screen after finishing the third app and tried to enter something — anything — into the login form to keep moving. That was terrifying. I restructured the workflow so all four apps' data pulls happen in one continuous five-minute window inside a single session.
Third, the reasoning behind recommendations was vague at first. The agent kept saying things like "eCPM is down, demote one rank." I added a prompt requirement: every recommendation must include the four-week trend and, where available, the same week's number from a year ago. That single change made my final decisions much faster — I could immediately distinguish a one-week blip from a structural shift.
What the freed-up time actually surfaced
Honestly, the thirty minutes I saved isn't itself meaningful. Monday mornings are just a bit quieter. What mattered was that a slice of those thirty minutes started going into looking at the same ad networks from a different angle.
One example: I noticed a mid-tier network had two consecutive weeks of iOS-only eCPM growth. Digging around outside the AdMob console, I found an external article suggesting a particular creative format was landing in the Japanese market. That's not something the AI's recommendation would ever surface. The fact that the AI flagged "reorder this row" became a small trigger for me to go look at something broader.
When you run on both the App Store and Google Play, it's easy to miss platform-specific shifts. Handing the row-shuffling to the Browser Sub-Agent quietly pushed me into the role of "the one who watches structural change," which is, looking back, the most valuable outcome of these two weeks.
What I'm still tuning
This isn't a finished setup, so a few things are mid-adjustment.
One is that open bidding is now covering enough networks that the meaning of the waterfall rank itself is fading. I'm in the middle of rethinking the recommendation prompt to emit both a "waterfall-first proposal" and a "bidding-leaning proposal," starting next month.
The other is that I'd like to fold in version data from Crashlytics — specifically, which ad SDK versions are crashing — as part of the mediation review judgment. That's going to be a separate experiment combining the Browser Sub-Agent with the Crashlytics workflow, so I'll cover it in its own write-up.
50 million downloads is a big number for a one-person operation, and that's exactly why small operational decisions move revenue. Which is why I want to delegate the parts that can be delegated, and stay in the seat of "the one reading what's behind the data." The Browser Sub-Agent is a quiet but effective tool for staying in that seat.
If you're thinking about a similar setup, the first thing to measure is your own time: how much of your current workflow is judgment, and how much is page transitions and copy-paste? If there's a thirty-minute block in the second category, it's probably worth carving out for a Browser Sub-Agent.