My Actual AI Workflow (Not the Polished Version)
There's a genre of AI workflow content that I've read probably fifty times and gotten very little from. It usually goes: person uses five AI tools, maps their tasks neatly to the right tool, everything is optimized and intentional. No friction. No wasted tokens. No moment where the AI confidently produces the wrong answer and they accept it because they're tired and in a hurry.
That's not what my week actually looks like. My week looks like a mostly useful collection of habits built around AI tools, interrupted periodically by me giving bad prompts, misusing the right tool for the wrong task, or failing to give the model enough context to do anything useful.
Here's the real version.
The tools and what I actually use them for
Claude Code (the terminal agent) is what I reach for when I have a coding task that's more than a few lines and I don't want to be the one writing it. I describe what I want, it reads the codebase, writes the code, runs the tests, fixes the issues. When it works — which is most of the time — it feels like having a junior developer who never gets tired and doesn't care how many iterations it takes. I used it to build out a migration reporting tool for Threefold that probably saved me a day of work.
claude.ai (the web interface) is where I do thinking work. Drafting, planning, analyzing documents, talking through a decision before I've landed on it. I treat it less like a tool and more like a conversation with someone who knows a lot and doesn't have a stake in the outcome. For writing — blog posts, proposals, client communication — I almost always start here.
Cursor is where I go when I want to be in the code and have AI alongside me. Claude Code is better at autonomous tasks. Cursor is better when I want to understand what's happening, review changes closely, and stay in the driver's seat. For client-specific work where the business logic is complicated, I often prefer Cursor because the context I need to hold is too specific for me to brief an agent on.
function getAIToolByTask(task) {
const routing = {
autonomousCodingTask: 'Claude Code',
writingAndDrafting: 'claude.ai web',
thinkingAndPlanning: 'claude.ai web',
codingWithOversight: 'Cursor',
clientDocumentation: 'claude.ai web → Cursor for implementation',
debugging: 'Cursor (I want to see what it\'s doing)',
proposalDrafting: 'claude.ai web',
meetingNotesSummary: 'claude.ai web',
dataMapping: 'Claude Code',
}
return routing[task] || 'claude.ai web (default)'
}
What a week actually looks like
Monday. Client check-ins. I use claude.ai to summarize the notes from last week's calls before I get on the first call of the week — paste in my rough notes from the previous Friday, ask for a clean summary by client with open items and anything I committed to. Takes two minutes. The alternative is digging through three different notes apps and a text thread trying to remember what I said I'd send.
Tuesday/Wednesday. Heads-down work days. If I'm in a migration, Claude Code handles the repetitive transformation work — reformatting data exports, running validation checks, generating reports. I set up the task, brief it on what I need, and check back. If it goes sideways (which it does, more than I'd like), I debug and re-brief. The failure mode is usually that I was too vague in the initial prompt.
Thursday. Proposal and business development work. Any proposal I'm drafting starts in claude.ai — I describe the client, their situation, the scope, their top concerns, and ask for a structured first draft. I then rewrite it heavily in my own voice. The AI draft is scaffolding, not finished product. What I'm avoiding is the blank page.
Friday. Administrative and planning. This is where I use AI most broadly — generating SOPs from voice notes, drafting process documentation, cleaning up internal guides that have gotten stale. It's also when I do most of my writing, including this blog.
The real failure modes
I give bad context and accept bad output. This is the most common failure. I'm in a hurry, I give the model a vague description, I get a vague answer, I work from the vague answer, I wonder later why the thing didn't work right. The fix is always the same: slow down, give more context, be specific about what success looks like. I know this. I still regularly forget it.
I let Claude Code run too long in the wrong direction. Claude Code is an agent — it will keep working until it either solves the problem or runs out of things to try. Sometimes I set it on a task and come back twenty minutes later to find it has made seven commits, none of which fixed the original issue, and now there's a new issue. The fix is tighter feedback loops and being more specific about stopping conditions.
I use AI when I should just do the thing. For tasks that take five minutes and require knowledge I have but would take three paragraphs to explain to the model — just do it. The overhead of briefing an AI is not always worth it. I'm still calibrating this.
I don't prompt for the format I actually want. I ask for a summary and get five paragraphs when I wanted bullet points. I ask for bullet points and get ten bullets when I wanted three. The model will write in whatever format you ask for. Ask for the format.
The prompts that actually work
A few things I've found that consistently improve output:
Give it the context it can't know. The model doesn't know your client's history, your specific constraints, or what you tried last time that didn't work. The more of that you put in the prompt, the better the output. "Here's the context: [three sentences]. Here's what I've already tried: [two sentences]. Here's what I need: [specific ask]" is almost always better than just the specific ask.
Tell it what format you want. "Give me this as a bulleted list with one-sentence items." "Write this at an eighth-grade reading level." "Keep it under 200 words." These constraints produce better output, not worse.
Ask it to push back. "Before you answer, tell me if there's a better way to frame this question." The model has seen a lot of things. Sometimes it has a better framing than the one you came in with.
Tell it when you want brevity. Models default to being thorough. If you want a short answer, say so explicitly. "Answer in one paragraph" actually works.
The honest take
AI is genuinely changing how I work. Not in the dramatic sense — I'm not running a one-person company with AI agents doing everything autonomously. In the prosaic sense: tasks that used to take an hour take twenty minutes. Things I'd procrastinate because the blank page was daunting get started because I can generate a rough draft in two minutes and edit from there.
The ceiling on how useful this gets is mostly a function of how well you brief the model. The tool is there. The skill is in the prompt. And the prompt is just knowing what you want clearly enough to describe it to someone else.
That's a skill you already have. You're just applying it to a new context.