Data model

The Currnt MySQL database holds 314 tables and approximately 140 GB on disk. About 95% of the volume lives in eight table clusters; the other ~300 tables average a few hundred MB each. This page tours the eight clusters that matter and points out the table-level oddities worth knowing.

The engine is MySQL 5.5 (years past EOL — see /security). The character set is utf8mb3 for legacy reasons; full-UTF-8 (utf8mb4) is on the someday list but applies only to a handful of newer tables.

Cluster 1 · prospects and friends

The CRM’s main fact table. About 15 million rows and ~20 GB.

Cluster 2 · users, roles, sessions

The unified user identity model.

Cluster 3 · boards, posts, transcripts

The product data model.

Cluster 4 · LLM trace table

A single table accumulating about 12 GB of LLM call/response logs from the AI co-facilitator process. Each row records prompt, response, model, latency, and the board/post that triggered the call.

This table is unusually large for its row count because individual rows can be very long (a full prompt plus a multi-paragraph response). It is also write-only — nothing reads from it at runtime — and is the cleanest deletion target in the database if disk reclamation ever becomes urgent.

Cluster 5 · dispenserd_jobs and worker traces

The queue’s persistence layer.

Cluster 6 · campaigns, email_sends, tracking

Outreach’s history.

Cluster 7 · invoices, payouts, ledger

Operations data.

Cluster 8 · blog_posts, assets, content

The content-production data store.

The long tail

The remaining ~280 tables fall into three buckets:

  1. Lookup tables — countries, industries, seniority levels, board templates.
  2. Audit and event logs — most under 1 GB each; collectively ~10 GB.
  3. Dormant feature tables — schema still intact from features that no longer run (Calendly bookings, Lusha enrichments, NDA acceptances, MetaMask signatures). Several have zero rows since 2022 or 2023.

A condensed inventory of the dormant subset is on the sunset page.

Schema management

No migration tool was ever adopted (no Liquibase, no Flyway, no Alembic-equivalent). Schema changes were applied manually as ALTER TABLE statements run by staff during low-traffic windows. The codebase has a migrations/ directory but it stopped getting updated around 2019.

The implication: there is no canonical schema-as-code. The database is the schema. Reading the codebase’s model files (models/*.js in the Sails app) gets you close but not exact — fields have drifted, and several “legacy” columns that the models don’t reference are still present in the actual tables.