A full-stack AI-Native CRM you can take apart, modify, and extend. 236 files. 24,000 lines. Not a tutorial — a working enterprise application built the way real products are built.
On June 7, 2026 at 8 AM, we started with one sentence: "I want a sandbox for people to learn web dev." No wireframes. No Jira. No spec. Just an intent and an AI pair programmer. Here's what happened.
"I want a sandbox for people to learn web dev."
CRM won — more learning per unit of domain complexity.
Not AI-Added. Remove the AI and the product degrades.
Two separate systems — backend reasons, frontend perceives.
Schema, types, server (79 files), client (95 files).
24,189 lines. Working AI-Native CRM. Done.
The 35 minutes of conversation — debating, defining, designing — produced the clarity that made 50 minutes of parallel code generation possible. The thinking was the hard part. The code followed.
The same stack used at companies from seed stage to IPO. Nothing dumbed down, nothing simulated.
Every modern web app is built with this — component-based, fast hot-reload.
Handles business logic, API routes, authentication, and AI orchestration.
Where your data lives permanently. Prisma lets you talk to it without writing SQL.
Caching, real-time pub/sub, background job queues, rate limiting.
Data changes appear instantly — no refresh needed.
Three modes: mock (free), local (Ollama), cloud (OpenAI/Anthropic).
substrate/Database, cache, AI provider, auth, events, WebSocket — the pipes every domain uses.
domains/Contacts, Deals, Activities — each with its own intelligence/ surface. AI is distributed, not centralized.
reactions/Event-driven side effects. "Activity logged" → re-score deal, analyze conversation, generate suggestions.
suggestions/Every AI inference needing human approval flows here. The system proposes, you decide.
human/Forms, filters, actions — what you type into the system.
display/Cards, timelines, charts — data the system knows is true.
intel/Enrichment, scoring, drafts — with approve/dismiss on each.
Delete every intel/ folder. The app still compiles and runs — a clean traditional CRM. Add them back and the system thinks. Intelligence is woven through but cleanly separable. Build the CRM first, then add AI surface by surface.
❯ git clone https://github.com/DT-CultureTech/DT-CRM-Opensource.git❯ cd DT-CRM-Opensource❯ npm install❯ Copy-Item .env.example .env❯ # Edit .env — set your DATABASE_URL with your PostgreSQL password❯ npx prisma migrate dev --name init❯ npm run db:seed❯ npm run dev
Use the CRM. Create contacts, move deals, log activities. Watch the AI enrichment happen. Don't touch the code yet — just notice what the system does automatically.
Open shared/types/ — the nouns. Then server/reactions/ — the verbs. Trace one feature from button click to database write to AI inference to WebSocket push.
Change a deal stage name. Add a field to the contact form. Edit a prompt template. Small changes that teach you how the code connects to the screen.
Add a feature: a new dashboard report, a notification when a deal goes cold, a weekly AI summary. Full vertical slice — database to UI.
The cost of writing code is collapsing. The value of knowing what to build is exploding. When you can read and modify code — even at a basic level — you eliminate the translation layers between your insight and what gets built.
This sandbox lets you practice that bridge. You don't need to become an engineer. You need to become literate enough to close the gap between domain knowledge and product.
Read the full guideThe best software is a deep understanding of human behavior, encoded into a system. A CRM is deceptively rich — deal psychology, decision design, trust calibration, behavioral nudges, revenue mechanics. Every feature is a lesson.
This isn't a tutorial that teaches syntax. It's a working enterprise app that teaches you to think like a product builder — the skill stack that compounds: technical execution, system design, AI integration, behavioral design, business modeling.
Read the full guide236 files, a working AI-Native CRM, and an AI pair programmer in your terminal. Everything you need to go from zero to builder.