Dallas Crilley
Work
Client intelligence In progress

Synapse

Where scattered business data becomes client intelligence.

A Postgres-backed client-intelligence system that syncs Airtable records, normalizes dirty identity fields, and surfaces a unified client view with full source lineage and a reviewer workflow.

language
TypeScript (Node 18+, ESM)
storage
PostgreSQL via node-postgres (not Supabase)
schema
12+ tables, bronze / silver / gold transforms
tests
~30 Vitest files; no runtime AI or LLM calls
history
1 extraction commit (Apr 2026)
repo
Private

The problem

A PR firm had client context scattered across 32 Airtable tables plus QuickBooks, Copper, HubSpot, Basecamp, and booking tools, with dirty identity data and no ownership model for corrections. Synapse builds a Postgres read model that makes that data legible.

How it is built

  1. Source lineage you can trace

    Every sync stores the raw Airtable payload as JSONB with a content hash before any transform runs, so a trace command can walk from a final projected value back to the exact bytes that produced it.

  2. Reviewer decisions that do not get overwritten

    Low-confidence identity matches go to a review queue. Human decisions persist by evidence fingerprint across rebuilds, and stronger conflicting evidence reopens an item for review rather than silently overriding the person who decided it.

  3. A dual-backend repository pattern

    The repository factory returns an in-memory backend for memory:// URLs and Postgres otherwise, so the full test suite runs with no live database while production code uses the exact same interface.

By the numbers

12+ Postgres tables in the schema
30 test files across the modules
2,817 records in a validated parent-repo sync self-reported

self-reported marks figures stated in docs or commit history that the source brief could not reproduce from the repository alone. Everything else is traceable to code.

  • 2,817: Basis: parent-repo launch criteria recorded a real Postgres proof run with fixtureMode=false, reachable database, 2,817 synced source records, and zero failures before this project was extracted into its own repo.

Where this honestly stands

Early-stage. The code is substantive (24 source files, 30 test files, a 12-table schema), but it was just extracted into its own repo as a single commit, with no independent CI or deploy yet. Presented as in-progress internal tooling.

Want the parts that are not in a public repo? I will walk you through the architecture and the decisions on a call.