Claude Code helped build a working 46,000-line CRM — and there's already a guide
Habr AI has published a real-world vibe coding case: a two-person team built a working 46,000-line CRM in a month and a half using Claude Code. The story is less about the volume of code than about discipline: a short claude.md, per-module documentation, one context per task, plan mode for large chunks of work and mandatory review.
AI-processed from Habr AI; edited by Hamidun News
Habr AI has published a detailed case study of how a two-person team built a commercial CRM almost entirely through Claude Code. In a month and a half they produced 46,000 lines of code, a working product and a set of rules without which this way of working quickly turns into chaos.
What they built
The authors describe not a teaching prototype but a working CRM for handling incoming requests and managing deals. The system can reply to emails automatically, create tasks and move a client through the sales funnel.
Two people wrote the project. One combined the roles of manager and analyst, collected tasks from calls via ReadAi and put them into Jira through MCP. The other ran the development, implementation and testing process itself. The stack is NestJS, NextJS, ShadCN UI and PostgreSQL.
The key takeaway from the experiment is simple: the impressive part is not the 46,000-line figure but the fact that a client is already using the project. That matters against the usual skepticism toward vibe coding, which is often associated either with weekend demos or with fast-tracked technical debt. In this case the authors show the opposite scenario: if you limit tasks, roles and working rules up front, AI can be not a toy but a fully practical tool for commercial development.
How they organized the process
The team's main artifact was a short claude.md file — not a dump of knowledge but an entry point with a project description, the stack, links to documentation and basic rules. Everything else went into separate md files per module: deals, mail processing, the API and other parts of the system. For backend, database and other areas they created their own "agents" in the form of instructions with patterns, constraints and typical mistakes. The idea is that Claude reads only the context it needs right now instead of spending tokens on the entire project.
- A short claude.md with the most important points
- Separate md files for major modules
- Specialized instructions for backend and database
- One context per task
- Mandatory review after generation
The second rule is not to mix tasks in one window. The authors advise sticking to "one context = one task", running clear when a task is done and using resume to return to it. The reason is that when the context overflows, Claude compresses the history and loses details at the worst possible moment. For large pieces of work they turned on plan mode to split implementation into independent subtasks.
By their estimate, even the basic $20 subscription covers 3–5 hours of active work, provided the documentation and project structure are already prepared.
Where problems arise
The article separately covers typical failures. Claude can confuse library methods, forget what was already discussed, produce duplicate code or propose architectural solutions that fit poorly with the rest of the system.
External APIs are a separate source of errors. If you pull documentation from the internet on the fly each time, the model both spends more tokens and makes more mistakes in parameters or usage scenarios. So for each integration the team first asked the AI to compile a separate md file from the official documentation and only then moved on to code.
The authors also advise not skipping discovery, not trusting without checking a spec the client generated with AI, and not expecting a perfect result on the first try. For complex architectural tasks they connected Sequential Thinking so the model would first work through a chain of reasoning rather than rushing straight into code. Serena proved useful for navigating a large codebase, saving context on file searches.
They state the general principle very directly:
"The main thing is to understand what you want to get at the output
and not to generate chaos."
What it means
The Habr AI case shows that the main bottleneck in vibe coding is not code generation but control over the process. Claude Code speeds up development, but only if the team has discipline in documentation, task breakdown, review and context management.
For studios and product teams this is, in effect, a new operational skill: writing prompts is not enough; you need to design an environment in which the AI does not sprawl across the project but moves it forward.
- Nov 1, 2026Local models lose to Opus and Codex: 0.21 on a MacBook versus 1.00 for Codex
- Nov 1, 2026Kimi scores 96.2% on a 1C database analytics test and emerges as a fallback if Claude access is blocked
- Nov 1, 2026OpenAI Rewrites GPT Behavior Rules: Five Values and a Chain of Command
- Nov 1, 2026Google admits AI Mode cuts search revenue, shares fall 15%
Key Questions Answered
What they built?
The authors describe not a teaching prototype but a working CRM for handling incoming requests and managing deals. The system can reply to emails automatically, create tasks and move a client through the sales funnel. Two people wrote the project. One combined the roles of manager and analyst, collected tasks from calls via ReadAi and put them into Jira through MCP. The other ran the development, implementation and testing process itself. The stack is NestJS, NextJS, ShadCN UI and PostgreSQL. The key takeaway from the experiment is simple: the impressive part is not the 46,
How they organized the process?
The team's main artifact was a short claude.md file — not a dump of knowledge but an entry point with a project description, the stack, links to documentation and basic rules. Everything else went into separate md files per module: deals, mail processing, the API and other parts of the system. For backend, database and other areas they created their own "agents" in the form of instructions with patterns, constraints and typical mistakes. The idea is that Claude reads only the context it needs right now instead of spending tokens on the entire project. A short claude.md with
Where problems arise?
The article separately covers typical failures. Claude can confuse library methods, forget what was already discussed, produce duplicate code or propose architectural solutions that fit poorly with the rest of the system. External APIs are a separate source of errors. If you pull documentation from the internet on the fly each time, the model both spends more tokens and makes more mistakes in parameters or usage scenarios. So for each integration the team first asked the AI to compile a separate md file from the official documentation and only then moved on to code. The aut
Build & Ship Production AI Agents Without Boilerplate Code
Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.