One System is a modular platform with one shared backbone and five business modules.
Owns canonical business entities:
- workspace
- location
- contact
- lead
- customer
- appointment
- pipeline stage
- activity
Implemented in:
packages/domainpackages/database
Owns outbound and inbound communication:
- SMS
- chat events
- message templates
- delivery logs
Owns triggers and sequences:
- event listeners
- workflow definitions
- step execution
- scheduling
- retries and idempotency
Implemented in:
packages/workflowsapps/worker
Owns prompt templates and analysis:
- lead response generation
- reactivation copy
- review replies
- call summaries and scoring
Owns external system boundaries:
- Twilio
- calendar provider
- CRM connectors
- ads platforms
- review platforms
Owns reporting primitives:
- event capture
- attribution
- funnel metrics
- module performance metrics
Owns operator-facing experience:
- inbox/conversations
- leads and bookings
- campaigns
- analytics
- settings and integrations
Implemented in:
apps/dashboardpackages/ui
Depends on:
- core
- messaging
- automation
- AI
- integrations
- dashboard
Depends on:
- core
- messaging
- automation
- AI
- integrations
- analytics
Depends on:
- core
- messaging
- automation
- AI
- integrations
- analytics
Depends on:
- core
- automation
- integrations
- analytics
- dashboard
Depends on:
- core
- AI
- analytics
- integrations
- dashboard
- Monorepo with shared packages
- TypeScript across apps and packages
- Postgres as system of record
- Queue-backed background processing
- API-first backend with webhook handling
- Next.js dashboard for internal operators and client-facing reporting later
apps/api: synchronous request handling, webhooks, authenticated APIsapps/worker: asynchronous execution, retries, scheduling, event consumerspackages/domain: canonical entities and domain logicpackages/database: schema, migrations, repositories, DB accesspackages/workflows: workflow definitions and execution primitivespackages/shared: minimal cross-cutting helpers only
- One canonical contact record per person per workspace
- All module actions should emit events
- External integrations must pass through typed adapters
- Module logic can compose platform primitives, but should not redefine them
- Reporting must be based on captured events, not guessed state