TOOL-002 — Dev-Persona ICP Enricher

Tier 3 Specialist Tool · Stateless · Augments AGT-201 ICP scoring with developer-persona signals · Closes the dev-buyer side of the Domain 3 gap
Tier 3 · Tool Specced · v29 Domain 3 · API/Dev GTM Haiku
Purpose

AGT-201's 6-dimension ICP scorer captures firmographic, vertical, revenue, tech-stack, growth, and intent signals — but materially under-weights developer-buyer signal. For API-first products with developer-led adoption, the buying signal is technical: who's hiring engineers with specific stacks, whose GitHub orgs are public-active, who's experimenting with the product via API keys before commercial conversation. TOOL-002 takes those signals and produces a structured dev-persona enrichment that AGT-201 consumes alongside its existing dimensions.

Closes the dev-persona side of the Domain 3 gap. AGT-201 keeps its existing 6-dimension model unchanged; the dev-persona enrichment is a parallel signal stream, not a replacement.
Input schema
{ "account_id": "uuid", "account_basics": { "company_name": "string", "domain": "string", "employee_count": 0, "industry": "string" }, "technical_signals": { "job_postings": [ // optional — observed in last 90 days { "title": "string", "stack_keywords": ["string"], "posted_date": "ISO 8601" } ], "github_org_activity": { // optional — public-only data "org_name": "string", "public_repo_count": 0, "trending_languages": ["string"], "recent_topic_keywords": ["string"] }, "technographic_data": { // from AGT-204 enrichment if available "detected_stack": ["string"], "infrastructure_signals": ["string"] // e.g., "uses Stripe", "deploys via GitHub Actions" }, "product_telemetry": { // optional — UsageMeteringLog or upstream "api_keys_active": 0, "first_api_call_at": "ISO 8601", "endpoint_diversity_score": 0.0 // 0-1, how many distinct endpoints touched } }, "current_icp_score": { // from AGT-201, for context "tier": "T1" | "T2" | "T3", "dimension_breakdown": { "firmographic": 0, "vertical": 0, "revenue": 0, "tech_stack": 0, "growth": 0, "intent": 0 } } }
All technical_signals subfields are optional — the tool degrades gracefully when data is sparse, and the output reflects which signals were available vs. missing.
Output schema
{ "tool_call_id": "uuid", "account_id": "uuid", "dev_persona_score": 0, // 0-100 composite "dev_persona_tier": "high" | "medium" | "low" | "none", "buyer_persona_classification": { "primary": "developer" | "platform_team" | "compliance_engineer" | "data_engineer" | "non_technical_buyer" | "unclear", "confidence": "high" | "medium" | "low" }, "signals_present": { // which signals contributed "job_postings_signal": "strong" | "weak" | "absent", "github_signal": "strong" | "weak" | "absent", "technographic_signal": "strong" | "weak" | "absent", "telemetry_signal": "strong" | "weak" | "absent" }, "key_drivers": [ // top 3 drivers of the score, with citations { "driver": "string", "evidence": "string", "input_field": "string" } ], "agt_201_recommended_adjustment": { // suggested dimension adjustments for AGT-201 "tech_stack_dimension_adjust": 0, // -15 to +15; bounded "intent_dimension_adjust": 0, // -15 to +15; bounded "rationale": "string" }, "ungrounded_assumptions": ["string"], // explicit list, parallels TOOL-001 "data_completeness": "high" | "partial" | "sparse", "tool_metadata": { "model": "claude-haiku-4-5", "input_tokens": 0, "output_tokens": 0, "cost_usd_estimate": 0.0, "latency_ms": 0 } }
Bounded adjustment magnitude. The tool can recommend AGT-201 dimension adjustments up to ±15 points on tech_stack and intent dimensions only. It cannot recommend changes to firmographic, vertical, revenue, or growth dimensions — those are not under TOOL-002's purview. AGT-201 retains the right to ignore the adjustment recommendation.
Called by
CallerInvocation context
AGT-201 ICP ScorerOn account update events that include technical signals (job posting added, GitHub activity refreshed via AGT-204, product telemetry signal change). AGT-201 calls TOOL-002, ingests the recommended adjustment as one input alongside its 6-dimension model, decides whether to apply.
AGT-901 Pipeline BrainCross-account analysis of dev-persona patterns. "Are we under-tiered in API-first companies hiring backend engineers?" Brain calls TOOL-002 across a target list to identify dev-persona-rich accounts that AGT-201 ranked low.
AGT-204 Lead EnrichmentAs an enrichment subroutine. AGT-204's existing 6-category enrichment may invoke TOOL-002 when technical signals are present, before the rescore trigger fires AGT-201.
Design principles
  1. Augment, don't replace. AGT-201's 6-dimension model stays the canonical ICP signal. TOOL-002 is a parallel enrichment that AGT-201 chooses to integrate — the existing scoring logic is unchanged.
  2. Sparse-data friendly. Technical signals are uneven by company. Most accounts won't have GitHub org data; many won't have product telemetry. The tool degrades gracefully and reports data_completeness honestly.
  3. Bounded magnitude. Dev-persona signal is real but not infinite — capped at ±15 points on two dimensions. A high-grade developer fingerprint shouldn't single-handedly flip a Tier 3 to Tier 1; the firmographic and revenue dimensions still matter.
  4. Distinguish persona from intent. A company can have strong developer presence without buying intent for our specific product. The output separates buyer_persona_classification (who they are) from intent_dimension_adjust (whether they're showing buying signal).
  5. Honest unclear classification. When signals point in conflicting directions, the tool returns "unclear" rather than fabricating a confident classification.
Cost ceiling
ConstraintValue
Per-call input budget10K tokens (account + signals + current ICP score; bounded narrow context)
Per-call output budget1K tokens (structured enrichment output)
Default modelHaiku — classification task with bounded scope; Sonnet tested with no measurable quality lift
Per-call cost estimate~$0.01–$0.02 per call at Haiku pricing
Monthly cap (default)$200/mo — bounds usage to ~10,000 calls/month
Frequency expectationHigh — called on AGT-204 enrichment events, AGT-201 rescore events, AGT-901 batch analyses. Most monthly usage will come from AGT-204 routine enrichment.
Eval criteria
CriterionMeasurementPass threshold
Schema complianceOutput validates against output schema100% (hard)
Persona classification accuracy15-account retrospective set with known buyer personas (from won deals); % where primary classification matches≥ 70%
Sparse-data graceful degradationTool produces useful output when only 1-2 of 4 signal categories present (vs. fabricating confidence)data_completeness honestly reflects sparse state; confidence is low or medium not high
Adjustment magnitude calibrationRecommended adjustments correlate with retrospective dev-persona quality (won deals at dev-persona accounts)Pearson correlation ≥ 0.4 across the eval set
Hallucinated signals% of key_drivers citing input fields that don't exist or aren't populated0% (hard)
P95 latencyEnd-to-end tool call≤ 2s — tool is called in line with AGT-204 enrichment, latency budget tight
Failure modes
SymptomCauseAction
Tool inflates dev-persona scores when signals are sparseConfidence calibration driftEval catches. Tighten "honest unclear classification" instruction in prompt; add few-shot examples of sparse-data outputs that correctly returned low confidence.
Tool flips firmographically-low accounts to T1 via adjustmentMagnitude bound violated, or AGT-201 over-applying recommendationThe ±15 cap is enforced in the output schema. If the issue is AGT-201 stacking adjustments, that's an AGT-201 calibration concern, not TOOL-002.
High latency in batch invocations from AGT-901Tool called per-account synchronously in a 100-account batchCaller responsibility — AGT-901 should batch-parallelize calls. Tool itself is stateless and fast per-call.
Persona classifications drift over timeTech stack signals aging (yesterday's "developer" stack is today's mainstream)Quarterly catalog review; refresh prompt examples with current dev-persona signals.
Cost spikeAGT-204 enrichment running on too-frequent cadenceCost cap blocks runaway. Audit AGT-204 invocation cadence; per the existing v22 spec it should be T1 daily, T2 weekly, T3 monthly — if drifted, reset.
Interaction with AGT-201 ICP scoring

AGT-201's spec is unchanged. The integration point is: AGT-201 reads tech_stack_dimension_adjust and intent_dimension_adjust from the most recent TOOL-002 output for the account (logged in EnrichmentLog with the AGT-204 enrichment record), and treats them as additive deltas to its computed dimension scores. AGT-201 retains discretion to ignore the adjustment if other signals contradict.

For backwards compatibility, accounts with no TOOL-002 enrichment are scored exactly as before (deltas default to 0). The dev-persona enrichment is purely additive — no existing T1/T2/T3 tier is downgraded by its absence.