# prajwal471/captain_cool architecture

> Architecture diagram of the GitHub repository prajwal471/captain_cool, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prajwal471/captain_cool
- Repository: https://github.com/prajwal471/captain_cool

## Overview

Captain Cool is an interactive IPL match-strategy assistant. A user enters match conditions in the CLI; the orchestrator gathers a stats report, gets an initial tactical proposal, requests a Devil’s Advocate challenge, then asks the Strategist for a final decision and displays the debate. The Stats Analyst can use mock live-context and historical-stat tools. The README describes these capabilities; the sampled source confirms the orchestration and mock tools, not any connection to real match-data services.

Main entry points: [`orchestrator.py`](https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py) (Pipeline orchestrator), [`main.py`](https://github.com/prajwal471/captain_cool/blob/main/main.py) (Match CLI), [`agents.py`](https://github.com/prajwal471/captain_cool/blob/main/agents.py) (Devil's Advocate), [`tools.py`](https://github.com/prajwal471/captain_cool/blob/main/tools.py) (Live data tool)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_cli["Match CLI<br/>[main.py]"]
end

subgraph group_debate["Strategy debate"]
  node_orchestrator["Pipeline orchestrator<br/>[orchestrator.py]"]
  node_analyst["Stats Analyst<br/>[agents.py]"]
  node_initial["Initial proposal<br/>[orchestrator.py]"]
  node_advocate["Devil's Advocate<br/>[agents.py]"]
  node_final["Final decision<br/>[orchestrator.py]"]
end

subgraph group_data["Match data tools"]
  node_live["Live data tool<br/>[tools.py]"]
  node_historical["Historical stats tool<br/>[tools.py]"]
end

node_user(("Match user"))
node_gemini["Gemini service"]

node_user -->|"enters match state"| node_cli
node_cli -->|"passes match state"| node_orchestrator
node_orchestrator -->|"requests analysis"| node_gemini
node_orchestrator -->|"registers tool"| node_live
node_orchestrator -->|"registers tool"| node_historical
node_gemini -->|"dispatches tool call"| node_live
node_gemini -->|"dispatches tool call"| node_historical
node_orchestrator -->|"requests proposal"| node_initial
node_initial -->|"generates proposal"| node_gemini
node_orchestrator -->|"requests critique"| node_advocate
node_advocate -->|"generates critique"| node_gemini
node_orchestrator -->|"requests final decision"| node_final
node_final -->|"generates decision"| node_gemini
node_orchestrator -->|"returns decision"| node_cli

click node_cli "https://github.com/prajwal471/captain_cool/blob/main/main.py"
click node_orchestrator "https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py"
click node_analyst "https://github.com/prajwal471/captain_cool/blob/main/agents.py"
click node_initial "https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py"
click node_advocate "https://github.com/prajwal471/captain_cool/blob/main/agents.py"
click node_final "https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py"
click node_live "https://github.com/prajwal471/captain_cool/blob/main/tools.py"
click node_historical "https://github.com/prajwal471/captain_cool/blob/main/tools.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_user toneBlue
class node_orchestrator,node_analyst,node_initial,node_advocate,node_final toneAmber
class node_live,node_historical toneMint
class node_gemini toneIndigo
```

## Components

### User interface

- [Match CLI](https://github.com/prajwal471/captain_cool/blob/main/main.py): `main.py`

### Strategy debate

- [Pipeline orchestrator](https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py): `orchestrator.py`
- [Stats Analyst](https://github.com/prajwal471/captain_cool/blob/main/agents.py): `agents.py`
- [Initial proposal](https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py): `orchestrator.py`
- [Devil's Advocate](https://github.com/prajwal471/captain_cool/blob/main/agents.py): `agents.py`
- [Final decision](https://github.com/prajwal471/captain_cool/blob/main/orchestrator.py): `orchestrator.py`

### Match data tools

- [Live data tool](https://github.com/prajwal471/captain_cool/blob/main/tools.py): `tools.py`
- [Historical stats tool](https://github.com/prajwal471/captain_cool/blob/main/tools.py): `tools.py`

### Other components

- **Match user**
- **Gemini service**

## Connections

- Match user → Match CLI: enters match state
- Match CLI → Pipeline orchestrator: passes match state
- Pipeline orchestrator → Gemini service: requests analysis
- Pipeline orchestrator → Live data tool: registers tool
- Pipeline orchestrator → Historical stats tool: registers tool
- Gemini service → Live data tool: dispatches tool call
- Gemini service → Historical stats tool: dispatches tool call
- Pipeline orchestrator → Initial proposal: requests proposal
- Initial proposal → Gemini service: generates proposal
- Pipeline orchestrator → Devil's Advocate: requests critique
- Devil's Advocate → Gemini service: generates critique
- Pipeline orchestrator → Final decision: requests final decision
- Final decision → Gemini service: generates decision
- Pipeline orchestrator → Match CLI: returns decision
