"In the dark corners of the multiverse, there exists a machine. It doesn't just brew coffee — it perfects it. Each cup, a ritual. Each dial, a weapon. The beans scream as they're ground. The water boils with purpose. And when the extraction is complete... you taste God."
You don't drink coffee. You extract intelligence from dead plant matter using controlled thermal violence.
Brew Lab is a self-evolving coffee recipe engine built by a madman who refused to drink another mediocre cup. It runs on your phone like a PWA, talks to an AI when it needs to think, and learns from every single brew you make.
It started as a conversation. A man. A V60. A Commandante grinder. And a relentless need to understand why his Sumatran peach coferment tasted like dirt at the wrong temperature. Hundreds of brews later, the knowledge became a system. The system became an app. The app became... this.
CURRENT LOADOUT
├── Hario V60 ──────── Filter Ops
├── Bialetti Brikka ── Pressure Ops
├── Commandante C40 ── Particle Control
├── Infrared Burner ── Thermal Platform
└── Claude AI ──────── Neural Advisory
└── Duke Nukem 3D ──── Audio/Visual Ops
Every bean has a kill zone — a narrow window where temperature, grind, and pour technique converge to produce perfection. Too cold, and you get sour corpse water. Too hot, and you burn the aromatics into ash. Brew Lab finds the kill zone.
- V60 Protocol — Hot or iced. Layered, descending, or even pours. Commandante clicks dialed to the bean's DNA.
- Brikka Protocol — Pressure extraction. 1600W infrared. Straight shot, americano, or iced. Pull at the sputter or die trying.
The machine learns. After every brew, you report:
┌─────────────────────────────────────┐ │ HOW WAS IT? │ │ │ │ [✓ PERFECT] ← locks the recipe │ │ │ │ [ sour ] [ bitter ] [ acrid ] │ │ [ thin ] [ too acidic ] │ │ [ flat/muddy ] [ missing notes ] │ │ │ │ Select all that apply. │ │ The engine adjusts. │ │ Brew again. │ │ Repeat until perfection. │ └─────────────────────────────────────┘
Contradictions are detected. Sour + bitter = channeling. The app doesn't change your grind — it tells you your bed prep is wrong. It knows.
New bean? The engine reads its origin, variety, process, and tasting notes, then calculates a starting recipe before you even brew. Kenyan fruity? 22 clicks, 91°C, descending pours. Brazilian chocolate? 24 clicks, 93°C, even pours. It's not guessing — it's pattern-matching against a database of dialed recipes.
When the local rules engine can't figure it out — when you've got some unholy cofermented Liberica-Robusta hybrid that breaks every pattern — the app calls Claude. The AI doesn't give generic advice. It knows your grinder, your burner, your wattage, your click range. It speaks Commandante.
Every bean below has been tested, adjusted, re-brewed, and locked through the feedback loop.
BEAN TEMP CLICKS METHOD STATUS
─────────────────────────────────────────────────────────────────────────
Colombia Coferment 93°C 24 V60 Layered ██████████ LOCKED
Aalamin Sumatra Peach 91°C 26 V60 Layered ██████████ LOCKED
Camel Step Tacu Mexico 94°C 24 V60 Even ██████████ LOCKED
Colombia 722 92°C 24 V60 Descending ██████████ LOCKED
Colombia Piña Colada 93°C 24 V60 Descending ██████████ LOCKED
İstinye Papua New Guinea 91°C 24 V60 Descending ██████████ LOCKED
Malaysia Liberica Tobacco 90°C 24 V60 Even ██████████ LOCKED
Brazil Yellow Catuai Infused — 13 Brikka ██████████ LOCKED
Camel Step Brazil Santos — 13 Brikka ██████████ LOCKED
Ethiopia Chelbesa — 14 Brikka ██████████ LOCKED
Brazil Parainema — 13 Brikka ██████████ LOCKED
Brazil Santa Ines — 13 Brikka ██████████ LOCKED
Liberica Tobacco — 14 Brikka ██████████ LOCKED
┌──────────────┐
│ NEW BEAN │
└──────┬───────┘
│
┌──────▼───────┐
│ SMART DEFAULTS│
│ (origin, │
│ process, │
│ variety) │
└──────┬───────┘
│
┌──────▼───────┐
│ FIRST BREW │
└──────┬───────┘
│
┌──────▼───────┐
┌─────┤ FEEDBACK ├─────┐
│ └──────────────┘ │
│ │
┌──────▼──────┐ ┌────────▼────────┐
│ PERFECT? │ │ ISSUES? │
│ Lock it. │ │ Adjust clicks, │
│ Done. │ │ temp, or pour. │
└─────────────┘ └────────┬────────┘
│
┌──────▼───────┐
│ BREW AGAIN │
└──────┬───────┘
│
(repeat until
perfection)
This is V4. The architecture is designed to scale beyond one grinder, one brewer, one human.
ROADMAP ├── v4 ── Duke Nukem 3D asset integration (CURRENT) ├── v5 ── AI in feedback loop, not just recipe screen ├── v6 ── Multi-grinder support (Commandante, Sage, EK43, whatever you bring) ├── v7 ── Multi-brewer support (espresso machines, AeroPress, French press, Chemex) ├── v8 ── Bean library with community-sourced profiles ├── v9 ── Flavor wheel integration — map your cup against SCA standards └── v∞ ── The perfect cup. Every time. Any bean. Any setup. Anywhere.
"I used to think coffee was a beverage. Now I understand it's an extraction problem with a delicious solution."
- Node.js (for asset extraction)
- A legally owned copy of Duke Nukem 3D (Steam, GOG, etc.)
- A modern web browser (Chrome, Safari, Firefox)
# 1. Clone this repo
git clone https://github.com/similarcreatures2k13/brew-lab.git
cd brew-lab
# 2. Install dependencies (for asset extraction)
npm install
# 3. Copy your DUKE3D.GRP file to the project root
# (Find it in your Steam/GOG installation folder)
cp "/path/to/DUKE3D.GRP" .
# 4. Extract the assets
node extract-duke.js
# 5. Open index.html in your browser
# Or deploy to GitHub Pages, Netlify, etc.
Mobile Installation (PWA)
Open the deployed URL in Safari (iOS) or Chrome (Android)
Share → Add to Home Screen
Enter your Anthropic API key in Settings
Select a bean
Brew
Feed back
Repeat until you achieve transcendence
FRONTEND ├── index.html ──────────── Main app (single-file SPA) ├── duke-loader.js ──────── Asset preloader & fallback system └── assets/ └── duke3d/ ├── sounds/ ─────── 331 extracted VOC→WAV files └── sprites/ ────── 1570 extracted ART→PNG tiles
BUILD TOOLS ├── extract-duke.js ─────── BUILD engine .GRP parser & converter ├── package.json ────────── Node dependencies (sharp, wav) └── node_modules/ ───────── (gitignored)
EXTERNAL SERVICES └── Anthropic Claude API ── Neural advisory for complex beans
Total runtime dependencies: 0 (pure vanilla JS + Web Audio API) Build dependencies: sharp (image conversion), wav (audio conversion) Bundle size: One HTML file + extracted assets
"The Liberica doesn't taste like coffee. It tastes like jackfruit and leather had a baby in a tobacco field, and that baby grew up to have a bourbon aftertaste."
"The Parainema hit different. Not because it tasted better — because the Robusta DNA gave it a caffeine payload that the pure Arabicas couldn't match."
"91 degrees. That's where the osmanthus lives. One degree higher and it's gone. One degree lower and you're drinking grass."
This project is an unofficial, non-commercial fan project and is not affiliated with, endorsed by, or sponsored by Gearbox Software, 3D Realms, or Apogee Software.
Duke Nukem 3D and all associated assets, including but not limited to sprites, sound effects, music, and character likenesses, are copyrighted and trademarked properties of their respective owners. This project is developed purely for educational, personal, and archival purposes under the concept of fair use and fan homage.
No copyright infringement is intended. I do not claim ownership of any Duke Nukem 3D assets. If you wish to use this application, you must legally own a copy of Duke Nukem 3D and provide your own game files (DUKE3D.GRP). This repository does not distribute, host, or link to any copyrighted game assets. All audio and visual assets are generated locally by the end-user via the provided extraction scripts.
If you are a rights holder... please open a private issue on this repository or contact the repository owner directly via GitHub. I will respond promptly to resolve any concerns.
BREW LAB v4.0 Extraction Protocol Active
[ GRINDING // HEATING // EXTRACTING // PERFECTING ]
Built with obsession, caffeine, Claude, and Duke Nukem. No beans were harmed. Many beans were perfected.
