brad-did-something / README.md
qFelix's picture
Add new tags for sponsorship and achievements in README
ddf29ae
|
Raw
History Blame Contribute Delete
4.12 kB
metadata
title: Brad Did Something
emoji: ๐Ÿš€
colorFrom: pink
colorTo: yellow
sdk: docker
app_port: 7860
pinned: false
license: mit
short_description: Argue your way to $1M before the quarter ends
tags:
  - track:wood
  - sponsor:modal
  - achievement:offbrand
  - achievement:llama
  - achievement:fieldnotes

๐Ÿš€ Brad Did Something

Brad Did Something

Corporate bureaucracy is already a chaotic simulation โ€” I just replaced middle management with an LLM to see if the company could survive the quarter.

A 2D top-down office comedy game where every line your coworkers say, every unhinged decision, and every dollar of revenue is generated live by an LLM. You're the new Head of Sales at Veloura Technologies; your five underlings are enthusiastic, well-meaning, and completely off the rails. Survive 15 workplace crises and one fiscal quarter, and hit $1,000,000 โ€” by literally arguing your way there.

๐ŸŽฎ Play it now ยท โ–ถ๏ธ Watch the trailer

Gameplay

Not just a chatbot in a trenchcoat

  • ๐Ÿง  The AI is load-bearing. NPC dialogue isn't decoration โ€” through strict JSON-schema validation the model's output directly drives the game economy. Talk Brad into rescuing a deal and revenue jumps; offend him and the pipeline collapses. The server hides the morale & relationship scores, so the model moves them without ever seeing (or gaming) them.
  • ๐ŸŽจ Comics on the fly. Each crisis, the text model writes a scene and a second GPU renders a wordless FLUX.2 [klein] 4B comic panel that drops over the office โ€” the caption is drawn crisp by the UI (FLUX can't spell, so words stay out of the image).
  • ๐Ÿ•น๏ธ A genuinely custom frontend. A hand-built HTML5-canvas + DOM pixel-art game served through gr.Server โ€” zero default Gradio widgets, desktop and touch.
  • โš™๏ธ Small models, tight plumbing. Qwen3.5-9B (llama.cpp) for text, FLUX.2- klein-4B for art, both on Modal GPUs, JSON-grammar-locked with a one-shot retry and a fast fallback so a slow call never kills the joke's timing.

๐Ÿ“– Read the full build story โ†’ โ€” the sub-4B model bake-off, fighting the model's "helpful AI" reflex, and the comic pipeline.


Run it yourself

pip install -r requirements.txt
python app.py     # โ†’ http://localhost:7860   (mock mode: fully playable, no keys)

With no MODAL_URL set it uses a template-based offline generator. For the real AI, deploy the two Modal GPU apps and point the game at them:

modal deploy modal_app/inference.py   # Qwen3.5-9B text  โ†’ MODAL_URL / MODAL_TOKEN
modal deploy modal_app/image.py       # FLUX.2-klein art โ†’ FLUX_URL / FLUX_TOKEN

On the HF Space these four go in Settings โ†’ Secrets; locally, .\run_modal.ps1 wires them up for you.

Deploy (HF Docker Space)

Built on gr.Server so the custom FastAPI frontend is the app โ€” HF's sdk: gradio runner only launches a bare demo, so the Space runs sdk: docker with a Dockerfile that does uvicorn app:app on port 7860. Dry-run locally: docker build -t bds . && docker run -p 7860:7860 bds.

Controls

WASD/arrows move ยท SPACE talk / answer / advance comic ยท G gift ยท 1/2 choose ยท ENTER send a typed reply ยท ESC close ยท M mute. ๐Ÿ“ฑ Mobile: an on-screen joystick + ACT/GIFT buttons appear automatically, and tapping the floor walks you there.

Tests

pytest tests/                  # unit: validator, economy, events, comic, idle
python tests/smoke_http.py     # full-quarter API playthrough (mock)
python tests/smoke_browser.py  # headless-browser UI smoke

Code MIT. Text model: Qwen3.5-9B (Apache-2.0). Image model: FLUX.2 [klein] 4B (non-commercial โ€” fine for this demo). Built for the Hugging Face Build Small Hackathon, "An Adventure in Thousand Token Wood."