The problem
LLM chat is stateless and my life isn't. A job search, a knowledge base, a networking pipeline: these are compounding processes, and running them through conversations that forget everything means paying the context cost every single time. The standard fix is to build an app. The more interesting fix is to build an environment.
What it is
A git repository that Claude Code operates as my delegation layer, mostly dispatched from my phone to my laptop at home. The structure does the heavy lifting: a brain of cross-linked knowledge pages that every ingestion makes richer, ops folders holding CRMs for jobs, people, and events, context files that teach the agent how to act in each domain, and about twenty custom skills that turn intent into pipelines.
The design decision that matters
The job search is the proof case. Instead of "help me find a job," it runs like an outbound sales motion: a scan skill sources roles from ATS feeds and scores fit and intent as separate numbers, a CRM tracks every role and person through statuses, conversion skills turn surfaced targets into drafted applications and outreach sitting in Gmail, and a Friday report counts whether volume actually moved. The agent does the sourcing, scoring, and drafting; I make the calls and hit send. That boundary is load-bearing: an agent that drafts is leverage, an agent that sends is a liability.
What I learned
Structure beats prompting. The same model with the same request produces dramatically better work when the repo tells it where things live, what the statuses mean, and what done looks like. Most of the engineering here is not code; it's information architecture, deciding what's durable versus transient versus behavioral, and making every file findable in one hop. Building an environment for an agent turns out to be a product-design problem wearing an engineering costume.
