// ═══════════════════════════════════════════════════════════════ // GASP Standard — SaaS Metric Knowledge Graph (Full Ontology) // Generated from the GASP Standard (https://gaspwiki.com) // ═══════════════════════════════════════════════════════════════ // // Nodes: 60 Metrics, 15 Entities, 7 Concepts, 198 Fields, 22 Source Categories // Edges: 85 metric relationships, 57 MEASURES, 22 entity/concept relationships, field/source edges // // Relationship types (metric signal): DRIVES, REDUCES, PREDICTS, COMPONENT_OF, MEASURES // Relationship types (entity lifecycle): CONVERTS_TO, PARENT_OF, BELONGS_TO // Relationship types (entity ownership): OWNS, GRANTS, PRICED_BY // Relationship types (entity interactions): MANAGES, SERVES, ENGAGES_VIA, SUBMITS, REPRESENTED_BY, SOURCES // Relationship types (entity financial flows): GENERATES, PRODUCES, CONTRIBUTES_TO, INCURS // Relationship types (data lineage): SOURCED_FROM (Field → SourceCategory) // // Import: paste into Neo4j Browser or pipe to cypher-shell // ═══════════════════════════════════════════════════════════════ // Clean slate (optional — uncomment to clear existing data) // MATCH (n) DETACH DELETE n; // ─── Metric Nodes (60) ───────────────────────── CREATE (:Metric {id: 'arr', name: 'ARR', department: 'Core', signalType: 'outcome', level: 1, definition: 'The annualized value of recurring revenue. ARR represents the yearly run rate of subscription revenue.', formula: 'ARR = MRR × 12', url: 'https://gaspwiki.com/v1/metrics/core/arr-annual-recurring-revenue', grain: 'End-of-month snapshot', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'rule_of_40', name: 'Rule of 40', department: 'Core', signalType: 'outcome', level: 1, definition: 'A heuristic that balances growth and profitability. A healthy SaaS company\'s growth rate plus profit margin should equal 40% or more.', formula: 'Rule of 40 = ARR Growth Rate (YoY %) + EBITDA Margin (%)', url: 'https://gaspwiki.com/v1/metrics/core/rule-of-40', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'mrr', name: 'MRR', department: 'Core', signalType: 'outcome', level: 2, definition: 'The total predictable revenue from active subscriptions, normalized to a monthly value.', formula: 'MRR = Sum of (Monthly subscription value for all active customers)', url: 'https://gaspwiki.com/v1/metrics/core/mrr-monthly-recurring-revenue', grain: 'End-of-month snapshot', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'net_new_mrr', name: 'Net New MRR', department: 'Core', signalType: 'outcome', level: 2, definition: 'The net change in MRR after accounting for all movements.', formula: 'Net New MRR = New MRR + Expansion MRR - Churned MRR - Contraction MRR', url: 'https://gaspwiki.com/v1/metrics/core/net-new-mrr', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'nrr', name: 'NRR', department: 'Core', signalType: 'outcome', level: 2, definition: 'The percentage of revenue retained from existing customers over a period, including expansion, contraction, and churn. Also known as Net Dollar Retention (NDR).', formula: 'NRR = MRR of cohort today / MRR of same cohort 12 months ago × 100', url: 'https://gaspwiki.com/v1/metrics/core/net-revenue-retention-nrr', grain: 'Monthly cohort', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'grr', name: 'GRR', department: 'Core', signalType: 'outcome', level: 2, definition: 'The percentage of revenue retained from existing customers, excluding expansion revenue. Also known as Gross Dollar Retention.', formula: 'GRR = Sum of min(Beginning MRR, Current MRR) per customer / Beginning MRR × 100', url: 'https://gaspwiki.com/v1/metrics/core/gross-revenue-retention-grr', grain: 'Account-month', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'gross_margin', name: 'Gross Margin', department: 'Core', signalType: 'outcome', level: 2, definition: 'Revenue minus cost of goods sold (COGS), as a percentage of revenue. Measures profitability after direct delivery costs.', formula: 'Gross Margin = (Revenue (GAAP) - COGS) / Revenue (GAAP) × 100', url: 'https://gaspwiki.com/v1/metrics/core/gross-margin', grain: 'End-of-month snapshot', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'arpa', name: 'ARPA', department: 'Core', signalType: 'outcome', level: 2, definition: 'Average monthly recurring revenue per customer.', formula: 'ARPA = MRR / Active Customers', url: 'https://gaspwiki.com/v1/metrics/core/arpa-average-revenue-per-account', grain: 'End-of-month snapshot', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'mrr_growth_rate', name: 'MRR Growth Rate', department: 'Core', signalType: 'outcome', level: 2, definition: 'The month-over-month percentage change in MRR.', formula: 'MRR Growth Rate = (MRR this month - MRR last month) / MRR last month × 100', url: 'https://gaspwiki.com/v1/metrics/core/mrr-growth-rate', grain: 'End-of-month snapshot', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'operating_margin', name: 'Operating Margin', department: 'Finance', signalType: 'outcome', level: 2, definition: 'Operating income as a percentage of revenue.', formula: 'Operating Margin = Operating Income / Revenue × 100', url: 'https://gaspwiki.com/v1/metrics/finance/operating-margin-ebit-margin', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'fcf', name: 'Free Cash Flow', department: 'Finance', signalType: 'outcome', level: 2, definition: 'Cash generated from operations minus capital expenditures.', formula: 'FCF = Operating cash flow - Capital expenditures', url: 'https://gaspwiki.com/v1/metrics/finance/free-cash-flow-fcf', grain: 'End-of-month snapshot', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'new_mrr', name: 'New MRR', department: 'Core', signalType: 'outcome', level: 3, definition: 'MRR generated from brand new customers acquired in the period.', formula: 'New MRR = Sum of (first month MRR from customers acquired this period)', url: 'https://gaspwiki.com/v1/metrics/core/new-mrr', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'expansion_mrr', name: 'Expansion MRR', department: 'Core', signalType: 'outcome', level: 3, definition: 'Additional MRR from existing customers through upgrades, add-ons, seat increases, or price increases.', formula: 'Expansion MRR = Sum of (MRR increase from existing customers this period)', url: 'https://gaspwiki.com/v1/metrics/core/expansion-mrr', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'churned_mrr', name: 'Churned MRR', department: 'Core', signalType: 'outcome', level: 3, definition: 'MRR lost from customers who cancelled their subscriptions.', formula: 'Churned MRR = Sum of (MRR from customers who churned this period)', url: 'https://gaspwiki.com/v1/metrics/core/churned-mrr', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'contraction_mrr', name: 'Contraction MRR', department: 'Core', signalType: 'outcome', level: 3, definition: 'MRR reduction from existing customers who downgraded but didn\'t churn.', formula: 'Contraction MRR = Sum of (MRR decrease from existing customers who remain active)', url: 'https://gaspwiki.com/v1/metrics/core/contraction-mrr', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'cac', name: 'CAC', department: 'Core', signalType: 'efficiency', level: 3, definition: 'The total cost to acquire a new customer.', formula: 'CAC = (Sales + Marketing spend in period) / New customers acquired in period', url: 'https://gaspwiki.com/v1/metrics/core/cac-customer-acquisition-cost', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'ltv', name: 'LTV', department: 'Core', signalType: 'efficiency', level: 3, definition: 'The total revenue (or profit) expected from a customer over their lifetime. Also known as CLV (Customer Lifetime Value) or CLTV.', formula: 'LTV = (ARPA × Gross Margin) / Revenue Churn Rate', url: 'https://gaspwiki.com/v1/metrics/core/ltv-customer-lifetime-value', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'ltv_cac_ratio', name: 'LTV:CAC Ratio', department: 'Core', signalType: 'efficiency', level: 3, definition: 'The ratio of customer lifetime value to acquisition cost. Measures the return on investment from sales and marketing spend.', formula: 'LTV:CAC = LTV / CAC', url: 'https://gaspwiki.com/v1/metrics/core/ltvcac-ratio', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'cac_payback', name: 'CAC Payback Period', department: 'Core', signalType: 'efficiency', level: 3, definition: 'The number of months required to recover the cost of acquiring a customer. Also called "Months to Recover CAC" or "Time to Recover CAC."', formula: 'CAC Payback = CAC / (ARPA × Gross Margin)', url: 'https://gaspwiki.com/v1/metrics/core/cac-payback-period', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'logo_churn_rate', name: 'Logo Churn Rate', department: 'Core', signalType: 'outcome', level: 3, definition: 'The percentage of customers lost in a period. Also called customer churn or logo churn.', formula: 'Logo Churn Rate = Customers lost in period / Customers at start of period × 100', url: 'https://gaspwiki.com/v1/metrics/core/logo-churn-rate-customer-churn', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'revenue_churn_rate', name: 'Revenue Churn Rate', department: 'Core', signalType: 'outcome', level: 3, definition: 'The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate.', formula: 'Revenue Churn Rate = (Churned MRR + Contraction MRR) / Beginning MRR × 100', url: 'https://gaspwiki.com/v1/metrics/core/revenue-churn-rate', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'nps', name: 'NPS', department: 'Core', signalType: 'leading', level: 3, definition: 'A measure of customer loyalty based on likelihood to recommend.', formula: 'NPS = % Promoters - % Detractors', url: 'https://gaspwiki.com/v1/metrics/core/nps-net-promoter-score', grain: 'Weekly snapshot', frequency: 'Weekly', period: 'week'}); CREATE (:Metric {id: 'pipeline_value', name: 'Pipeline Value', department: 'Sales', signalType: 'leading', level: 3, definition: 'Total value of all active sales opportunities.', formula: 'Pipeline Value = Sum of (Deal value × Stage probability) for all open opportunities', url: 'https://gaspwiki.com/v1/metrics/sales/pipeline-value', grain: 'Daily snapshot', frequency: 'Daily sync', period: 'day'}); CREATE (:Metric {id: 'pipeline_coverage', name: 'Pipeline Coverage', department: 'Sales', signalType: 'leading', level: 3, definition: 'The ratio of pipeline value to quota for the period.', formula: 'Pipeline Coverage = Total Pipeline Value / Quota for Period', url: 'https://gaspwiki.com/v1/metrics/sales/pipeline-coverage-ratio', grain: 'Daily snapshot', frequency: 'Daily sync', period: 'day'}); CREATE (:Metric {id: 'win_rate', name: 'Win Rate', department: 'Sales', signalType: 'efficiency', level: 3, definition: 'The percentage of qualified opportunities that close as won.', formula: 'Win Rate = Deals Won / (Deals Won + Deals Lost) × 100', url: 'https://gaspwiki.com/v1/metrics/sales/win-rate', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'acv', name: 'ACV', department: 'Sales', signalType: 'outcome', level: 3, definition: 'The annualized value of a contract, normalizing multi-year deals to a single year. Also used to describe average deal size when aggregated.', formula: 'ACV = (Total Contract Value - One-time fees) / Contract term in years', url: 'https://gaspwiki.com/v1/metrics/sales/acv-annual-contract-value', grain: 'Per event, aggregate monthly', frequency: 'Daily sync', period: 'month'}); CREATE (:Metric {id: 'quota_attainment', name: 'Quota Attainment', department: 'Sales', signalType: 'outcome', level: 3, definition: 'The percentage of quota achieved by a rep or team.', formula: 'Quota Attainment = Revenue Closed / Quota × 100', url: 'https://gaspwiki.com/v1/metrics/sales/quota-attainment', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'health_score', name: 'Customer Health Score', department: 'Customer Success', signalType: 'leading', level: 3, definition: 'A composite score predicting likelihood of retention or churn.', formula: 'Health Score = Weighted average of health indicators', url: 'https://gaspwiki.com/v1/metrics/customer-success/customer-health-score', grain: 'Weekly snapshot', frequency: 'Weekly', period: 'week'}); CREATE (:Metric {id: 'expansion_rate', name: 'Expansion Revenue Rate', department: 'Customer Success', signalType: 'outcome', level: 3, definition: 'Expansion MRR as a percentage of beginning MRR.', formula: 'Expansion Rate = Expansion MRR / Beginning MRR × 100', url: 'https://gaspwiki.com/v1/metrics/customer-success/expansion-revenue-rate', grain: 'Per event, aggregate monthly', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'renewal_rate', name: 'Renewal Rate', department: 'Customer Success', signalType: 'outcome', level: 3, definition: 'The percentage of contracts renewed at term.', formula: 'Renewal Rate = Contracts renewed / Contracts up for renewal × 100', url: 'https://gaspwiki.com/v1/metrics/customer-success/renewal-rate', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'at_risk_rate', name: 'At-Risk Customer Rate', department: 'Customer Success', signalType: 'leading', level: 3, definition: 'The percentage of customers flagged as at-risk.', formula: 'At-Risk Rate = Customers with health score < 40 / Total scored customers × 100', url: 'https://gaspwiki.com/v1/metrics/customer-success/at-risk-customer-rate', grain: 'Weekly snapshot', frequency: 'Weekly', period: 'week'}); CREATE (:Metric {id: 'magic_number', name: 'Magic Number', department: 'Finance', signalType: 'efficiency', level: 3, definition: 'Sales efficiency metric measuring revenue generated per dollar of sales and marketing spend.', formula: 'Magic Number = (QoQ ARR growth) / (Prior quarter S&M spend)', url: 'https://gaspwiki.com/v1/metrics/finance/magic-number', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'burn_rate', name: 'Cash Burn Rate', department: 'Finance', signalType: 'operational', level: 3, definition: 'Net cash consumed per month.', formula: 'Burn Rate = (Cash at start of period - Cash at end of period) / Months in period', url: 'https://gaspwiki.com/v1/metrics/finance/cash-burn-rate', grain: 'End-of-month snapshot', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'revenue_per_employee', name: 'Revenue per Employee', department: 'Finance', signalType: 'outcome', level: 3, definition: 'ARR divided by total headcount.', formula: 'Revenue per Employee = ARR / Total headcount', url: 'https://gaspwiki.com/v1/metrics/finance/revenue-per-employee', grain: 'End-of-month snapshot', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'partner_sourced_revenue', name: 'Partner-Sourced Revenue', department: 'Partnerships', signalType: 'outcome', level: 3, definition: 'Revenue from deals originated by partners.', formula: 'Partner-Sourced Revenue = Sum of closed revenue where partner = source', url: 'https://gaspwiki.com/v1/metrics/partnerships/partner-sourced-revenue', grain: 'Per event, aggregate monthly', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'sales_cycle', name: 'Sales Cycle Length', department: 'Sales', signalType: 'operational', level: 4, definition: 'The average time from opportunity creation to close.', formula: 'Sales Cycle = Average of (Close date - Opportunity created date) for won deals', url: 'https://gaspwiki.com/v1/metrics/sales/sales-cycle-length', grain: 'Per event', frequency: 'Per deal'}); CREATE (:Metric {id: 'mqls', name: 'MQLs', department: 'Marketing', signalType: 'operational', level: 4, definition: 'Leads that have demonstrated sufficient engagement and intent to warrant sales attention, based on criteria established between marketing and sales.', formula: 'MQLs = Leads meeting MQL criteria in period', url: 'https://gaspwiki.com/v1/metrics/marketing/marketing-qualified-leads-mqls', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'sqls', name: 'SQLs', department: 'Marketing', signalType: 'operational', level: 4, definition: 'MQLs accepted by sales as worth pursuing.', formula: 'SQLs = MQLs accepted by sales in period', url: 'https://gaspwiki.com/v1/metrics/marketing/sales-qualified-leads-sqls', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'lvr', name: 'Lead Velocity Rate', department: 'Marketing', signalType: 'leading', level: 4, definition: 'Month-over-month growth in qualified leads. Considered by many to be the most important leading indicator in SaaS.', formula: 'LVR = (Qualified leads this month - Qualified leads last month) / Qualified leads last month × 100', url: 'https://gaspwiki.com/v1/metrics/marketing/lead-velocity-rate-lvr', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'marketing_cac', name: 'Marketing CAC', department: 'Marketing', signalType: 'efficiency', level: 4, definition: 'Marketing-only portion of acquisition cost.', formula: 'Marketing CAC = Marketing spend / New customers acquired', url: 'https://gaspwiki.com/v1/metrics/marketing/marketing-cac', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'cpl', name: 'Cost per Lead', department: 'Marketing', signalType: 'efficiency', level: 4, definition: 'Cost to acquire a lead.', formula: 'CPL = Marketing spend / Leads generated', url: 'https://gaspwiki.com/v1/metrics/marketing/cost-per-lead-cpl', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'marketing_sourced_pipeline', name: 'Marketing Sourced Pipeline', department: 'Marketing', signalType: 'leading', level: 4, definition: 'Pipeline value attributed to marketing efforts (first-touch attribution).', formula: 'Marketing Sourced Pipeline = Sum of opportunity value where first touch = marketing', url: 'https://gaspwiki.com/v1/metrics/marketing/marketing-sourced-pipeline', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'qbr_completion', name: 'QBR Completion Rate', department: 'Customer Success', signalType: 'operational', level: 4, definition: 'The percentage of eligible accounts that completed a QBR.', formula: 'QBR Completion = QBRs completed / QBRs scheduled × 100', url: 'https://gaspwiki.com/v1/metrics/customer-success/quarterly-business-review-qbr-completion-rate', grain: 'Quarterly snapshot', frequency: 'Quarterly', period: 'quarter'}); CREATE (:Metric {id: 'csat', name: 'CSAT', department: 'Support', signalType: 'outcome', level: 4, definition: 'Customer rating of support interaction.', formula: 'CSAT = Positive responses / Total responses × 100', url: 'https://gaspwiki.com/v1/metrics/support/customer-satisfaction-score-csat', grain: 'Per event', frequency: 'Per project'}); CREATE (:Metric {id: 'ttfv', name: 'Time to First Value', department: 'Onboarding', signalType: 'operational', level: 4, definition: 'Time from customer signup/contract to achieving first meaningful value.', formula: 'TTFV = Median of (First value milestone date - Contract start date)', url: 'https://gaspwiki.com/v1/metrics/onboarding/time-to-first-value-ttfv', grain: 'Per event', frequency: 'Daily'}); CREATE (:Metric {id: 'onboarding_completion', name: 'Onboarding Completion Rate', department: 'Onboarding', signalType: 'outcome', level: 4, definition: 'Percentage of customers who complete the onboarding program.', formula: 'Completion Rate = Customers completing onboarding / Customers starting onboarding × 100', url: 'https://gaspwiki.com/v1/metrics/onboarding/onboarding-completion-rate', grain: 'Per event, aggregate monthly', frequency: 'Daily', period: 'month'}); CREATE (:Metric {id: 'activation_rate', name: 'Activation Rate', department: 'Onboarding', signalType: 'outcome', level: 4, definition: 'Percentage of onboarded customers who become actively engaged.', formula: 'Activation Rate = Active customers post-onboarding / Customers completing onboarding × 100', url: 'https://gaspwiki.com/v1/metrics/onboarding/onboarding-to-active-rate-activation-rate', grain: 'Per event, aggregate monthly', frequency: 'Daily', period: 'month'}); CREATE (:Metric {id: 'dau_mau', name: 'DAU/MAU Ratio', department: 'Product', signalType: 'leading', level: 4, definition: 'The ratio of daily to monthly active users, indicating how often users return.', formula: 'Stickiness = DAU / MAU × 100', url: 'https://gaspwiki.com/v1/metrics/product/daumau-ratio-stickiness', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'feature_adoption', name: 'Feature Adoption Rate', department: 'Product', signalType: 'leading', level: 4, definition: 'Percentage of users/accounts using a specific feature.', formula: 'Feature Adoption = Users using feature / Total active users × 100', url: 'https://gaspwiki.com/v1/metrics/product/feature-adoption-rate', grain: 'Per event, aggregate monthly', frequency: 'Daily', period: 'month'}); CREATE (:Metric {id: 'pqas', name: 'Product Qualified Accounts', department: 'Product', signalType: 'leading', level: 4, definition: 'Accounts that have demonstrated product engagement indicating sales-readiness.', formula: 'PQA = Accounts meeting product engagement threshold', url: 'https://gaspwiki.com/v1/metrics/product/product-qualified-accounts-pqas', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'forecast_accuracy', name: 'Forecast Accuracy', department: 'RevOps', signalType: 'operational', level: 4, definition: 'How closely forecasted revenue matched actual revenue.', formula: 'Forecast Accuracy = 1 - |Forecasted - Actual| / Actual', url: 'https://gaspwiki.com/v1/metrics/revops/forecast-accuracy', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'dso', name: 'Days Sales Outstanding', department: 'RevOps', signalType: 'operational', level: 4, definition: 'Average days to collect payment after invoicing.', formula: 'DSO = (Accounts Receivable / Revenue) × Days in period', url: 'https://gaspwiki.com/v1/metrics/revops/days-sales-outstanding-dso', grain: 'Per event', frequency: 'Per invoice'}); CREATE (:Metric {id: 'employee_turnover', name: 'Employee Turnover Rate', department: 'People', signalType: 'outcome', level: 4, definition: 'Percentage of employees who left in a period.', formula: 'Turnover Rate = Employees departed / Average headcount × 100', url: 'https://gaspwiki.com/v1/metrics/people/employee-turnover-rate', grain: 'Monthly aggregate', frequency: 'Monthly', period: 'month'}); CREATE (:Metric {id: 'frt', name: 'First Response Time', department: 'Support', signalType: 'operational', level: 5, definition: 'Time from ticket creation to first human response.', formula: 'FRT = Median of (First response timestamp - Ticket created timestamp)', url: 'https://gaspwiki.com/v1/metrics/support/first-response-time-frt', grain: 'Per event', frequency: 'Per ticket'}); CREATE (:Metric {id: 'ticket_volume', name: 'Ticket Volume', department: 'Support', signalType: 'operational', level: 5, definition: 'Total number of support tickets received in a period.', formula: 'Ticket Volume = Count of tickets created in period', url: 'https://gaspwiki.com/v1/metrics/support/ticket-volume', grain: 'Per event', frequency: 'Per ticket'}); CREATE (:Metric {id: 'self_service_rate', name: 'Self-Service Rate', department: 'Support', signalType: 'efficiency', level: 5, definition: 'Percentage of support needs resolved through self-service.', formula: 'Self-Service Rate = Self-service resolutions / (Self-service + Tickets) × 100', url: 'https://gaspwiki.com/v1/metrics/support/self-service-rate-ticket-deflection', grain: 'Daily snapshot', frequency: 'Daily', period: 'day'}); CREATE (:Metric {id: 'uptime', name: 'Uptime', department: 'Engineering', signalType: 'outcome', level: 5, definition: 'The percentage of time the service is operational.', formula: 'Uptime = (Total time - Downtime) / Total time × 100', url: 'https://gaspwiki.com/v1/metrics/engineering/uptime-availability', grain: 'Real-time', frequency: 'Real-time', period: 'realtime'}); CREATE (:Metric {id: 'deployment_frequency', name: 'Deployment Frequency', department: 'Engineering', signalType: 'operational', level: 5, definition: 'How often code is deployed to production.', formula: 'Deployment Frequency = Deployments / Time period', url: 'https://gaspwiki.com/v1/metrics/engineering/deployment-frequency', grain: 'Per event', frequency: 'Per deploy'}); CREATE (:Metric {id: 'mttr', name: 'MTTR', department: 'Engineering', signalType: 'operational', level: 5, definition: 'Time from incident start to resolution.', formula: 'MTTR = Average of (Resolution time - Incident start time)', url: 'https://gaspwiki.com/v1/metrics/engineering/mean-time-to-resolve-mttr', grain: 'Per event', frequency: 'Per deploy'}); CREATE (:Metric {id: 'enps', name: 'Employee NPS', department: 'People', signalType: 'leading', level: 5, definition: 'Likelihood of employees recommending the company as a place to work.', formula: 'eNPS = % Promoters (9-10) - % Detractors (0-6)', url: 'https://gaspwiki.com/v1/metrics/people/employee-net-promoter-score-enps', grain: 'Quarterly snapshot', frequency: 'Quarterly', period: 'quarter'}); // ─── Entity Nodes (11) ────────────────────────── CREATE (:Entity {id: 'customer', name: 'Customer', aliases: 'Account, Organization', definition: 'A distinct billing entity with one or more subscriptions. The "who" of your business relationship.', level: 'billing'}); CREATE (:Entity {id: 'subscription', name: 'Subscription', aliases: 'Contract, Agreement', definition: 'A billable agreement between a customer and your product, with defined terms, pricing, and status. The "what and when" of the relationship.', level: 'billing'}); CREATE (:Entity {id: 'license', name: 'License', aliases: 'Entitlement, Access, Quota', definition: 'A specific capability, quantity, or configuration granted by a subscription. The "how much" of the relationship.', level: 'billing'}); CREATE (:Entity {id: 'lead', name: 'Lead', aliases: 'Prospect, Contact', definition: 'A person or company that has shown interest but has not been qualified as a sales opportunity.', level: 'acquisition'}); CREATE (:Entity {id: 'opportunity', name: 'Opportunity', aliases: 'Deal, Pipeline Item', definition: 'A qualified sales prospect with an estimated value, stage, and expected close date.', level: 'acquisition'}); CREATE (:Entity {id: 'user', name: 'User', aliases: 'Product User, End User', definition: 'An individual who uses the product. In B2B, one Customer may have many Users. Usage metrics are measured at this level.', level: 'engagement'}); CREATE (:Entity {id: 'ticket', name: 'Ticket', aliases: 'Support Case, Issue', definition: 'A discrete support interaction initiated by a customer or user, tracked to resolution.', level: 'support'}); CREATE (:Entity {id: 'employee', name: 'Employee', aliases: 'Team Member, Headcount', definition: 'An internal team member. People metrics and efficiency ratios (revenue per employee) are measured at this level.', level: 'internal'}); CREATE (:Entity {id: 'invoice', name: 'Invoice', aliases: 'Transaction, Billing Document', definition: 'A billing document representing money owed or collected. Cash flow and collections metrics are measured at this level.', level: 'financial'}); CREATE (:Entity {id: 'partner', name: 'Partner', aliases: 'Channel Partner, Reseller', definition: 'An external organization that sources, influences, or resells deals. Partner metrics are measured at this level.', level: 'channel'}); CREATE (:Entity {id: 'project', name: 'Project', aliases: 'Engagement, SOW', definition: 'A professional services engagement with defined scope, timeline, and deliverables.', level: 'services'}); CREATE (:Entity {id: 'plan', name: 'Plan', aliases: 'Tier, Pricing Plan, Package', definition: 'A pricing tier offered to customers (e.g. Starter, Pro, Enterprise). Each plan defines a price point and a set of included products and quotas.', level: 'billing'}); CREATE (:Entity {id: 'product', name: 'Product', aliases: 'Module, SKU, Feature Bundle', definition: 'A distinct purchasable unit within the company offering. A subscription may include multiple products.', level: 'billing'}); CREATE (:Entity {id: 'campaign', name: 'Campaign', aliases: 'Marketing Campaign, Initiative', definition: 'A marketing initiative with defined objectives, channels, budget and dates. Campaigns source leads and influence opportunities.', level: 'acquisition'}); CREATE (:Entity {id: 'contact', name: 'Contact', aliases: 'Stakeholder, Decision Maker, Champion', definition: 'A named individual at a customer account involved in the buying or expansion process. Distinct from User and Lead.', level: 'acquisition'}); // ─── Concept Nodes (7) ─────────────────────── CREATE (:Concept {id: 'revenue', name: 'Revenue (GAAP)', definition: 'Recognized revenue under accrual accounting. The financial outcome of delivering on subscription obligations.'}); CREATE (:Concept {id: 'bookings', name: 'Bookings', definition: 'The total value of new contracts signed in a period. A forward-looking commitment that converts to revenue over the contract term.'}); CREATE (:Concept {id: 'cogs', name: 'COGS', definition: 'Cost of Goods Sold — direct costs attributable to delivering the product (hosting, support, onboarding). The denominator of Gross Margin.'}); CREATE (:Concept {id: 'cohort', name: 'Cohort', definition: 'A time-bound grouping of customers by acquisition period. Used for retention and expansion analysis to isolate vintage effects.'}); CREATE (:Concept {id: 'pipeline', name: 'Pipeline', definition: 'The aggregate weighted value of active opportunities. Represents potential future bookings at various probability stages.'}); CREATE (:Concept {id: 'segment', name: 'Segment', definition: 'A classification of customers by size, vertical or fit (e.g. SMB, Mid-Market, Enterprise). Used for cohort analysis and benchmark comparison.'}); CREATE (:Concept {id: 'tcv', name: 'TCV (Total Contract Value)', definition: 'The total value of a contract over its full term. Distinct from Bookings and ACV.'}); // ─── Source Category Nodes (22) ────────────── CREATE (:SourceCategory {id: 'billing', name: 'Billing', description: 'Subscription, payment, and invoice management systems'}); CREATE (:SourceCategory {id: 'crm', name: 'CRM', description: 'Customer relationship management — accounts, contacts, opportunities, pipeline'}); CREATE (:SourceCategory {id: 'finance', name: 'Finance / ERP', description: 'Accounting, general ledger, cash management, expense tracking'}); CREATE (:SourceCategory {id: 'cs_platform', name: 'CS Platform', description: 'Customer success tooling — health scores, QBRs, playbooks'}); CREATE (:SourceCategory {id: 'product_analytics', name: 'Product Analytics', description: 'User behavior, sessions, feature usage, activation tracking'}); CREATE (:SourceCategory {id: 'marketing_automation', name: 'Marketing Automation', description: 'Lead management, email campaigns, scoring, nurture flows'}); CREATE (:SourceCategory {id: 'web_analytics', name: 'Web Analytics', description: 'Website traffic, visitor tracking, conversion funnels'}); CREATE (:SourceCategory {id: 'ad_platforms', name: 'Ad Platforms', description: 'Paid media channels — spend, impressions, conversions'}); CREATE (:SourceCategory {id: 'help_desk', name: 'Help Desk', description: 'Support ticket management, SLA tracking, agent workflows'}); CREATE (:SourceCategory {id: 'knowledge_base', name: 'Knowledge Base', description: 'Self-service content, article performance, deflection tracking'}); CREATE (:SourceCategory {id: 'hris', name: 'HRIS', description: 'Human resources information system — employee records, compensation, org data'}); CREATE (:SourceCategory {id: 'ats', name: 'ATS', description: 'Applicant tracking — job postings, candidates, hiring pipeline'}); CREATE (:SourceCategory {id: 'survey_tool', name: 'Survey Tool', description: 'NPS, CSAT, eNPS, engagement surveys and response collection'}); CREATE (:SourceCategory {id: 'monitoring', name: 'Monitoring', description: 'Infrastructure and application monitoring — uptime, latency, errors'}); CREATE (:SourceCategory {id: 'cicd', name: 'CI/CD', description: 'Continuous integration and deployment — builds, releases, version control'}); CREATE (:SourceCategory {id: 'incident_management', name: 'Incident Management', description: 'Incident tracking, severity classification, resolution workflows'}); CREATE (:SourceCategory {id: 'cloud_provider', name: 'Cloud Provider', description: 'Cloud infrastructure APIs — compute, storage, cost data'}); CREATE (:SourceCategory {id: 'security_scanner', name: 'Security Scanner', description: 'Vulnerability scanning, patch tracking, compliance reporting'}); CREATE (:SourceCategory {id: 'psa', name: 'PSA', description: 'Professional services automation — time tracking, project management, resource planning'}); CREATE (:SourceCategory {id: 'partner_management', name: 'Partner Management', description: 'Partner relationship management — deal registration, portal activity, certifications'}); CREATE (:SourceCategory {id: 'lms', name: 'LMS', description: 'Learning management — training courses, certifications, completion tracking'}); CREATE (:SourceCategory {id: 'derived', name: 'Derived', description: 'Calculated from other metrics — no direct data source required'}); // ─── Field Nodes (198) ───────────────────────────── CREATE (:Field {id: 'account_id', type: 'string', metricCount: 16}); CREATE (:Field {id: 'activation_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'activity_type', type: 'string', metricCount: 1}); CREATE (:Field {id: 'actual_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'actual_revenue', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'adoption_score', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'amount', type: 'decimal', metricCount: 7}); CREATE (:Field {id: 'amounts', type: 'json', metricCount: 1}); CREATE (:Field {id: 'annual_value', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'arpa', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'arr', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'arr_growth_rate', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'article_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'attendees', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'available_hours', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'beginning_mrr', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'billable_hours', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'cac', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'cash_balance', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'certification_status', type: 'string', metricCount: 1}); CREATE (:Field {id: 'change_type', type: 'string', metricCount: 1}); CREATE (:Field {id: 'change_nature', type: 'string', metricCount: 6}); CREATE (:Field {id: 'channel', type: 'string', metricCount: 1}); CREATE (:Field {id: 'check_timestamp', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'churn', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'churn_date', type: 'date', metricCount: 2}); CREATE (:Field {id: 'churn_rate', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'churn_reason', type: 'string', metricCount: 1}); CREATE (:Field {id: 'churn_type', type: 'string', metricCount: 1}); CREATE (:Field {id: 'churned_mrr', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'close_date', type: 'date', metricCount: 5}); CREATE (:Field {id: 'closed_revenue', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'cogs', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'cohort_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'cohort_month', type: 'date', metricCount: 1}); CREATE (:Field {id: 'cohort_period', type: 'date', metricCount: 1}); CREATE (:Field {id: 'commit_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'completed', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'completeness_pct', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'completion_date', type: 'date', metricCount: 2}); CREATE (:Field {id: 'composite_score', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'consultant_id', type: 'string', metricCount: 2}); CREATE (:Field {id: 'contact_count', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'contract_end', type: 'date', metricCount: 1}); CREATE (:Field {id: 'contract_end_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'contract_start', type: 'date', metricCount: 1}); CREATE (:Field {id: 'contraction', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'contraction_mrr', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'conversions', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'cost', type: 'decimal', metricCount: 3}); CREATE (:Field {id: 'costs', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'count', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'course_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'created_at', type: 'timestamp', metricCount: 2}); CREATE (:Field {id: 'created_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'credit_memos', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'criteria_met', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'customer_count', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'date', type: 'date', metricCount: 2}); CREATE (:Field {id: 'dates', type: 'json', metricCount: 1}); CREATE (:Field {id: 'deal_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'deflections', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'demographics', type: 'json', metricCount: 1}); CREATE (:Field {id: 'department', type: 'string', metricCount: 4}); CREATE (:Field {id: 'deploy_date', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'deployment_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'detected_at', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'discovered_at', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'downtime_minutes', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'ebitda_margin', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'effective_date', type: 'date', metricCount: 2}); CREATE (:Field {id: 'employee_id', type: 'string', metricCount: 4}); CREATE (:Field {id: 'ending_mrr', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'engagement_score', type: 'decimal', metricCount: 3}); CREATE (:Field {id: 'expansion', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'expansion_mrr', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'expected_close', type: 'date', metricCount: 1}); CREATE (:Field {id: 'expense_type', type: 'string', metricCount: 1}); CREATE (:Field {id: 'feature_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'field', type: 'string', metricCount: 1}); CREATE (:Field {id: 'filled_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'first_response_at', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'first_use_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'first_value_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'forecast_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'forecasted_revenue', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'gross_margin', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'gross_profit', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'hire_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'hours', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'hours_actual', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'hours_budgeted', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'incident_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'invoice_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'invoice_id', type: 'string', metricCount: 2}); CREATE (:Field {id: 'is_won', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'last_active_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'last_activity_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'last_sync', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'last_updated', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'lead_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'lead_score', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'lead_source', type: 'string', metricCount: 1}); CREATE (:Field {id: 'leads', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'ltv', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'market_midpoint', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'marketing_source', type: 'string', metricCount: 1}); CREATE (:Field {id: 'marketing_spend', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'milestone', type: 'string', metricCount: 1}); CREATE (:Field {id: 'milestone_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'milestones_completed', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'monthly_expenses', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'monthly_revenue', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'months_since_start', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'mql_count_current', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'mql_count_prior', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'mql_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'mrr', type: 'decimal', metricCount: 3}); CREATE (:Field {id: 'mrr_change', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'mrr_end', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'mrr_lost', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'mrr_start', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'new_customers', type: 'integer', metricCount: 2}); CREATE (:Field {id: 'nps_score', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'object', type: 'string', metricCount: 1}); CREATE (:Field {id: 'onboarding_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'operating_expenses', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'opportunity_id', type: 'string', metricCount: 8}); CREATE (:Field {id: 'order_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'owner', type: 'string', metricCount: 1}); CREATE (:Field {id: 'page_views', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'partner_id', type: 'string', metricCount: 5}); CREATE (:Field {id: 'partner_sourced', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'patched_at', type: 'timestamp', metricCount: 1}); CREATE (:Field {id: 'payback_months', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'payment_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'period', type: 'date', metricCount: 8}); CREATE (:Field {id: 'period_start', type: 'date', metricCount: 1}); CREATE (:Field {id: 'planned_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'posted_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'pqa_score', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'priority', type: 'string', metricCount: 1}); CREATE (:Field {id: 'project_id', type: 'string', metricCount: 4}); CREATE (:Field {id: 'qbr_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'qualifying_events', type: 'json', metricCount: 1}); CREATE (:Field {id: 'quality_score', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'quota', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'quote_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'recovery_time', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'registration_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'renewal_amount', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'renewed', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'rep_id', type: 'string', metricCount: 2}); CREATE (:Field {id: 'required_fields_complete', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'requisition_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'resolved_at', type: 'timestamp', metricCount: 2}); CREATE (:Field {id: 'resolved_first_contact', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'resource_id', type: 'string', metricCount: 2}); CREATE (:Field {id: 'response_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'revenue', type: 'decimal', metricCount: 3}); CREATE (:Field {id: 'rollback', type: 'boolean', metricCount: 1}); CREATE (:Field {id: 'root_cause', type: 'string', metricCount: 1}); CREATE (:Field {id: 'salary', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'sales_marketing_spend', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'satisfaction_score', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'score', type: 'integer', metricCount: 2}); CREATE (:Field {id: 'service_id', type: 'string', metricCount: 1}); CREATE (:Field {id: 'session_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'session_duration', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'severity', type: 'string', metricCount: 2}); CREATE (:Field {id: 'signup_date', type: 'date', metricCount: 2}); CREATE (:Field {id: 'snapshot_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'source', type: 'string', metricCount: 2}); CREATE (:Field {id: 'spend', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'stage', type: 'string', metricCount: 2}); CREATE (:Field {id: 'stage_age', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'stage_history', type: 'json', metricCount: 1}); CREATE (:Field {id: 'start_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'status', type: 'string', metricCount: 8}); CREATE (:Field {id: 'steps_completed', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'steps_total', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'subscription_id', type: 'string', metricCount: 2}); CREATE (:Field {id: 'support_score', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'survey_date', type: 'date', metricCount: 5}); CREATE (:Field {id: 'sync_status', type: 'string', metricCount: 1}); CREATE (:Field {id: 'target_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'termination_date', type: 'date', metricCount: 1}); CREATE (:Field {id: 'ticket_id', type: 'string', metricCount: 4}); CREATE (:Field {id: 'tier', type: 'string', metricCount: 1}); CREATE (:Field {id: 'unique_visitors', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'upsell_type', type: 'string', metricCount: 1}); CREATE (:Field {id: 'usage_count', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'usage_score', type: 'decimal', metricCount: 2}); CREATE (:Field {id: 'user_id', type: 'string', metricCount: 4}); CREATE (:Field {id: 'utilization', type: 'decimal', metricCount: 1}); CREATE (:Field {id: 'value_event', type: 'string', metricCount: 1}); CREATE (:Field {id: 'views', type: 'integer', metricCount: 1}); CREATE (:Field {id: 'vulnerability_id', type: 'string', metricCount: 1}); // ─── Metric Relationships (77) ────────────────── MATCH (a:Metric {id: 'mrr'}), (b:Metric {id: 'arr'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'new_mrr'}), (b:Metric {id: 'net_new_mrr'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'expansion_mrr'}), (b:Metric {id: 'net_new_mrr'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'churned_mrr'}), (b:Metric {id: 'net_new_mrr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'contraction_mrr'}), (b:Metric {id: 'net_new_mrr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'net_new_mrr'}), (b:Metric {id: 'mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'mrr'}), (b:Metric {id: 'mrr_growth_rate'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'expansion_mrr'}), (b:Metric {id: 'nrr'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'churned_mrr'}), (b:Metric {id: 'nrr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'contraction_mrr'}), (b:Metric {id: 'nrr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'churned_mrr'}), (b:Metric {id: 'grr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'contraction_mrr'}), (b:Metric {id: 'grr'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'mqls'}), (b:Metric {id: 'sqls'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'sqls'}), (b:Metric {id: 'pipeline_value'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'pipeline_value'}), (b:Metric {id: 'new_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'win_rate'}), (b:Metric {id: 'new_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'acv'}), (b:Metric {id: 'new_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'pipeline_value'}), (b:Metric {id: 'pipeline_coverage'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'lvr'}), (b:Metric {id: 'mqls'}) CREATE (a)-[:PREDICTS]->(b); MATCH (a:Metric {id: 'marketing_sourced_pipeline'}), (b:Metric {id: 'pipeline_value'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'quota_attainment'}), (b:Metric {id: 'new_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'sales_cycle'}), (b:Metric {id: 'win_rate'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'partner_sourced_revenue'}), (b:Metric {id: 'pipeline_value'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'partner_sourced_revenue'}), (b:Metric {id: 'new_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'pqas'}), (b:Metric {id: 'pipeline_value'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'arpa'}), (b:Metric {id: 'ltv'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'gross_margin'}), (b:Metric {id: 'ltv'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'revenue_churn_rate'}), (b:Metric {id: 'ltv'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'ltv'}), (b:Metric {id: 'ltv_cac_ratio'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'cac'}), (b:Metric {id: 'ltv_cac_ratio'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'cac'}), (b:Metric {id: 'cac_payback'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'arpa'}), (b:Metric {id: 'cac_payback'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'gross_margin'}), (b:Metric {id: 'cac_payback'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'marketing_cac'}), (b:Metric {id: 'cac'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'cpl'}), (b:Metric {id: 'marketing_cac'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'new_mrr'}), (b:Metric {id: 'magic_number'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'mrr_growth_rate'}), (b:Metric {id: 'rule_of_40'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'operating_margin'}), (b:Metric {id: 'rule_of_40'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'gross_margin'}), (b:Metric {id: 'operating_margin'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'acv'}), (b:Metric {id: 'arpa'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'ttfv'}), (b:Metric {id: 'onboarding_completion'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'onboarding_completion'}), (b:Metric {id: 'activation_rate'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'activation_rate'}), (b:Metric {id: 'feature_adoption'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'feature_adoption'}), (b:Metric {id: 'dau_mau'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'feature_adoption'}), (b:Metric {id: 'health_score'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'dau_mau'}), (b:Metric {id: 'health_score'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'health_score'}), (b:Metric {id: 'renewal_rate'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'health_score'}), (b:Metric {id: 'logo_churn_rate'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'health_score'}), (b:Metric {id: 'at_risk_rate'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'health_score'}), (b:Metric {id: 'expansion_rate'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'nps'}), (b:Metric {id: 'logo_churn_rate'}) CREATE (a)-[:PREDICTS]->(b); MATCH (a:Metric {id: 'nps'}), (b:Metric {id: 'churned_mrr'}) CREATE (a)-[:PREDICTS]->(b); MATCH (a:Metric {id: 'csat'}), (b:Metric {id: 'nps'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'ticket_volume'}), (b:Metric {id: 'csat'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'frt'}), (b:Metric {id: 'csat'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'self_service_rate'}), (b:Metric {id: 'ticket_volume'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'qbr_completion'}), (b:Metric {id: 'health_score'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'qbr_completion'}), (b:Metric {id: 'expansion_rate'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'expansion_rate'}), (b:Metric {id: 'expansion_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'renewal_rate'}), (b:Metric {id: 'grr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'logo_churn_rate'}), (b:Metric {id: 'churned_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'revenue_churn_rate'}), (b:Metric {id: 'churned_mrr'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'at_risk_rate'}), (b:Metric {id: 'logo_churn_rate'}) CREATE (a)-[:PREDICTS]->(b); MATCH (a:Metric {id: 'pqas'}), (b:Metric {id: 'expansion_rate'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'uptime'}), (b:Metric {id: 'csat'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'uptime'}), (b:Metric {id: 'nps'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'mttr'}), (b:Metric {id: 'uptime'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'deployment_frequency'}), (b:Metric {id: 'feature_adoption'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'arr'}), (b:Metric {id: 'revenue_per_employee'}) CREATE (a)-[:COMPONENT_OF]->(b); MATCH (a:Metric {id: 'gross_margin'}), (b:Metric {id: 'fcf'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'operating_margin'}), (b:Metric {id: 'fcf'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'burn_rate'}), (b:Metric {id: 'fcf'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'dso'}), (b:Metric {id: 'fcf'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'forecast_accuracy'}), (b:Metric {id: 'pipeline_coverage'}) CREATE (a)-[:DRIVES]->(b); MATCH (a:Metric {id: 'enps'}), (b:Metric {id: 'employee_turnover'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'employee_turnover'}), (b:Metric {id: 'revenue_per_employee'}) CREATE (a)-[:REDUCES]->(b); MATCH (a:Metric {id: 'employee_turnover'}), (b:Metric {id: 'quota_attainment'}) CREATE (a)-[:REDUCES]->(b); // ─── MEASURES Edges (57) ────────────────────────── MATCH (m:Metric {id: 'nps'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'ltv'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'ltv_cac_ratio'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'cac'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'cac_payback'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'marketing_cac'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'health_score'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'at_risk_rate'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'renewal_rate'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'logo_churn_rate'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'expansion_rate'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'qbr_completion'}), (e:Entity {id: 'customer'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'arr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'arpa'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'new_mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'expansion_mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'churned_mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'contraction_mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'net_new_mrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'nrr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'grr'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'revenue_churn_rate'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'mrr_growth_rate'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'gross_margin'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'rule_of_40'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'operating_margin'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'fcf'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'magic_number'}), (e:Entity {id: 'subscription'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'mqls'}), (e:Entity {id: 'lead'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'sqls'}), (e:Entity {id: 'lead'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'lvr'}), (e:Entity {id: 'lead'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'cpl'}), (e:Entity {id: 'lead'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'pipeline_value'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'pipeline_coverage'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'win_rate'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'acv'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'sales_cycle'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'quota_attainment'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'marketing_sourced_pipeline'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'forecast_accuracy'}), (e:Entity {id: 'opportunity'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'dau_mau'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'feature_adoption'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'activation_rate'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'pqas'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'ttfv'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'onboarding_completion'}), (e:Entity {id: 'user'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'ticket_volume'}), (e:Entity {id: 'ticket'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'frt'}), (e:Entity {id: 'ticket'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'self_service_rate'}), (e:Entity {id: 'ticket'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'csat'}), (e:Entity {id: 'ticket'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'employee_turnover'}), (e:Entity {id: 'employee'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'enps'}), (e:Entity {id: 'employee'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'revenue_per_employee'}), (e:Entity {id: 'employee'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'dso'}), (e:Entity {id: 'invoice'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'burn_rate'}), (e:Entity {id: 'invoice'}) CREATE (m)-[:MEASURES]->(e); MATCH (m:Metric {id: 'partner_sourced_revenue'}), (e:Entity {id: 'partner'}) CREATE (m)-[:MEASURES]->(e); // ─── SOURCED_FROM Edges ───────────────────────────── MATCH (f:Field {id: 'account_id'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'account_id'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'account_id'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'account_id'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'account_id'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'activation_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'activity_type'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'actual_date'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'actual_revenue'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'actual_revenue'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'adoption_score'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'amount'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'amount'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'amount'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'amount'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'amounts'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'annual_value'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'arpa'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'arpa'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'arr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'arr_growth_rate'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'arr_growth_rate'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'article_id'}), (s:SourceCategory {id: 'knowledge_base'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'attendees'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'available_hours'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'beginning_mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'beginning_mrr'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'billable_hours'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cash_balance'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'certification_status'}), (s:SourceCategory {id: 'lms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'change_type'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'change_nature'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'channel'}), (s:SourceCategory {id: 'ad_platforms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'check_timestamp'}), (s:SourceCategory {id: 'monitoring'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_date'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_rate'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_rate'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_reason'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_reason'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churn_type'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churned_mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'churned_mrr'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'close_date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'closed_revenue'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'closed_revenue'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cogs'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cohort_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cohort_month'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cohort_period'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cohort_period'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'commit_id'}), (s:SourceCategory {id: 'cicd'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'completed'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'completeness_pct'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'completion_date'}), (s:SourceCategory {id: 'lms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'completion_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'composite_score'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'consultant_id'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contact_count'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contract_end'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contract_end_date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contract_start'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contraction'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contraction'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contraction_mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'contraction_mrr'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'conversions'}), (s:SourceCategory {id: 'ad_platforms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cost'}), (s:SourceCategory {id: 'ats'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cost'}), (s:SourceCategory {id: 'cloud_provider'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'cost'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'costs'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'count'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'course_id'}), (s:SourceCategory {id: 'lms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'created_at'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'created_date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'credit_memos'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'criteria_met'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'customer_count'}), (s:SourceCategory {id: 'cloud_provider'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'date'}), (s:SourceCategory {id: 'knowledge_base'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'dates'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'deal_id'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'deflections'}), (s:SourceCategory {id: 'knowledge_base'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'demographics'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'department'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'department'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'department'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'deploy_date'}), (s:SourceCategory {id: 'cicd'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'deployment_id'}), (s:SourceCategory {id: 'cicd'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'detected_at'}), (s:SourceCategory {id: 'incident_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'discovered_at'}), (s:SourceCategory {id: 'security_scanner'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'downtime_minutes'}), (s:SourceCategory {id: 'monitoring'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'ebitda_margin'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'ebitda_margin'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'effective_date'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'employee_id'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'employee_id'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'ending_mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'ending_mrr'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'engagement_score'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'engagement_score'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expansion'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expansion'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expansion_mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expansion_mrr'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expected_close'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'expense_type'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'feature_id'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'field'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'filled_date'}), (s:SourceCategory {id: 'ats'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'first_response_at'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'first_use_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'first_value_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'first_value_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'forecast_date'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'forecast_date'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'forecasted_revenue'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'forecasted_revenue'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'gross_margin'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'gross_margin'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'gross_profit'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'hire_date'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'hours'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'hours'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'hours_actual'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'hours_budgeted'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'incident_id'}), (s:SourceCategory {id: 'incident_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'invoice_date'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'invoice_id'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'invoice_id'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'is_won'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'last_active_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'last_activity_date'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'last_sync'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'last_updated'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'lead_id'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'lead_score'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'lead_source'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'leads'}), (s:SourceCategory {id: 'ad_platforms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'market_midpoint'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'marketing_source'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'marketing_source'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'marketing_spend'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'marketing_spend'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'milestone'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'milestone_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'milestones_completed'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'monthly_expenses'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'monthly_revenue'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'months_since_start'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mql_count_current'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mql_count_prior'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mql_date'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_change'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_end'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_end'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_lost'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_start'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'mrr_start'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'new_customers'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'new_customers'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'nps_score'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'object'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'onboarding_id'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'operating_expenses'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'opportunity_id'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'opportunity_id'}), (s:SourceCategory {id: 'marketing_automation'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'opportunity_id'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'order_id'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'owner'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'page_views'}), (s:SourceCategory {id: 'web_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'partner_id'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'partner_id'}), (s:SourceCategory {id: 'lms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'partner_id'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'partner_id'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'partner_sourced'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'patched_at'}), (s:SourceCategory {id: 'security_scanner'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'payment_date'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period_start'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'period_start'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'planned_date'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'posted_date'}), (s:SourceCategory {id: 'ats'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'pqa_score'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'priority'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'project_id'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'project_id'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'qbr_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'qualifying_events'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'quality_score'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'quota'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'quota'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'quote_id'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'recovery_time'}), (s:SourceCategory {id: 'cicd'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'registration_id'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'renewal_amount'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'renewed'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'rep_id'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'rep_id'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'required_fields_complete'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'requisition_id'}), (s:SourceCategory {id: 'ats'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'resolved_at'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'resolved_at'}), (s:SourceCategory {id: 'incident_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'resolved_first_contact'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'resource_id'}), (s:SourceCategory {id: 'cloud_provider'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'resource_id'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'response_date'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'revenue'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'revenue'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'rollback'}), (s:SourceCategory {id: 'cicd'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'root_cause'}), (s:SourceCategory {id: 'incident_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'salary'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'sales_marketing_spend'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'sales_marketing_spend'}), (s:SourceCategory {id: 'finance'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'satisfaction_score'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'satisfaction_score'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'score'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'score'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'service_id'}), (s:SourceCategory {id: 'monitoring'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'session_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'session_duration'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'severity'}), (s:SourceCategory {id: 'incident_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'severity'}), (s:SourceCategory {id: 'security_scanner'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'signup_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'signup_date'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'snapshot_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'source'}), (s:SourceCategory {id: 'ats'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'source'}), (s:SourceCategory {id: 'web_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'spend'}), (s:SourceCategory {id: 'ad_platforms'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'stage'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'stage_age'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'stage_history'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'start_date'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'monitoring'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'status'}), (s:SourceCategory {id: 'psa'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'steps_completed'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'steps_total'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'subscription_id'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'support_score'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'survey_date'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'survey_date'}), (s:SourceCategory {id: 'survey_tool'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'sync_status'}), (s:SourceCategory {id: 'crm'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'target_date'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'termination_date'}), (s:SourceCategory {id: 'hris'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'ticket_id'}), (s:SourceCategory {id: 'help_desk'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'tier'}), (s:SourceCategory {id: 'partner_management'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'unique_visitors'}), (s:SourceCategory {id: 'web_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'upsell_type'}), (s:SourceCategory {id: 'billing'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'usage_count'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'usage_score'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'user_id'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'utilization'}), (s:SourceCategory {id: 'cloud_provider'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'value_event'}), (s:SourceCategory {id: 'cs_platform'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'value_event'}), (s:SourceCategory {id: 'product_analytics'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'views'}), (s:SourceCategory {id: 'knowledge_base'}) CREATE (f)-[:SOURCED_FROM]->(s); MATCH (f:Field {id: 'vulnerability_id'}), (s:SourceCategory {id: 'security_scanner'}) CREATE (f)-[:SOURCED_FROM]->(s); // ─── Entity-to-Entity Relationships (14) ────────────── // Structural MATCH (e1:Entity {id: 'customer'}), (e2:Entity {id: 'subscription'}) CREATE (e1)-[:OWNS {cardinality: '1:N', provenance: 'Schema.org owns, Zuora/Stripe Account→Subscription'}]->(e2); MATCH (e1:Entity {id: 'subscription'}), (e2:Entity {id: 'license'}) CREATE (e1)-[:GRANTS {cardinality: '1:N', provenance: 'Zuora Rate Plan→Entitlement, Stripe SubscriptionItem→Price'}]->(e2); // Behavioral MATCH (e1:Entity {id: 'customer'}), (e2:Entity {id: 'user'}) CREATE (e1)-[:ENGAGES_VIA {cardinality: '1:N', provenance: 'SaaS-native concept (B2B multi-user model)'}]->(e2); MATCH (e1:Entity {id: 'customer'}), (e2:Entity {id: 'ticket'}) CREATE (e1)-[:SUBMITS {cardinality: '1:N', provenance: 'Salesforce Account→Case, HubSpot Company→Ticket'}]->(e2); // Lifecycle MATCH (e1:Entity {id: 'lead'}), (e2:Entity {id: 'opportunity'}) CREATE (e1)-[:CONVERTS_TO {cardinality: '1:1', provenance: 'Salesforce Lead Conversion process'}]->(e2); MATCH (e1:Entity {id: 'opportunity'}), (e2:Entity {id: 'customer'}) CREATE (e1)-[:CONVERTS_TO {cardinality: '1:1', provenance: 'Salesforce Opportunity→Account (closed-won)'}]->(e2); // Assignment MATCH (e1:Entity {id: 'partner'}), (e2:Entity {id: 'opportunity'}) CREATE (e1)-[:SOURCES {cardinality: '1:N', provenance: 'Salesforce Partner object→Opportunity'}]->(e2); MATCH (e1:Entity {id: 'employee'}), (e2:Entity {id: 'customer'}) CREATE (e1)-[:MANAGES {cardinality: '1:N', provenance: 'Salesforce OwnerId pattern, CS Platform assignment'}]->(e2); MATCH (e1:Entity {id: 'project'}), (e2:Entity {id: 'customer'}) CREATE (e1)-[:SERVES {cardinality: 'N:1', provenance: 'PSA models'}]->(e2); // Account hierarchy MATCH (e1:Entity {id: 'customer'}), (e2:Entity {id: 'customer'}) CREATE (e1)-[:PARENT_OF {cardinality: '1:N', provenance: 'Salesforce Parent Account'}]->(e2); // Pricing structure MATCH (e1:Entity {id: 'subscription'}), (e2:Entity {id: 'plan'}) CREATE (e1)-[:PRICED_BY {cardinality: 'N:1', provenance: 'Stripe Subscription→Price, Zuora Rate Plan'}]->(e2); MATCH (e1:Entity {id: 'license'}), (e2:Entity {id: 'product'}) CREATE (e1)-[:GRANTS {cardinality: 'N:M', provenance: 'Auth0 entitlements, Stripe Entitlements API'}]->(e2); // Stakeholder coverage MATCH (e1:Entity {id: 'customer'}), (e2:Entity {id: 'contact'}) CREATE (e1)-[:REPRESENTED_BY {cardinality: '1:N', provenance: 'Salesforce Account→Contact, HubSpot Company→Contact'}]->(e2); // Marketing attribution MATCH (e1:Entity {id: 'campaign'}), (e2:Entity {id: 'lead'}) CREATE (e1)-[:SOURCES {cardinality: '1:N', provenance: 'Salesforce Campaign→Lead, HubSpot Campaign attribution'}]->(e2); // ─── Entity-to-Concept Relationships (8) ───────────── MATCH (e:Entity {id: 'subscription'}), (c:Concept {id: 'revenue'}) CREATE (e)-[:GENERATES]->(c); MATCH (e:Entity {id: 'subscription'}), (e2:Entity {id: 'invoice'}) CREATE (e)-[:GENERATES {cardinality: '1:N', provenance: 'Stripe Subscription→Invoice, Zuora Subscription→Invoice'}]->(e2); MATCH (e:Entity {id: 'opportunity'}), (c:Concept {id: 'bookings'}) CREATE (e)-[:PRODUCES]->(c); MATCH (e:Entity {id: 'opportunity'}), (c:Concept {id: 'pipeline'}) CREATE (e)-[:CONTRIBUTES_TO]->(c); MATCH (e:Entity {id: 'subscription'}), (c:Concept {id: 'cogs'}) CREATE (e)-[:INCURS]->(c); MATCH (e:Entity {id: 'customer'}), (c:Concept {id: 'cohort'}) CREATE (e)-[:BELONGS_TO]->(c); MATCH (e:Entity {id: 'customer'}), (c:Concept {id: 'segment'}) CREATE (e)-[:BELONGS_TO]->(c); MATCH (e:Entity {id: 'opportunity'}), (c:Concept {id: 'tcv'}) CREATE (e)-[:PRODUCES]->(c); // ─── Indexes ────────────────────────────────────────── CREATE INDEX metric_id IF NOT EXISTS FOR (m:Metric) ON (m.id); CREATE INDEX metric_dept IF NOT EXISTS FOR (m:Metric) ON (m.department); CREATE INDEX metric_signal IF NOT EXISTS FOR (m:Metric) ON (m.signalType); CREATE INDEX entity_id IF NOT EXISTS FOR (e:Entity) ON (e.id); CREATE INDEX concept_id IF NOT EXISTS FOR (c:Concept) ON (c.id); CREATE INDEX field_id IF NOT EXISTS FOR (f:Field) ON (f.id); CREATE INDEX source_id IF NOT EXISTS FOR (s:SourceCategory) ON (s.id);