RedBridge Group CRM
Role: Sole architect & developer · Group-wide CRM replacing a 5,076-row manual spreadsheet · 4 business units · 2 countries · Stage 1 of 7 in progress
Business Impact
Zero per-seat licensing at any headcount, against a commercial CRM charging per user per month indefinitely — and one that would still need custom development, because more than half the client journey happens after the sale. Infrastructure runs on usage-based hosting rather than seats, so cost doesn't scale with hiring.
Retires a spreadsheet where all 5,076 client records were typed by hand. Three specific failures it fixes: repeat enquiries were capped at two columns and lost their marketing attribution; marketing and sales disagreed on lead quality invisibly (592 qualified vs 261 accepted — a 44% gap nobody could see); and a client using two business units became two unrelated records with no shared history.
Four business units, two countries, five Australian states and two Chinese provinces — with the structure held as configuration rather than code, because the organisation is mid-restructure and will change again. Bilingual English/Chinese throughout, including database-stored values, since most staff work in Chinese.
Scale at a Glance
Project Summary
| Field | Details |
|---|---|
| Project Name | RedBridge Group CRM |
| 项目名称 | 红桥集团客户关系管理系统 |
| Period | August 2026 – ongoing |
| 周期 | 2026年8月 至今 |
| Company | Siddeley Group / RedBridge Consulting |
| 公司 | Siddeley Group / 红桥咨询 |
| Role | Architecture, data modelling, full-stack development |
| 职能 | 系统架构、数据建模、全栈开发 |
| Scope | Group CRM — 4 business units, 2 countries, ~40 staff |
| 范围 | 集团 CRM — 4 个业务单元、2 个国家、约 40 名员工 |
| Stack | Next.js 16 · TypeScript · Supabase (Postgres 17) · Cloudflare Workers · next-intl |
| 技术栈 | Next.js 16 · TypeScript · Supabase(Postgres 17)· Cloudflare Workers · next-intl |
| Timeline | Aug 2026 – ongoing · ~8 months planned · 7 delivery stages |
| 周期规划 | 2026年8月 至今 · 规划约 8 个月 · 7 个交付阶段 |
| Status | Foundations complete · Stage 1 of 7 in progress |
| 当前状态 | 基础架构已完成 · 第 1 阶段(共 7 个)进行中 |
Key Highlights
- Solved identity across two channels with no shared key — website leads are 100% email; RedNote (小红书) leads are 96.7% social handle and only 10.8% email, so identity is modelled as rows rather than columns. A wrong merge would expose one client's passport to another through the token-based portal, so merging requires verification and human review by design.
- Made security a database property, not a UI one — access control is enforced in Postgres row-level security, with permissions stored as data and editable without a deploy. The first automated test asserts the security rules against the schema: RLS on every table, no privilege-escalation surface, six tables never exposed to the client API.
- Designed bilingually rather than translating afterwards — structured data stores language-neutral codes rendered per locale, so Chinese and English staff read the same record in their own language with no conflict. Chinese text search required trigram indexing, since standard Postgres full-text search can't tokenise a language without spaces.
- Modelled the business as it actually operates — marketing and sales qualify leads separately and disagree, so both judgements are recorded and the gap is reportable. Business units own revenue while territories own selling, so ownership is split accordingly. Repeat enquiries are unlimited events with full attribution, not a second column.
- Grounded the design in the real data — profiled all three existing sources (5,076 rows, 71 rows, 15 rows) before designing anything. That surfaced mixed date formats, 369 inconsistent city values, missing country codes and 52% unmapped visa categories, each of which changed a modelling decision.
A group-wide CRM for RedBridge Group — four business units across Australia and China — replacing a 5,076-row manual spreadsheet and an earlier in-house portal. Currently in build: architecture, data model and foundations complete.