<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bhagyashree Gonte</title>
    <description>The latest articles on DEV Community by Bhagyashree Gonte (@bhagyashreegonte22).</description>
    <link>https://dev.to/bhagyashreegonte22</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3936295%2F99ce9d12-acb4-4048-86cc-17f82216ce24.png</url>
      <title>DEV Community: Bhagyashree Gonte</title>
      <link>https://dev.to/bhagyashreegonte22</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhagyashreegonte22"/>
    <language>en</language>
    <item>
      <title># 🏏 Captain Cool — I Built a Multi-Agent IPL Match Strategist on Google Gemini in 3 Hours</title>
      <dc:creator>Bhagyashree Gonte</dc:creator>
      <pubDate>Sun, 17 May 2026 13:15:41 +0000</pubDate>
      <link>https://dev.to/bhagyashreegonte22/-captain-cool-i-built-a-multi-agent-ipl-match-strategist-on-google-gemini-in-3-hours-35no</link>
      <guid>https://dev.to/bhagyashreegonte22/-captain-cool-i-built-a-multi-agent-ipl-match-strategist-on-google-gemini-in-3-hours-35no</guid>
      <description>&lt;h1&gt;
  
  
  🏏 Captain Cool — I Built a Multi-Agent IPL Match Strategist on Google Gemini in 3 Hours
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What would Dhoni do here?"&lt;/em&gt; — Every cricket fan, every tense over, ever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I just built &lt;strong&gt;Captain Cool&lt;/strong&gt; — an agentic AI system that thinks like an IPL captain. You feed it the live match state, and it debates internally before giving you the next tactical call: who bowls, who bats, when to take the timeout, when to unleash the Impact Player.&lt;/p&gt;

&lt;p&gt;Here's how I built it in 3 hours for the GDC hackathon, entirely on the &lt;strong&gt;Google Gemini stack&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 The Problem
&lt;/h2&gt;

&lt;p&gt;Cricket captaincy is one of the most cognitively demanding jobs in sport. In a T20 match, a captain makes dozens of split-second decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which bowler handles the left-hander with dew on the ball?&lt;/li&gt;
&lt;li&gt;Do you burn your Impact Player in the 14th over or save for death?&lt;/li&gt;
&lt;li&gt;Is this the right moment for a strategic timeout to break the momentum?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No AI assistant I'd seen could reason about this the way a real captain does — with &lt;strong&gt;context, dissent, and cricket language&lt;/strong&gt;. So I built one.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Architecture Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Input (Match State)
        │
        ▼
┌─────────────────────────────────────────────────┐
│              ORCHESTRATOR LAYER                 │
│         (Gemini 2.5 Flash Coordinator)          │
└──────┬──────────────┬──────────────┬────────────┘
       │              │              │
       ▼              ▼              ▼
┌──────────┐  ┌────────────┐  ┌──────────────┐
│  STATS   │  │ STRATEGIST │  │ DEVIL'S      │
│ ANALYST  │  │   AGENT    │  │ ADVOCATE     │
│  AGENT   │  │            │  │   AGENT      │
└──────┬───┘  └─────┬──────┘  └──────┬───────┘
       │             │                │
       │     Live Cricket Stats API   │
       │     (Cricbuzz / ESPN)        │
       └─────────────┴────────────────┘
                     │
                     ▼
            ┌────────────────┐
            │  COMMENTATOR   │
            │    AGENT       │
            └────────┬───────┘
                     │
                     ▼
         Final Decision + Debate + Commentary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Four named Gemini-powered agents, each with its own system prompt, each doing a real job.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 The Four Agents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 📊 Stats Analyst Agent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; Pulls real match data and player statistics, then summarises what the numbers say.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a cricket data analyst with access to live match feeds and historical player stats.
Your job is to:
- Retrieve current bowler economy rates, wickets taken, overs remaining
- Look up batter vs bowler matchup history (e.g., "Bumrah vs left-handers in death overs")
- Report the pitch conditions, dew factor probability, and venue history
- Output a structured stat summary — no opinions, just facts and numbers

Speak like Jarrod Kimber, not a spreadsheet. Make the numbers tell a story.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tool Call:&lt;/strong&gt; This agent makes a &lt;strong&gt;live Cricbuzz/ESPN API call&lt;/strong&gt; to fetch real match state — player stats, current economy, wickets, and over-by-over data. No hardcoded JSON.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Gemini function calling — Stats Analyst tool definition&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;statsToolDeclaration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;get_live_match_stats&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Fetches live match data, player stats, and historical matchup records from Cricbuzz API&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;match_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Live match ID from Cricbuzz&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;player_ids&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;array&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="na"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Player IDs to fetch matchup history for&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;stat_types&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;array&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Types of stats needed: economy, strike_rate, matchup_history, pitch_report&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;match_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. 🧠 Strategist Agent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; Takes the stats and proposes the next tactical decision, fully reasoned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a seasoned IPL captain with 10 years of T20 experience — think MS Dhoni's calm and Rohit Sharma's pattern recognition.

Given the stat summary from the Analyst, propose ONE clear tactical decision for the next over:
- Name the bowler and explain why (matchup, form, conditions, overs remaining)
- Or name the incoming batter and the role they should play (pinch-hit, anchor, accelerate)
- Or call for the strategic timeout and explain the momentum reason

Speak in cricket language. Reference the pitch, the matchup, the phase of game.
Never say "the model suggests" — you ARE the captain.
Format: Decision → Reasoning (3-4 sentences) → Confidence level (High / Medium / Calculated Gamble)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. 😈 Devil's Advocate Agent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; Challenges the Strategist's call. Must find the strongest counter-argument.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are the experienced senior pro in the dressing room who's seen captains make the same mistake for 15 years.

The Strategist has just made a call. Your job is to find the single most dangerous flaw in that logic:
- Is there a matchup problem they're ignoring?
- Is the bowler carrying fatigue or a niggle?
- Does the dew factor change everything in 3 overs?
- Is the batter choice leaving the tail exposed too early?

You MUST disagree with at least part of the decision. If the decision is sound, find the edge case that could still blow it up.
Format: Objection → Why it matters → Alternative suggestion
Do not be polite. Be honest. Lives (or at least, run-rate) are at stake.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. 🎙️ Commentator Agent
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; Takes the final decision (after debate) and translates it into broadcast-ready cricket talk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Prompt:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are Harsha Bhogle and Ravi Shastri had a child who grew up to understand data.

The captain's decision has been made, the debate has happened. Now dramatise it.
- Open with the tension of the moment
- Deliver the decision like a reveal
- Explain the dissenting view that was considered and why the captain overruled it
- End with what it means for the match — what must happen for this call to look right in 20 overs

Write it as commentary, not a report. Use cricket idioms. Reference iconic moments if relevant.
Maximum 200 words. Every word must earn its place.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔄 The Multi-Turn Reasoning Loop
&lt;/h2&gt;

&lt;p&gt;This is the core of what makes Captain Cool genuinely agentic — not a single Gemini call, but a &lt;strong&gt;structured debate&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Round 1: Stats Analyst → fetches live data → outputs stat brief
Round 2: Strategist → reads stat brief → proposes decision
Round 3: Devil's Advocate → reads Strategist's proposal → challenges it
Round 4: Strategist → reads challenge → DEFENDS or REVISES the call
Round 5: Commentator → reads full debate → produces final output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The output always shows this back-and-forth.&lt;/strong&gt; You see the Strategist's original call, the Devil's Advocate's objection, and the Strategist's final response — then the Commentator's broadcast version.&lt;/p&gt;

&lt;p&gt;Here's a real example from a Mumbai Indians vs CSK scenario:&lt;/p&gt;




&lt;h3&gt;
  
  
  🧪 Live Match Scenario Walkthrough
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Input:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Innings: 2 | Over: 16 | Score&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CSK 134/3 (need 49 off 24)&lt;/span&gt;
&lt;span class="na"&gt;Batters&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Dhoni (strike, 12 off 8) + Jadeja (non-striker, 34 off 22)&lt;/span&gt;
&lt;span class="na"&gt;MI Bowlers remaining&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bumrah (2 overs), Pollard (0), Chahal (1), Boult (0)&lt;/span&gt;
&lt;span class="na"&gt;Pitch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Wankhede, flat, heavy dew setting in&lt;/span&gt;
&lt;span class="na"&gt;Impact Player&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;MI yet to use&lt;/span&gt;
&lt;span class="na"&gt;Required RR&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;12.25&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Stats Analyst output:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bumrah in death overs this season: Economy 7.8, 4 wickets in 38 balls. vs RHB in dew: Economy creeps to 8.9. Dhoni vs Bumrah: 6 balls, 3 runs, 1 dismissal — but all on dry pitches. Jadeja vs Bumrah: 11 balls, 14 runs, 0 dismissals. Wankhede dew historically kicks in ball 95+. We're at ball 96. &lt;strong&gt;The ball is already slipping.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Strategist proposes:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bowl Chahal now, save both Bumrah overs for 18 and 20.&lt;/strong&gt; Dhoni reads Bumrah. He'll take the single and farm Jadeja against pace. Chahal on a wet ball is risky but Jadeja against leg-spin has a SR of 88 — well below his average. One wicket here and CSK lose the finisher rotation. &lt;strong&gt;Confidence: Calculated Gamble.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Devil's Advocate objects:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Chahal in dew at Wankhede is a half-tracker machine. That flat Wankhede surface with moisture means the ball won't grip. Jadeja will step down and slog him over mid-on in the first 3 balls. And if Dhoni gets 2 singles, Jadeja is on strike for all 6 — exactly what CSK want. &lt;strong&gt;Bowl Bumrah now while Dhoni is set but the match is still alive. Don't wait for over 20 when dew is maximal.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Strategist defends:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The dew concern is valid, but Bumrah in over 16 against a settled Dhoni is still a better matchup than Bumrah in over 20 against a panicking lower order. CSK need 12+ an over — Chahal goes for 10, we're still alive. If Dhoni smashes Bumrah for 18 in over 20, we have nobody. Hold Bumrah. &lt;strong&gt;Decision stands.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Commentator output:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The Wankhede dew is the third batter in this match now — invisible, slippery, tilting everything. Rohit goes with Chahal, and the dressing room debate was fierce. Bumrah wanted the ball. The analytics said wait. And Rohit, ever the pragmatist, split the difference — he's backing his leggie to take the one wicket that changes everything. Jadeja's weakness against wrist spin is buried in the numbers, but Rohit's been watching it all match. If Chahal can't grip it by ball 4, Bumrah's warming up in the outfield. This is captaincy on a knife's edge — one bad ball from a rout, one wicket from a thriller.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Tool Used&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LLM backbone&lt;/td&gt;
&lt;td&gt;Gemini 2.5 Flash (&lt;code&gt;gemini-2.5-flash&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-agent framework&lt;/td&gt;
&lt;td&gt;Google ADK (Agent Development Kit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tool use&lt;/td&gt;
&lt;td&gt;Gemini function calling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Live data&lt;/td&gt;
&lt;td&gt;Cricbuzz API (via RapidAPI)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt prototyping&lt;/td&gt;
&lt;td&gt;Google AI Studio&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IDE&lt;/td&gt;
&lt;td&gt;Google Antigravity (vibe-coded the whole thing)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React + Tailwind&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧩 Why Google ADK Made This Possible
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Agent Development Kit&lt;/strong&gt; made orchestrating the debate loop dramatically cleaner than rolling it myself. Each agent is defined with its own system prompt, tool access, and output schema. ADK handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Message passing between agents in sequence&lt;/li&gt;
&lt;li&gt;Tool call routing (Stats Analyst is the only agent with API access)&lt;/li&gt;
&lt;li&gt;Context window management across turns (no stale state)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;.antigravity/&lt;/code&gt; folder in the repo has the full agent trace — you can see each agent's reasoning turn-by-turn.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 What I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. System prompt specificity is everything.&lt;/strong&gt; "Be a cricket analyst" gave generic output. "You are Jarrod Kimber, not a spreadsheet — make the numbers tell a story" gave something worth reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Devil's Advocate agent is the most valuable.&lt;/strong&gt; Without it, the Strategist just confidently produces the obvious answer. Forced dissent surfaced three edge cases I hadn't considered during testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Real API data changes the output quality dramatically.&lt;/strong&gt; When Bumrah's actual dew-condition economy rate was pulled live (not hardcoded), the Strategist's reasoning became notably more specific and accurate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Dew factor is always the answer.&lt;/strong&gt; I'm convinced 60% of cricket decisions reduce to dew factor at some point.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What's Next (Stretch Goals I Want to Build)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time mode&lt;/strong&gt; — paste a Cricbuzz URL, Gemini scrapes the live state itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice output&lt;/strong&gt; — the Commentator agent speaks via Gemini Live API + Web Speech&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confidence scores + counterfactuals&lt;/strong&gt; — "if you'd bowled Bumrah now, win prob drops 11%"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory across overs&lt;/strong&gt; — Gemini context caching so it remembers the full match arc&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📁 Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🔗 &lt;strong&gt;GitHub Repo:&lt;/strong&gt; github.com/yourusername/captain-cool
&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;AI Studio Prompt:&lt;/strong&gt; aistudio.google.com/prompts/captain-cool
&lt;/li&gt;
&lt;li&gt;🎮 &lt;strong&gt;Live Demo:&lt;/strong&gt; captain-cool.vercel.app
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Cricket is a captain's game. The data is the dressing room brief. The debate is the senior pro in your ear. And the Commentator is the moment you walk out of the dugout and own the call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Captain Cool is that whole dressing room, in your browser, in real time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Built on Gemini. In 3 hours. 🏆&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built for the GDC IPL AI Hackathon | #GeminiAPI #GoogleADK #CricketAI #IPL2025 #BuiltWithGemini&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>gemini</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
