Skip to content

CRM Evaluation: Twenty vs. CiviCRM

[HYPOTHESIS] — this is an evaluation document, not a decision. Recommendations below are framed as the best inference from what's known in 2026-05; final choice should be tested with a real workload before commitment.

Why this doc

Big Nerd Idea is a forming non-profit (Foundation) plus a for-profit LLC, operating four projects (MPowerUP, RlivN, Toaster Chef game/sim, Second Boot). Across those projects and the entity work itself, BNI has at least three concurrent relationship-management needs:

  1. Donor & grant pipeline — corporate IT laptop donors (Second Boot), individual donors, grant funder relationships (LOIs, deadlines, deliverables across federal, state, foundation, and corporate sources)
  2. Partner outreach — makerspaces, recovery centers, reentry programs, schools, libraries, senior centers, after-school programs (Second Boot alone has 5 makerspace candidates already documented in docs/programs/second-boot/partners.md)
  3. Program participants — enrolled cohort members with PII discipline appropriate to vulnerable populations (recovery, reentry, formerly incarcerated, elderly). Attendance, module completion, device awards, post-program follow-up.

This doc compares Twenty CRM and CiviCRM against those needs. A third path (Airtable / spreadsheet-as-CRM) is mentioned at the end as a deferral option.

Decision criteria for BNI

# Criterion Why it matters here
1 Donor + contribution tracking One-time and recurring contributions, tax receipt automation, donor segmentation. Core to fundraising.
2 Grants pipeline LOI → application → award → deliverable lifecycle, with deadlines and stakeholders. Second Boot alone has 7 high-fit funders.
3 Partner / B2B relationships Orgs with multiple contacts, MOU status, named POCs, communication history.
4 Program participant data PII discipline, role-based access, audit logging, GDPR/CCPA-style data rights. Vulnerable populations make this serious.
5 Stack fit with BNI dev practice TypeScript-first projects; team prefers open-source.
6 Cost over 2 years Pre-501(c)(3) budget is tight; volume is small but growing.
7 Maturity / risk Picking a young tool means feature gaps and possible pivots. Picking an old tool means UX debt.
8 Customization without engineering burden 2-person team; CRM admin can't be a full-time job.
9 Hosting / ops burden Self-host vs. managed; uptime expectations.
10 Migration path out If the tool stops working, can BNI extract its data cleanly?

At a glance

Criterion Twenty CiviCRM
Donor + contribution tracking ❌ Not built in (generic CRM; would need custom data model + workflow) ✅ Native — one-time, recurring, pledges, in-kind, grant income, lifetime totals, lapsed flags
Grants pipeline ❌ Custom build via objects/workflows ✅ Grants module included
Tax receipt automation ❌ Not built in ✅ Automated mail-merge receipts
Partner / B2B relationships ✅ Native (Companies + People + Opportunities) ✅ Native (Organizations + Contacts + Relationships)
Program participant data + PII discipline ⚠️ Generic permissions; younger project, fewer established nonprofit patterns ✅ Mature role-based access; established patterns for nonprofit PII
Event / class / cohort management ❌ Custom build ✅ Native (event registration, attendance)
Volunteer management ❌ Custom build ✅ Native
Stack fit (BNI is TypeScript-first) ✅ TypeScript + NestJS + React + Postgres ❌ PHP (Drupal/WordPress/Joomla integration or standalone)
Modern UX ✅ Kanban, modern tables, search, AI assist ⚠️ Functional but dated; familiar to nonprofit-sector staff
Cost (self-hosted) Free + VPS ~$20–50/mo Free + hosting (DIY) or managed $25–100/mo
Cost (managed/cloud) $9–25/user/month $25–100/mo flat (CiviHosting, Skvare)
Maturity ~2 years public, 45.5k GitHub stars, actively developed 20+ years, used by thousands of nonprofits worldwide
License AGPL GPL
Customization without code ✅ Custom objects/fields/workflows via Settings UI ⚠️ Possible via extensions; less smooth than Twenty
Migration path out Standard Postgres dump Standard MySQL dump; established export tooling
501(c)(3) gating None None

Legend: ✅ strong, ⚠️ workable, ❌ would require build.

Detailed comparison

1 · Donor & contribution tracking

CiviCRM has this as its first-class problem. Out of the box: one-time and recurring contributions, pledges, in-kind, grant income, donor record with lifetime totals + average gift size + lapsed flag, segmentation by giving level, automated mail-merge tax receipts. This is what the tool was built for.

Twenty has no concept of "donations" — it has Opportunities (a sales pipeline metaphor). You could model a donation as an Opportunity stage, but you'd be building tax-receipt generation, recurring-pledge tracking, and lifetime-giving views as custom workflows. For a small operation this might be acceptable; for a Foundation that needs to issue many receipts and segment for cultivation, it's meaningful engineering work.

Winner: CiviCRM by a wide margin.

2 · Grants pipeline

CiviCRM ships a grants module: applications, deadlines, status (pending/awarded/declined), award amounts, reporting deliverables, funder relationships. Second Boot's existing funder list (docs/programs/second-boot/grants.md) maps cleanly to it.

Twenty has no grants concept. You'd model grants as Opportunities + Tasks. Workable but custom.

Winner: CiviCRM.

3 · Partner / B2B relationships

Both handle this cleanly. Twenty's data model (Companies + People + Opportunities) is the standard B2B CRM shape. CiviCRM uses Organizations + Contacts + Relationships with a similar shape and an added "Relationship Type" abstraction that fits nonprofit reality better (a person can be an Employee of Org A, a Board Member of Org B, and a Volunteer at Event C — modeled as three relationships, not three separate records).

Winner: Roughly even. Twenty has a more pleasant UI; CiviCRM has a more nuanced relationship model.

4 · Program participant data + PII discipline

This is where BNI's vulnerable-populations commitment from the Epistemic Honesty directive matters most. Participants in recovery / reentry / elderly / formerly incarcerated cohorts have data that, if mishandled, causes real harm.

CiviCRM has 20+ years of nonprofit-PII patterns: granular ACL roles, field-level visibility, audit logging extensions, established practice for HIPAA-adjacent data (in healthcare deployments). Documented patterns and a community that knows them.

Twenty has working role-based access controls (Organization tier, $25/user/month or self-hosted) but is young enough that nonprofit-specific PII patterns aren't published practice. You'd be assembling them yourself.

Winner: CiviCRM, for risk reasons more than feature reasons.

5 · Stack fit with BNI dev practice

BNI's projects are TypeScript-first (Expo/React Native, Next.js, Fastify, Colyseus, etc.). Twenty is TypeScript + NestJS + React + Postgres — same language family, lower context-switch cost when extending.

CiviCRM is PHP, integrating with Drupal / WordPress / Joomla, or standalone. PHP is not absent from BNI's stack (none of the projects use it currently) but it adds a new toolchain to maintain.

Winner: Twenty.

6 · Cost over 2 years

Assume 2 users, growing to ~5 by end of Year 2.

Twenty self-hosted: $0 license + ~$25/mo VPS = ~$600 over 2 years. Twenty cloud Pro: $12 × 2 users × 24 mo = $576 Year 1, scaling to ~$1,440 Year 2 with 5 users. CiviCRM self-hosted: $0 license + hosting ($15/mo small Drupal or WP host) = ~$360 over 2 years. CiviCRM managed (CiviHosting Standard ~$45/mo): ~$1,080 over 2 years. Airtable Free → Plus ($10/user/mo): $0–$1,200 depending on tier needed.

Winner: Both are cheap enough that cost isn't decisive. Self-hosted either tool is ~$300–600/yr. Managed CiviCRM is the slightly cheaper managed option.

7 · Maturity / risk

Twenty: Young (~2 years public). 45,500 GitHub stars and active dev are positive signals; not yet established for nonprofit production use. Tool may pivot, change pricing, or change data model. Risk: real but not extreme.

CiviCRM: 20+ years. Risk of project death: near zero. Risk of UX-debt frustration: high.

Winner: CiviCRM on risk; Twenty on momentum.

8 · Customization without engineering burden

Twenty explicitly markets itself on this: add custom objects, fields, workflows from the Settings UI, no migrations, no SQL. This is genuinely a differentiator — a non-developer team member can add a "Cohort" object and a "Cohort Member" relationship without filing a ticket.

CiviCRM has custom fields and custom data tables via the UI but custom objects often need an extension (PHP). Workflow automation exists (CiviRules) but is less smooth than Twenty's.

Winner: Twenty.

9 · Hosting / ops burden

Twenty self-hosted: Docker compose, 5-minute setup, $20-50/mo VPS. Modern stack means standard ops.

CiviCRM self-hosted: PHP + MySQL + LAMP-stack hosting. Less modern, more familiar to nonprofit IT consultants.

Managed Twenty: $9/user/mo and up — billed per user. Managed CiviCRM: $25–100/mo flat — billed by site, not per user. Better economics if user count grows.

Winner: Twenty for ops simplicity. CiviCRM for managed-hosting economics.

10 · Migration path out

Both have standard SQL dump exports. CiviCRM has decades of migration tooling between CRMs. Twenty's youth means migration tooling to/from other CRMs is less mature. Neither locks data in opaquely.

Winner: Roughly even; CiviCRM has more tools, Twenty has cleaner data model.

Honest recommendation

[HYPOTHESIS] Based on the user's stated "all of the above" priority (donor + partner + participant data, equally):

CiviCRM is the better technical fit for BNI's stated needs today. The reasoning:

  1. Donor + grant tracking is the single highest-value thing the CRM does for a forming non-profit. Self-built receipt automation and grants pipeline in Twenty is engineering work BNI doesn't have to spend if CiviCRM exists.
  2. Vulnerable-population PII discipline benefits from mature, documented patterns. Building those from scratch in a young tool is a risk BNI's Epistemic Honesty directive arguably forbids.
  3. The UX disadvantage of CiviCRM is real but not load-bearing. A 2-person team that uses the CRM 2–3 hours a week can tolerate functional-but-dated UI for the benefit of out-of-box fit.

However, Twenty has a non-trivial case if: - BNI plans to invest in CRM customization as a deliberate value (it could itself become a BNI Foundation open-source contribution — nonprofit extensions for Twenty) - BNI wants the CRM to feel like the rest of the BNI tech stack (TypeScript, modern UI) - BNI is willing to delay nonprofit-specific features by 3-6 months while custom-building them

The third option: defer

For a forming non-profit at BNI's scale, an honest counter-recommendation: don't pick a real CRM yet.

  • Track donors, partners, and grants in Airtable (free tier suffices for current volume)
  • Track program participants — when there are some — in a separate Airtable base with restricted access
  • Revisit the CiviCRM-vs-Twenty question in 6-12 months when:
    • 501(c)(3) determination letter is in hand (unlocks Salesforce Nonprofit Cloud free 10-license tier as a third real option)
    • First cohort has actually run (you'll know what participant data you really need to track)
    • First three grants have been applied for (you'll know what grant-pipeline depth you need)

This deferral is [HYPOTHESIS] the right move for a 2-person, pre-pilot, pre-501(c)(3) org. Buying CRM complexity ahead of the data that justifies it is a common nonprofit mistake.

What to validate before committing

Whichever path is chosen, these are gates that should be checked first:

  • [ ] Sample-data import test — can BNI's existing donor / partner / grant records (currently in docs/programs/second-boot/partners.md, docs/programs/second-boot/grants.md, and Kevin's notes) be modeled cleanly in the tool's data model?
  • [ ] PII handling walkthrough — pretend a recovery-cohort participant exists and walk through what the CRM does with their record. Can a volunteer see it? Can it be redacted? Can an audit log show who viewed it?
  • [ ] Tax receipt round-trip — can the tool produce a printable tax-deductible donation receipt for a 501(c)(3)? (Even if 501(c)(3) isn't yet granted, model the workflow.)
  • [ ] Backup + restore drill — pick a deliberate-data-loss scenario; does the backup tooling restore cleanly?
  • [ ] Two-person fit test — both Kevin and Corey use the tool for one realistic workflow each. Both report whether they'd use it without prompting.

Decision log

Date Decision Rationale Status
2026-05-19 Evaluation initiated Kevin asked to compare Twenty vs. CiviCRM [OPEN]

References