Raju Rayhan
Head of Development · AI Platform Architect
Available · Q3 2026
← work / sulus.ai
Case 01 · 2023 — 2026 · Platform architecture

Sulus.ai

A white-label, multi-tenant SaaS platform where resellers deploy voice AI agents for their own customers. Built from blank repo to production over three years as the founding architect and engineering lead.
LaravelVue.jsSupabasePineconen8nGHLClaude APIOpenAIElevenLabsDeepgramPipecat
3y
Lead architect
Reseller tenants
1536
Dim vectors · cosine
Voice minutes routed
§ 01 The brief
Context

Lighthouse Graphics needed a way to sell AI voice receptionists to their own customers — and, later, to sell the selling. A white-label platform where agencies could onboard their own sub-tenants, rebrand the UI, and plug in their CRM of choice.

Constraints
  • Tenant isolation — per-reseller, per-customer, no leakage.
  • Voice infrastructure had to be swappable (Pipecat / direct providers).
  • Non-technical users had to configure agents in plain English.
  • GHL as the default CRM, but pluggable.
"Make it so the reseller can demo the platform to a prospect in under five minutes, and have them place a real call."
— the brief, paraphrased
§ 02 The architecture simplified
                    ┌──────────────────────┐
                    │   Reseller · Tenant  │    ← white-label UI, Vue 3
                    └──────────┬───────────┘
                               │
                      ┌────────┴────────┐
                      │   Laravel API   │    ← Sanctum · role-scoped
                      └───┬─────┬───────┘
                          │     │
            ┌─────────────┘     └────────────────┐
            │                                    │
   ┌────────▼─────────┐              ┌───────────▼──────────┐
   │   Supabase (pg)  │              │     n8n workflows    │
   │ · tenants        │              │ · agent config (LLM) │
   │ · agents         │              │ · GHL sync           │
   │ · call_logs      │              │ · webhooks           │
   └────────┬─────────┘              └───────────┬──────────┘
            │                                    │
   ┌────────▼─────────┐              ┌───────────▼──────────┐
   │   Pinecone KB    │              │   Voice (Pipecat)    │
   │ · 1536-d cosine  │              │ · Deepgram + 11Labs  │
   │ · reseller scope │              │ · Claude / OpenAI    │
   └──────────────────┘              └──────────────────────┘
§ 03 A few decisions
03.1
Per-reseller Pinecone namespaces, not per-tenant

A per-tenant namespace was the textbook answer — but the number of resellers was bounded while tenants per reseller were not. Reseller-scoped namespaces with tenant filters gave us cheaper indexing and simpler cache invalidation, without leaking data between resellers (the actual trust boundary).

03.2
n8n as the orchestration layer, not a bespoke engine

Writing a task-graph engine is a whole product. n8n was close enough, had the integrations we needed on day one, and let non-engineers ship automations. We wrote a thin MCP layer (later open-sourced) so Claude could drive n8n workflows directly.

03.3
Configure by conversation, not by form

Agency owners don't want to fill out 40 fields to set up a voice agent. We built a meta-agent that interviews them in chat and writes the agent config as it goes. Faster than any form — and it doubled as onboarding.

03.4
Swappable voice infra

We built the voice layer behind an interface the rest of the code couldn't see past — providers could be swapped per tenant without the app knowing the difference. Pipecat became the default for accounts that wanted tighter control over the call pipeline.

§ 04 Outcomes
Before
  • Voice agents configured by hand, per customer, per channel
  • GHL sync brittle; data drifted within a day
  • Onboarding a new reseller took a week of custom work
  • No shared knowledge base across an agent family
After
  • Conversational setup — minutes, not meetings
  • Event-driven GHL sync via webhooks, idempotent
  • New reseller tenancy in a single command
  • Pinecone KB with reseller-scoped namespaces, tenant filters
§ 05 Hand-off
In April 2026, Sulus spun out as its own company and I came with it as Head of Development. The platform is now the product — and the team has grown around it.
Next case
eDP — Defense Procurement
Read next →