Daniel Howells

Claude Code as Platform

2025-08-20

Offledger treats Claude Code as a platform, not a coding tool. Instead of building a web app with buttons and forms, I built slash commands: /import, /categorise, /budget, /context. Claude is the UI; SQLite is the state.

This sounds like a hack, but the DX is remarkable. Natural language queries over your own data. No forms to design, no state management, no deployment. The "app" is a folder with a database and some scripts.

The slash command pattern

A good CLI command does one thing and does it fast. /import reads a CSV and maps transactions to categories. /budget compares spending to limits. /context dumps a summary of your financial state so Claude can answer follow-up questions. Each command is a skill file — a markdown document that gets injected into Claude's context when you invoke it.

The pattern works because the interface is conversation. You don't need to design a screen for "show me what I spent on food last month" — you just ask. Claude has the schema, the data, and the context to answer. The slash command gave it the tools to query.

This extends further than finance. Any domain where you have structured data and want natural language access is a candidate. Recipe databases, reading logs, project tracking. The pattern is always the same: SQLite for state, slash commands for actions, Claude for the interface.

The limits

Not everything works in a terminal. Anything visual — charts, dashboards, image previews — needs a real interface. Collaborative features are out. Real-time updates are out. If you need to share state with other people, you need a server and a UI.

The other limit is trust. Claude can hallucinate numbers. For finance, I added verification steps — every categorisation gets confirmed, every budget comparison shows raw totals. The slash commands are designed so Claude does the heavy lifting but you see the receipts.

For personal tools where you're the only user, though, this is hard to beat. Zero infrastructure, zero maintenance, and an interface that understands English.