Case Study — Platform Engineering

One Canonical Intake, Three Channels

GrowthOS is Arellano Global's productized Instagram-growth SaaS — an end-to-end client-operations platform where a client can onboard by web form, AI chat, or AI phone call, and every channel merges into a single canonical record. Nothing a client already answered is ever asked twice.

3 → 1
Intake channels → one record
6
Automated onboarding stages
~7–10
Days call → live
0–100
Client health score
Role Architect & Lead Engineer
Stack n8n / NocoDB / Keycloak / Static Web
Context Productized SaaS — in-house product
01 — The Problem

Productized Services Run on Spreadsheets Until They Break

Selling a productized service means every client travels the same road: discovery call → payment → intake → build → go-live → retention. Most agencies stitch that journey together with spreadsheets, sticky notes, and manual handoffs. It works at three clients. At ten, intake answers live in five places, follow-ups get missed, and nobody can say which clients are quietly drifting toward churn.

The most corrosive failure mode is subtler than a missed email: asking a client the same question twice. A client fills half a web form, then takes an onboarding call, and the person on the line re-asks everything the form already captured. Every repeated question tells the client the operation behind the product is duct tape — and trust in a productized service is the product.

GrowthOS needed to run the entire client lifecycle as software: one intake that survives channel switches, a pipeline that moves clients stage to stage without a human pushing rows around, and an analytics layer that spots at-risk accounts before they lapse. The mandate was to build it on self-hosted open source — the capabilities of a dedicated customer-success platform at approximately zero marginal tooling cost.

02 — Architecture

Three Channels In. One Canonical Record Out.

A framework-free static marketing and funnel site fronts an n8n + NocoDB + Keycloak backend, with payment webhooks, CRM sync, and transactional email. The core architectural idea: web form, AI chat, and AI phone call all POST into a single sync workflow that merges answers into one record.

Web Form token-gated intake AI Chat Gemini assistant AI Phone Call Twilio ConversationRelay POST INTAKE SYNC single n8n workflow ① normalize payload ② locate by onboarding token ③ merge: fill-empty only ④ recompute completeness ⑤ forward for brief Canonical Intake NocoDB record keyed by onboarding token never overwritten AI Brief generated build brief for the setup call resume from record: a dropped call resumes with the answers already on file
1

Onboarding-Token Identity

At payment, the platform issues each client an onboarding token — the identity key for the entire journey. Every channel sends the token with its answers, so the sync workflow can locate the one true client record regardless of where the answers came from, with the paid email as fallback. Web session, chat session, and phone call all resolve to the same row.

2

Channel Normalization

A form submit, a chat transcript, and a voice-call turn produce wildly different payloads. Each channel posts { token, tier, channel, ...answers } to the same sync webhook, which normalizes everything into the shared question schema before touching the record. New channels can be added without changing the merge logic — they just need to speak the envelope.

3

Fill-Empty Merge — Never Overwrite

The merge rule is deliberately conservative: an incoming answer only lands in a field that is currently empty. An answer given on the phone can never clobber one typed carefully into the form. This one rule is what makes channel-hopping safe — it converts three racing input streams into monotonic progress toward a complete record, and it is why a dropped phone call simply resumes with the answers already on file.

4

Tier-Aware Completeness → AI Brief

After every merge, the workflow recomputes completeness against the question set for the client's purchased tier — different tiers need different answers, so "done" is tier-relative. Once the record crosses the threshold, it feeds an AI brief generator that turns raw intake answers into a structured build brief for the setup call. The team walks in already knowing the account.

"Nothing a client already answered is ever asked twice. A dropped phone call resumes with the answers already on file."
03 — The Pipeline

Six Stages From First Call to Retention

The unified intake is one stage of a larger machine. A 6-stage automated onboarding pipeline runs the full client lifecycle — each stage is an n8n workflow with its own trigger, advancing the client record and firing the right transactional email at the right moment.

01
Discovery
Lead Capture
booking → client record
02
Payment
Payment & Welcome
webhook → token issued
03
Intake
Intake & Brief
3 channels → AI brief
04
Build
Setup Call & Build
calendar → building
05
Launch
Go Live
flip active → go-live email
06
Retention
Retention & Churn
lapse detection

Each transition is event-driven. A calendar booking upserts the client and stamps the appointment. A payment webhook — HMAC-SHA256 verified — maps the purchased plan to a service tier, issues the onboarding token, and sends the intake link. The intake stage is the three-channel sync described above. A setup-call booking flips the record into build mode; go-live flips it to active and triggers the go-live email; and a churn detector watches for lapsed memberships and flags them for follow-up. A scheduled follow-up cadence chases stalled clients between stages so no record silently rots in an intermediate state.

Around the pipeline sits a platform of roughly 32 workflows — channel sync, token validation, partner and newsletter pipelines, CRM booking sync, an operator console API, and the analytics suite — of which 14 were validated end-to-end against the live stack: real payloads through real webhooks into real records, with every state transition and email checked. Client-facing communication across all stages runs on templated transactional email, so the welcome, intake, setup, go-live, and reminder messages ship consistently without anyone drafting them by hand.

Fulfillment itself — the growth-delivery engine that does the actual Instagram work once a client is live — runs on a separate internal engine, covered in its own case study.

04 — The Analytics Layer & Results

A Customer-Success Platform, Built Instead of Bought

Retention is where productized services live or die, so GrowthOS ships a full analytics and customer-success suite — the kind of capability that normally means buying a dedicated CS platform, built here on self-hosted open source at approximately zero marginal tooling cost.

14
Workflows validated E2E
~32
Workflows total
5
CS analytics capabilities
~7–10
Days call → live

Composite 0–100 Client Health Score

Every client carries a composite health score from 0 to 100, computed from lifecycle and engagement signals. One number answers the question every operator asks daily — "which accounts need attention?" — without opening five dashboards.

At-Risk Detection Before the Lapse

An automated at-risk detector flags accounts drifting toward churn while there is still time to intervene, and the churn stage catches actual membership lapses. Retention becomes a queue to work, not a surprise in the monthly numbers.

Digest, Cohort, and Business-Review Cadence

A daily funnel digest reports pipeline movement, weekly cohort analysis shows how each intake class matures, and a monthly business review assembles the numbers leadership needs — all generated and delivered automatically.

Operator Console Over the Same Records

An internal operator console gives setters and admins a single desk over the same canonical records the pipeline writes — lifecycle actions, reminders, and partner pipeline included, with every admin action written to an audit log.

Static HTML/CSS/JS (framework-free) nginx n8n NocoDB Keycloak Google Gemini Twilio ConversationRelay Whop webhooks (HMAC-SHA256) GoHighLevel Postmark Docker / Coolify

Need Your Client Operations Turned Into Software?

I design and build end-to-end operations platforms — intake, pipeline, analytics — on self-hosted infrastructure that you own.

Let's Work Together
VIEW LIVE → VERIFIED DELIVERY RECORD →