ElevateCRM
A complete, self-service manual covering every screen in ElevateCRM — Sales CRM, Marketing & AI, Operations and Settings — with annotated screenshots, step-by-step task guides, per-role manuals, a code-verified field & data dictionary, permissions, reporting, administration and troubleshooting. Enough for a new user to operate the system without developer help.
Where the journey starts
The client journey begins in ElevateCRM, with a person. A lead is captured and a Sales Rep works it through the pipeline. ElevateCRM is the front of the funnel.
When a deal is won (Closed-Won), ElevateCRM automatically hands the new client to Labyrinth OS, which creates the delivery contract and runs execution. Labyrinth has no manual "new client" entry point — it is a delivery engine that receives hand-offs.
ElevateCRM has three domains in its top navigation — Sales CRM (the core motion), Marketing & AI (demand generation), and Operations (inbox, automation, data model) — plus Settings. This manual documents all of them.
Logging in & demo users
Navigation path
Open the app URL → enter email, password, and workspace/tenant → Sign In. The tenant field is required; the workspace auto-resolves when you belong to only one. The card also offers Create Workspace, Accept Invite, Activate Account and Reset Password.
Demo accounts (tenant demo)
| Role | Password | What they can do | |
|---|---|---|---|
| Admin | admin@demo.com | admin123 | Everything, incl. Settings & overrides |
| Manager | manager@demo.com | manager123 | Full sales motion + approvals & overrides |
| Sales Rep | sales@demo.com | sales123 | Work leads/deals; cannot override gates |
| Finance | finance@demo.com | finance123 | Closed-Won deals only (read) |
crm_session cookie. Inactive users are refused with a 401.Navigation & layout
ElevateCRM uses a two-tier top navigation (no left sidebar).
- Top row: the workspace switcher, the three domains (Sales CRM · Marketing & AI · Operations), Settings, a global search box (contacts/leads/deals), a dark-mode toggle, the Enlil AI button, and notifications.
- Second row: the pages within the selected domain.
Selecting a domain swaps the second row. Sales CRM → Dashboard, Accounts, Contacts, Leads, Pipeline, Activity, Reports, Sequences, Approvals, Affiliates. Marketing & AI → Influencer, Landing Page Builder, Lists, Campaigns, Forms. Operations → Inbox, Workflows, Custom Objects, Blueprints.
Dashboard
Purpose. The shared home and daily starting point — priority signals, pipeline health and quick actions.
Navigation. Sales CRM → Dashboard (default landing after login).
- 1New Deal — create a deal directly
What's on the screen
- Intelligence Signals (clickable tiles): Deals at Risk, Follow-ups Due, Hot Opportunities, Tasks Today, Revenue Signals — each shows a live count and opens the underlying list.
- Metric tiles: Total Contacts, Active Deals, Pipeline Value, Deals Won — each with a 30-day trend percentage.
- Pending Approvals — anything awaiting sign-off (or “All clear”).
- Pipeline Flow — deal counts per stage (Discovery/Demo Scheduled, Decision Pending, Verbal Commitment, Closed Won/Lost, Handoff to Delivery …).
- Quick actions (top-right): New Deal, Log Call.
Accounts
Purpose. The company directory — the organisations you sell to.
Navigation. Sales CRM → Accounts.
- 1Search accounts
- 2Add Account
Columns & fields
- Account, Domain, Industry, Size, Country, ICP (tier A–D), Owner, Lifecycle. Open a row to edit. Add Account (top-right) creates one.
Behaviour
- Account name and domain are each unique per workspace — a duplicate is blocked (409, no override). ICP tier must be A/B/C/D. The domain is normalised (http/www/trailing slash stripped).
Contacts
Purpose. The directory of people, usually tied to accounts.
Navigation. Sales CRM → Contacts.
- 1Search contacts
- 2Add Contact
- 3Import (CSV)
- 4Export (CSV)
Columns & fields
- Contact, Email, Phone, Company, Lifecycle Stage, Created. A Filters control and a Deleted view are available. Open a contact to edit, log touches, or convert.
Behaviour
- Email is unique per workspace. A duplicate returns a 409 (
duplicate_contact); only an admin/manager can override, and only with a reason of 3+ characters. Job title and buying role are required (buying role must be one of decision_maker / champion / influencer / technical / finance).
Leads
Purpose. Capture and qualify inbound/unqualified prospects before they become deals.
Navigation. Sales CRM → Leads.
- 1Search leads
- 2Refresh
- 3Add Lead
- 4Import
- 5Export
What's on the screen
- Summary tiles: Total Leads, Tier A Leads, Avg. Score, Converted.
- Filters: All Tiers, All Status.
- Columns: Lead, Email, Phone, Company, Score (0–100), Tier (A–D), Status, Source, Created.
Lead status lifecycle (enforced)
new → assigned → working → info_collected → qualified → meeting_scheduled → converted, with side states unresponsive, nurture, and terminal disqualified. The system blocks illegal jumps — e.g. a lead must be info_collected before qualified, needs an owner before working, and needs 6+ touchpoints before unresponsive.
Pipeline
Purpose. The deal board — the heart of the sales motion.
Navigation. Sales CRM → Pipeline.
- 1Refresh
- 2Add Deal
What's on the screen
- Pipeline selector (e.g. Elev8 Sales Pipeline (22 deals)) and a header showing total deals & total value.
- Stage columns with per-column count, value and win-probability %.
- Deal cards — name, value, owner, Next/Back stage buttons, and a staleness badge (e.g. Stale 912h) when a deal goes cold.
Activity
Purpose. The chronological log of calls, emails, meetings and stage changes across the CRM.
Navigation. Sales CRM → Activity.
- 1Search activities
What's on the screen
- Summary tiles: Total Activities, Calls Today, Emails Today, Stage Changes.
- Log Activity button and an All Activities type filter.
- A day-grouped timeline of every touchpoint with its deal/contact context.
Reports
Purpose. Performance analytics across the CRM for a chosen period.
Navigation. Sales CRM → Reports.
- 1Tab: Overview
- 2Tab: Qualification
- 3Tab: Sales Dashboard
- 4Tab: Agents
What's on the screen
- Report tabs: Overview, Qualification, Sales Dashboard, Agents, Pipeline, Forecast, Quotas, Outreach, Conversion, Workspaces.
- KPI Filters: Sales Motion, Partner, Product, Lead Tier, Owner, Owner Role — plus a period selector (e.g. Current Month) and Clear Filters.
- Overview tiles: Total Pipeline Value (+ deal count), Deals Won (+ value & vs-last-period %), Total Contacts, Conversion Rate; plus Deal Status Distribution & Activity Summary. Export to CSV where available.
Sequences
Purpose. Automated multi-step outreach cadences.
Navigation. Sales CRM → Sequences.
- 1New Sequence
Each sequence has a status (draft/active/paused/archived) and a list of steps (type email / task / wait, with delay days, subject and body). Select a sequence to view detail. Enrol a contact/lead and the steps fire on schedule; enrolments can be paused, resumed or unenrolled.
Approvals
Purpose. The sign-off queue — items (discounts, gated deal-stage moves, proposals, agreements) awaiting approval.
Navigation. Sales CRM → Approvals.
- 1Refresh
Behaviour
- Each item has a status: pending → approved / rejected / overridden. Approve/Reject is available to the assigned approver, or any admin/manager. Override is admin-only. You cannot approve your own request unless you are an admin/manager. A second pending approval for the same entity is blocked (409).
Affiliates
Purpose. Manage referral partners, programs, links and commissions (the CRM side of the Ripple referral engine).
Navigation. Sales CRM → Affiliates.
- 1Search affiliates
- 2New Program
- 3Add Affiliate
- 4Approve (commission)
- 5Approve (row)
- 6Tab: Commissions
- 7Tab: Affiliates
- 8Tab: Programs
- 9Tab: Links
What's on the screen
- Tabs: Commissions, Affiliates, Programs, Links, Materials.
- Summary tiles: Total Affiliates (+ active), Total Clicks, Pending $, Approved $, Total Paid.
- Columns: Affiliate, Status, Links, Clicks, Earnings, Paid. Commissions move pending → approved → paid; Approve clears a commission for payout.
Influencer Marketing
Purpose. Run influencer campaigns — manage creators, content and ROI.
Navigation. Marketing & AI → Influencer.
- 1New Campaign
- 2Tab: Campaigns
- 3Tab: Influencers
- 4Tab: Content
- 5Tab: Analytics
Tabs: Campaigns, Influencers, Content, Analytics. Tiles: Active Campaigns, Influencers, Total Revenue, ROI. Influencers carry a tier (micro/mid/macro/mega/celebrity), social handles, follower count and a rate card.
Landing Page Builder
Purpose. Build and publish landing pages, with AI assistance.
Navigation. Marketing & AI → Landing Page Builder.
- 1Search pages
- 2Create Page
- 3Create with AI
Create a page from scratch (Create Page) or generate one (Create with AI). Each page shows publish status, version, views, conversions and its public slug (e.g. /demo-offer), with Publish/Unpublish and an All Status filter. Public pages render at /pages/:slug.
Marketing Lists
Purpose. Segment contacts into static or smart lists for campaigns.
Navigation. Marketing & AI → Lists.
- 1Search lists
- 2Create List
Tiles: Total Lists, Smart Lists, Total Contacts. Create List (static or smart/rule-based); an All Types filter narrows the view. Lists feed Campaigns.
Campaigns
Purpose. Build, schedule and send marketing campaigns to lists.
Navigation. Marketing & AI → Campaigns.
- 1Search campaigns
- 2Create Campaign
Tiles: Total Campaigns, Scheduled, Messages Sent, Opens. Create Campaign, target a list, schedule, and track sends/opens. An All Status filter is provided.
Forms
Purpose. Capture-forms that create leads/contacts in the CRM.
Navigation. Marketing & AI → Forms.
Build a form and embed it; submissions create CRM records and can fire the form_submitted webhook. (Use Back to Dashboard to exit the builder.)
Inbox
Purpose. A unified conversation inbox — email and SMS — tied to CRM records.
Navigation. Operations → Inbox.
- 1Search conversations
- 2Refresh
- 3Connect Google
- 4Connect Microsoft
Filters: All / Email / SMS / Unread. Connect Google or Connect Microsoft to sync a mailbox; Sync Email pulls new mail; Compose starts a message. Select a conversation to read/reply.
Automation Workflows
Purpose. No-code automations that react to CRM events (e.g. follow-up on a new lead).
Navigation. Operations → Workflows.
- 1New Workflow
Tiles: Total, Active, Paused, Total Runs. New Workflow opens the builder (trigger → conditions → actions). Each workflow can be activated/paused and shows its run history.
Custom Objects
Purpose. Extend the data model with custom record types beyond leads/contacts/accounts/deals.
Navigation. Operations → Custom Objects.
- 1Create Object
Create Object defines a new object with its own fields; records of that object then behave like first-class CRM data. Admin-oriented.
Blueprints
Purpose. Reusable CRM templates — pipelines, calculations, transition rules and automations — that can be applied to a workspace (e.g. Frylow Sales CRM, NLA Accounting CRM).
Navigation. Operations → Blueprints.
- 1Create Blueprint
- 2Tab: Pipelines
- 3Tab: Calculations
- 4Tab: Transition Rules
- 5Tab: Automations
Tabs: Pipelines, Calculations, Transition Rules, Automations. Create/Edit Blueprint assembles a complete CRM configuration that can be deployed to workspaces. Admin-oriented.
Settings
Purpose. Workspace configuration & administration.
Navigation. Settings (top row).
- 1Save Changes
- 2Tab: Workspace
- 3Tab: Pipelines
- 4Tab: AI & Intelligence
- 5Tab: Integrations
Tabs
- Workspace — name, primary colour, description, timezone, default currency; Sales SLAs (Speed-to-Lead in minutes, Lead Cadence & Deal Cadence in hours — the windows that drive alerts).
- Pipelines — configure pipeline stages, gates and rules.
- AI & Intelligence — AI provider/model and usage limits.
- Integrations — connect external providers (AI, email/comms, payments).
- Affiliates — referral program defaults.
- Team — invite users, assign roles (admin/manager/sales/finance/viewer).
- Security — session/security settings.
- Webhooks — outbound webhooks for CRM events.
Leads & deals
Create a Lead
Purpose. Add a new prospect.
Prerequisites. Logged in with create rights (Sales/Manager/Admin — not Finance).
- Sales CRM → Leads → Add Lead.
- Enter the person's details.
- Set source/owner if known.
- Save.
Required fields. first_name, last_name (1–100 chars). Email, phone, company, country, source optional. Partner-sales motion also requires client_name, partner_commission_structure and product_category.
Validation. Names are required; a duplicate email returns 409 (admin/manager can override with a 3+ char reason); partner-sales leads need the partner fields.
Expected result. A lead in new status, ready to work.
Edit a Lead
Purpose. Update lead details or move its status.
Prerequisites. Lead exists; you have edit rights.
- Open the lead from Leads.
- Edit fields, or change status along the allowed path.
- Save.
Validation. Status changes must follow the lifecycle — you cannot skip stages (e.g. you can't jump straight to qualified), and working requires an owner.
Qualify a Lead
Purpose. Mark a worked lead as sales-ready.
Prerequisites. Lead is info_collected.
- Open the lead.
- Complete the scoring inputs (budget_range, authority_identified, use_case_defined, timeline_confirmed) and the universal fields (industry, size, country, ICP tier, buying role, job title, decision role).
- Set status → qualified.
Validation. Qualification requires the full scoring + company + contact field set; if anything is missing the move is blocked and the message names it.
Expected result. Lead is qualified and can be converted.
Disqualify a Lead
Purpose. Close out a lead that won't proceed.
- Open the lead → set status → disqualified.
- Add a disqualification_reason (recommended).
Expected result. Lead is terminal (disqualified).
Convert Lead to Deal
Purpose. Promote a qualified lead into the pipeline.
Prerequisites. Lead is qualified (or meeting_scheduled) and has an email or phone.
- Open the lead → Convert (or Push to Sales).
- Choose account mode (create/link) and contact mode (create/link).
- Set the opportunity fields.
- Confirm.
Required fields. To create the opportunity: amount (≥0), estimated_close_date, product_service_type. The contact must originate from a lead and the deal must resolve to an account.
Expected result. A contact/account (as chosen) and a deal in the pipeline; the lead becomes converted.
Create a Contact
Purpose. Add a person.
- Sales CRM → Contacts → Add Contact.
- Enter details → Save.
Required fields. first_name, last_name, email, job_title, buying_role.
Validation. Email is unique per workspace; a duplicate is blocked (409) unless an admin/manager overrides with a 3+ char reason. Buying role must be decision_maker / champion / influencer / technical / finance.
Create an Account
Purpose. Add a company.
- Sales CRM → Accounts → Add Account.
- Enter details → Save.
Required fields. name, icp_tier (A/B/C/D) required; domain, industry, company_size, country, annual_revenue, website optional.
Validation. ICP tier must be A–D; name and domain are each unique per workspace (duplicate blocked, no override); domain is normalised.
Create a Deal / Opportunity
Purpose. Add a deal directly (not via conversion).
- New Deal (Dashboard or Pipeline) → fill the form → Save.
Required fields. name, amount (≥0), contact_id (a lead-originated contact), estimated_close_date, product_service_type, next_step_at. The contact must resolve to an account.
Expected result. A deal in open status on the pipeline.
Moving & closing deals
Move a Deal Through Pipeline Stages
Purpose. Advance a deal.
- Open the deal (or use Next/Back on its Pipeline card).
- Select the next stage.
- Provide any stage-gated fields if prompted.
Required fields. stage_id; plus the stage's required fields (e.g. calendar sync for Discovery/Demo Scheduled; SPICED + stakeholder map for Demo Completed; proposal value + commercial summary for Decision Pending; payment terms for Contract Sent).
Validation. Every active deal must have a next_step_at. Some stages require manager approval (submit an approval first). Each move emits a deal_stage_change event.
override + reason.Close a Deal as Closed-Won
Purpose. Win the deal and trigger the Labyrinth hand-off.
Prerequisites. Deal has the required commercial fields and a complete handoff form.
- Open the deal → move to Closed Won.
- Provide the win_reason.
- Confirm.
Required fields. contract_final_value (not null), payment_terms (non-empty), a complete handoff form (delivery owner + kickoff + checklist), win_reason.
Validation. Missing any of these blocks the move with “Closed Won requires final contract value, payment terms, and a complete handoff form.” Admin/manager can override with a 3+ char reason.
Expected result. Deal locks (status=won, probability=100%); automations fire — delivery owner assigned, kickoff task, finance notified, commission created, and the hand-off to Labyrinth (a contract is created there).
Close a Deal as Closed-Lost
Purpose. Record a lost deal.
- Open the deal → move to Closed Lost.
- Provide the loss_reason (and competitor, if any).
- Confirm.
Required fields. loss_reason; optional competitor_lost_to.
Expected result. Deal status=lost, probability=0%. (Deals with no commitment for 60 days are auto-lost.)
Sequences, activities, approvals, reports, affiliates, pipelines
Create & Manage Sequences
- Sales CRM → Sequences → New Sequence with steps (type email/task/wait, subject/body, delay days).
- Enrol a contact/lead.
- Pause / resume / unenroll as needed.
Expected result. Automated follow-ups run on schedule.
Add Activities & Schedule Follow-Ups
- From a deal/contact, Log Activity (call/email/meeting) — or Log Call on the dashboard.
- Set a next step / follow-up date on the deal (
next_step_at).
Expected result. Activity appears in the Activity feed; follow-ups surface as due, and SLA cadence alerts use these timestamps.
Submit & Approve Requests
- Submit: a gated action (e.g. a manager-approval stage, a discount, a proposal/agreement) creates an approval (entity + optional approver).
- Approve: the approver opens Approvals → Approve / Reject (with a 3+ char reason) / (admin) Override.
Expected result. Approval status becomes approved/rejected/overridden; the gated action unblocks. You can't approve your own request unless admin/manager.
Generate & Export Reports
- Sales CRM → Reports → pick a tab and set KPI Filters + period.
- Read the tiles/charts.
- Export to CSV where available.
Manage Affiliates
Prerequisites. Affiliate management rights.
- Sales CRM → Affiliates → Add Affiliate / New Program.
- Use the Links/Materials tabs to equip partners.
- On the Commissions tab, Approve commissions for payout.
Configure Pipelines
Prerequisites. Admin (manager for some edits).
- Settings → Pipelines → add/edit stages, set probability, required fields, calculation gates and trigger rules.
- Save.
Sales Representative
Responsibilities
- Capture and qualify leads; advance deals; run outreach; close won deals with the commercial fields and handoff form complete.
Accessible modules
- Dashboard, Leads, Contacts, Accounts, Pipeline, Activity, Sequences, Reports (own view), Approvals (submit). Marketing & AI and Operations as granted; Settings read-only/none.
Daily workflow
- Scan the dashboard for priority signals & follow-ups due.
- Work new leads by score; qualify or disqualify.
- Advance deals a stage; keep value & next step current.
- Enrol prospects in sequences; log every touch.
- Prepare deals for Closed-Won (final value, payment terms, handoff form).
Permissions
- Create/edit leads, contacts, accounts, deals; move stages. Cannot override stage gates or duplicate blocks (manager/admin only); cannot delete workspace configuration.
Common scenarios
- A deal won't move to Closed-Won → it's the field gate; fill the commercials and the handoff form first, or ask a manager to override.
- Can't qualify a lead → complete the scoring + company + contact fields.
- Duplicate blocked → the email already exists; use the existing record or ask a manager to override.
Best practice
- Keep
next_step_atcurrent so follow-ups surface; log every touch so deal history is reliable and SLA timers are accurate.
Manager
Responsibilities
- Keep the team's pipeline healthy; clear approvals; unblock and coach reps; override stage gates and duplicate blocks when justified.
Accessible modules
- All Sales CRM screens, full Reports, Approvals (decide + override). Marketing/Operations as granted.
Daily workflow
- Read Dashboard & Reports for momentum and at-risk deals.
- Clear the Approvals queue.
- Unblock stalled deals; coach or reassign.
- Override blocked stage moves / duplicates where justified (with a reason).
Permissions
- Everything a rep can do, plus override stage gates, override duplicate blocks, merge contacts, edit locked (won) deals, and decide approvals. Cannot access admin-only Settings surfaces (integrations, webhooks, security) — that's Admin.
Common scenarios
- A rep is blocked at a gate → review and override with a reason (it's logged on the deal).
- Two records for one company → merge contacts / resolve the duplicate.
Best practice
- Use override sparingly and always with a clear reason — every override is recorded on the deal.
Administrator
Responsibilities
- Configure the workspace, pipelines, integrations, security, webhooks; manage users & roles; act anywhere a manager can.
Accessible modules
- All screens + Settings (Workspace, Pipelines, AI & Intelligence, Integrations, Affiliates, Team, Security, Webhooks); Operations (Blueprints, Custom Objects).
Daily workflow
- Manage users/roles (Settings → Team).
- Maintain pipelines, stage gates & SLAs.
- Configure integrations & webhooks; rotate keys.
- Step in to override gates/duplicates where needed.
Permissions
- Full access, including override of stage gates and duplicate blocks, approval override, locked-pipeline provisioning, and the only role that manages integrations/security/webhooks.
Common scenarios
- Onboard a rep → Settings → Team → invite, assign role.
- Connect email/AI/payments → Settings → Integrations → add provider key (≥10 chars), test, enable.
- Tighten SLAs → Settings → Workspace → Sales SLAs.
Best practice
- Keep roles least-privilege; store provider keys via Integrations (encrypted) rather than sharing them.
Finance
Responsibilities
- Review won deals — final value, payment terms, commissions; use Reports for revenue & forecast; clear affiliate commissions for payout.
Accessible modules
- Closed-Won deals only, Reports (revenue/forecast), Affiliates → Commissions. Finance does not run the sales motion.
Daily workflow
- Review newly-won deals — contract_final_value, payment_terms, commission.
- Reconcile commissions on the Affiliates → Commissions tab.
- Read the Forecast/Conversion reports for revenue trend.
Permissions & limitation
Common scenarios
- Can't open a lead or move a deal → expected; switch to a sales/manager account for those actions.
- Need revenue by period → Reports → Forecast / Overview with the period filter.
Field & data dictionary (CRM)
Field types, required-ness, validation and business purpose — verified against the backend (PostgreSQL models + API routes). auto = system-set.
Lead
| Field | Type | Req? | Validation / rules | Purpose |
|---|---|---|---|---|
| first_name / last_name | string(100) | required | 1–100 chars | Lead identity |
| string(255) | optional* | Lowercased; unique per tenant; *email or phone needed to convert | Identity, dedupe, domain | |
| company_name | string | req. to qualify/convert | — | Account resolution |
| country_region | string | req. to qualify | — | ICP / territory |
| source | string | optional | Feeds score | Attribution |
| score | integer | auto | 0–100 (computed) | Lead quality |
| tier | string | auto | A/B/C/D (A≥80, B 60–79, C 40–59, D<40) | Priority band |
| status | enum | auto | Lifecycle, path-restricted | Pipeline of the lead |
| owner_id | FK user | req. for ‘working’ | Active tenant user | Assignment |
| scoring_data | JSON | auto | Holds budget/authority/use-case/timeline + ICP | Score + qualify gate |
| sales_motion_type | enum | auto | partnership_sales | partner_sales | Routing |
Contact
| Field | Type | Req? | Validation / rules | Purpose |
|---|---|---|---|---|
| first_name / last_name | string(100) | required | 1–100 | Identity |
| string(255) | required | Lowercased; unique per tenant (409 on dup) | Identity, dedupe | |
| job_title | string(255) | required | 1–255 | Role context |
| buying_role | enum | required | decision_maker / champion / influencer / technical / finance | Stakeholder mapping |
| lifecycle_stage | string | auto | lead → prospect → customer | Funnel stage |
| converted_from_lead_id | string | auto | Required for a contact to be a deal's primary contact | Lineage |
Account
| Field | Type | Req? | Validation / rules | Purpose |
|---|---|---|---|---|
| name | string(255) | required | Unique per tenant | Company name |
| domain | string(255) | optional | Normalised; unique per tenant | Domain matching |
| icp_tier | char | required | A/B/C/D only | ICP segmentation |
| industry / company_size / country / annual_revenue / website | mixed | optional | — | ICP & sizing |
| lifecycle_stage | string | auto | default prospect | Account funnel |
Deal (Opportunity)
| Field | Type | Req? | Validation / rules | Purpose |
|---|---|---|---|---|
| name | string(255) | required | 1–255 | Deal name |
| amount | float | required | ≥ 0 | Deal value |
| contact_id | FK | required | Contact must originate from a lead | Primary contact |
| account_id | FK | required | Resolved; deal needs a company | Company link |
| estimated_close_date | datetime | required | Valid ISO | Forecasting |
| product_service_type | string | required | 1–255 | What's sold |
| next_step_at | datetime | req. for active deals | Every active deal needs a next step | Cadence |
| spiced | JSON | optional | Keys: situation/pain/impact/critical_event/decision_process/decision_criteria; all 6 for Demo Completed | Discovery |
| contract_final_value | float | for Closed-Won | Not null | Gates Closed-Won |
| payment_terms | string | for Contract Sent & Closed-Won | Non-empty | Gates those stages |
| win_reason / loss_reason | string | on close | Required to close Won/Lost | Win/loss analysis |
| status | enum | auto | open / won / lost (won locks the deal) | Outcome |
| probability | float | auto | Synced from stage | Forecast weighting |
Approval
| Field | Type | Req? | Validation / rules | Purpose |
|---|---|---|---|---|
| entity_type | enum | required | proposal / agreement / deal_stage | What's approved |
| entity_id | string | required | Target record | Target |
| approver_id | FK | optional | Must exist in tenant | Assigned approver |
| status | enum | auto | pending → approved / rejected / overridden | State |
| rejection_reason / override_reason | text | on reject/override | ≥ 3 chars; override is admin-only | Audit |
Key enumerations
| Enum | Values |
|---|---|
| Lead status | new · assigned · working · info_collected · qualified · meeting_scheduled · converted · unresponsive · nurture · disqualified |
| Lead tier | A (≥80) · B (60–79) · C (40–59) · D (<40) |
| ICP tier | A · B · C · D |
| Buying role | decision_maker · champion · influencer · technical · finance |
| Pipeline stages (Elev8 Sales, locked) | New Lead → Questionnaire Sent → Questionnaire Completed → Qualified for Sales → Contacted → Meeting Scheduled → Proposal Sent → Agreement Sent → Agreement Signed → Payment Pending → Payment Received → Activation Handoff Ready → Strategy Executed → Module Deployed → Deliverables Ready → Deliverables Sent → Client Report Ready → Client Report Sent → Client Report Accepted (+ Lost, Nurture) |
| Deal status | open · won · lost |
| Approval status | pending · approved · rejected · overridden |
| User roles | admin · manager · sales · finance · viewer |
| Payment terms | Free text (e.g. Net-30) — non-empty required at Contract Sent / Closed-Won |
Permissions in practice (CRM)
What each role can actually do — view / create / edit / delete / approve / manage — beyond the raw role name.
| Action | Sales | Manager | Admin | Finance |
|---|---|---|---|---|
| View Sales CRM screens | ✅ | ✅ | ✅ | Won deals only |
| Create leads / contacts / accounts / deals | ✅ | ✅ | ✅ | ❌ |
| Edit records & move deal stages | ✅ | ✅ | ✅ | ❌ |
| Delete records / config | ❌ | limited | ✅ | ❌ |
| Override a blocked stage move | ❌ | ✅ | ✅ | ❌ |
| Override duplicate / merge contacts | ❌ | ✅ | ✅ | ❌ |
| Decide approvals (approve/reject) | submit | ✅ | ✅ | — |
| Override an approval | ❌ | ❌ | ✅ | ❌ |
| Manage workspace / pipelines / integrations / webhooks / users | ❌ | pipelines only | ✅ | ❌ |
| View Closed-Won commercials & commissions | ✅ | ✅ | ✅ | ✅ |
Examples: Can a Sales Rep override a Closed-Won block? No — fill the fields or ask a manager/admin. Can Finance edit a lead? No — Finance is read-restricted to won deals. Who deletes a pipeline or rotates an integration key? Admin only. Can a Manager add a webhook? No — that's an Admin Settings surface.
Reporting
Available reports (tabs)
- Overview, Qualification, Sales Dashboard, Agents, Pipeline, Forecast, Quotas, Outreach, Conversion, Workspaces.
KPI definitions (Overview)
- Total Pipeline Value — sum of open deal values (with deal count).
- Deals Won — count + value of won deals in the period (+ vs-last-period %).
- Total Contacts — contacts in scope.
- Conversion Rate — won / total closed.
Filters
- Sales Motion, Partner, Product, Lead Tier, Owner, Owner Role, plus the period selector and Clear Filters.
Export & common use
- Export to CSV where available.
- Forecast/Conversion tabs for momentum; Agents tab for rep performance; Quotas for attainment; Outreach for sequence/activity volume.
Administration & configuration
| Area | Where | What you set |
|---|---|---|
| Workspace | Settings → Workspace | Name, colour, description, timezone, currency. |
| SLA config | Settings → Workspace (Sales SLAs) | Speed-to-Lead (min, default 15), Lead Cadence (h, default 24), Deal Cadence (h, default 72) — all must be > 0. |
| User management | Settings → Team | Invite users; activation/invite tokens; statuses. |
| Role management | Settings → Team | Role per user: admin / manager / sales / finance / viewer. |
| Pipeline config | Settings → Pipelines | Stages, probability, required_fields (gates), calculation gates, trigger rules. (Elev8 Sales pipeline is locked.) |
| AI & Intelligence | Settings → AI & Intelligence | AI provider/model + daily/monthly usage limits. |
| Integrations | Settings → Integrations | Provider keys (openai, anthropic, openrouter, twilio, sendgrid, acs, mailgun, gmail, outlook, discord, google_calendar, stripe, wise, paypal) — key ≥10 chars, encrypted, testable. |
| Webhooks | Settings → Webhooks | URL (≥10 chars), events (deal_created, deal_stage_changed, deal_won/lost, contact_, lead_, form_submitted, task_*), HMAC secret. |
| Security | Settings → Security | Session/security. Auth = JWT (24h) + per-tenant isolation; passwords bcrypt-hashed. |
Troubleshooting
Organised by the reviewer's categories: each row gives the symptom (often the exact message), the cause, the resolution and the escalation path.
Validation & missing-field errors
| Symptom (message) | Cause | Resolution / escalation |
|---|---|---|
| “Closed Won requires final contract value, payment terms, and a complete handoff form” | Gate fields/handoff missing | Fill contract_final_value, payment_terms and the handoff form; or manager/admin override with a reason. |
| “win_reason is required” / “loss_reason …” | Closing without a reason | Add the reason (or override). |
| “Every active deal must always have a next step scheduled” | next_step_at empty | Set a next step date on the deal. |
| “Discovery / Demo Completed requires … stakeholder map and full SPICED coverage” | Stage gate | Complete demo notes, next step, stakeholder map and all 6 SPICED keys. |
| Can't qualify a lead | Scoring/company/contact info incomplete | Complete the required scoring + company + contact fields. |
Permission & access errors
| Symptom | Cause | Resolution / escalation |
|---|---|---|
| “Finance users can access Closed Won deals only” (403) | Finance restriction by design | Use a sales/manager account for non-won actions. |
| “Stage ‘X’ requires manager approval” (403) | Manager-approval stage gate | Submit an approval; a manager/admin approves or overrides. |
| “Manager or admin role required” / “Admin access required for override” | Insufficient role for the action | Ask a manager (decide) or admin (override). |
Duplicate, integration & webhook errors
| Symptom | Cause | Resolution / escalation |
|---|---|---|
409 duplicate_contact / duplicate_lead | Email already exists in the workspace | Use the existing record; admin/manager override with a 3+ char reason. |
| “Another account already uses this name/domain” | Account name/domain not unique | Reuse the existing account (no override path). |
| Integration test fails | Bad/short key or provider-specific field missing | Re-enter a valid key (≥10 chars); check provider fields (e.g. SendGrid from_email); retest. Escalate to Admin. |
| Webhook not firing | Inactive subscription or invalid event | Check the event is in the valid set, the subscription is active, and review last_status_code/last_error. |
Login & user-access
| Symptom | Cause | Resolution / escalation |
|---|---|---|
| Login fails / 401 | Wrong tenant slug or inactive user | Re-enter the workspace (e.g. demo); an admin reactivates the user. |
| Session expired | JWT past its 24h expiry | Sign in again. |
End-to-end walkthrough — Lead → Closed-Won → Hand-off
One client followed through the whole CRM motion, screen by screen.
- Capture (Leads). Add Lead → a record appears in
new. Assign an owner to move it toworking; log touches and discovery notes to reachinfo_collected. (Leads screen.) - Qualify (Leads). Complete scoring + company + contact fields → set
qualified. (Leads screen.) - Convert (Leads → Pipeline). Convert → create/link account & contact, set amount/close date/product → a deal appears in the Pipeline
open; the lead becomesconverted. (Pipeline screen.) - Advance (Pipeline). Move the deal stage by stage via Next, satisfying each gate (calendar sync, SPICED + stakeholder map, proposal value, payment terms). Keep
next_step_atcurrent. (Pipeline screen.) - Close-Won (Pipeline). Provide contract_final_value, payment_terms, the handoff form and a win_reason → move to Closed Won. The deal locks at 100%. (Pipeline screen.)
- Hand-off (automatic). Automations fire: delivery owner assigned, kickoff task, finance notified, commission created, and a contract is created in Labyrinth. Verify on the deal (
spiced.labyrinth_light: synced). (See ‘The hand-off to Labyrinth’.)
The hand-off to Labyrinth (for users)
What happens to a client after you win the deal — and how to confirm it.
Before the hand-off (what you must complete)
- Final contract value, payment terms and a complete handoff form on the deal — all required to reach Closed-Won.
How you trigger it
- Move the deal to Closed-Won with a win reason. The hand-off fires automatically — there is no separate button.
What transfers
- Client/deal identity, the contract value and notes — Labyrinth creates a contract named “<Client> Operating Launch” (stage SIGNED, journey ONBOARDING) with three starter milestones and operational requests.
How to confirm success
- The deal records
spiced.labyrinth_light = {status:'synced', created:true, contract_id}with a contract link; the client then appears in Labyrinth (System Factory / Contracts).
If it doesn't appear
FLAG_HANDOFF_ENABLED kill-switch is off, in which case the close is rolled back rather than silently lost) or a config issue occurred — a config matter, not a data-entry error. Check spiced.labyrinth_light on the deal ({status:'skipped'|'failed', reason}) and raise it with eng rather than re-closing the deal. (Verified live 2026-06-07.)