Project title
Showrunner: every show you want, one subscription at a time
Tagline
An autonomous watchlist agent on Gemini 3.5 Flash that schedules your streaming year — and pauses everything you are not watching.
Elevator pitch
Households keep five or six streamers running all year “just in case,” and burn more than a hundred dollars a month on seasons that are not even on. Showrunner is the agent that actually runs your watchlist. You tell it what you want to see in plain English. Gemini names the titles, Tavily cites where they live and when they drop, and a deterministic scheduler — not the model — builds a twelve-month rotation so you only pay for the one service that has your next episode. Then Gemini Computer Use logs into a billing sandbox and clicks pause and resume on schedule. Same shows. Hundreds of dollars back. Zero spreadsheet.
One-liner (badge / tweet)
Showrunner greenlights your watchlist and parks every subscription you do not need this month.
About the project
What inspired me
It started as an informal conversation about TV, not a product brief. A few of us were trading what we were actually watching — a prestige drama on Max, something weekly on Apple TV+, a Netflix drop we were saving for a weekend — and the pile of apps on the home screen became the joke. Everyone was paying for five or six services so they would not miss one season. Nobody wanted a spreadsheet. Nobody wanted another “cancel for me” concierge that does not know when Severance comes back.
I asked, roughly: if something just rotated the subscriptions for you, so you only paid for the service that had the next show, would you use it? Several people said they would pay for that. That was enough. The product is not “churn.” It is getting every show you already intended to watch, without leaving the meter running.
The Taskmaster track made the rest obvious. A chatbot that recommends a cheaper plan is a blog post. An agent that ingests a messy watchlist, commits to a calendar, and then actually pauses and resumes services in the background is the chore people were describing.
How I built it
Showrunner is a hybrid on purpose. Language models are good at unstructured desire (“Denis Villeneuve and HBO dramas”). They are bad at invoices. So the pipeline is four stages, and only one of them is allowed to touch money.
Ingest. Gemini 3.5 Flash names the titles in a natural-language prompt. Tavily searches the live web for platform and release facts. Gemini then emits structured
Showrecords from those citations, overlaid on a small curated catalog so common titles stay consistent.Schedule. A pure TypeScript function,
schedule(watchlist, budget, horizon), implements a greedy rotation with viewing windows. Binge titles can slide a few months after drop. Weekly titles default to wait-to-binge: pay for one month after the finale instead of the whole airing span. Same-platform shows stack into a shared activation. The model never writes a dollar amount.
Savings versus leaving every touched service on for the whole horizon:
$$ \mathrm{savings} = \sum_{p \in P} c_{p} \cdot |H| - \sum_{m \in H} \sum_{p \in A_{m}} c_{p} $$
The first sum is naive cost (every touched platform billed for every month). The second is what the solver actually spends. P is the set of platforms on the watchlist, cₚ their monthly prices, H the planning horizon, and Aₘ the platforms activated in month m.
A placement is legal under monthly ceiling B only if:
$$ \text{cost}(m) + \mathbf{1}[p \notin A_m]\, c_p \le B. $$
Explain. A second Gemini pass reads the solver output and writes the trade-off story — why a title moved a month, why wait-to-binge collapsed three Max months into one. If the numbers and the prose disagree, the numbers win.
Execute. The plan and lifecycle actions (
ACTIVATE,PAUSE, plus virtual-card freeze/unfreeze) persist to Cloud Firestore. On a simulated clock tick, Gemini Computer Use drives Playwright against a sandbox billing portal (/portal) and clicks the labeled Pause/Resume buttons. Live Netflix/Hulu logins are out of scope: no passwords, no ToS theater, no flaky 4-minute demo. The same loop is the mechanism; the sandbox is the honest surface.
The app is Next.js on Cloud Run. The scheduler is unit-tested (including the spec’s worked example: three platforms, a $20 cap, ~\$270 saved on a six-month horizon). Locally, Firestore falls back to in-memory so the demo still runs.
Challenges I ran into
Hallucinated calendars. Gemini alone will happily invent a release month. The first ungrounded pass put a White Lotus season in a window that did not match reality. Tavily as a cite-then-extract step — titles first, web evidence second, JSON last — was the fix. The model is not allowed to “remember” a date the search did not support.
Putting the LLM inside the optimizer. The tempting architecture is one giant prompt: “build me the cheapest year.” That is how you get a confident \$17.99 that is actually \$18.99, or a plan that violates the budget. Splitting probabilistic extraction from a deterministic greedy solver was more discipline than more code. The math had to stay a pure function with no I/O.
Computer Use on the real internet. Pointing Gemini at hulu.com/account looks spectacular in a slide and dies in a demo: 2FA, bot detection, require_confirmation on money actions, and terms of service. The StreamHouse sandbox is a fake account page with huge labeled buttons. Computer Use still sees a screen and clicks; judges can watch /portal update in another tab. If Chromium is missing, the same state machine applies via API and says so in the log.
Latency. A discover call is two Gemini round-trips plus Tavily. That is fine for a watchlist and too slow to pretend it is autocomplete. I kept the scheduler in milliseconds so the expensive model work is only the unstructured edges.
What I learned
People will pay to stop managing subscriptions, not to get another reminder. The conversation that started this was about shows, not bills.
The useful agent pattern for this problem is boring in the middle: search to ground, solver to guarantee, model to talk and to click. “Agentic” does not mean the model owns every step. It means the system can take a messy chore — a watchlist, a budget, a year of billing dates — and finish it without a human driving each pause.
I also learned that a demo of autonomy needs a surface you actually control. Computer Use is the novelty. A portal you own is what makes it true.
Built With
- gemini
- genai
- tavily
- typescript
Log in or sign up for Devpost to join the conversation.