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
Claude Code helped build a working 46,000-line CRM — and there's already a guide
Source: Habr AI. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceHabr AI ↗
Editor-in-Chief
Key metric #1A short claude.md with the most important points
Key metric #2Separate md files for major modules
Key metric #3Specialized instructions for backend and database

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.

Story

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

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Hands-On AI Engineering · Hamidun Academy

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.

Start 72h Free Trial →Vibe-Coding Intensive
What do you think?
Loading comments…