Skip to main content

Scoring Engine

PILLAR’s scoring engine evaluates every account against 93+ rules across 8 categories, producing a composite 0-100 health score. All weights are configurable per organization through the org_scoring_profiles and scoring_config tables.

Architecture

  1. Context Building: The engine assembles a ScoringContext for each account containing all related data: contacts, opportunities, renewals, activities, signals, products, and derived metrics
  2. Rule Evaluation: Each of the 93+ rules receives the context and produces a RuleResult with a 0-100 sub-score
  3. Category Aggregation: Rules are grouped into 8 categories. Each category score is a weighted average of its rule sub-scores
  4. Composite Score: The final score is a weighted sum of category scores
  5. Audit Logging: Every computation is logged to scoring_audit for traceability

8 Categories

CategoryRulesDefault WeightFocus
Engagement12 (ENG-001 to ENG-012)15%Usage trends, activity volume, product adoption
Fit12 (FIT-001 to FIT-012)10%ICP alignment, segment, budget, procurement
Intent12 (INT-001 to INT-012)15%Buying signals, RFPs, grants, competitive windows
Velocity11 (VEL-001 to VEL-011)10%Deal speed, stage progression, meeting cadence
Pipeline Health16 (PH-001 to PH-016)15%Hygiene, forecast integrity, handoff compliance
Relationship11 (REL-001 to REL-011)10%Champion, exec sponsor, multi-threading
Risk12 (RSK-001 to RSK-012) + 4 (OB-001 to OB-004)15%Churn risk, budget decline, competitive threat, onboarding risk
Opportunity Quality11 (OQ-001 to OQ-011)10%Deal size, win probability, buyer readiness

Rule Structure

Every rule implements the ScoringRule interface:
PropertyTypeDescription
idstringUnique rule ID (e.g., “ENG-001”)
namestringHuman-readable name
categoryRuleCategoryOne of 8 categories
descriptionstringWhat the rule measures
weightnumberDefault weight (0-10)
requiredFieldsstring[]Data fields needed for evaluation
evaluatefunctionProduces a RuleResult from ScoringContext

Rule Result

PropertyTypeDescription
ruleIdstringRule identifier
scorenumber0-100 sub-score
weightnumberRule weight
triggeredbooleanWhether threshold conditions were met
rawValuestringHuman-readable raw data value
metadataobjectAdditional context for debugging

Severity Thresholds

PILLAR uses calibrated thresholds that catch risk 2-3x earlier than industry benchmarks:
LevelPILLAR ThresholdIndustry Standard
Low0-200-50
Medium20-3550-70
High35-5570-85
Critical55-75+85+

Model Version

Current model version: 1.2.0-calibrated Signal engine version: 3.0.0

Configurable Weights

Organizations can customize weights through:
  1. Category weights: Override the default 15/10/15/10/15/10/15/10 split via org_scoring_profiles
  2. Rule weight overrides: Adjust individual rule weights (0-10) per org
  3. Scoring config table: Fine-grained control per formula variable in scoring_config
  4. ICP profiles: Customize ICP fit scoring tiers, persona rules, and behavioral weights