Orchestrates lead scoring through a multi-stage Conductor workflow.
Input: leadId, email, company | Timeout: 60s
ls_collect_signals
│
ls_score
│
ls_classify
│
ls_route
ClassifyWorker (ls_classify): Classifies lead based on score. Real classification with tier assignment.
score >= 80→"hot"score >= 60→"warm"score >= 40→"cool"
if (score >= 80) { classification = "hot"; priority = "P1"; }
else if (score >= 60) { classification = "warm"; priority = "P2"; }Reads totalScore. Outputs classification, priority.
CollectSignalsWorker (ls_collect_signals): Collects lead signals for scoring. Real signal extraction and normalization.
boolean demoRequested = Boolean.TRUE.equals(demoRequestedObj);Reads companySize, demoRequested, emailOpens, industry, pageViews. Outputs signals.
RouteWorker (ls_route): Routes lead to appropriate sales team. Real routing based on classification and industry.
switch (classification) {Reads classification, priority. Outputs assignedTo, action, routed.
ScoreWorker (ls_score): Computes lead score using weighted scoring algorithm.
int engagementScore = Math.min(25, pageViews * 1 + emailOpens * 3);Reads signals. Outputs totalScore, companySizeScore, industryScore, engagementScore, behaviorScore.
6 tests cover valid inputs, boundary values, null handling, and error paths.
mvn testRun this example: see RUNNING.md for setup, build, and CLI instructions.