← Back to overview

Twenty

CRM · evaluated · Website · twentycrm/twenty:latest

Summary

Best-in-class AI controllability for CRM. Node/NestJS + PostgreSQL + Redis + worker. Triple API (REST + GraphQL + MCP built-in). Metadata-driven schema, first-class agent/skill/webhook system. Heavier than EspoCRM but an order of magnitude more AI-operable than GHL. Avg score: 8.3/10.

Evaluation Scores

AI Controllability 10/10 Best-in-class for AI. Native MCP server built into the API. First-class agent/skill system as CRM entities (agent, agentChatThread, agentMessage, agentTurn, agentTurnEvaluation, skill tables). Workspace-scoped API keys, metadata-driven object model means Claude can define new custom objects via API and then immediately CRUD them. Logic functions table suggests programmable automations.
API Coverage 10/10 Triple API: REST with OpenAPI 3.1.1 spec, GraphQL, and built-in MCP server endpoint (/mcp POST). Workspace-scoped bearer token auth. Dynamic REST routes for all workspace objects (/rest/*path with CRUD + groupBy + batch + merge + restore). Metadata API for schema changes at runtime.
DB Schema Quality 9/10 Clean, modern metadata-driven PostgreSQL schema. 61 core tables in dedicated core schema, workspace data isolated in its own schema. Explicit metadata tables (objectMetadata, fieldMetadata, indexMetadata) drive dynamic object creation. Strong permission model: role, roleTarget, fieldPermission, objectPermission, rowLevelPermissionPredicate. Multi-tenant via workspace. TypeORM migrations.
Feature Completeness 8/10 Strong core CRM: contacts/companies/opportunities via dynamic workspace objects, pipelines via views + filters/sorts, page layouts, calendar and email channel integration (Gmail + Microsoft), connected accounts, SSO, 2FA, public domains, approved access domains, API keys, webhooks, applications registry, agent system. Gaps vs GHL: no built-in marketing automation campaigns (use Mautic/Listmonk alongside), no built-in phone/SMS, no funnel builder.
Resource Usage 6/10 Four services: server (Node/NestJS), worker (Node), PostgreSQL 16, Redis. Node app is reasonably sized but needs both server and worker containers, plus Redis queue. Heavier than Listmonk or EspoCRM. Reasonable for a CRM with live webhooks, email sync, calendar sync, and agent runtime.
Setup Complexity 7/10 Docker compose brings it up with one command once APP_SECRET and DB password are set. Healthcheck orchestration works (db -> redis -> server -> worker). The curl-based /healthz healthcheck can intermittently lag even though app is healthy, but app still serves traffic. No manual DB migration step needed — migrations run on server startup.

Research Notes

Feature List feature_list

Sales CRM: Contact, Company, Opportunity, Lead as workspace objects (dynamic/metadata-driven). Pipelines via views + filters/sorts/groups. Page layouts (tabs, widgets). Kanban ordering. Marketing: None built-in (no campaigns, mass email, broadcasts, drip sequences). Designed to pair with Mautic/Listmonk. Email: Gmail + Microsoft message channel sync (inbound threading to contacts), connected accounts. No outbound campaigns. SMS: None. Voice/Phone: None. AI: First-class agent system — agent, agentChatThread, agentMessage, agentMessagePart, agentTurn, agentTurnEvaluation, skill tables. Native MCP server at /mcp. Logic functions + layers. Workflow AI-ready as native objects. Funnel/Website Builder: None. Forms/Surveys: None built-in (use webhooks + API to ingest). Calendar/Booking: Calendar channel integration (Gmail/Microsoft sync). No public booking pages. Courses/Memberships: None. Communities: None. Payments/Invoicing/Products: None. Reputation: None. Reporting/Dashboards: Views with filters, sorts, groups, kanban. No campaign analytics. Workflows/Automation: logicFunction + logicFunctionLayer tables (programmable). Webhooks (first-class). No visual flowchart builder out-of-box. Integrations: REST + GraphQL + MCP. Application registry, applicationVariable, webhook queue. SSO, 2FA, API keys (workspace-scoped). White-label/SaaS Mode: Workspace model is multi-tenant; publicDomain, approvedAccessDomain, emailingDomain, workspaceSSOIdentityProvider. No native reseller billing. Snapshots: None (but metadata-driven objects could be exported/imported as JSON). Social: None. Permissions: role, roleTarget, fieldPermission, objectPermission, rowLevelPermissionPredicate — best-in-class OSS model.