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:
- Donor & grant pipeline — corporate IT laptop donors (Second Boot), individual donors, grant funder relationships (LOIs, deadlines, deliverables across federal, state, foundation, and corporate sources)
- 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) - 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:
- 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.
- 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.
- 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] |