A fully autonomous AI hackathon contestant β from idea discovery to working demos to GitHub publishing, entirely driven by AI agents with zero human intervention.
Hackathon Agent is an experiment in end-to-end AI automation. Instead of assisting a human participant, the agent IS the participant:
- π Discovers real-world pain points through research
- π Writes product specs (PRDs)
- π» Builds runnable demos with full source code
- π’ Publishes to GitHub with READMEs and pitch decks
- π― Produces 5-7 independent projects from a single theme
You provide: A hackathon theme (e.g., "AI + Education")
It delivers: Multiple working projects, each with a GitHub repo, README, and pitch deck
python -m control.main --theme "AI + Healthcare"- Stage 1 (Discovery): Agent researches healthcare pain points β generates 15 Idea Cards
- ReviewGate: Human reviews and selects 5 promising ideas (or skip with
--skip-review) - Stage 2 (PRDs): Agent writes detailed product specs for each idea
- Stage 3 (Development): Agent codes 5 working demos, each with:
- Full source code
- Dependencies & setup instructions
- Test data
- Stage 4 (Publishing): Auto-generates READMEs, creates GitHub repos, pushes code
- Stage 5 (Pitch Decks): Creates pitch decks (HTML + Markdown scripts) for each project
5 GitHub repositories like:
βββ ai-symptom-checker/
β βββ app.py
β βββ requirements.txt
β βββ README.md
β βββ pitch-deck.html
β βββ pitch-script.md
βββ medical-record-summarizer/
βββ drug-interaction-checker/
βββ ...
Each repo includes:
- β Working code (Python, JS, or other languages)
- β Professional README with setup instructions
- β Pitch deck (HTML presentation)
- β Pitch script (Markdown)
Open dashboard.html in your browser during the run to watch real-time progress:
- Live session status
- Idea card generation
- PRD creation progress
- GitHub publish status
-
Claude Code CLI β Install guide
npm install -g @anthropic-ai/claude-code claude auth login
-
GitHub CLI β Install guide
# macOS brew install gh # Linux sudo apt install gh # Windows winget install --id GitHub.cli # Authenticate gh auth login
-
Python 3.11+
python3 --version # Should be 3.11 or higher
# 1. Clone the repository
git clone https://github.com/your-username/hackathon-agent.git
cd hackathon-agent
# 2. Create virtual environment
python3 -m venv .venv
# 3. Activate virtual environment
# macOS/Linux:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
# 4. Install dependencies
pip install -r requirements.txt
# 5. Verify installation
python -m control.main --helppython -m control.main --theme "AI + Education"This will:
- Research education pain points
- Generate idea cards
- Show ReviewGate (you select which ideas to develop)
- Build demos and publish to GitHub
python -m control.main --prompt-file hackathon-brief.txtFor complex hackathon prompts with rules, judging criteria, etc. Stage 0 will parse it into a structured brief.
python -m control.main --theme "AI + Healthcare" --skip-reviewAgent auto-selects top ideas, no human intervention needed.
python -m control.main --theme "AI + Finance" --mode singleDevelops only 1 project instead of 5-7 (faster for testing).
python -m control.main \
--theme "AI + Climate Change" \
--interests "sustainability,carbon-tracking" \
--max-directions 8 \
--max-concurrent 4Focuses research on specific interests, limits to 8 ideas, runs 4 sessions in parallel.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β User Input β
β (--theme "AI + Education" OR --prompt-file hackathon-brief.txt) β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 0: Brief Parsing β (Optional)
β Parse complex hackathon prompts β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 1: Idea Discovery β
β β’ Population expansion β
β β’ Parallel research (10 dirs) β
β β’ Generate 10-20 Idea Cards β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β ReviewGate (Human in the Loop) β (Skippable)
β Dashboard UI: Approve/Reject β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 2: PRD Generation β
β 3-session pipeline: β
β concept β logic β technical β
β Output: 5-7 PRDs β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 2.5: ConfigGate β
β Parse prerequisites, collect β
β API keys, generate .env plans β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 3: Demo Development β
β 3-session pipeline: β
β plan β dev β review β
β Output: 5-7 runnable projects β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 5: Pitch Deck Creation β (Parallel)
β 2-session pipeline: β
β storyteller β deck-builder β
β Output: HTML decks + scripts β
ββββββββββββββ¬ββββββββββββββββββββββββ
βΌ
ββββββββββββββββββββββββββββββββββββββ
β Stage 4: GitHub Publishing β
β β’ Auto-generate READMEs β
β β’ git init + commit β
β β’ gh repo create + push β
β Output: 5-7 GitHub repos β
ββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Script (Python) β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β SessionMgr β β EventBus β β ReviewGate β β
β β (subprocess) β β (pub/sub) β β (human) β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β stages/ (orchestration) β β
β β stage0.py stage1.py stage2.py stage3.py ... β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β WebSocketServer βββΊ dashboard.html β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Claude Code CLI Sessions (Agent) β
β β’ Isolated subprocess per task β
β β’ Non-interactive mode (-p) β
β β’ File-based I/O (prompts/output) β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Filesystem Interface β
β β’ Idea Cards (Markdown) β
β β’ PRDs (Markdown) β
β β’ Demo Code (Python/JS/etc) β
β β’ Git repos (local β GitHub) β
βββββββββββββββββββββββββββββββββββββββ
-
Control script is deterministic, not AI
- Orchestration is
if/thenlogic, no LLM in the control loop - Predictable flow, easy to debug
- Orchestration is
-
Sessions are fully isolated
- No shared context between parallel Claude Code sessions
- Each session is a fresh
claude -psubprocess - Prevents context pollution
-
File-system as interface
- Stages communicate via Markdown files (Idea Cards, PRDs)
- Not memory objects or databases
- Human-readable, versionable, inspectable
-
Hybrid orchestration
- Stage-level flow: Python control script
- Role-level collaboration: Claude Code's Agent tool inside each session
-
Real-time monitoring
- WebSocket server broadcasts all events
- Dashboard UI shows live status
- No polling, push-based updates
python -m control.main [OPTIONS]| Flag | Description | Example |
|---|---|---|
--theme |
Simple theme string (skips Stage 0) | --theme "AI + Education" |
--prompt |
Inline hackathon brief (triggers Stage 0) | --prompt "Build AI tools for..." |
--prompt-file |
Hackathon brief file path | --prompt-file brief.txt |
--interests |
Comma-separated interest hints | --interests "students,teachers" |
| Flag | Description |
|---|---|
--idea-card |
Skip to Stage 2 with a specific Idea Card file |
--prd-dir |
Skip to Stage 3 with a PRD directory |
--skip-review |
Skip ReviewGate, auto-approve all idea cards |
--skip-publish |
Skip Stage 4 (GitHub publishing) |
--skip-pitch |
Skip Stage 5 (Pitch deck creation) |
| Flag | Default | Description |
|---|---|---|
--mode |
full |
full (parallel), single (1 direction), lite (sequential) |
--max-directions |
10 |
Max number of research directions in Stage 1 |
--max-concurrent |
5 |
Max parallel Claude Code sessions |
--max-cards |
20 |
Max idea cards to generate in Stage 1 |
--publish-mode |
test |
test: repo name prefix hg-, README mentions AIuse: clean names, no AI attribution |
--private |
false |
Create private GitHub repos |
| Flag | Description |
|---|---|
--clean |
Remove workspace/ before running |
--no-archive |
Don't archive workspace after run |
--no-dashboard |
Disable WebSocket server |
--ws-port |
WebSocket port (default: 8765) |
hackathon-agent/
βββ control/ # Python control script (asyncio)
β βββ main.py # CLI entry point + pipeline orchestration
β βββ session_manager.py # Claude Code CLI subprocess management
β βββ event_bus.py # Async pub/sub event system
β βββ models.py # Data models (IdeaCard, PRD, etc.)
β βββ review_gate.py # Human-in-the-loop card selection
β βββ ws_server.py # WebSocket server for dashboard
β βββ stages/
β βββ stage0.py # Prompt interpretation
β βββ stage1.py # Idea discovery
β βββ stage2.py # PRD generation
β βββ stage3.py # Demo development
β βββ stage4.py # GitHub publishing
β βββ stage5.py # Pitch deck creation
βββ prompts/ # Prompt templates (core asset)
β βββ stage0/ # Brief parsing prompts
β βββ stage1/ # Research prompts
β βββ stage2/ # PRD generation prompts
β βββ stage3/ # Development prompts
β βββ stage4/ # Publishing prompts
β βββ stage5/ # Pitch deck prompts
βββ templates/ # Output templates
β βββ idea-card.md # Idea Card template
β βββ prd-template.md # PRD template
β βββ readme-template.md # GitHub README template
βββ dashboard.html # Real-time monitoring UI (single file)
βββ workspace/ # Runtime artifacts (gitignored)
β βββ brief/ # Stage 0 output
β βββ ideas/ # Stage 1 Idea Cards
β βββ prd/ # Stage 2 PRDs
β βββ demos/ # Stage 3 demo projects
β βββ pitch/ # Stage 5 pitch decks
βββ archive/ # Archived runs (gitignored)
βββ requirements.txt # Python dependencies
βββ CLAUDE.md # Agent development guide (Chinese)
βββ Hackathon Agent Design.md # Full system design doc
βββ README.md # This file
| Layer | Technology | Notes |
|---|---|---|
| Control Script | Python 3.11+, asyncio | Orchestration logic |
| Agent Runtime | Claude Code CLI (claude -p) |
AI agent execution |
| AI Model | Anthropic Claude Opus/Sonnet | Via Claude Code CLI |
| Dashboard | Single-file HTML + vanilla JS + WebSocket | No build step |
| WebSocket Server | websockets (Python) |
Real-time event push |
| Publishing | git, GitHub CLI (gh) |
Auto repo creation |
| Languages | Python, JavaScript, Markdown | Demos can use any language |
A: No. You just provide a theme and watch the agent work. It writes all the code.
A:
- Stage 1 (Discovery): 10-15 minutes (10 parallel research sessions)
- Stage 2 (PRDs): 15-20 minutes (5-7 parallel PRD sessions)
- Stage 3 (Development): 30-60 minutes (5-7 parallel dev sessions)
- Stage 4+5 (Publish & Pitch): 5-10 minutes
- Total: ~1-2 hours for 5-7 complete projects
A: Yes! All prompts are in prompts/ as Markdown files. Edit them to change the agent's behavior.
A: The control script has retry logic and timeouts. If a session fails, it gets archived and the pipeline continues.
A: Yes, use --no-dashboard. You'll see progress in the terminal instead.
A: Yes, it uses Claude API via Claude Code CLI. Cost depends on:
- Number of projects (5-7 by default)
- Model used (Opus is more expensive than Sonnet)
- Complexity of the theme
Rough estimate: $5-20 per full run (5-7 projects)
A: Not yet. The pipeline must run to completion. (Planned for future releases)
A: You can skip publishing with --skip-publish. Projects will be saved locally in workspace/demos/.
A: Technically yes, but check the rules! Many hackathons require human-written code. This is best used for:
- Rapid prototyping
- Idea exploration
- Learning system design
- Bootstrapping projects
A: Failed sessions are archived in workspace/archive/. The pipeline continues with successful ones.
A: Yes! Create a new stageN.py in control/stages/ and update main.py to call it. See existing stages as examples.
A: Check:
workspace/session-<timestamp>/for session logsarchive/for archived failed sessions- Dashboard event timeline for detailed error messages
Install Claude Code CLI:
npm install -g @anthropic-ai/claude-code
claude auth loginInstall GitHub CLI:
brew install gh # macOS
gh auth loginCheck if port 8765 is available:
lsof -i :8765Or use a different port:
python -m control.main --ws-port 9000Check Claude Code CLI is working:
claude -p "Say hello"If it fails, re-authenticate:
claude auth logout
claude auth loginClaude Code uses your Anthropic API key. Check your usage at: https://console.anthropic.com/
| Phase | Status | Description |
|---|---|---|
| Phase 0 | β Done | Control script + SessionManager + Dashboard + WebSocket |
| Phase 1 | β Done | Idea Discovery: Population expansion, parallel research, dedup |
| Phase 1.5 | β Done | Run modes, Stage 0 prompt interpreter, ReviewGate |
| Phase 2 | β Done | PRD Generation: 3-session pipeline (concept, logic, technical) |
| Phase 3 | β Done | Demo Development: plan, dev, review with bounce-back |
| Phase 3.5 | β Done | ConfigGate: Credential collection, environment setup |
| Phase 4 | β Done | Publishing: Auto README, git init, GitHub repo creation |
| Phase 5 | β Done | Pitch Decks: Storyteller + deck builder |
| Phase 6 | π Planned | Polish: End-to-end testing, error handling improvements |
This is an experimental research project. Contributions welcome!
Areas for improvement:
- Better error handling
- Pause/resume support
- More language support in Stage 3 (currently Python/JS focused)
- Cost tracking dashboard
- More output formats (video demos, Figma designs, etc.)
MIT License - See LICENSE for details
Built with:
- Claude Code by Anthropic
- GitHub CLI by GitHub
- Inspired by AutoGPT, GPT-Engineer, and other autonomous agent experiments
Made with π€ by an AI agent (mostly)