Ttristan.santos
Navigate01Home02Work03About04Stack05Now06ContactEmail me directly
Systems

Custom CRM Build

Migrated an Airtable CRM the team had outgrown into a purpose-built internal app — same data model, faster ops, lower per-seat cost.

Year

2025–2026

Role

Builder, operator

Status

● Live

Case · 01 / 05In Production

Systems

Airtable → custom software

6,400+Leads migrated · zero loss
~70%Tool cost reduction
5Role-specific views
(01)The outcome

6,400+

Leads migrated · zero loss

~70%

Tool cost reduction

5

Role-specific views

(02)The problem

What was
broken.

Airtable was working — until it wasn't. The team had outgrown its row limits, role-based access was a tangled mess of shared views, and per-seat pricing was scaling faster than headcount. Field ops were running on screenshots and Loom videos.

(03)The build

What I
shipped.

  1. 01

    Audited every Airtable base, identified what was actually load-bearing vs. legacy.

  2. 02

    Designed a Postgres schema mirroring the working data model (no "rebuild from scratch" trap).

  3. 03

    Built a Next.js front-end with role-based access — buyers see leads, ops see pipeline, leadership sees rollups.

  4. 04

    Migrated 6,400+ records with zero data loss using a staged dual-write window.

  5. 05

    Wrote the SOPs the team uses to operate it, plus a 4-page admin guide for me-replacement.

/result

We stopped paying per seat and started paying for outcomes.

(04)Proof
Add screenshots & demos
◇ image · 16/9

Custom CRM Build · main view

The primary screen — what users see when they open the systems system. 16:9, PNG or WebP, around 2400px wide.

◇ image · 4/3

Detail / workflow shot

A specific feature or workflow up close.

▶ video · 4/3

30–60s walkthrough

Loom, screen capture, or MP4 showing it running.

◇ image · 4/5

Secondary view

Mobile, dashboard, or alternate screen.

◇ image · 4/5

Before / after

The mess before vs. the clean version.

◇ image · 4/5

Extra detail

Anything that adds context.

(05)Stack on this one
Next.jsPostgresAirtable migrationRole-based access
Get in touch

Need a marketing
operator?

Reply within 24 hours. No discovery calls. Send the real problem, get a real answer.

Response window

24h