trycompai/crm: The CRM Where the Agent Does the Work
A deep dive into a durable, evidence-first customer system that flips the usual CRM model. Humans define intent. Agents gather proof. The database just records what survived scrutiny.
- trycompai/crm flips CRM from a human entry system into an agent execution system.
- The project treats evidence as the unit of truth and rejects confidence scores as a write path.
- Durability matters here because the agent survives interrupts, leases work safely, and resumes without losing state.
- The architecture makes the product feel safer than a typical AI CRM because humans set intent and ambiguous data routes to review.
The CRM Reversal
Traditional CRMs make humans do the typing and software do the storing. trycompai/crm reverses that contract: the agent researches, enriches, and updates, while the database acts like a ledger of verified facts. That is why this repo is interesting before you even look at the stack.
The project’s basic claim is blunt. A CRM should not reward whoever can fill forms fastest. It should reward the system that can accumulate evidence, keep provenance, and leave a clean trail for review.
The agent is not a feature of the CRM; the CRM is where the agent keeps its notes.
Why Confidence Is the Wrong Primitive
The repo rejects the familiar AI habit of returning a confidence score and calling it rigor. Instead, the agent reports observations such as identity matches, signature blocks, and public records. The system then decides whether that evidence is strong enough to write back.
That choice changes the product’s epistemology. The goal is not to make the model sound sure. The goal is to prevent plausible lies from becoming customer data.
How the Durable Queue Keeps the Agent Alive
The technical proof lives in the task system. The repo’s queue pattern uses PostgreSQL leasing with FOR UPDATE SKIP LOCKED, which lets multiple workers claim due work without stepping on each other. If an agent crashes, the task is not lost. It is simply eligible again.
// lib/tasks.ts style queue claim pattern
const rows = await db.$queryRaw`
SELECT id
FROM tasks
WHERE due_at <= now()
AND leased_at IS NULL
ORDER BY due_at ASC
FOR UPDATE SKIP LOCKED
LIMIT 1
`;
// lease task, process, then write evidence back when complete
That is a small detail with big consequences. It turns the agent into durable infrastructure instead of a fragile cron job with an LLM attached.
| Pattern | What happens | Failure mode |
|---|---|---|
| Cron job | Runs on a timer and hopes work is still valid | Missed work or duplicate work |
| Leased queue | Claims one due task at a time | Work resumes safely after interruption |
| Request-response AI | Answers once and exits | State disappears with the request |
| Durable agent | Keeps state and returns to the queue | Slow work survives restarts |
What Eve Changes About Agent Design
The other unusual move is filesystem-first agent design. Under .agents/, the repo stores SKILL.md files and AI elements as readable artifacts, which means behavior is versioned like code but read like prose. That is a much more legible contract than hidden prompt strings buried in application logic.
This matters because agent behavior is not just a model choice. It is a repository of instructions, tools, and conventions that teammates can inspect, review, and modify.
.agents/skills/nestjs-best-practices/SKILL.md is the kind of file that tells you the project wants agents to be teachable, not magical.
Why This Architecture Feels Safer Than a Typical AI CRM
The sandbox posture helps. The agent operates with deny-all egress, so the default is containment rather than open-ended network freedom. Add the no-guessing rule and human intent at the top of the workflow, and the whole system reads as controlled automation instead of autonomous improvisation.
Nothing about a person is guessed. No tool accepts a confidence score, because a model asked to grade its own certainty will, and it will be wrong in the direction that makes it look useful.
That is a strong governance stance for a CRM. It does not promise omniscience. It promises fewer silent mistakes.
How It Compares to Twenty, HubSpot, and Attio
This project is not trying to win the CRM market by being the most complete dashboard. It is trying to change who does the work. Most CRMs still optimize for human data entry. trycompai/crm optimizes for machine verification.
| System | Primary worker | Data model | Workflow style | Self-hosted? | Evidence policy | Best fit |
|---|---|---|---|---|---|---|
| trycompai/crm | Agent | Evidence ledger | Durable research and review | Yes | No guessing, write only on proof | Teams that want autonomous enrichment |
| HubSpot | Human | Customer database | Manual plus automation | No | Confidence lives in features, not the core model | Broad sales and marketing ops |
| Twenty | Human | Flexible CRM schema | Traditional CRM workflow | Yes | User-driven data management | Open-source CRM teams |
| Attio | Human | Unified data model | AI-assisted workflow | No | Strong automation, still SaaS-first | Modern teams wanting polished UX |
The contrast is not really about features. It is about labor economics and trust. Self-hosting, evidence thresholds, and agentic durability make this project feel closer to a controlled internal system than a generic SaaS product.
What the Project Suggests About the Next CRM Category
The larger implication is simple. CRM may stop being a place where people type account truth into forms. It may become a system that continuously assembles, verifies, and audits customer intelligence in the background.
The pitch is literal, not marketing fluff: a durable research agent is the product; the database is where it writes things down.
That is the cleanest way to describe the repo. The database is not the product. The verified record is the product, and the agent is the worker that earns it.