KBMJJ123.cc✦ Indie Log

How I Built a Cheap AI Coding Workflow with Claude and DeepSeek

TL;DR

I split AI coding into three layers: Claude for planning, DeepSeek for execution, and myself for final judgment. That setup helped me keep costs under control, reduce dependency on a single model, and ship faster as an indie developer.

Background

I’ve been building indie sites for about six months, and the reality has been simple: I have limited time, limited budget, and a lot of work to do outside coding. Most days I’m balancing a full-time job, family time, and the few hours I can still use to move my products forward.

Because of that, I stopped thinking about AI as a magic “do everything” button. I needed a workflow that could help me plan faster, code faster, and recover faster when one tool stopped working. That pressure is what pushed me toward a split-model setup instead of depending on a single AI assistant.

Why I needed a hybrid workflow

At first, I wanted one model to handle everything. In practice, that didn’t hold up. Claude was strong for reasoning and planning, but I kept running into access issues and account risk. DeepSeek was cheaper and more flexible, but it was not something I wanted to use blindly for every task.

The real problem was not model quality alone. It was the combination of cost, rate limits, account bans, and the fact that I needed something I could repeat every day without thinking too hard. If I could only finish a coding session when one model cooperated perfectly, the workflow was too fragile for real indie work.

So I started treating AI more like a system. Not one brain, but a chain of roles.

What each model does

Claude is my planning layer. I use it for market research, direction setting, architecture thinking, and turning a vague idea into something structured. If I need to understand what I should build next, or what the shape of a solution should look like, Claude is usually the first stop.

DeepSeek is my execution layer. I use it for scaffolding, repetitive fixes, scripts, unit tests, and smaller coding tasks that need to be done quickly and cheaply. If I can make a task specific enough, DeepSeek usually gives me a result that is good enough to move forward.

I stay in the loop as the fallback layer. That means I’m the one making the final call, checking whether the output fits the project, and deciding whether the task needs another round of refinement. The system works because I do not let the models make big assumptions on my behalf.

How I split tasks in practice

The easiest way to explain the workflow is with a real example: I used it when I was improving the SEO structure of my AI Image category page.

I started with a broad question: how can I improve the SEO of this category page? That gave me a generic answer, which was useful but not enough. The page only had three tools, and the keywords were too broad to justify the kind of traffic I wanted.

So I kept narrowing the task. I asked whether I could export keywords from GSC and Bing and use those to enrich the page. Then I asked whether the category page should include articles, since my tool landing pages were not really article-heavy. That moved the discussion from “general SEO advice” to “what this page should actually be.”

The turning point was the real search data. Once I brought in GSC, the difference became obvious. The page was targeting terms like “ai image tools” and “remove image background,” but users were actually searching for things like background remover 2x2 and ai background remover passport photo. That told me the problem was not missing content in the abstract. The problem was that the page was aimed too broadly for what it could realistically support.

From there, the task became much more concrete. I could split it into smaller steps:

  • update the category keywords and description,
  • focus on a narrower intent like passport photo background removal,
  • treat the category page as a mini guide,
  • keep articles as support instead of the main content layer.

That is the kind of task I try to give DeepSeek now. Small enough to finish, specific enough to avoid guessing, and bounded enough that I can review it in fewer than five turns.

What worked and what didn’t

The biggest win is cost control. DeepSeek Flash is cheap enough that I can use it for frequent, smaller tasks without thinking too hard about token burn. But I also learned that “cheap” is only cheap when the task is narrow. If I let the model improvise too much, the value drops fast.

DeepSeek Pro is stronger, but it is not the free lunch people sometimes imagine. Once the task gets more complex, cost goes up too. That is why I started being stricter about prompt design and task scope. The more specific the job, the better the output tends to be.

Claude is still the model I trust for the harder thinking, but it also comes with real friction. For me, that meant access risk and too many account issues to treat it as a stable daily dependency. That does not make Claude worse. It just means I cannot build a reliable workflow around a tool that keeps disappearing from the table.

The other thing that did not work was asking models to “just figure it out.” That sounds convenient, but it usually creates more work later. When the task is vague, the model fills in the blanks with its own assumptions, and those assumptions are often the part I have to clean up.

My current setup

Right now, my workflow is intentionally boring:

  • Claude for planning and structure.
  • DeepSeek for cheap execution.
  • Me for final review and decision-making.

That setup is not glamorous, but it works. It also gives me room to keep shipping even when one layer becomes unavailable. If Claude is blocked, I can still move with DeepSeek. If DeepSeek output feels too loose, I can tighten the task or switch the work back to manual review.

I’m also still looking for better fallback options. The point is not to worship one model or one vendor. The point is to keep building with the least amount of friction I can reasonably get away with.

An indie developer AI coding workflow diagram showing Claude for planning, DeepSeek for execution, and the developer for final review.

What I learned from the SEO case

The category-page SEO work taught me one more thing: AI becomes much more useful when the task is grounded in real data. Once I fed in GSC queries and asked sharper questions, the model stopped giving me generic advice and started surfacing the actual gap between my page and user intent.

A dark-themed SEO audit summary for an AI Image category page, highlighting broad keywords, only three tools, missing hero content, and weak article support.

That is the real pattern I use now. First I define the problem, then I constrain the task, then I let the model do the narrow work. That order matters more than model choice in a lot of cases.

For that AI Image category page, the result was a clearer direction:

  • broad terms were too competitive for a page with only three tools,
  • the page needed to target a narrower use case first,
  • articles were useful, but only as support,
  • and the category page itself had to behave more like a mini guide.

That outcome is a good example of why I split AI work into layers. The model helped, but it only became truly useful after I turned the problem into something specific enough to solve.

A redesigned AI Image category page structure showing a hero section, filters, tool count, subcategory links, featured tools, a choice guide, and supporting articles.

Lessons Learned

  • A hybrid workflow is usually better than a single-model dependency.
  • Planning, execution, and final judgment should not live in the same layer.
  • Small, well-scoped tasks produce better AI output than vague “big” requests.
  • Real search data makes AI-assisted SEO much more actionable.
  • Cost, access, and reliability are part of the workflow design, not side issues.