Skip to content
← All work

The System

An interview-prep RPG that became a job-search cockpit: deterministic engine, AI only at the edges.

Private build ReactViteClaude APITailwind
The System: An interview-prep RPG that became a job-search cockpit: deterministic engine, AI only at the edges.

A private tool I use daily. Screenshots show the concept, not my data.

The idea

Interview prep fails for a boring reason: deciding what to study each day costs more willpower than studying. The System deletes that decision. It is an interview-prep RPG, openly inspired by Solo Leveling, that grew into a full job-search cockpit: prep, resume tailoring, and application tracking in one place.

What I built

A deterministic, unit-tested engine owns the plan. Pure functions compute today’s queue sized to one or two hours, a readiness percentage, and what is due for spaced review across a research-backed task backbone. XP, ranks from E to SSS, and streaks sit on top, and the rank-up moment is dramatic on purpose: the theater is the motivation layer, never the logic.

AI lives only at the edges. The Forge takes a base resume and a job description, returns a structured fit analysis, and renders a tailored resume into a template the application owns: Claude returns structured data through forced tool-use, the app controls all formatting, so the output is consistent on every run. Cover letters stream in on demand over SSE, with retry and backoff underneath, and DOCX flows in and out. Most importantly, progress never requires the API: when the model is down, the plan still stands.

The hard parts

01

AI you cannot be blocked by

The architecture rule was written before the first component: a curated backbone, a deterministic engine, and AI as an accelerant only. Nothing on the critical path calls a model.

02

Consistent documents from a probabilistic model

Letting a model produce a formatted resume produces a different document every time. Forcing structured output into an app-owned template splits the problem: the model judges content, the app guarantees form.

03

Task identity over time

Progress lives in localStorage keyed by task ID, so IDs are immutable by policy: renaming one would erase someone’s history. Small discipline, real data-migration thinking.

What’s next

It is doing its job. This website is part of the pipeline it manages.