--- title: The Podium emoji: 🎯 colorFrom: indigo colorTo: purple sdk: gradio sdk_version: "5.20.0" python_version: "3.11" app_file: app.py pinned: false tags: - thousand-token-wood - game - debate - llm - gradio - interactive - track:wood - achievement:offbrand license: mit --- # The Podium **A strategic LLM debate game** β€” Hugging Face "Build Small" hackathon entry. You are the **strategist**, not the debater. Manage a finite word pool, pick your champion's archetype, play ability cards, and coach an AI debater through 3 rounds judged by wildly opinionated AI characters β€” each with their own agenda, biases, and scoring personality. Every word you choose costs something. Every judge changes the calculus. Outsmart the opponent AI, read the room, and claim The Podium. Built with a custom Gradio HTML/JS hybrid UI (Off Brand badge candidate). --- ## Demo 🎬 Demo video: [The Podium Demo](https://huggingface.co/spaces/build-small-hackathon/The-Podium/blob/main/The%20Podium%20Demo.mp4) πŸ“£ Social post: [LinkedIn post](https://www.linkedin.com/posts/manuel-utreras-456bb1354_huggingface-buildsmall-ai-share-7472245558993166336-VcuY/?utm_source=share&utm_medium=member_desktop&rcm=ACoAAFh0SEIBVRysd9VOWWGvj-VSFYGEyFPeV4o) --- ## How to Play 1. **Setup** β€” A word pool is generated with a hidden flavor seed. Choose your debater's archetype (Firebrand, Academic, Contrarian…). Receive 3 ability cards. 2. **Each Round** β€” A topic is revealed along with a biased judge. Pick words from your pool and set their emphasis order. Optionally play an ability card. 3. **The Podium** β€” Both AI debaters argue their assigned sides using your chosen words. The judge scores on coherence, persuasion, word integration, and judge appeal β€” in their own character's voice. 4. **Win 2 of 3 rounds** (or most total points) to claim The Podium. --- ## Tech Stack | Component | Technology | |---|---| | UI | Gradio 5.x with custom HTML/JS hybrid | | Language | Python 3.11 | | LLM (submission) | google/gemma-4-31B-it via HF Inference API | | LLM (dev) | Claude Sonnet (Anthropic) | | Deployment | Hugging Face Spaces | --- ## Running Locally ```bash pip install -r requirements.txt cp .env.example .env # Edit .env β€” set LLM_PROVIDER and the matching API key/token python app.py ``` **Environment variables:** | Variable | Required for | |---|---| | `LLM_PROVIDER` | `hf` (HF Spaces) or `anthropic` (dev) | | `HF_TOKEN` | HF Inference API (when `LLM_PROVIDER=hf`) | | `ANTHROPIC_API_KEY` | Dev/local only (when `LLM_PROVIDER=anthropic`) | **Headless / terminal mode** (for prompt testing): ```bash python engine.py ``` --- ## Provider Switching The game runs against any LLM via a single env var β€” no code changes needed: | `LLM_PROVIDER` | Model | Setup | |---|---|---| | `hf` | google/gemma-4-31B-it via HF Inference API | Set `HF_TOKEN` | | `anthropic` | Claude Sonnet (dev only) | Set `ANTHROPIC_API_KEY` | --- ## File Structure ``` app.py # Gradio UI β€” no game logic engine.py # Pure-Python game engine β€” testable headless llm.py # Provider abstraction (HF Inference / Anthropic) prompts.py # All LLM prompt templates content.py # Static content: judges, archetypes, abilities, seed words config.py # Tunables and feature toggles ``` --- ## Archetypes | Archetype | Style | Judge Effect | |---|---|---| | πŸ”₯ The Firebrand | Emotional, punchy | +persuasion, -coherence | | πŸŽ“ The Academic | Precise, structured | +coherence, -appeal w/ personality judges | | 🧒 The Everyman | Plainspoken | No modifiers (safe pick) | | βš”οΈ The Contrarian | Flips expectations | Bonus when arguing the harder side | | ✨ The Charmer | Witty, disarming | +appeal with personality judges only | ## Ability Cards Echo πŸ” Β· Wildcard πŸƒ Β· Hoard πŸ“¦ Β· Scramble πŸŒ€ Β· Plant 🌱 Β· Silence 🀫 Β· Appeal βš–οΈ Β· Bias 🎯 Β· Inspiration πŸ’‘ --- Built for the Hugging Face "Build Small" hackathon. Open-weight model ≀ 32B parameters.