Independent project · Account intelligence

Signal Desk

Account tiering and campaign orchestration for corporate social impact platforms, built on signals a company publishes about itself rather than a third-party intent co-op.

The intent-data budget disappeared. The pipeline problem did not. Signal Desk is what I built instead.

Diana Pantchev · 2026 · React · Browser-based prototype

What it does

  • Scores accounts across three lanes: public signals, CRM behaviour, and field verdicts
  • Tiers them automatically at thresholds that match the play to the resource
  • Fires the right campaign cohort based on why an account is in market, not what it sells
  • Logs every tier change with a date, a cause, and the rep who triggered it
  • Reads meeting transcripts and extracts verdicts for approval
Signal Desk — Account Book
Signal Desk account book showing tier chips, composite scores, and detail panel

Actual application. Account list with tier chips and composite scores on the left; selected account detail with tier-change log on the right.

The problem

ABM without intent data requires a different kind of instrument.

Enterprise ABM programs are designed around a premise: that intent signals purchased from a third-party co-op can tell you which accounts are actively researching your category. The leading platforms cost between $50,000 and $200,000 per year. When the budget disappears, the list disappears with it.

But buyers of corporate social impact platforms announce their triggers. A new ESG leader is a public hire. A corporate foundation is a public filing. An impact report is a press release. An M&A deal is an SEC document. The hard part was never the data. It was knowing what to look for and what it is worth.

Signal Desk is the instrument for that judgment. It takes the signals a company publishes about itself, weights them by how reliably they predict a buying event, combines them with what the sales team knows and what HubSpot shows, and produces a tier assignment that is transparent, arguable, and self-maintaining.

What breaks without it

  • The account list is whoever sales happens to be working. No shared prioritization across the team.
  • Field knowledge is trapped in individual reps. A champion departure is not visible to marketing until the deal is already cold.
  • ABM spend is distributed by enthusiasm, not evidence. The accounts with the most internal advocates are not necessarily the ones closest to buying.
  • Nothing demotes. Every ABM tool promotes accounts. Almost none demote them, because demotion requires someone to admit an account is not working. Lists get stale and nobody says so.
  • Open deals inflate pipeline. Marketing spend on accounts sales is already actively working inflates every influenced-pipeline number the team reports.
The engine loop

The campaign produces the next cycle’s evidence.

Signals flow into a score. The score determines a tier. The tier determines a play. The play produces engagement, which lands back in the score as CRM behaviour. Every tier change is written to the decision record with its cause. The loop is self-documenting.

Field verdicts AE logged and meeting notes full 30 days, zero at 180 CRM behaviour nightly HubSpot pull, capped full 30 days, zero at 90 Public signals Monday sweep, web search replaced each sweep Scoring view in Postgres, decay applied per lane always current, no recalculation job, every client gets the same answer Tier plus gates Play in HubSpot The campaign produces the next cycle's evidence Engagement lands in the CRM lane. Meetings and what was said in them land in the field lane. Every tier change is written to the decision record with its cause. Quarterly: weights and thresholds are re-fitted against what actually closed. Until that happens the weights are a hypothesis, not a finding.
On the quarterly refit: the weights shown here are a hypothesis until two quarters of data confirm them. After two quarters, snapshots of score and outcome are available to re-fit the weights against what actually closed. That is when this stops being a framework and becomes a model.
Three scoring lanes

Each lane has its own decay rate. Each cap reflects what it can honestly carry.

Public signals tell you that something changed. Field verdicts tell you what the rep found out. CRM behaviour tells you whether anyone is actually engaging. They all matter, and they decay at different speeds because evidence goes stale at different speeds.

Public signals

Monday sweep · replaced each cycle

New social impact or ESG leader hired+25
Corporate foundation launched or restructured+25
Incumbent platform named publicly+22
Merger or acquisition+20
First impact or ESG report published+20
Grants program scaling or RFP activity+20
B Corp certification pursued or achieved+18
Public giving or volunteering commitment+18
Rapid headcount growth+15
Disaster or crisis response moment+15
ERG or DEI investment announced+12
New market or office expansion+10
Layoffs or restructuring−20
Recently signed with a competitor−25
Social impact leader departed, no replacement−15

Field verdicts

Full weight at 30 days · zero at 180 days

In an active evaluation+35
Budget confirmed for this+25
Named champion engaged+20
Existing relationship at executive level+15
Asked about us unprompted+12
No traction after sustained effort−15
Champion left or went quiet−20
Renewed with a competitor−40
The strongest signal available is what a rep found in a meeting. No public source will ever show it. Nothing is logged without human approval.

CRM behaviour (Phase 2)

Nightly HubSpot pull · full at 30 days, zero at 90

Inbound contact or demo request+25
Two or more buying committee roles in 90 days+18
Pricing, security or RFP page viewed+15
Meeting held and logged+12
Gated form submitted in 90 days+10
Three or more email clicks in 60 days+8
No activity in 180 days while tiered high−12
Account-level unsubscribe or hard bounce−10
Cap: +40 / −20. Campaign-driven activity counts at half weight. Unsolicited activity at full weight. Without that split the score measures your own marketing spend instead of buyer intent.
Signal Desk scoring model with editable weights

Actual application. Change a weight and the entire account book re-ranks immediately. Weights are editable in the interface, not in code.

Every signal has a stated weight and a stated reason. Both are visible in the interface, so a rep can argue with the scoring instead of just receiving a tier assignment.

Negative signals are first-class citizens. An account that renewed with a competitor scores −25 on that signal alone, which places it below an account with no signals at all. Effort there is worse than wasted, and the model makes that explicit rather than pretending the account is neutral.

The weights shipped with the tool are a calibrated starting point, not a finding. Until two quarters of closed-won data are available to refit them, they are a hypothesis made visible. The quarterly refit is the step that makes them real.

Tier lifecycle

An account enters at the tier its score earns. It moves in both directions.

Every ABM tool promotes accounts. Almost none demote them, because demotion requires someone to admit an account is not working. Decay makes that automatic and dated, so the list is honest on a Monday without anyone having to be.

Scored account Public, CRM and field lanes Entry gates ICP, open deal, competitor lock fails Out of tiering Deal support, disqualified, or locked enters at the tier its score earns Monitor below 15 no spend 1:many 15 to 39 programmatic, demand gen 1:few 40 to 69 trigger cohort, ABM and BDR 1:1 70 and above named plan, ABM and AE Deal meeting booked out of tiering, sales owns 15+ 40+ 70+ meeting below 10 below 35 below 65 closed lost returns to the book Suppression overlay, applies at any tier Promote at the threshold, demote five points below it. Thirty days minimum in a tier. Twenty one day cooldown between play changes. Channel holds on opt out, layoffs, and champion departure.
Why demotion sits five points below promotion: without the gap an account at 69 and 71 flips tier every sweep, and the rep sees a list that will not sit still. The gap plus a thirty-day dwell means a play gets to finish before the engine changes its mind.
TierEntryPlayOwnerPromotes whenDemotes when
1:1 70+ Named account plan. Personalized page referencing the specific trigger. Executive direct mail. AE and BDR sequenced behind the physical touch, not before it. ABM + named AE Meeting booked, deal opened, exits tiering Below 65 and thirty days in tier, or champion departs
1:few 40–69 Cohort by trigger type, not by industry. Shared narrative with a personalized opener. Roundtable or workshop as the conversion moment. ABM + BDR pool Crosses 70 on any lane Below 35 and thirty days in tier
1:many 15–39 Programmatic coverage. Nurture on the trigger theme rather than the product. Re-scored monthly. Demand generation Crosses 40, or any field verdict logged Below 10, or no activity for 180 days
Monitor below 15 No spend. Watched by the weekly sweep for a leadership hire, a published commitment, or an expiring competitor lock. Nobody, by design Crosses 15 on the public lane Terminal, until a signal appears
Out Gate Not ICP, or an open deal exists, or a competitor renewal is inside its term. No ABM spend of any kind. Sales, or nobody Requalified, deal closes lost, or lock decays Terminal while the gate holds
Key design decisions

Each decision solves a specific failure mode in account programs.

Most of these are about what the model does when nothing happens, which is where most account programs quietly break.

Evidence expires

Field verdicts decay to zero over 180 days. A verdict logged last year is not evidence this year. The account list self-cleans without anyone having to make the awkward call to demote an account they once cared about.

Negative evidence is first-class

An account that renewed with a competitor (−40 field verdict) scores below an account with no signals at all. Effort there is worse than wasted, and the model makes that explicit rather than treating the account as neutral.

Demotion is automatic, not a conversation

Promote at the threshold. Demote five points below it. Thirty days minimum in a tier. The five-point gap prevents tier-flipping on accounts near a boundary. The dwell means a play gets to finish before the engine changes its mind.

Open deals exit tiering entirely

ABM budget spent on an account sales is already actively working is the most common invisible waste in these programs, and it inflates every influenced-pipeline number reported afterwards. The gate removes the ambiguity.

Ownership is fixed at the tier

Every tier states who owns it. Ownership ambiguity between marketing and sales is where account programs die, so it is fixed at tier assignment and not negotiated per account.

Solicited activity counts at half weight

Campaign-driven CRM engagement counts at half weight in the CRM lane. Unsolicited activity at full weight. Without that split the score starts measuring your own marketing spend instead of buyer intent, which is the exact bias account scoring exists to correct.

Suppression ruleTriggerEffect
Tier dwellThirty days minimum in tierPrevents a play from being interrupted before it can finish. Score can change; play does not until dwell is satisfied.
Play cooldown21 days between play changesPrevents the same account from receiving conflicting campaigns within the same cycle.
Channel hold — opt-outAccount-level unsubscribe or hard bounceChannel is suppressed until resubscription. The rest of the program continues.
Channel hold — layoffsLayoffs or restructuring signal loggedEmail suppressed. Direct mail and executive programs continue. Discretionary spending freezes; the relationship does not.
Champion departureChampion left or went quiet verdictAccount demoted one tier and held for thirty days. Score recalculation runs at next sweep with the verdict decaying at the standard rate.
Competitor lockRenewed with a competitorAccount exits the active tier entirely and enters a long-cycle nurture. Returns to tiering when the lock decays at 180 days.
Framework download

Signal Desk: A Signal-Based ABM Operating Model

All scoring lanes, tier logic, suppression rules, cohorts, and implementation options in one PDF.

Download the framework ↓
Working prototype

A React tool, no backend. Data lives in the browser.

The MVP proves the scoring model works and surfaces where the judgment calls actually live. What it cannot do is as important as what it can.

Signal Desk meeting notes tab showing transcript verdict extraction

Actual application. Paste a Fathom or Gong transcript. Statements that map to a verdict come back with the quote and the speaker. Nothing is logged without approval.

Signal Desk tier-change history log with dates and causes

Actual application. Every tier change is logged with a date, a cause, and who triggered it. The history makes the scoring auditable and the conversation with sales grounded.

What the MVP cannot do

  • No HubSpot API from a browser — CSV is the honest ceiling for import and export
  • No background process — the sweep runs when the button is pressed
  • Sweeps are sequential — twelve accounts takes a few minutes
  • No auth — all reps share one view, so verdict attribution is manual
Campaign engine

Cohorts are grouped by why an account is in market, not by what it sells.

Two banks with different triggers belong in different campaigns. A bank and a hospital with the same trigger belong in the same one. The play matches the reason for buying, not the buyer’s industry.

New leader

Signal: ESG leader hired · +25 · Tier: 1:1

A new leader has a mandate to show progress inside twelve months and no baseline to show it against. Lead with peer benchmarking, not with product. The urgency is real and the timeline is short.

30-min benchmarking session

Displacement

Signal: Incumbent named publicly · +22 · Tier: 1:1

When a platform gets acquired — Bonterra bought Deed in March 2026 and already owned CyberGrants — roadmap direction is unresolved and account teams are being asked about it. Lead with migration risk, not features.

Migration assessment

Restructure

Signal: Foundation launched +25, Grants scaling +20 · Tier: 1:few

The US corporate deduction floor of one percent of taxable income took effect in January 2026. Companies are rethinking giving vehicles. Lead with structure and compliance rather than product capability.

Roundtable with foundation lead

Post merger

Signal: Merger or acquisition · +20 · Tier: 1:few

Two giving programs, two contracts, one renewal being consolidated. Lead with the cost of running both rather than leading with feature comparison. The conversation the CFO is already having is the one to join.

Consolidation workshop

Reporting obligation

Signal: Impact report +20, B Corp +18, Public pledge +18 · Tier: 1:few

Year one gets reported off spreadsheets and heroics. Year two needs an audit trail and comparable numbers. Lead with what breaks next cycle, not with what worked this one.

Reporting readiness audit

Outgrown the process

Signal: Headcount growth +15, Market expansion +10 · Tier: 1:many

Participation tracking, matching caps, and multi-currency disbursement all fail at a specific size threshold. Lead with the threshold, not the platform. The question is when it breaks, not whether.

Program review

ERG adjacent

Signal: ERG or DEI investment · +12 · Tier: 1:many

A different budget holder and a different language from the CSR team, but a warm route into an account where social impact has no owner yet. Lead with the people team’s vocabulary, not the CSR team’s.

ERG engagement teardown

Crisis response

Signal: Disaster or crisis moment · +15 · Tier: 1:many

Matching inside forty-eight hours. Short window, high urgency, low tolerance for a procurement cycle. Time-boxed to thirty days, then the account returns to its underlying tier. The offer is speed, not relationship.

Fast-track matching setup
Phase 2

What moves it from a framework to a production system.

The MVP proves the model works. Phase 2 removes the friction that prevents reps from actually using it.

1

Supabase backend

Postgres for the scoring view, pg_cron for real scheduling, server-side Edge Functions with no CORS problem, and row-level security in one place. The score becomes always-current without a recalculation job.

2

HubSpot read lane (CRM)

Nightly pull of buying committee breadth, high-intent page views, meetings held, form submissions, and email engagement. Capped at +40 and −20. Solicited activity at half weight.

3

HubSpot write-back

Tier, score, lane split, and the reasoning line land on HubSpot company properties. The list lives where sales already works, not in a separate tool they have to remember to open.

4

Auth for AE verdicts

Right now the field loop depends on someone transcribing what reps said, which is the bottleneck that kills these programs. Auth lets AEs log their own verdicts from a mobile view directly after a call.

5

Clay enrichment

Firmographics, headcount trend, and fit-layer enrichment on the way in. Signal Desk stays the scoring and judgment layer; Clay stays the enrichment layer.

6

Quarterly refit

Snapshots are append-only. After two quarters, weights can be checked against closed-won data and re-fitted. That is when this stops being a framework and becomes a model.

StageEstimated hours
Schema, decay view, score-account function, cron16–22
HubSpot read, snapshot table, three-lane scoring view16–22
Frontend ported off browser storage onto Supabase8–12
HubSpot write-back to company properties8–12
Clay enrichment both directions8–12
Auth, AE verdict screen, notes approval queue14–20
Refit reporting against closed-won data6–10
Something usable on a Monday is the first three rows: 40–56 hours. All of it is 76–110 hours. At ten to twelve hours per week, that is roughly five weeks to the usable version and ten to the full one. Concentrated work: six days and thirteen.

Build the HubSpot read before the write — it shares the same auth, carries no risk of pushing junk into the CRM, and gets the three-lane scoring view stable before the push depends on it.
The framing that matters

This is not a product. It is a worked example of how to approach the problem.

The reusable part of Signal Desk is the taxonomy and the tiering logic, not the delivery mechanism. The same model could run as Clay tables plus a HubSpot workflow, which would be cheaper and fit the existing stack better. Choosing between those is the actual judgment call.

What Signal Desk documents is the decision: which signals matter and why, what evidence decays and how fast, where the ownership boundaries sit, and what suppression rules make the list honest without human maintenance. That documentation is the thing that survives the tool.

If you are working on a similar prioritization problem and want to talk through the methodology, the engineering choices, or how to adapt the model to a different category, I am available for a thirty-minute call.

Download the framework PDF ↓ Scoring lanes, tier logic, cohorts, implementation options