Built GTM
SANITIZED BUILD RECEIPT · builtgtm.ai/builds
the GTM system · The Sales Stack · the signal library

Every signal we score on - and every signal we read for context

One canonical list. Signals do two different jobs, so we keep two layers: a lean Score layer that moves the number and a greedy Context layer the AI reads to write the brief. This page is the source of truth for both - what the signal is, where it comes from, what job it does, and which channel it serves.

The rule that changed everything: buying signals are additive, never a leg that can collapse to zero. Every in-ICP account starts with a real base. Product usage is the loud engine. Buying signals only ever add points - their absence is never a penalty. So a strong-fit account in our product ranks high before a single third-party signal shows up, and nothing scores zero on signals again.
A

How the score is built now - additive, not a weighted average

ICP qualifies and sets the floor. Product is the loudest mover. Signals are bounded boosts on top.

The old model blended Product, ICP and Signals as three co-equal legs - so an empty signals leg craved 30% of the score and buried good accounts. The new model is layered: fit gets you a base, product does the heavy lifting, and every buying signal is a capped add-on that can only help.

Gate + Base
ICP
Fit qualifies and sets a 40-70 base. Below the floor → park/DQ. Never starts at 0.
+
Engine (loudest)
Product
Adoption lift up to +30. Sequence activation is the top driver. Absent for non-product leads → +0, no penalty.
+
Boosts (capped)
Signals
Each buying signal adds points, total capped ~+20. Absence = +0.

Final = min(100, ICP base + Product engine + Σ signal boosts) × email gate  ·  Octave hard-disqualify still caps at 40.

Why product is louder than any buying signal
The single biggest product boost (Power adoption, +30) dwarfs the single biggest buying-signal boost (~+10). An account already using us ranks high on its own behavior - exactly as it should. A third-party signal sharpens the order; it never gatekeeps.
B

The Score layer - what moves the number

Lean and defensible. These are the only inputs that change the score, so each one has a job, a magnitude, and a source. score = scoring input · both = also feeds context.

SignalSourceRoleMagnitudeChannel
ICP fitOctave (0-10)Gate + base40-70 baseAllboth
Sequence activation - the loudestAmplitudeProduct engineup to +30Productboth
AI-generated sequences · breadth · 12-wk trendAmplitudeProduct enginein engineProductboth
New active users (14/30d) · seat growthAmplitudeBoost (timing)+ boostProductboth
Pricing / cart viewsAmplitudeBoost (intent)+ boostProductscore
Inbound hand-raise (demo / form fill)SFDC / MarketingBoost (loud for inbound)+ boostInboundboth
New VP Sales / CRO hirePredictLeadsTrigger boost~+6Allboth
Funding roundPredictLeads / CrustdataTrigger boost~+6Allboth
Competitor tool in stack (displacement)TheirStackBoost~+5Allboth
Hiring sales roles + velocityTheirStack / CrustdataBoost~+4Allboth
CRM in stack (1.64× win-lift)BuiltWith + Amplitude integrationsBoost~+3Allboth
Decision-maker found + titleFullEnrichBoost (actionability)~+2Allboth

Magnitudes are the design intent; final boost values get tuned against won/lost in the re-run. The cap (~+20 total) keeps any one account from stacking boosts into a false Tier 1.

C

The Context layer - what the AI reads to write the brief

Greedy on purpose. Context never has to earn its weight in the score - more is always better for a richer narrative. We pull it once, store it, and the AI reads it instead of re-querying six providers every time. context = narrative enrichment.

SignalSourceWhat it adds to the narrative
Capability breadth · power users · WAUAmplitudeHow deep and sticky the deployment is; who the champions are
Confirmed integrations (SFDC / HubSpot / Zoom)AmplitudeFirst-party technographic - stronger than an inferred guess; integration talking points
Recent news / pressDataForSEO · Serper · ExaA timely hook for the opener
Funding history · headcount by departmentCrustdataSizing, budget signal, and which teams are whitespace
Leadership bios · new executivesPredictLeadsWho to reference and who the new buyer is
Competitor mentions · G2 review activityG2 · SlackThe displacement angle - what they're comparing us against
Full tech-stack detailBuiltWith · TheirStackIntegration fit and tooling maturity
D

One score, all of new business - inbound, outbound, product

The additive base is what makes this work across channels. A lead that isn't in the product yet simply scores +0 on the product engine - no penalty - and rides ICP fit plus whatever signal its channel can produce. The same scale ranks all three head-to-head on one list.

 Product leadInbound leadOutbound lead
ICP base
Loudest available signalSequence activationHand-raise (demo / cart)Trigger event (funding, new VP, hiring)
Product engineBig liftusually +0+0
Worst-case floorICP baseICP baseICP base

A sequence-activating product lead and a freshly-funded outbound account compete on the same composite - each scored on what it can actually show.

E

Where it lives in Salesforce - ~9 fields, not 50

The split maps cleanly to two field types. The score goes in small structured fields you can filter, route, and report on. The context goes in a few long-text blobs the AI reads - pulled once, not re-queried every time. We theme the context into three so a product change rewrites only the product blob (fewer needless writes) and a brief reads only the field it needs (fewer tokens).

Score layer - structured & filterable

Composite_Score__cNumber · the 0-100 score, drives routing & tiering
Score_Tier__cPicklist · Strike / Hot / Warm / Watch / Low / DQ
Score_Product__c · Score_ICP__c · Score_Signals__cNumber · the three components, for transparency & QA
Score_Context__cLong Text · the rep-facing 4-block summary (already live)

Context layer - AI-read, long text

AI_Context_Company__cLong Text Area · firmographics, funding, news, leadership
AI_Context_Product__cLong Text Area · adoption, capabilities, integrations, champions
AI_Context_Signals__cLong Text Area · triggers, hiring, displacement, intent
Field limits worth knowing
A Long Text Area holds up to 131,072 characters - capacity is never the issue; keep each blob to a ~10k budget so the AI read stays cheap. Long-text fields are not filterable or sortable in SOQL and don't show in list views, which is exactly why the score stays in number/picklist fields and the context stays in blobs. Use Long Text Area, not Rich Text (Rich Text wastes characters on markup). The Salesforce MCP is data-plane only - these three AI_Context_* fields are a one-time create for RevOps; everything populates the moment they exist.
F

What we removed and changed

DecisionWhy
Common Room - removed from the stackIt fed one intent input and nothing else we used. Deepline now covers triggers, hiring and technographics; Amplitude covers product. Not worth the spend.
Free signups - not a buying signalWe engage once they're activated, not when they sign up. Sequence activation is the loudest product signal - strongest payment predictor in the funnel.
Signals can never be 0ICP base + product engine floor every account. A missing signal stops being a penalty and becomes simply "no boost."
Microsoft / Outlook intentionally demotedThe email gate keeps its ×0.55 on Outlook on purpose - we're not investing in that surface as a company.
The takeaway
Two layers, one source of truth. A lean score you can trust and route on; a rich context the AI reads to write the brief. Buying signals only ever add, product is the loud engine, and the same score runs across inbound, outbound, and product leads.
Built GTM
A sanitized build receipt · company name and account examples generalized, the method left intact · builtgtm.ai