Agentic CRM
A durable research agent is the product. The database is just where it writes things down.
Hrida CRM is built the opposite way round from a normal CRM. The agent is not a feature bolted onto a form — 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. 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.
Nothing about a person is guessed. No tool accepts a confidence score. Tools report what they observed — a signature block, a 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.
How it's put together
Three independent deployments and a Postgres:
| Part | What it is |
|---|---|
| App | Next.js front end — the records, lists, dashboards, and the agent panel. |
| API | NestJS — HTTP, auth, tRPC, and the Google sync. No research, scoring, or enrichment lives here. |
| Research agent | Its own eve deployment — tools, skills, schedules, and a sandbox. Every piece of intelligence in the product. |
| Postgres | Prisma schema and migrations; the shared work queue. |
See Architecture for why it's split this way.
Feature map
| Area | What's there |
|---|---|
| The research agent | Authored tools, prose skills, a single schedule, a work queue with leases, per-session research budget, two dispatch lanes, task priority. |
| Contacts, companies & deals | Three record types, quick-add, the Overview / Contacts / Activity / Agent tabs, stage board and stage clock, delete-with-suppression. |
| Evidence, not confidence | Observation-based evidence model, verified / probable bands, auto-written facts vs. human-settled suggestions, never overwrite a human. |
| Enrichment & images | Company real name / industry / socials, logos and favicons, contact portraits, byte-mirroring into blob storage, sign-in backfill sweeps. |
| Gmail & Calendar sync | Forward-only thread and meeting ingestion, contact / company auto-create, participant filtering, per-source toggles, disconnect and delete. |
| Agent conversations | The per-record Agent tab, the browser→app→agent bridge, kept conversations, resume and start-new, record-scoped context. |
| Overview dashboard & activity | Pipeline by stage, Me / Everyone toggle, per-record activity timeline, notes / calls / emails / meetings, tasks with due dates. |
| Agent model & providers | OpenRouter, Anthropic, or any OpenAI-compatible endpoint — chosen as a setting, not a deploy; combined model catalog. |
| Authentication & access | Google sign-in, OIDC SSO as a row, the local admin door, the ALLOWED_SIGN_IN allow-list, the singleton workspace and onboarding. |
| Installation · Configuration | Quick start, the required values, the one root .env, optional capabilities, deploying the three services. |
| Architecture & security · Security model | Intelligence never in the API, single tenant by design, egress boundaries, the deny-all sandbox, data-boundary rules. |
Quick start
You need Bun and Docker.
git clone https://github.com/Hrida-AI/crm.git && cd crm
cp .env.example .env # fill in the required values
bun install
docker compose up -d # Postgres on :5432
bun run db:deploy # apply migrations
bun run db:seed # optional: a believable pipeline to look at
bun run devThe app is on localhost:3000, the API on localhost:3001. Full details in Installation.
License
Zlabs Innovation Software License — proprietary, not open-source. Commercial and enterprise licensing: sales@hrida.ai.