Feeling nostalgic for the 2000s? Need a little amusement? I’ve got the agentically-coded thing you need: Eternal Grind!
Experience it now! Point your browser at accordionguy.github.io/eternal-grind/, then sit back and enjoy the adventure as the game plays itself for you. No effort required, and no time lost to the grind that other online role-playing games bring.

Once again, it’s here: accordionguy.github.io/eternal-grind/.
What’s Eternal Grind all about?
Eternal Grind is my version of Progress Quest, a parody of the popular 2000s game (and devourer of nerd lives) EverQuest. Unlike EverQuest, which was a multiplayer, Dungeons and Dragons-inspired role-playing game with a cluttered dashboard that required your full attention…

…Progress Quest was a zero-player Dungeons and Dragons-inspired role-playing game that required no attention at all. It did keep one key aspect of EverQuest: the with a cluttered dashboard. Here’s a screenshot of the game in all its Windows XP glory:

Eternal Grind is my homage to Progress Quest. Like Progress Quest, it aims to be the ultimate “zero-player” RPG experience, providing all the dopamine of a legendary quest, but with absolutely none of the effort.
In the spirit of today’s best workflows, Eternal Grind automates the entire heroic journey, from slaying fantastical creatures like Literal Metaphors to hoarding fabulous artifacts such as the Scissors of Regret.
The game automatically creates characters like Kevin from Accounting (a Low-Carb Orc and Spreadsheet Warrior by trade), after which your only job is to sit back and watch the progress bars fill. It’s a witty, Windows XP styled commentary on the nature of the “grind,” where the numbers always go up, the loot is perpetually absurd, and your lack of agency is the greatest feature of all.
Why are you still reading? Play it now! It’s here: accordionguy.github.io/eternal-grind/.
I built it with Zenflow
There are two notable differences between Eternal Grind and Progress Quest, the game to which it pays homage:
- While Progress Quest was a Windows-only desktop game, Eternal Grind is a single-page web game that runs on any device with a browser. Feel free to play it on your internet fridge!
Progress Quest was written the old-school way: using a programming language — namely, Delphi (Borland’s version of Pascal). Eternal Grind was written the new-school way: agentically, using Zencoder’s Zenflow AI coding tool.
That second point is an important one. Progress Quest was the product of traditional coding: the manual, instruction-based process where the developer acts as both architect and builder, meticulously and painstakingly writing instructions that specify how the program should do its work. Success depends on that developer’s ability to translate complex ideas into perfect syntax.
Eternal Grind is a different beast, since it’s the result of agentic coding, where the approach is intent instead of instruction. Instead of dictating the “how,” I provided a high-level specification — the “what” — to Zenflow, which can autonomously plan, write, and even self-correct the code.
(I’ll include the aforementioned specification at the end of this article.)
When using Zenflow to build Eternal Grind, I was no longer the contractor laying every brick. I was now the supervisor, providing the blueprints and overseeing an AI crew that did the bricklaying.
I plan to keep tweaking Eternal Grind using Zenflow. Be sure to visit its page often!
One more time: Eternal Grind is at accordionguy.github.io/eternal-grind/.
The specification
Eternal Grind started with a specification that I wrote into file named spec.md. This file served as the definitive “source of truth” that described the kind of application I wanted created. While traditional specs are often treated as a “nice-to-have” for human developers, AI agents needs such a spec to act as a “North Star” as well as to keep them from developing the wrong thing.
By clearly defining the application’s logic, layout, and data in a structured format, I provided Zenflow with the basic context for building Eternal Grind. It turns a vague, hand-wavey request into a structured mission, ensuring that the code generated not only just works, but also provides the application I expected, working in the way I expected.
Here’s the complete specification file I initially wrote:
# Functional Specification: Eternal Grind (ZPRPG)
## 1. Project Overview
"Eternal Grind" is a "Zero-Player RPG" (ZPRPG) inspired by the classic parody *Progress Quest*. The game automates all traditional RPG elements—questing, combat, looting, and leveling. The user's role is purely observational.
---
## 2. UI Layout (Three-Column Dashboard)
The application shall use a fixed-height, full-width dashboard layout using Flexbox or Grid.
### A. Character Sheet (Left Column - 25% Width)
* **Identity:** Displays Character Name (from `NAMES`), Level, Race, and Class.
* **Stats Table:** A vertical list of numerical values for the 10 core stats (e.g., Strength, Existential Dread).
* **Equipment:** A list of 6-10 equipment slots showing absurd gear.
* **Spells/Abilities:** A scrolling list of learned "skills" that grows upon leveling up.
### B. The Engine of Progress (Center Column - 50% Width)
* **Location Header:** Displays the current location from the `LOCATIONS` list.
* **Primary Task Bar:** A large progress bar indicating the current action (e.g., "Contemplating the void").
* **Plot Bar:** A slower-moving bar tracking progress toward the next "Act."
* **Experience Bar:** A bar tracking progress toward the next Level.
* **Portrait:** A central area for a static character icon or simple CSS animation.
### C. Data Feed (Right Column - 25% Width)
* **Inventory (Top Half):** A scrolling list of items collected. Maximum capacity: 15 items.
* **Quest Log (Bottom Half):** A vertical scrolling log of events. It must automatically scroll to the bottom as new lines are appended.
---
## 3. Core Mechanics & Logic
### 3.1 Initialization
When the application starts:
1. **Name Selection:** A name is chosen randomly from the `NAMES` list and remains permanent.
2. **Character Build:** A `RACE` and `CLASS` are randomly assigned.
3. **Starting Stats:** Each stat in the `STATS` list is assigned a random base value between 3 and 18.
### 3.2 The Game Loop
The application runs on a continuous timed loop:
1. **Questing:** The "Task Bar" fills over a period of 3–8 seconds.
2. **Completion:** Once the bar hits 100%:
* A random **Monster** is "defeated."
* A random **Item** (Adjective + Noun) is added to the Inventory.
* A line is added to the **Quest Log** (e.g., "Executed a Low-Level Bugbear. Found: Rusty Sock of Mystery").
* The **Experience Bar** increments.
3. **Market Mode:** When the Inventory reaches 15 items:
* The current task changes to "Heading to market to sell junk."
* After a short delay, the Inventory is cleared and the character returns to questing.
4. **Leveling Up:** When the Experience Bar reaches 100%:
* The Character Level increments.
* A random **Stat** increases by 1.
* A new **Spell** is randomly selected and added to the spell list.
* The Experience Bar resets.
---
## 4. Technical Requirements
* **State:** The application must maintain a state object containing the character's profile, stats, inventory list, and log history.
* **Styling:** A "Retro Win95" or "Classic MMO" aesthetic with high-contrast borders.
* **Performance:** The log should prune entries older than 100 lines to maintain performance.
---
## 5. Data Appendix
### Character Names
* Kevin from Accounting, Sir Tap-A-Lot, The Great Barnaby, User_772, Mistake #4, Sir Not-Appearing-In-This-Game, A Literal Bag of Flour, Lord Helvetica, Chadwick the Unready, Karen of the Suburbs, Glitchy McGlitchface, The Placeholder, Grommet the Slightly Agitated, Barb the Librarian, Sir Sells-Everything, Kyle the Monster Energy Enthusiast, Grandmaster Procrastinator, The Unpaid Intern, Sir Buffering..., Standard Hero 01.
### Races
* Sentient Toaster, Depressed Elf, Low-Carb Orc, Middle-Management Dwarf, Glitch in the Matrix, Half-Empty Human, Sentimental Slime, Vague Shadow, Procrastinating Pixie, Bureaucratic Beholder, Existential Ghost.
### Classes
* Spreadsheet Warrior, Chronic Procrastinator, Underpaid Mage, Professional Mourner, Existentialist Rogue, Lunch Knight, Intermittent Faster, Coffee Warlock, Passive-Aggressive Paladin, Technical Support Druid, Tax Accountant.
### Tasks
* Debating a fence post, Polishing a rusty nail, Contemplating the void, Waiting for a sign, Filing a 1040-EZ, Staring into the middle distance, Organizing a sock drawer, Explaining the internet to a rock, Searching for a lost remote, Counting ceiling tiles, Simulating a personality, Buffing out a scratch in reality.
### Locations
* The Forest of Mild Inconvenience, The Cave of Echoing Sighs, Downtown Boredom, The Desert of Dry Humor, Mount Mediocrity, The Swamps of 'I'll Do It Tomorrow', The Suburbs of Despair.
### Item Adjectives
* Dull, Polished, Forbidden, Rusty, Lamentable, Insignificant, Glowing, Slightly Damp, Overpriced, Mediocre, Legendary-ish.
### Item Nouns
* Scissors of Regret, Pebble of Mediocrity, Scone of Power, Lint of Destiny, Paperclip of Hope, Broken Twig, Expired Coupon, Sock of Mystery, Unfinished Novel, Jar of Pickled Thoughts.
### Monsters
* A Literal Metaphor, The Concept of Ennui, A Low-Level Bugbear, An Imaginary Friend, A Confused Salesman, A Dust Bunny of Doom, The Ghost of a Dead Pixel, A Sentient Terms of Service Agreement.
### Spells
* Aggressive Sighing, Metaphysical Poke, Summon Minor Annoyance, Greater Procrastination, Flash of Inadequacy, Power Word: 'Whatever', Cloud of Confusion, Internal Monologue.
### Stats
* Strength, Constitution, Dexterity, Intelligence, Wisdom, Charisma, Patience, Luck, Caffeine Level, Existential Dread.
Zenflow generated the application, and I also had it use a different agent to review its own code.
I ran the application, saw things I wanted changed, and then specified those changes:

Zenflow made the changes, then I had the review agent review those changes. This process of refinement continued for a couple more steps, and the result is the game located at accordionguy.github.io/eternal-grind/.
As I mentioned before, Eternal Grind is a work in progress. I’ll continue adding tweaks and improvements using Zenflow. Watch this space!
Find out more
- Eternal Grind site
- Eternal Grind GitHub repository
- Zencoder site
- Progress Quest official site
- Progress Quest Wikipedia page
- EverQuest Wikipedia page