Daily Tech Briefing
AI 科技速览

每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。

AI 快讯
Hacker News · 2026/8/2 06:59:28
CRM: An open-source, agentic-first CRM

CRM: An open-source, agentic-first CRM

AI 中文解读
【CRM: An open-source, agentic-first CRM】CRM An open-source, agentic-first CRM. A durable research agent is the product. The database is just where it writes things down. The agent · Stack · Quick start · Configuration · Dep...
CRM An open-source, agentic-first CRM. A durable research agent is the product. The database is just where it writes things down. The agent · Stack · Quick start · Configuration · Deploying · Contributing What this is Most CRMs are a database with a form in front of it. The AI ones bolt a chat box onto the side of that form. Both leave the actual work — finding out what is true, and writing it down — to a human who has better things to do. This is built the other way round. The agent is not a feature of the CRM; the CRM is where the agent keeps its notes. It runs on its own deployment, on its own schedule, against its own work queue. It decides what to look at next, books its own follow-ups, spends a research budget, and stops when the budget runs out. Nothing about it is request-response: close the browser and it keeps going. The API deliberately has no intelligence in it at all. NestJS reports that something happened — a thread was ingested, a company was created, an attendee is unknown — by writing a row to a queue. The agent leases that row and decides what it means. A Nest service that calls an enrichment API is treated as a bug, and docs/api.md explains the outage that made that a rule. The rule the agent itself never breaks: 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. Tools report what they observed — crm.signature-block, github.account-identity — and a ledger prices the evidence. Strong evidence writes to the record. Weak evidence becomes a suggestion a human settles. A confidently wrong fact about a customer is worse than a blank field, because nobody can tell it is wrong. It is single-tenant and internal by design. Sign-in is Google, the allow-list is one environment variable, and everyone who gets in can see everything. That is the whole authorisation model — see SECURITY.md before you point it at real customer data. Screenshots Deals — filters, sort and page live in the URL, so a view is a link. Contacts — most of these were created by the mailbox sync, not typed. Companies — logo, industry and location arrive on their own. Overview — yours or the whole team's, toggled in the URL. The agent apps/agent is its own deployment, built on eve — Vercel's filesystem-first framework for durable agents. A tool is a file, a skill is a markdown file, a schedule is a file, and the runtime handles the durable part: sessions that survive a redeploy, work that resumes where it stopped. 18 authored tools read_crm_history, search_crm, identify_contact, research_person, enrich_company, record_fact, schedule_recheck… 4 skills evidence.md, identity-matching.md, data-boundaries.md, writing-a-brief.md — prose the agent reads, versioned like code 1 schedule dispatch.ts, which decides nothing. It leases what is due and starts a session per row. A sandbox bash, grep, glob and a /workspace, with deny-all egress It runs itself. lib/tasks.ts is the work queue: claimDue leases rows with FOR UPDATE SKIP LOCKED, so two dispatchers take disjoint work and a run that dies frees its row when the lease expires. Anything that looks like "every N minutes, the oldest ten contacts" belongs in a task's dueAt, not in a cron expression. When the agent wants another look at somebody it calls schedule_recheck and says why — and the reason is shown to the rep, because an agent that cannot say why it will be back in fourteen days does not have a reason, it has a default. Every outside source is optional, and it is designed to run with none of them. With no API keys at all it still works: read_crm_history reads your own threads, meetings and signa
分享
阅读原文