Unclassified

IntegrateWise Quick Reference Card

Tier C — Historical. This document is a point-in-time snapshot preserved for reference. For current architecture, see CANONICAL_PLATFORM_ARCHITECTURE.md.

One-Liner

Unified operational platform where one role = one automatically-loaded domain workbench, with intelligent metric/action routing.


Core Hooks


const { 
  projection,        // L1Projection {metrics, widgets, actions}
  domain,            // "account-success" | "salesops" | etc
  defaultView,       // "health-dashboard" | "pipeline" | etc
  suggestedConnectors, // ["salesforce", "zendesk", "intercom"]
  workbench_context  // WorkbenchContext {timeRange, filters, etc}
} = useL1Projection()

Core Functions

// Get domain for role
const {domain, defaultView, connectors} = getRoleDomainMapping("cs_manager")

// Get action route
const route = getActionRoute("schedule_ebr")
// → {domain: "account-success", view: "meetings-view"}

// Get action navigation URL
const url = getActionNavigationUrl(quickAction)
// → "/workspace/account-success/meetings-view"

16 Roles & Their Domains

RoleDomainView
sales_repsalesopspipeline
sales_managersalesopsteam-pipeline
cs_specialistaccount-successaccounts
cs_manageraccount-successhealth-dashboard
finance_managerrevopscash-flow
finance_analystrevopscollections
support_leadaccount-successtickets
support_agentaccount-successmy-queue
marketing_managerpersonalcampaigns
marketing_analystpersonallead-sources
engineering_leadpersonalprojects
engineering_managerpersonalteam-velocity
ops_managerintegratewise-apacoperations
ops_analystrevopsprocess-health
hr_managerpersonalteam
ceointegratewise-apacexecutive

5 Domain Workspaces

personal              — Individual productivity hub
account-success       — CS health & renewals (25+ views)
revops                — Revenue operations & forecasting
salesops              — Sales execution & pipeline
integratewise-apac    — Admin console & full platform control

Quick Action Routes (Sample)

// Sales
"create_deal"      → salesops/pipeline
"log_activity"     → salesops/activities
"call_lead"        → salesops/dialer

// CS
"schedule_ebr"     → account-success/meetings-view
"create_expansion" → account-success/opportunities
"send_playbook"    → account-success/documents-view

// Finance
"create_budget"    → revops/budgeting
"send_invoice"     → revops/invoicing

// 40+ total routes mapped

Widget Data Source Routes (Sample)

// Sales
"pipeline_by_stage"    → salesops/pipeline
"rep_metrics"          → salesops/team-performance
"forecast_accuracy"    → salesops/forecasting

// CS
"health_by_segment"    → account-success/health-dashboard
"renewal_calendar"     → account-success/accounts-view
"usage_trends"         → account-success/account-master-view

// Finance
"cash_flow"            → revops/cash-flow
"revenue_breakdown"    → revops/reporting
"overdue_invoices"     → revops/collections

// 30+ total routes mapped

L1 Projection Structure

interface L1Projection {
  workbench: string           // "sales" | "cs" | "finance" | etc
  user_role: UserRole         // The role that generated this
  domain: string              // "salesops" | "account-success" | etc
  layout: string              // "dashboard" | "table" | "kanban"
  
  metrics: MetricProjection[] // 4 KPIs
  widgets: WidgetProjection[] // 3-4 data visualizations
  quick_actions: QuickActionProjection[] // 3-4 actions
  filters: FilterProjection[] // Context-aware filters
  permissions: string[]       // What this role can do
}

Role-Based Workbench Example

As CS Manager:

{
  metrics: [
    {id: "nrr", value: 108, label: "NRR %"},
    {id: "churn", value: 3, label: "Churn %"},
    {id: "health", value: 87, label: "Health Score"},
    {id: "at_risk", value: 3, label: "At-Risk Accounts"}
  ],
  widgets: [
    {id: "health_by_segment", data_source: "..."},
    {id: "renewal_calendar", data_source: "..."},
    {id: "at_risk_accounts", data_source: "..."},
    {id: "usage_trends", data_source: "..."}
  ],
  quick_actions: [
    {id: "schedule_ebr", label: "Schedule EBR", action: "schedule_ebr"},
    {id: "create_expansion", label: "Expansion Opp", action: "create_expansion"},
    {id: "send_playbook", label: "Send Playbook", action: "send_playbook"},
    {id: "review_health", label: "Review Health", action: "review_health"}
  ]
}

File Structure

apps/web/
├── lib/
│   ├── workbench-projections.ts    ← 16 workbench builders + domain mapping
│   ├── l1-domain-wiring.ts         ← 40+ action routes + 30+ widget routes
│   ├── l1-l2-context.ts            ← Context + hooks
│   └── connector-integration.ts    ← Connector bridging
├── components/
│   ├── domains/
│   │   ├── account-success/        ← 25+ views
│   │   ├── salesops/               ← Sales views
│   │   ├── revops/                 ← Finance views
│   │   ├── personal/               ← Personal views
│   │   └── integratewise-apac/     ← Admin views
│   ├── workspace-shell.tsx         ← Main container
│   ├── sidebar.tsx                 ← Domain picker
│   ├── top-bar.tsx                 ← Header
│   └── providers/
│       └── l1-provider.tsx         ← L1 context provider

Navigation Flow

User logs in with role
         ↓
L1Provider calls generateProjectionForRole(role)
         ↓
Returns: L1Projection + domain info
         ↓
Navigate to /workspace/{domain}/{defaultView}
         ↓
Domain shell loads (account-success/shell.tsx, etc)
         ↓
Renders L1 metrics, widgets, actions
         ↓
User clicks action
         ↓
getActionRoute(action) returns target domain/view
         ↓
Navigate to /workspace/{domain}/{view}

Performance

  • Role lookup: < 1ms
  • Projection generation: < 1ms
  • Action routing: < 1ms
  • Navigation: < 100ms
  • Total click-to-view: < 150ms

Testing Checklist

  • Load as sales_rep → redirects to salesops
  • Load as cs_manager → redirects to account-success
  • Load as ceo → redirects to integratewise-apac
  • Click "Schedule EBR" → navigates to meetings-view
  • Click "Create Deal" → navigates to pipeline
  • All 40+ action routes working
  • All 30+ widget routes working
  • Domain change regenerates projection
  • Suggested connectors populate correctly

Usage Example

// In a component
  const navigate = useNavigate()
  
  const handleClick = () => {
    const url = getActionNavigationUrl(action)
    if (url) navigate(url)
  }
  
  return <button onClick={handleClick}>{action.label}</button>
}

Adding a New Role

  1. Add to UserRole type:
export type UserRole = "..." | "new_role"
  1. Create builder:
function buildNewRoleWorkbench(): L1Projection { ... }
  1. Add to generator:
  switch(role) {
    case "new_role": return buildNewRoleWorkbench()
    // ...
  }
}
  1. Add domain mapping:
  new_role: { 
    domain: "my-domain", 
    defaultView: "my-view",
    connectors: [...]
  },
  // ...
}

Adding a New Quick Action Route

  1. Add to actionRouteMap:
  my_action: { domain: "salesops", view: "my-view" },
  // ...
}
  1. Use in component:
const url = getActionNavigationUrl(action)
navigate(url)

Documentation

  • COMPLETE_IMPLEMENTATION_SUMMARY.md — Full architecture
  • FRONTEND_WIRING_COMPLETE.md — Detailed wiring
  • IMPLEMENTATION_VERIFICATION.md — Verification checklist
  • QUICK_REFERENCE.md — This file

Key Insight

Same unified Spine data. One L1 projection per role. One domain per projection. One default view per domain. Unlimited perspectives.

Each role sees exactly what they need to do their job. No more, no less.