David Shatsky

A personal AI operating system built on Claude Code

In daily useClaude CodeAgentsAutomation
AIS-OS

What I walked into

Every domain of my life ran through disposable chat sessions. The job search, the reading pipeline, events, outreach: each conversation started from zero, remembered nothing, and produced advice instead of artifacts.

What I decided

Give the agent an operating system instead of a chat window. A git repo of markdown with distinct layers (knowledge, context, ops, automation), skills that act as pipelines with CRMs behind them, and a brain that compounds instead of resetting.

What I cut

Autonomy over anything that leaves the machine. Every skill that touches the outside world drafts and never sends; I'm the send button. Also cut: databases, dashboards, and any infrastructure a markdown file with a rollup at the top could replace.

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.

Next project

Lokin

A platform for student entrepreneurs to find their team

View case study →
Lokin