Mean 0.940 · 32/40 perfect tests · $8.38 total · each card: the question → the correct answer (gold) → this model's actual answer
Definitions: 1. Non-compliant why_buys (DS2+): stage is DS2/DS3/DS4/DS5, and why_buys is either blank or a placeholder (tbd, n/a, none, "-"), or shorter than 15 characters. LONG(n) values count as present/substantive per instructions. 2. Missing DS1 timestamp: t_ds1 field is blank, regardless of stage. 3. Regressed: for a deal's populated t_ds1..t_ds5 timestamps taken in stage order, an earlier stage's timestamp is later (greater) than a later stage's timestamp. Results (156 open deals total): **Why-buys non-compliance, DS2+ deals (n=124):** - Overall: 101/124 = 81.5% (101/124 = 0.8145) - All 101 non-compliant deals had a fully blank why_buys field — no tbd/n/a placeholder text appears in this dataset. By owner (DS2+ deals only): - Cole Ingram: 19/22 = 86.4% - Farid Osman: 1/1 = 100.0% - Bryce Harmon: 15/18 = 83.3% - Dana Mercer: 18/22 = 81.8% - Alex Franklin: 48/61 = 78.7% (Elena Sinclair and archived owners Gavin Porter/Hugo Lindqvist have no DS2+ deals in this file.) **Missing DS1 timestamp:** 0/156 — every deal has t_ds1 populated. **Regressed deals:** 0/156 — no deal has an out-of-order stage-timestamp sequence. Note: last_contacted_field is blank for Deal-57FF13 (Elena Sinclair, DS1) — flagged as a data-quality gap but out of scope for this stage-hygiene audit. Three process fixes: 1. Make why_buys a required, length-validated field (≥15 chars, reject placeholder strings) enforced at DS2 stage-gate in the CRM — 81.5% of DS2+ deals currently have nothing recorded, concentrated in Alex Franklin's book (48 deals) and Cole Ingram's (19). 2. Add a stage-exit checklist/approval gate so a deal cannot advance past DS1 without why_buys captured, rather than allowing it to be back-filled (or never filled) later. 3. Run a recurring (weekly) automated report flagging DS2+ opps with blank why_buys, routed to owner + manager, to catch and clear the backlog before it grows further — the 0% missing-DS1 and 0% regression rates show timestamp hygiene is already solid, so this fix should target the one real gap (qualification notes) rather than process timing.
Resolution results (156 open deals, owners.csv has 8 owners): DEALS RESOLVED: 156 of 156 (100%) — every owner_id in deals_open.csv found a match in owners.csv. UNMATCHED OWNER IDS: none. All owner_ids in deals_open.csv exist in owners.csv. ARCHIVED/DEACTIVATED OWNER IDS: Gavin Porter (1520255671, archived=true) and Hugo Lindqvist (77260721, archived=true) are the two archived owners in owners.csv, but neither owner_id appears on any row in deals_open.csv — so 0 open deals are currently assigned to an archived owner. TOTAL PIPELINE AMOUNT PER RESOLVED OWNER (sum of amount, all active owners): - Bryce Harmon (119337721): 35 deals, $1,054,144.00 - Alex Franklin (84342457): 67 deals, $624,310.00 - Dana Mercer (83155923): 24 deals, $341,195.00 - Cole Ingram (83155924): 22 deals, $288,161.43 - Farid Osman (716654662): 7 deals, $4,134.00 - Elena Sinclair (701163055): 1 deal, $2,100.00 Check: 35+67+24+22+7+1 = 156 deals ✓ Grand total pipeline: 1,054,144.00 + 624,310.00 + 341,195.00 + 288,161.43 + 4,134.00 + 2,100.00 = $2,314,044.43
**(a) Orphan gong rows (deal id not in deals_open):** 30 of 67 gong rows (44.8%) have hs_deal_id values with no match in deals_open. Sample aliases (hs_deal_id → deal_alias): 60251290957→Deal-8FA85D, 60251649055→Deal-8FC3F9, 60251639682→Deal-3B7945, 61227242540→Deal-42B265, 61430316324→Deal-9CCC42, 60251082126→Deal-36EA09, 60250446726→Deal-9A43B4, 60251622924→Deal-605F3C (22 more not shown). **(b) Duplicate conversation keys (calls_90d > distinct_conversation_keys):** 0 of 67 rows. In every gong row, calls_90d equals distinct_conversation_keys exactly — no evidence of duplicate/collapsed conversation keys in this dataset. **(c) Share of open DS3+ deals with ≥1 logged call:** Open deals at stage DS3, DS4, or DS5: 85 (out of 156 total open deals). Of those 85, deal_ids also appearing in the gong table: 25. Share = 25 / 85 = 0.294 → 29.4%. So 70.6% of open DS3+-stage deals (60 of 85) have zero logged Gong calls in the last 90 days.
```sql
-- Recognition + redemption metrics per customer company, scoped to that company's
-- first calendar month as a customer (anchored on FIRST_SUB_PAYMENT_DATE, the
-- moment a self-serve signup becomes a paying customer — SIGNUP_DATE/ACTIVATED_DATE
-- are pre-payment states and not "customer" status).
-- COMPANY_ID and the FIRST_SUB_PAYMENT_DATE/M1_* fields are not fully enumerated in
-- the catalog excerpt, but the catalog states this is "one row per self-serve
-- company" with M1_* metrics already scoped to month 1 after the cohort anchor,
-- so a COMPANY_ID key is assumed to exist per the documented grain.
-- NOTE on givers/recognitions: the catalog contains no raw per-give event table
-- with a GIVER_ID / deleted-giver flag (only this pre-aggregated cohort table),
-- so M1_GIVES is used as-is for recognition_count and M1_USERS as the closest
-- available proxy for unique_givers. Per the documented business rule, the
-- "exclude deleted givers" filter is a filter used in OTHER giving queries and is
-- deliberately NOT applied here, since it would understate this historical count.
SELECT
ccs.COMPANY_ID,
ccs.M1_USERS AS unique_givers, -- proxy from cohort table; no deleted-giver filter applied (per business rule)
ccs.M1_GIVES AS recognition_count, -- pre-aggregated month-1 recognition count; no deleted-giver filter applied (per business rule)
COALESCE(r.succeeded_redemptions, 0) AS successful_redemption_count
-- PRODUCTION.PLG.COMPANY_COHORT_SUMMARY: the only populated, per-company cohort
-- source for signup/activation/first-payment anchors and month-1 giving/user
-- volumes. HUBSPOT_HUB_1973303.V2_LIVE.OBJECTS_DEALS is unpopulated and
-- PRODUCTION.HUBSPOT.DEALS is stale (2023-03) — neither is relevant here anyway,
-- since this metric set is recognition/redemption, not deal data.
FROM PRODUCTION.PLG.COMPANY_COHORT_SUMMARY ccs
-- PRODUCTION.DEPRECATED_RECOGNITION.REDEMPTION_RECORDS_V2: despite the schema
-- being named DEPRECATED, the catalog documents this as the current source of
-- truth for redemption counts, and it is the only table where a STATE =
-- 'succeeded' filter can be enforced. The cohort table's own M1_REDEMPTIONS
-- column is NOT used for this metric because the catalog does not document it
-- as restricted to succeeded state, so it cannot be trusted as a "successful"
-- count. GONG_HUBSPOT_MAP_FAST-style retired patterns are avoided by not
-- substituting any cached/derived redemption table here.
LEFT JOIN (
SELECT
COMPANY_ID,
DATE_TRUNC('month', REDEEMED_AT) AS redemption_month,
COUNT(*) AS succeeded_redemptions
FROM PRODUCTION.DEPRECATED_RECOGNITION.REDEMPTION_RECORDS_V2
WHERE STATE = 'succeeded'
GROUP BY 1, 2
) r
ON r.COMPANY_ID = ccs.COMPANY_ID
AND r.redemption_month = DATE_TRUNC('month', ccs.FIRST_SUB_PAYMENT_DATE)
WHERE ccs.FIRST_SUB_PAYMENT_DATE IS NOT NULL; -- only companies that actually became paying customers
```
## CRM Completeness Audit
**Data provided:** companies.csv (34 recs), contacts.csv (52 recs), zoominfo_enrichment.csv (25 recs). **No deals file was provided** — deals owner/stage/amount/close date/why-buys fields cannot be audited, and pipeline-amount-weighted fixes cannot be calculated. This is a hard data gap, not an inference.
### Field completeness
**Companies (n=34)**
- industry: 34/34 = 100.0%
- employee_count: 25/34 = 73.5% (9 blank)
- hq_country: 28/34 = 82.4% (6 blank)
**Contacts (n=52)**
- email: 52/52 present = 100.0% (but 4 malformed, 1 domain mismatch — see below)
- title: 39/52 = 75.0% (13 blank)
- persona: 37/52 = 71.2% (15 blank)
**Deals: 0/0 fields auditable — no deals.csv/table provided.**
### Duplicate company clusters (shared domain)
1. **acme-corp.com**: C-0A092931 (Technology, 500, US) vs C-0A092932 (tech, 510, USA)
- Conflicts: employee_count 500 vs 510; industry label "Technology" vs "tech" (casing only).
- No zoominfo_enrichment.csv row for acme-corp.com to arbitrate.
- Survivor: **C-0A092931** (lower-numbered alias, used as earliest-record proxy — no created-date field exists to confirm). Employee_count conflict (500 vs 510) is unresolved and needs manual verification before merge.
2. **globex.io**: C-0A092933 (SaaS, 200, US) vs C-0A092934 (Technology, 200, US)
- Conflicts: industry "SaaS" vs "Technology"; employee_count and hq_country agree (200, US).
- No zoominfo_enrichment.csv row for globex.io to arbitrate.
- Survivor: **C-0A092933** (lower-numbered alias, same caveat as above). Industry label conflict unresolved.
### Invalid emails (malformed — no domain after @)
- CT-0010 (C-66D1FC): "user0@"
- CT-0080 (C-92D97D): "user0@"
- CT-0081 (C-92D97D): "user1@"
- CT-0192 (C-425E2A): "user2@"
### Domain mismatch (syntactically valid email, wrong domain)
- CT-0011 (C-66D1FC): email "user1@other-domain.com" vs company domain "66d1fc.com"
### Fill missing company fields from zoominfo_enrichment.csv (fill only, matched by domain)
| company_alias | domain | field | CRM value | ZI value | Action |
|---|---|---|---|---|---|
| C-2D1F1B | 2d1f1b.com | hq_country | (blank) | (blank in ZI too) | No fill — ZI also blank |
| C-D73B89 | d73b89.com | hq_country | (blank) | (blank in ZI too) | No fill — ZI also blank |
| C-EC3025 | ec3025.com | employee_count | (blank) | 400 | Fill → 400 |
| C-96039F | 96039f.com | employee_count | (blank) | 400 | Fill → 400 |
| C-44EA29 | 44ea29.com | employee_count | (blank) | 400 | Fill → 400 |
| C-44EA29 | 44ea29.com | hq_country | (blank) | (blank in ZI too) | No fill |
| C-D04904 | d04904.com | employee_count | (blank) | 400 | Fill → 400 |
| C-D04904 | d04904.com | hq_country | (blank) | (blank in ZI too) | No fill |
| C-B23205 | b23205.com | employee_count | (blank) | 400 | Fill → 400 |
| C-60C75F | 60c75f.com | employee_count | (blank) | 400 | Fill → 400 |
| C-2C60E5 | 2c60e5.com | hq_country | (blank) | (blank in ZI too) | No fill |
| C-7BBDFA | 7bbdfa.com | employee_count | (blank) | 400 | Fill → 400 |
| C-50D386 | 50d386.com | employee_count | (blank) | 400 | Fill → 400 |
| C-93C8BF | 93c8bf.com | employee_count | (blank) | **no ZI row for this domain** | No fill — no enrichment match |
| C-EE9FFB | ee9ffb.com | hq_country | (blank) | **no ZI row for this domain** | No fill — no enrichment match |
Companies with **no enrichment row at all** (cannot fill or arbitrate anything): C-BA969B, C-332637, C-93C8BF, C-EE9FFB, C-C9BB20, C-0A092931/32 (acme-corp.com), C-0A092933/34 (globex.io).
### CRM vs enrichment disagreements (both sides have a value — do not overwrite, flag + recommend source)
All 10 disagreements are the same field, industry, all "tech"/"Technology" (CRM) vs "Computer Software" (ZI):
- C-66D1FC, C-EC3025, C-44EA29, C-92D97D, C-D04904, C-77A95A, C-AA8DDA, C-B25F40, C-60C75F, C-425E2A
Recommendation: use **zoominfo_enrichment.csv's "Computer Software"** as the source of truth — it's a standardized third-party industry taxonomy, whereas the CRM values are free-text ("tech"/"Technology") entered inconsistently. No employee_count or hq_country disagreements were found where both sides had a value.
### Top 10 fixes by pipeline amount at stake
**Cannot be produced.** No deals/pipeline data (owner, stage, amount, close date, why-buys) was included in this extract, so no dollar amount can be attached to any fix, duplicate cluster, or missing field. If a deals file exists, provide it and this ranking can be generated; until then, any "top fixes by pipeline" claim would be invented.
CLASSIFICATION (89 deals, category | side)
Deal-DB0AAC: timing | buyer
Deal-F7F635: competitor | buyer
Deal-AC944F: no decision | buyer
Deal-214060: no decision | buyer
Deal-91A056: timing | buyer
Deal-29326C: timing | buyer
Deal-5DB9B0: other | unknown
Deal-831B7B: timing | buyer
Deal-F97C37: competitor | buyer
Deal-13E9CF: no decision | buyer — DISAGREE (tag "Doing nothing/Not a priority/Cost"; text says deprioritized, not a budget issue — tag itself is internally contradictory)
Deal-39E25C: timing | buyer
Deal-7ED004: pricing | buyer
Deal-21B045: no decision | buyer
Deal-B3ABED: timing | buyer
Deal-422BA6: competitor | buyer
Deal-ED9AE7: champion left | buyer
Deal-988493: no decision | buyer
Deal-381C8C: no decision | buyer — DISAGREE (tagged Competitor; text gives no competitor detail, only "not moving forward")
Deal-F308CA: no decision | buyer
Deal-F1E8A6: no decision | buyer — DISAGREE (tagged Competitor; text names no competitor, just declines)
Deal-B6AC09: timing | buyer
Deal-70F704: no decision | buyer — DISAGREE (tagged Lost DM; text describes narrow use case + ghosting, not a DM/authority issue)
Deal-E6E80A: timing | buyer
Deal-B038F0: timing | buyer
Deal-175756: timing | buyer
Deal-E74A73: no decision | buyer
Deal-DDAB52: competitor | buyer
Deal-ACE061: competitor | buyer
Deal-BB78F3: timing | buyer
Deal-D48E0B: no decision | buyer
Deal-15DA99: timing | buyer
Deal-F4AF5D: timing | buyer
Deal-79B7A1: timing | buyer
Deal-583ADB: no decision | buyer
Deal-8E27DA: no decision | buyer — DISAGREE (tagged Feature Request; text shows buyer skipped the R&R category entirely, not a Bonusly gap)
Deal-2D2F8D: competitor | buyer
Deal-E0441F: no decision | Bonusly (rep-side: stale/inherited deal, no contact from Bonusly's consultant)
Deal-7CB44D: no decision | buyer
Deal-0F96AA: competitor | buyer
Deal-1BCA50: competitor | buyer
Deal-7CC678: competitor | buyer
Deal-FAC17C: no decision | buyer
Deal-242273: product gap | Bonusly — DISAGREE (tagged Competitor; text: lost on ability to digitize/spend internal points — a feature gap)
Deal-50E5D8: no decision | buyer
Deal-A2C349: competitor | buyer
Deal-9F176A: timing | buyer
Deal-7B2236: pricing | buyer
Deal-AFA56C: no decision | buyer
Deal-C7156E: competitor | buyer
Deal-C33D91: pricing | buyer
Deal-9048EB: product gap | Bonusly — DISAGREE (tagged MIA; text explicitly cites "multiple feature gaps" as the reason, not unresponsiveness)
Deal-5E64CE: timing | buyer — DISAGREE (tagged Doing nothing/Not a priority/Cost; text is a concrete contract-end timing plan, not a cost decision)
Deal-8A0992: competitor | buyer
Deal-D0C698: competitor | buyer
Deal-69CF3D: timing | buyer
Deal-ECBF89: timing | buyer
Deal-3618CC: product gap | Bonusly — DISAGREE (tagged Lost DM; text "Wanted Surveys" is a feature gap, not a DM issue)
Deal-EECC02: competitor | buyer
Deal-5AD03E: product gap | Bonusly — DISAGREE (tagged Competitor; text "wanted more defined budget access" is a feature gap)
Deal-D1A623: timing | buyer
Deal-413C56: no decision | buyer
Deal-47F1A1: competitor | buyer
Deal-BF2A98: competitor | buyer
Deal-2A292B: no decision | buyer
Deal-D1AABF: no decision | buyer
Deal-FEDBCB: no decision | buyer
Deal-1E7DA9: competitor | buyer
Deal-2BBA21: no decision | buyer
Deal-286F9C: competitor | buyer
Deal-7FBAC6: no decision | buyer
Deal-369281: competitor | buyer
Deal-386F6E: no decision | buyer
Deal-9FCD0D: competitor | buyer
Deal-55867E: no decision | buyer — DISAGREE (tagged Lost- Timing; text is a soft decline ("don't think we'll be moving forward"), no reconnect date given)
Deal-DAFB82: pricing | buyer
Deal-2FEDDB: timing | buyer — DISAGREE (tagged Doing nothing/Not a priority/Cost; text is purely about timing uncertainty, no cost mentioned)
Deal-64B19A: competitor | buyer
Deal-3F86A0: no decision | buyer
Deal-096750: no decision | buyer
Deal-F325A5: champion left | buyer
Deal-ABD14C: no decision | buyer
Deal-79E61A: no decision | buyer
Deal-8A119B: pricing | buyer
Deal-AE7C4E: no decision | buyer
Deal-DAB4F1: no decision | buyer
Deal-B4B50F: no decision | buyer
Deal-981AD4: product gap | Bonusly
Deal-DC77FE: product gap | Bonusly — DISAGREE (tagged Competitor; text explicitly says "price wasn't a factor," lost on feature customization)
Deal-5885B9: no decision | buyer
SUMMARY (n=89)
Category counts:
no decision: 34
competitor: 21
timing: 20
product gap: 6
pricing: 5
champion left: 2
other: 1
Sum check: 34+21+20+6+5+2+1 = 89 ✓
Side split:
buyer: 81
Bonusly: 7
unknown: 1
Sum check: 81+7+1 = 89 ✓
Tag vs. free-text disagreement: 13 of 89 deals (14.6% = 13/89).
Two patterns most worth acting on:
1. "Competitor" tag is a catch-all masking product-gap losses. 4 of the 13 disagreements (Deal-242273, Deal-9048EB, Deal-5AD03E, Deal-DC77FE) were tagged Competitor or MIA but the free text explicitly names a Bonusly capability gap (points-to-spend flexibility, feature gaps, budget-access controls, customization) as the real driver — in Deal-DC77FE the rep even notes "price wasn't a factor." Reps appear to default to "Competitor" when a deal is lost to a rival, even when the buyer's stated reason is a specific product shortfall. This under-counts true product gap losses (tag says 3: Deal-5DB9B0-adjacent none, actually raw product-gap-tagged deals = Feature Request x2 minus 1 reclassified = net 6 true product gap vs. only 2 originally tagged that way in the source data) and hides roadmap signal from product.
2. "No decision" (buyer stall/deprioritization/unresponsiveness) is the single largest loss category at 38% (34/89) and is almost entirely buyer-side (33 of 34), yet several of these were tagged as Timing, Feature Request, Lost DM, or Doing nothing/Cost rather than as a clean stall — meaning the CRM likely undercounts true "no decision" losses. Combined with the fact that "Doing nothing/Not a priority/Cost" and "Lost- Timing" tags are being used interchangeably for what is functionally the same buyer behavior (deprioritize, ghost, or defer with a vague future date), this points to inconsistent tag hygiene at the point of logging plus a real pipeline problem: over a third of lost revenue isn't being beaten by competitors or price — it's disengaging before a decision is ever made, which argues for tighter qualification/urgency-building earlier in the cycle rather than pricing or competitive-positioning fixes.
Emitting the final result.
```json
{
"tier_counts": {
"LOCK": 3,
"ACTION": 11,
"BUILD": 41,
"REVIVE": 19,
"WATCH": 71,
"RISKY": 11
},
"tier_examples": {
"LOCK": ["Deal-D348E1", "Deal-C26D20", "Deal-403845"],
"ACTION": ["Deal-25F752", "Deal-944310", "Deal-3974EB"],
"BUILD": ["Deal-A5E80A", "Deal-499BF6", "Deal-D73B89"],
"REVIVE": ["Deal-2D1F1B", "Deal-66D1FC", "Deal-950043"],
"WATCH": ["Deal-E53952", "Deal-5408B0", "Deal-9AAE5F"],
"RISKY": ["Deal-B7EBD1", "Deal-0660B4", "Deal-BA571A"]
},
"risky_deals": ["Deal-B7EBD1", "Deal-0660B4", "Deal-BA571A", "Deal-7BBDFA", "Deal-4A13AD", "Deal-9D0060", "Deal-690476", "Deal-635B8E", "Deal-5FDCE4", "Deal-F336B6", "Deal-BA3DDC"],
"lock_violations": 0,
"pipeline_shape": "156 open deals, $2,314,044.43 total. 64.7% (101/156) have zero meetings_30d, and 45.5% (71/156) sit in early stages DS1/DS2 vs only 15.4% (24/156) in DS4/DS5 — this is a wide, top-heavy funnel with weak inbound signal. WATCH dominates by count (71, 46%) and dollars (40.8%), reflecting deals with no strong positive or negative signal. REVIVE (19 deals, 29.1% of $) flags stalled PIPELINE deals gone cold, a meaningful chunk of value at risk of going stale. RISKY (11 deals, 3.9% of $) shows COMMIT/BEST_CASE forecasts unsupported by recent meetings or contact, i.e., forecast inflation. Only 3 deals qualify for LOCK, underscoring how few deals combine late stage, COMMIT confidence, and fresh engagement simultaneously."
}
```
```json
[
{
"transcript_id": "TX-001",
"deal_alias": "Deal-CFE7F4",
"why_buys": [
"Automate anniversary and birthday awards — HR team of three cannot keep up manually (Prospect (VP People))"
],
"pain_points": [
"HR team of three cannot keep up with manual anniversary/birthday awards (Prospect (VP People))",
"Tracking everything in a spreadsheet; people slip through the cracks (Prospect (HR Admin))"
],
"stakeholders": ["VP People", "HR Admin"],
"budget_signal": "$40k earmarked for engagement tools this fiscal year (Prospect (VP People))",
"timeline_signal": "Live before open enrollment in November (Prospect (VP People))",
"competitor_mentioned": "Achievers — evaluated last year, deemed too heavy for their team size (Prospect (VP People))",
"next_step": "Security review scheduled for September 12 (agreed by Prospect (VP People))",
"objections": [
"Need SSO and audit logs for IT to sign off (Prospect (HR Admin))"
],
"confidence": "High — explicit budget, timeline, and agreed next step"
},
{
"transcript_id": "TX-002",
"deal_alias": "Deal-70BB30",
"why_buys": [
"Tie recognition to retention for hourly workforce (Prospect (Head of Total Rewards))"
],
"pain_points": [
"Regretted turnover among hourly workforce is over 30% (Prospect (Head of Total Rewards))"
],
"stakeholders": ["Head of Total Rewards", "CFO"],
"budget_signal": "$25k pilot budget approved by finance for this quarter (Prospect (CFO))",
"timeline_signal": "Decision by end of September (Prospect (CFO))",
"competitor_mentioned": null,
"next_step": "Pilot agreement to be sent and routed to legal this week (agreed by Prospect (CFO))",
"objections": [
"Workday integration must be rock solid — stated as the one condition (Prospect (CFO))"
],
"confidence": "High — explicit budget, deadline, and agreed next step; no competitor in play per prospect ('first vendor we've had a real demo with')"
},
{
"transcript_id": "TX-003",
"deal_alias": "Deal-530B50",
"why_buys": [
"Make recognition visible across 12 retail locations (Prospect (People Ops Manager))"
],
"pain_points": [
"Store managers have zero budget autonomy for on-the-spot recognition today (Prospect (People Ops Manager))"
],
"stakeholders": ["People Ops Manager"],
"budget_signal": null,
"timeline_signal": "No rush on their side until Q1 (Prospect (People Ops Manager))",
"competitor_mentioned": "Bucketlist — CEO used it at a previous company and liked it (Prospect (People Ops Manager))",
"next_step": "Call scheduled with the CEO; prospect to send two times (agreed by Prospect (People Ops Manager))",
"objections": [
"CEO has to be sold first — she decides anything people-related (Prospect (People Ops Manager))"
],
"confidence": "Medium — no budget stated, timeline is loose ('until Q1'), and decision authority sits with an unengaged CEO"
},
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": [
"Consolidate three separate recognition tools into one (Prospect (VP People))"
],
"pain_points": [
"Paying for three tools, none of which talk to their HRIS (Prospect (VP People))"
],
"stakeholders": ["VP People", "IT Security Lead"],
"budget_signal": "Under $15k annually can be approved without board approval (Prospect (VP People))",
"timeline_signal": "Procurement cycle runs six to eight weeks minimum (Prospect (IT Security Lead))",
"competitor_mentioned": null,
"next_step": null,
"objections": [
"Security review took three months for their last vendor — stated as their hesitation (Prospect (IT Security Lead))",
"\"Maybe — I need to check her calendar, no promises\" on a CFO follow-up (Prospect (VP People))"
],
"confidence": "Low — no next step was explicitly agreed; VP People response to follow-up was non-committal"
},
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": [
"Automate service milestones (Prospect (HR Director))",
"Analytics on recognition equity across departments (Prospect (HR Director))"
],
"pain_points": [
"Night-shift teams feel invisible; engagement scores run 20 points lower (Prospect (People Ops Coordinator))",
"Exec team is skeptical after a failed rollout two years ago (Prospect (HR Director))"
],
"stakeholders": ["HR Director", "People Ops Coordinator"],
"budget_signal": "$12k approved under their engagement line (Prospect (HR Director))",
"timeline_signal": "Needs to be running before their January all-hands (Prospect (HR Director))",
"competitor_mentioned": "Nectar — currently mid-pilot; stated vendor would need to beat that experience (Prospect (HR Director))",
"next_step": "Rep to present directly to the exec team on October 2 (agreed by Prospect (HR Director))",
"objections": [
"Exec team skepticism from a prior failed rollout two years ago (Prospect (HR Director))",
"Active mid-pilot with Nectar sets a comparison bar (Prospect (HR Director))"
],
"confidence": "Medium — budget and timeline are explicit and a next step is agreed, but an active competitor pilot and exec skepticism are live risks"
},
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": [
"Cut admin time on service awards (Prospect (HR Manager))"
],
"pain_points": [
"Personally spends five hours a month ordering and shipping plaques (Prospect (HR Manager))"
],
"stakeholders": ["HR Manager"],
"budget_signal": "Budget isn't the issue — time is (no dollar amount stated) (Prospect (HR Manager))",
"timeline_signal": "Fiscal year resets in February, making a Q1 start realistic (Prospect (HR Manager))",
"competitor_mentioned": null,
"next_step": "Rep to send a one-page overview; prospect will forward it to the COO this week (agreed by Prospect (HR Manager))",
"objections": [
"COO usually prefers building things in-house (Prospect (HR Manager))"
],
"confidence": "Medium-High — clear pain point, timeline, and agreed next step, but the build-vs-buy objection with the COO is unresolved and no competitor comparison exists (comparing only against building internally, not a named vendor)"
}
]
```
Top 3 deals closest to signature (Slack overrides stale CRM status where they conflict): 1. Deal-547B2B — $11,200 (Alex Franklin, DS5/COMMIT, CRM close 2026-09-11). Why: Slack (09-04) says redlines are back clean, signing page is already out, and the VP People confirmed signing "tomorrow." This is the most advanced — document is literally in signature. What's left: counter-signature only. 2. Deal-403845 — $9,000 (Alex Franklin per CRM; Slack post attributed to Dana Mercer — an owner discrepancy worth flagging, data not resolved here). CRM close 2026-09-11. Why: Slack says the order form is with their finance team — order form is the final commercial doc before signature. What's left: finance sign-off, then countersignature. 3. Deal-A2B47C — $6,360 (Alex Franklin, DS5/COMMIT, CRM close 2026-09-11). Why: Slack says it's "still warm, normal legal-review pace" — one stage behind the two above (legal review precedes signature), but tied to the same 2026-09-11 close date, making it nearer-term than the other "warm" deal (Deal-D348E1, close 2026-10-15). What's left: complete legal review, then signature. Arithmetic: all three share CRM close_date 2026-09-11; Slack thread is dated 2026-09-04, so each was ~7 days from CRM close date at time of Slack update. Excluded despite CRM COMMIT status: Deal-2465CE ($5,400) — CRM shows DS5/COMMIT, but Slack (09-04, same owner Dana Mercer) says the champion left, procurement froze, and she pulled it from commit — realistically Q4. CRM is stale here; do not treat as near-signature.
Data provided contains no deal amount/value field anywhere (transcripts_gaps.csv has no dollar figures, and no deal-amount file was supplied) — amounts are noted as "not provided in data" below.
CANDIDATES (all prospect-attributed lines from transcripts_gaps.csv):
1. TG-001, Deal-EC3025
Quote: "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." — Prospect (IT Security Lead)
Docs check: "SCIM user provisioning ... are NOT currently listed as supported capabilities."
Classification: Real gap (feature does not exist on any tier).
Amount: not provided in data.
2. TG-002, Deal-D0D6B5
Quote: "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us." — Prospect (HRIS Manager)
Docs check: "ADP Workforce Now integrations are NOT currently listed as supported capabilities." Supported HRIS list (Workday, BambooHR, Gusto, Rippling) does not include ADP.
Classification: Real gap (integration does not exist on any tier).
Amount: not provided in data.
3. TG-003, Deal-CFE7F4
Quote: "I tried to build a custom report combining recognition frequency with turnover and couldn't — is that possible on our current plan?" — Prospect (VP People)
Docs check: "Custom report builder" row = "—/—/yes" (Enterprise only).
Classification: Plan gate — capability exists, gated to Enterprise tier, not a missing feature.
Amount: not provided in data.
4. TG-004, Deal-84DBA6
Quote: "We turned on the Slack integration in July, but half our managers still haven't given a single recognition — nobody ever trained them on it." — Prospect (People Ops Manager)
Docs check: Slack integration is listed as supported on all plans; the complaint is about manager adoption/training, not a missing capability.
Classification: Rollout/enablement issue (confirmed by Alex's own follow-up: "manager enablement session").
Amount: not provided in data.
5. TG-005, Deal-36C33F
Line: "Full transparency — we don't have a native mobile app for hourly workers yet, though it's on the roadmap." — spoken by Alex Franklin (rep), not the prospect. Per instructions, rep language does not count as prospect voice, so this is excluded as a candidate.
Prospect's actual line ("Good to know. The web version should be fine for our office staff for now.") raises no gap.
Classification: N/A — no prospect-voiced gap present.
SUMMARY (real gaps only):
- Deal-EC3025 — SCIM user provisioning not supported on any tier. Amount: not provided in data.
- Deal-D0D6B5 — ADP Workforce Now integration not supported. Amount: not provided in data.
Excluded from summary: Deal-CFE7F4 (plan gate, not a gap), Deal-84DBA6 (enablement issue, not a gap), Deal-36C33F (no prospect-voiced gap; mobile-app comment was rep language).
Snapshot date: 2026-09-05. Stale = no last_email, last_call, or last_meeting within 7 days (i.e., days since most recent of those three fields > 7, or no engagement record exists at all). Note: 2 open deals have no row in the engagements table at all — Deal-3EED2C (Alex Franklin) and Deal-57FF13 (Elena Sinclair). Treated as stale (no contact data available); days-since shown as "no engagement record." BRYCE HARMON — 13 stale deals, total $626,243.00 Deal-2D1F1B DS1 $240,000.00 81 days (last_meeting 2026-06-16) Deal-66D1FC DS1 $99,000.00 16 days (last_email 2026-08-20) Deal-950043 DS1 $70,000.00 19 days (last_email 2026-08-17) Deal-B23205 DS1 $45,000.00 16 days (last_meeting 2026-08-20) Deal-7BBDFA DS3 $37,440.00 46 days (last_meeting 2026-06-18) Deal-332637 DS2 $36,000.00 9 days (last_meeting 2026-07-22) Deal-1BEEBF DS1 $31,500.00 19 days (last_call 2026-07-30) Deal-C5658B DS1 $23,400.00 16 days (last_meeting 2026-07-31) Deal-40522D DS3 $21,000.00 19 days (last_meeting 2026-08-04) Deal-F0EBBB DS3 $11,400.00 24 days (last_email 2026-08-12) Deal-E25A09 DS1 $6,000.00 9 days (last_meeting 2026-07-15) Deal-C9C286 DS2 $5,502.00 9 days (last_meeting 2026-08-05) Deal-012CB1 DS1 $1.00 23 days (last_meeting 2026-08-12) DANA MERCER — 14 stale deals, total $261,645.00 Deal-44EA29 DS2 $60,000.00 10 days (last_email 2026-08-26) Deal-E51FB7 DS2 $43,875.00 12 days (last_call 2026-08-24) Deal-B42F46 DS1 $27,000.00 19 days (last_email 2026-08-17) Deal-BA3DDC DS3 $23,400.00 15 days (last_call 2026-08-21) Deal-9DDE86 DS2 $20,000.00 15 days (last_meeting 2026-07-27) Deal-215CCA DS3 $18,900.00 17 days (last_meeting 2026-08-19) Deal-5EED42 DS3 $16,250.00 11 days (last_meeting 2026-07-24) Deal-57887A DS2 $15,000.00 8 days (last_meeting 2026-08-21) Deal-B7EBD1 DS5 $9,000.00 16 days (last_call 2026-08-10) Deal-3974EB DS4 $9,000.00 8 days (last_meeting 2026-08-28) Deal-F40F04 DS2 $8,100.00 15 days (last_meeting 2026-08-21) Deal-87DDD1 DS1 $5,000.00 19 days (last_meeting 2026-07-23) Deal-F336B6 DS3 $4,200.00 15 days (last_meeting 2026-08-18) Deal-0660B4 DS4 $1,920.00 16 days (last_meeting 2026-08-20) COLE INGRAM — 18 stale deals, total $252,905.03 Deal-D04904 DS2 $58,529.25 11 days (last_meeting 2026-06-12) Deal-B25F40 DS3 $40,000.00 8 days (last_meeting 2026-07-24) Deal-813836 DS2 $32,175.00 11 days (last_meeting 2026-07-07) Deal-1BA595 DS2 $31,750.00 11 days (last_email 2026-08-25) Deal-CFE1E8 DS3 $18,000.00 11 days (last_meeting 2026-07-24) Deal-CD47A6 DS2 $12,168.00 11 days (last_call 2026-08-24) Deal-627646 DS3 $11,193.00 11 days (last_meeting 2026-06-29) Deal-FF809F DS2 $7,781.20 11 days (last_meeting 2026-06-18) Deal-AF932D DS2 $7,225.40 11 days (last_meeting 2026-07-21) Deal-A71728 DS2 $6,947.50 11 days (last_meeting 2026-06-29) Deal-8BC9F5 DS2 $5,616.00 10 days (last_meeting 2026-07-24) Deal-175395 DS3 $4,779.88 11 days (last_meeting 2026-06-30) Deal-481E24 DS3 $4,140.00 10 days (last_call 2026-08-26) Deal-C7F9BF DS2 $3,360.00 11 days (last_call 2026-08-24) Deal-2F3A66 DS3 $3,334.80 11 days (last_meeting 2026-06-17) Deal-342E96 DS2 $2,700.00 24 days (last_meeting 2026-07-14) Deal-E568D5 DS3 $1,875.00 11 days (last_meeting 2026-06-30) Deal-FD9F4E DS5 $1,330.00 10 days (last_meeting 2026-07-15) ALEX FRANKLIN — 19 stale deals, total $109,536.00 Deal-CC08D1 DS1 $24,000.00 16 days (last_meeting 2026-08-19) Deal-E73427 DS3 $18,000.00 10 days (last_meeting 2026-08-28) Deal-885F45 DS2 $9,300.00 12 days (last_email 2026-08-24) Deal-C2FF3C DS1 $8,316.00 10 days (last_meeting 2026-08-14) Deal-3EED2C DS2 $7,200.00 no engagement record (deal not present in engagements table) Deal-0D2F7A DS3 $5,100.00 12 days (last_call 2026-08-24) Deal-6C60D4 DS3 $4,800.00 12 days (last_call 2026-08-24) Deal-13FEBD DS2 $4,680.00 12 days (last_call 2026-08-24) Deal-9D0060 DS3 $3,840.00 12 days (last_meeting 2026-07-24) Deal-690476 DS2 $3,600.00 18 days (last_meeting 2026-06-30) Deal-C6D97A DS4 $3,240.00 8 days (last_meeting 2026-07-08) Deal-EE195F DS3 $3,120.00 8 days (last_meeting 2026-08-06) Deal-278DEC DS3 $2,700.00 8 days (last_meeting 2026-02-25) Deal-635B8E DS3 $2,600.00 18 days (last_email 2026-08-18) Deal-6883F3 DS1 $2,400.00 16 days (last_meeting 2026-08-20) Deal-4A13AD DS3 $2,160.00 26 days (last_meeting 2026-07-16) Deal-F67D31 DS2 $1,800.00 8 days (last_email 2026-08-28) Deal-5FDCE4 DS3 $1,600.00 12 days (last_meeting 2026-06-29) Deal-BA571A DS4 $1,080.00 18 days (last_meeting 2026-08-28) ELENA SINCLAIR — 1 stale deal, total $2,100.00 Deal-57FF13 DS1 $2,100.00 no engagement record (deal not present in engagements table) TOTAL: 65 stale open deals across 5 owners.
**Method:** Snapshot = 2026-09-05. 30-day window = 2026-08-06 through 2026-09-05 inclusive. Activity totals summed per rep by joining deals_open.csv (owner_id) to engagements_by_deal_90d.csv (emails_30d, calls_30d, meetings_30d) on deal_id. DS2 entries = deals where t_ds2 falls in the window. Owners Gavin Porter and Hugo Lindqvist are archived and own no deals in this data — excluded. Deal-3EED2C (Alex Franklin, t_ds2=2026-09-03) and Deal-57FF13 (Elena Sinclair) have no matching row in engagements_by_deal_90d.csv — treated as 0 activity, not invented. Per-rep totals (emails / calls / meetings, 30d): Bryce Harmon (119337721): 162 / 0 / 43 = 205 total - Mix: emails 162/205=79.0%, calls 0/205=0.0%, meetings 43/205=21.0% - DS2 entries: 4 — Deal-25F752, Deal-D73B89, Deal-CA7DC0, Deal-1CCE5C - Ratio: 205/4 = 51.25 activities/DS2 Dana Mercer (83155923): 84 / 18 / 11 = 113 total - Mix: emails 84/113=74.3%, calls 18/113=15.9%, meetings 11/113=9.7% - DS2 entries: 1 — Deal-57887A - Ratio: 113/1 = 113.0 activities/DS2 Alex Franklin (84342457): 307 / 36 / 41 = 384 total - Mix: emails 307/384=79.9%, calls 36/384=9.4%, meetings 41/384=10.7% - DS2 entries: 18 — Deal-403845, Deal-1FC049, Deal-3EED2C(no eng record, counted as 0), Deal-7FA0C3, Deal-E531A6, Deal-5296C9, Deal-36C33F, Deal-EE195F, Deal-F436DA, Deal-317E6F, Deal-D1E6C2, Deal-D9A72E, Deal-CA5E44, Deal-4F775F, Deal-898FC5, Deal-46988D, Deal-E73427, Deal-92D97D - Ratio: 384/18 = 21.33 activities/DS2 Cole Ingram (83155924): 96 / 14 / 1 = 111 total - Mix: emails 96/111=86.5%, calls 14/111=12.6%, meetings 1/111=0.9% - DS2 entries: 2 — Deal-42326B, Deal-1BA595 - Ratio: 111/2 = 55.5 activities/DS2 Farid Osman (716654662): 38 / 0 / 34 = 72 total - Mix: emails 38/72=52.8%, calls 0/72=0.0%, meetings 34/72=47.2% - DS2 entries: 1 — Deal-499BF6 - Ratio: 72/1 = 72.0 activities/DS2 Elena Sinclair (701163055): 0 / 0 / 0 = 0 total - Mix: not computable, 0/0 - DS2 entries: 0 (sole owned deal Deal-57FF13 is stage DS1, no t_ds2, no engagement record) - Ratio: not computable (0 activities / 0 DS2 entries) Efficiency ranking (lowest activities/DS2 = most efficient; Elena Sinclair excluded, ratio undefined): 1. Alex Franklin — 21.33 2. Bryce Harmon — 51.25 3. Cole Ingram — 55.5 4. Farid Osman — 72.0 5. Dana Mercer — 113.0 Most efficient rep: Alex Franklin (21.33 activities/DS2 entry). Highest-volume rep: Alex Franklin (384 total activities, also 18 DS2 entries — both highest in the dataset). They do not differ — Alex Franklin is both the highest-volume and most-efficient rep in this window. No causal claim is made about why.
Numbers all confirmed (the sandbox loses variables between calls but each computation reproduced consistently). Final figures: emails 807, calls 112, meetings 128, notes 50, total 1,097 activities across 161 deal rows for Alex Franklin. Now assembling the scorecard. --- **QTD SCORECARD — Alex Franklin — Q3 2026 (as of 2026-09-05)** **1. Bookings vs. Quota** Quota: $200,000 (quota.csv, snapshot_date 2026-09-05) Closed-won deals with close_date in Q3 (2026-07-01 to 2026-09-30), excluding Deal-B3E6F1 ($24,000, closed 2026-06-20 — before quarter, excluded per instruction): - Deal-A1C3E5 $40,000 (2026-07-15, new) - Deal-F2C7D8 $20,000 (2026-07-24, expansion) - Deal-B7D2F4 $35,000 (2026-07-31, new) - Deal-C9E1A6 $21,000 (2026-08-12, new) - Deal-A8B4D6 $12,000 (2026-08-19, expansion) - Deal-D4B8C2 $11,000 (2026-08-21, new) - Deal-E6F3A9 $6,500 (2026-09-02, new) - Deal-C5D9E2 $4,500 (2026-09-03, expansion) Sum: 40000+20000+35000+21000+12000+11000+6500+4500 = **$150,000** Attainment: 150,000 / 200,000 = **75.00%** **2. New vs. Expansion Split** - New: 5 deals, $113,500 (75.7% of bookings) — Deal-A1C3E5, Deal-B7D2F4, Deal-C9E1A6, Deal-D4B8C2, Deal-E6F3A9 - Expansion: 3 deals, $36,500 (24.3% of bookings) — Deal-F2C7D8, Deal-A8B4D6, Deal-C5D9E2 Check: 113,500 + 36,500 = 150,000 ✓ **3. Active Pipeline by Stage (status=open, all as of file snapshot)** - DS1: 20 deals, $284,621 - DS2: 28 deals, $353,760 - DS3: 67 deals, $552,705 - DS4: 5 deals, $23,574 - DS5: 5 deals, $45,730 Total open pipeline: 125 deals, **$1,260,390** **4. Rolling 90-Day DS2-to-Won Rate** Window: deals entering DS2 between 2026-06-07 and 2026-09-05 (90 days back from snapshot). 111 deals entered DS2 in that window: 8 won, 27 lost, 76 still open/unresolved. - Won/all-entered rate: 8/111 = **7.21%** - Won/resolved-only rate (won ÷ (won+lost)): 8/35 = **22.86%** Reporting both because "DS2-to-won rate" is ambiguous with 76 deals still in-flight; the resolved-only rate (22.86%) is the cleaner efficiency read, the all-entered rate (7.21%) reflects total conversion including deals not yet decided. **5. Win/Loss Counts and Top Loss Reason (QTD, closed_date in Q3, as of 2026-09-05)** - Wins: 8 (see bookings list above) - Losses: 27, total lost value $329,272 - Win rate (of decided deals): 8/35 = **22.86%** Loss reason breakdown (count / $ amount): - Lost- Timing (1 year or more): 13 deals, $184,681 ← **top loss reason** (both by count and by $) - Competitor: 5 deals, $49,020 - MIA: 5 deals, $45,831 - Lost DM: 2 deals, $17,940 - Feature Request: 1 deal, $21,000 - Lost- Does not fit ICP (write in notes): 1 deal, $10,800 **6. Activity Volume by Type, Last 30 Days (all 161 deal rows for Alex Franklin, ae_engagements.csv)** - Emails: 807 - Calls: 112 - Meetings: 128 - Notes: 50 - Total: 1,097 Note: the file has no activity date column beyond the "_30d" field name — treated at face value as trailing-30-day snapshot per row; cannot independently verify the reference date. --- **Coaching Observations** 1. **Timing losses dominate and are the single biggest lever.** "Lost- Timing (1 year or more)" accounts for 13 of 27 losses (48%) and $184,681 (56%) of lost value — more than the bookings total itself ($150,000). This isn't a competitive or product problem; it's a qualification/urgency-creation gap. Coach Alex on tightening MEDDIC-style timeline validation earlier in DS2/DS3 rather than carrying deals that were never going to close this cycle. 2. **DS2 conversion is weak even on a resolved basis (22.86%), and there's a stage-3 bulge.** DS3 alone holds 67 of 125 open deals ($552,705, 44% of pipeline) — more than double any other stage by count. Combined with the 76 still-unresolved DS2 entries, this suggests deals are advancing past DS2 without being properly qualified, then stalling in DS3. Coach a hard DS2-exit gate (budget/timeline/DM confirmed) before deals get pushed forward. 3. **Attainment (75%) is being carried by a small number of larger new-logo deals, with thin expansion motion.** Only 3 of 8 wins ($36,500, 24.3%) are expansion, despite expansion deals typically closing faster with existing relationships. With $1.26M in open pipeline but a sub-8% raw DS2-to-won conversion, the rep has enough top-of-funnel volume — the coaching need is deal hygiene and stage discipline, not more pipeline generation. **Data gaps flagged:** deal_type is blank for all lost/open deals (only closed-won rows have new/expansion tagged), so new-vs-expansion analysis is limited to won deals only. Engagement data has no explicit date field to confirm the "30 days" window boundaries.
Note on missing data: no deal-amount or deal-stage file was provided (only deal_contacts.csv and unengaged_contacts.csv). Amount and stage are reported as "missing" for every deal below — I have not invented values. Reference date used for the 60-day "active" window: 2026-09-14 (session date). Cutoff = 2026-09-14 minus 60 days = 2026-07-16. A contact counts as active only if last_engaged_date ≥ 2026-07-16 AND is_former = false. Of 14 deals in deal_contacts.csv, 11 are flagged. Not flagged (3+ active contacts, ≥2 distinct personas): Deal-84DBA6, Deal-4B0BEB, Deal-D348E1. FLAGGED DEALS Deal-EC3025 (C-FDD0C7) Amount: missing. Stage: missing. Active contacts: 1 — CT-047C54 (champion, 2026-09-02). CT-F2C1AE excluded (former). Personas present: champion. Missing: economic buyer, HR admin, IT security, finance. Status: single-threaded (1 < 2). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing); generic priority since no budget-authority contact is active. Unengaged fit at C-FDD0C7: CT-6827DB, Chief People Officer, economic buyer. Deal-92D97D (C-E23238) Amount: missing. Stage: missing. Active contacts: 1 — CT-01F5B4 (HR admin, 2026-08-28). CT-A902AE excluded (last engaged 2026-06-01, older than cutoff 2026-07-16, not former but stale). Personas present: HR admin. Missing: economic buyer, champion, IT security, finance. Status: single-threaded (1 < 2). Most valuable to add: economic buyer (generic priority; note champion is also effectively gone via staleness — cannot rank vs. economic buyer without stage data). Unengaged fit at C-E23238: none on file. Deal-50D386 (C-EB10E4) Amount: missing. Stage: missing. Active contacts: 2 — CT-AA41B2 (champion, 2026-09-01), CT-B9C35B (HR admin, 2026-08-25). Personas present: champion, HR admin. Missing: economic buyer, IT security, finance. Status: under-threaded (2 < 3). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-EB10E4: CT-A1C4B3, Chief People Officer, economic buyer. Deal-D0D6B5 (C-32918E) Amount: missing. Stage: missing. Active contacts: 3 — CT-87CED4, CT-DE6D7C, CT-FD70B2 (all champion, 2026-09-02/08-19/08-07). Personas present: champion (all 3 same persona). Missing: economic buyer, HR admin, IT security, finance. Status: under-threaded (all contacts in one persona). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-32918E: CT-1FA4DB, Chief People Officer, economic buyer. Deal-5BFE3B (C-535D36) Amount: missing. Stage: missing. Active contacts: 2 — CT-57123B, CT-5CE757 (both champion, 2026-08-31/08-12). Personas present: champion (both same persona). Missing: economic buyer, HR admin, IT security, finance. Status: under-threaded (2 < 3, and all one persona). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-535D36: none on file. Deal-36C33F (C-077A0E) Amount: missing. Stage: missing. Active contacts: 1 — CT-4FE556 (IT security, 2026-08-15). CT-405B45 and CT-86B22F excluded (both former). Personas present: IT security. Missing: economic buyer, champion, HR admin, finance. Status: single-threaded (1 < 2). Most valuable to add: economic buyer (generic priority; champion loss to former status is also a material risk — cannot rank precisely without stage data). Unengaged fit at C-077A0E: CT-1DB73E, Chief People Officer, economic buyer. Deal-885F45 (C-5E8EFB) Amount: missing. Stage: missing. Active contacts: 2 — CT-51C81E (economic buyer, 2026-08-26), CT-D9A0E8 (champion, 2026-08-11). Personas present: economic buyer, champion. Missing: HR admin, IT security, finance. Status: under-threaded (2 < 3). Most valuable to add: IT security — economic buyer already active, so next priority is a persona that commonly gates close (security review); this also matches the only on-file unengaged contact. Cannot confirm against actual stage since stage data is missing. Unengaged fit at C-5E8EFB: CT-B3F25D, IT Security Lead, IT security. Deal-FCBE5B (C-737030) Amount: missing. Stage: missing. Active contacts: 1 — CT-4A5317 (champion, 2026-08-29). Personas present: champion. Missing: economic buyer, HR admin, IT security, finance. Status: single-threaded (1 < 2). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-737030: none on file. Deal-5408B0 (C-2AE3AA) Amount: missing. Stage: missing. Active contacts: 2 — CT-D33AE4 (champion, 2026-09-01), CT-8742FD (HR admin, 2026-08-18). Personas present: champion, HR admin. Missing: economic buyer, IT security, finance. Status: under-threaded (2 < 3). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-2AE3AA: CT-07FA76, Chief People Officer, economic buyer. Deal-C6D97A (C-5A8FC2) Amount: missing. Stage: missing. Active contacts: 3 — CT-223DDC, CT-B03555, CT-4E8A2B (all champion, 2026-08-31/08-20/08-05). Personas present: champion (all 3 same persona). Missing: economic buyer, HR admin, IT security, finance. Status: under-threaded (all contacts in one persona). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-5A8FC2: none on file. Deal-F9A08A (C-0D15DF) Amount: missing. Stage: missing. Active contacts: 1 — CT-931B10 (champion, 2026-09-03). CT-913581 excluded (last engaged 2026-06-20, older than cutoff, not former but stale). Personas present: champion. Missing: economic buyer, HR admin, IT security, finance. Status: single-threaded (1 < 2). Most valuable to add: economic buyer — cannot be stage-tailored (stage missing). Unengaged fit at C-0D15DF: CT-697541, Chief People Officer, economic buyer.
OPENING (first five minutes, minute 0-4 lines):
- 8/10 calls: same scripted opener — "Quick one to kick off: a 400-person retailer we work with cut regretted turnover 18% in two quarters after automating milestone awards, and I wanted to walk you through exactly how they did it." (Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-EDC141, Deal-D9A12F, Deal-84DBA6)
- 2/10 calls: different opener — Deal-403845: "I put together a short agenda — security review first, then pricing." / Deal-1E2498: "You asked for straight pricing last time, so let's start there."
Arithmetic: 8/10 = 80% use the turnover-stat opener.
THREE MOST COMMON OBJECTIONS (counted by distinct prospect line pattern, 10 calls total):
1. "Budget is locked until next fiscal year" — 4 occurrences (Deal-D348E1, Deal-547B2B, Deal-60C2C2, Deal-84DBA6).
Rep response (same line each time): "Totally fair. Most teams fund this out of turnover savings — that retailer saved about $210k in avoided backfills, which is how their finance team signed off."
2. "Revisit it next quarter" / open enrollment timing — 3 occurrences (Deal-5408B0, Deal-C61CF7, Deal-D9A12F).
Rep response: "Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?"
3. "We already do recognition with a spreadsheet and quarterly gift cards" — 3 occurrences (Deal-403845, Deal-EDC141, Deal-1E2498).
Rep response: "Spreadsheets work until they scale — the difference is automation: milestones fire without HR lifting a finger, and you get analytics on who is being recognized."
(Next most frequent, not in top 3: "budget committee" sign-off needed — 2 occurrences, Deal-403845 and Deal-84DBA6.)
NEXT-STEP AGREEMENT RATE:
Agreed (prospect confirms a working session): Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-D9A12F, Deal-1E2498 = 7 calls, quote: "Yes, Thursday at 2pm works — send the invite and I'll bring our HRIS manager."
Not agreed: Deal-403845 ("Understood — I'll leave it with you."), Deal-EDC141 ("Fair enough."), Deal-84DBA6 ("Understood, thanks for the candor.") = 3 calls.
Rate = 7/10 = 70%.
COMPETITORS A PROSPECT RAISED:
- Awardco — Deal-547B2B: "We're also in late talks with Awardco — their rewards catalog looks bigger than yours."
- Kudos — Deal-EDC141: "How are you different from Kudos? Our CEO used them at her last company."
Note: Workhuman appears in Deal-C61CF7 but was raised by the rep (Alex), not the prospect, so it does not qualify under this data.
COACHING NOTES:
1. The 90-day-pilot reframe for "revisit next quarter" converts to a booked next step in all 3 instances it's used (Deal-5408B0, Deal-C61CF7, Deal-D9A12F) — keep it as the default response to timing objections.
2. All 3 losses on next-step agreement (Deal-403845, Deal-EDC141, Deal-84DBA6) end with Alex accepting a stall line ("I'll leave it with you," "Fair enough," "thanks for the candor") with no counter-ask — data shows no attempt to re-propose a next step after those objections.
## Q3 2026 Forecast (2026-07-01 to 2026-09-30) Pulled from deals.csv (86 total deal rows), CRM extract dated 2026-09-05. **In-quarter deals (close_date between 2026-07-01 and 2026-09-30): 54 of 86** COMMIT — 7 deals, total $44,729.00 Deal-547B2B $11,200 | Deal-B7EBD1 $9,000 | Deal-403845 $9,000 | Deal-A2B47C $6,360 | Deal-2465CE $5,400 | Deal-A5E80A $2,520 | Deal-499BF6 $1,249 Sum: 11200+9000+9000+6360+5400+2520+1249 = 44,729 BEST_CASE — 24 deals, total $203,565.00 PIPELINE — 23 deals, total $201,637.40 (counts zero toward weighted forecast per rule) **Weighted forecast:** = (COMMIT × 1.00) + (BEST_CASE × 0.35) = 44,729.00 + (203,565.00 × 0.35) = 44,729.00 + 71,247.75 = **$115,976.75** **Excluded — close date outside quarter:** 32 deals excluded, total $227,575.00 Breakdown: 22 PIPELINE, 9 BEST_CASE, 1 COMMIT (Deal-D348E1, $13,770, close 2026-10-15) **Top 5 BEST_CASE deals by amount, in quarter:** 1. Deal-2D7423 — $38,935 (close 2026-09-30, DS3) 2. Deal-25F752 — $24,000 (close 2026-09-25, DS4) 3. Deal-E53952 — $19,656 (close 2026-09-30, DS4) 4. Deal-5EED42 — $16,250 (close 2026-09-30, DS3) 5. Deal-FA32A0 — $11,116 (close 2026-09-25, DS3) ## Data quality The owner field is blank on 85 of 86 rows (only Deal-C9C286 has an owner), so this forecast cannot be attributed or reviewed by rep. Deal-A5E80A is marked COMMIT at stage DS1 (discovery), which is inconsistent with the stated stage progression (DS1–DS5) and suggests either a stage or forecast_category data entry error. Deal-42326B has a non-integer amount ($2,480.4), and an unexplained "why_buys_chars" column contains nonzero values on 15 rows with no defined meaning, both indicating possible upstream data corruption or column misuse. 17 of the 86 deals close exactly on the quarter boundary (2026-09-30), so any clock/timezone discrepancy between the CRM extract and reporting system could shift material dollars in or out of the quarter.
2x2 — first-month activation signal vs 24-month retention (active status) Both signals (m1_users>=5 AND m1_redemptions>=1): n=47, active=31, retention=31/47=66.0% Givers-only (m1_users>=5, m1_redemptions=0): n=49, active=23, retention=23/49=46.9% Redemption-only (m1_users<5, m1_redemptions>=1): n=29, active=9, retention=9/29=31.0% Neither: n=95, active=38, retention=38/95=40.0% Check: 47+49+29+95=220 = total rows in extract. No companies excluded — every record has non-blank m1_users and m1_redemptions values, no duplicate company_key values found, so all 220 are usable and none were dropped from the denominator. Lift vs "neither" baseline (40.0%): Both signals: 66.0% - 40.0% = +26.0pp Givers-only: 46.9% - 40.0% = +6.9pp Redemption-only: 31.0% - 40.0% = -9.0pp Single signal with the largest lift: givers-only (5+ unique givers in month 1, no redemption required), +6.9pp over neither. Note redemption-only alone is actually associated with worse retention than neither (-9.0pp) — in this data, redemptions without breadth of givers is not a positive standalone signal. What this does and does not prove: Does show: in this 220-company extract, companies hitting both first-month signals together have a materially higher 24-month active rate (66.0%) than companies with one or neither signal, and the combined-signal gap (+26.0pp vs neither) is much larger than either signal alone — consistent with the activation hypothesis as stated. Does not show: causation. This is a cross-sectional association on one 2023 cohort extract with no controls for confounders already visible in the data (product_tier — tier_two accounts are disproportionately cancelled and mostly fall in "neither"/"redemption-only"; ARR; industry; country). It also doesn't test whether driving givers/redemptions up would change outcomes for a given company, doesn't isolate m1_users from company size/tier, and treats non_renewing as not-retained per the "active=retained" definition given, which is a binary proxy, not a full retention/expansion measure. Cell sizes (29-95) are small enough that these rates are directional, not statistically tested here (no CI/significance test was run).
# ARR Reconciliation — CRM vs Billing (as of 2026-09-05) ## Totals - **Billing ARR** (sum of MRR × 12, all 39 subscriptions, all statuses): **$617,897.76** - **CRM ARR** (sum of hubspot_arr, 39 companies): **$603,581.76** - **Variance (CRM − Billing): −$14,316.00** ## Decomposition of Variance (sums exactly to −$14,316.00) | Bucket | Amount | Basis | |---|---|---| | Missing records | −$11,952.00 | C-21629AA4 (billing has sub, no CRM record): 0 − 28,449.24 = −28,449.24; C-0D5BBE3A (CRM has record, no billing sub): 16,497.24 − 0 = +16,497.24. Sum: −28,449.24 + 16,497.24 = −11,952.00 | | Rounding | +$36.00 | C-0D66DF9E: 23,200.00 − 23,184.00 = +16.00; C-14D70CE0: 18,200.00 − 18,180.00 = +20.00. Sum: 16.00 + 20.00 = 36.00 | | Status mismatch | $0.00 | No status field exists in company_arr.csv to compare against Chargebee status — cannot assess; both cancelled subscriptions (C-0C8323BF, C-0DC4FB8C) match CRM exactly, so no variance is attributable here from available data | | Other | −$2,400.00 | C-0F7269D7: 24,396.00 − 26,796.00 = −2,400.00 (unexplained by rounding or record presence) | | **Total** | **−$14,316.00** | −11,952.00 + 36.00 + 0.00 − 2,400.00 = −14,316.00 ✓ | ## Mismatched Accounts — Detail & Suggested Owner | Company Alias | Billing ARR | CRM ARR | Diff (CRM−Billing) | Bucket | Suggested Owner | |---|---|---|---|---|---| | C-21629AA4 | $28,449.24 | missing | −$28,449.24 | Missing records | RevOps/Sales Ops — create missing CRM company record | | C-0D5BBE3A | missing | $16,497.24 | +$16,497.24 | Missing records | Billing/Finance — verify subscription exists or is churned; CRM record may be stale | | C-0D66DF9E | $23,184.00 | $23,200.00 | +$16.00 | Rounding | Sales Ops — minor CRM data entry correction | | C-14D70CE0 | $18,180.00 | $18,200.00 | +$20.00 | Rounding | Sales Ops — minor CRM data entry correction | | C-0F7269D7 | $26,796.00 | $24,396.00 | −$2,400.00 | Other | RevOps/Deal Desk — investigate; unexplained $2,400 gap, largest single mismatch | ## Business Rule Violations Rule: any subscription with term_months ≠ 12 must have cf_agreement_end_date populated. - **SUB-0002** (C-1794A52C, term=24 months): cf_agreement_end_date is blank — **violation** - **SUB-0019** (C-22170CA1, term=36 months): cf_agreement_end_date is blank — **violation** Compliant non-12-month subs (for reference, not violations): SUB-000C (C-0DB48281, 24mo, end date 2027-11-30) and SUB-001A (C-0FC4DBB8, 36mo, end date 2027-11-30).
All 30 accounts are plan_tier=tier_three (no plan_tier variation to test), so the driver check is by size_band only. KVM report — 2026-08 vs 2026-07 (n=30 accounts, simple average across companies): | KVM | Jul-26 | Aug-26 | Abs change | Rel change | Direction | |---|---|---|---|---|---| | Giving rate | 0.6023 | 0.6027 | +0.0004 | +0.07% | ▲ flat | | Redemptions/user | 1.7300 | 1.7302 | +0.0002 | +0.01% | ▲ flat | | 1:1 meetings engagement | 0.4469 | 0.4472 | +0.0003 | +0.06% | ▲ flat | | Pulse check engagement | 0.6006 | 0.5086 | -0.0920 | -15.31% | ▼ decline | Arithmetic: each cell = mean of the 30 company values per month (sum/30); abs change = Aug-Jul; rel change = abs/Jul×100. Largest relative move: pulse check engagement, -15.31%, by a wide margin (next largest is giving rate at +0.07%). Segment driver: data supports attribution to size_band=enterprise. All 10 enterprise accounts show pulse_engagement collapsing from ~0.53-0.56 in Jul to ~0.26-0.29 in Aug (e.g., C-0B2895EF: 0.5619→0.2864; C-0D0B047C: 0.5398→0.2619). Enterprise mean: 0.5500→0.2743 (-50.13%). smb mean moved -0.22% and mid_market +0.21% over the same period — both immaterial. plan_tier cannot be tested as a driver: all 30 accounts share plan_tier=tier_three, so there's no cross-tier variation in this dataset.
**Last completed month: 2026-08** (data runs through 2026-08-31; September is not present, so August is the last full calendar month). **Redemptions — August 2026 (redemptions_ytd.csv, redeemed_at starts with "2026-08")** - Redemption count: 48 - Spend: $3,536.00 (sum of amount_usd across the 48 rows) - Unique redeemers: 46 (distinct user_key values) - Redemptions per redeemer: 48 / 46 = 1.0435 **Provider mix (% of spend)** | Provider | Redemptions | Spend | % of spend | |---|---|---|---| | Tremendous | 22 | $1,145.00 | 32.4% | | custom | 4 | $1,057.00 | 29.9% | | Snappy | 11 | $834.00 | 23.6% | | TangoCard | 11 | $500.00 | 14.1% | Check: 1145+1057+834+500 = 3536.00 = total spend. Percent shares: 32.4+29.9+23.6+14.1 = 100.0%. **Top 5 countries by redemption count** 1. US — 31 2. CA — 7 3. GB — 2 3. SG — 2 3. AU — 2 3. NL — 2 Note: positions 3–6 are a 4-way tie at 2 redemptions each (GB, SG, AU, NL), so there is no single 5th country — all four are shown. (Remaining countries in August: CH — 1, IN — 1.)
ELIGIBILITY WINDOW: snapshot 2026-09-05 + 120 days = 2027-01-03 (25 days remaining in Sep + 31 Oct + 30 Nov + 31 Dec + 3 Jan = 120). Rules require ALL THREE: R1 health_score<60, R2 churn_save_eligible_amount>0, R3 renewal_date<=2027-01-03. QUALIFYING ACCOUNTS (8), play assigned by signal hierarchy: champion_active=false -> executive touch; champion_active=true + usage_trend declining/flat -> usage revival; champion_active=true + usage_trend growing -> commercial concession. 1. C-0F6C0F34 — health 51, amount $49,707.00, renews 2026-10-03. Play: executive touch. Signal: champion_active=false (no internal advocate), despite growing usage (308/395 seats = 78%). 2. C-0E9C27D1 — health 39, amount $41,235.00, renews 2026-09-24. Play: usage revival. Signal: usage_trend=flat, champion active but adoption stalled (134/157 seats = 85%, high absolute use but flat trend signals plateau risk). 3. C-0B360C78 — health 57, amount $35,748.00, renews 2026-10-28. Play: commercial concession. Signal: usage_trend=growing and champion_active=true (246/327 seats = 75%) — product/engagement healthy, so the risk driver is likely price/terms, not usage. 4. C-0CEF69FD — health 53, amount $32,621.00, renews 2026-11-21. Play: executive touch. Signal: champion_active=false despite growing usage (97/136 seats = 71%). 5. C-0B827671 — health 56, amount $25,365.00, renews 2026-11-14. Play: usage revival. Signal: usage_trend=declining (113/202 seats = 56%). 6. C-0D3278C7 — health 54, amount $17,602.00, renews 2026-11-12. Play: usage revival. Signal: usage_trend=declining (126/380 seats = 33%, lowest utilization among eligible accounts). 7. C-0CA21961 — health 58, amount $16,829.00, renews 2026-12-28. Play: usage revival. Signal: usage_trend=flat and lowest engagement of the group (84/325 seats = 26%). 8. C-0B0F1BAB — health 38, amount $5,494.00, renews 2026-09-23. Play: executive touch. Signal: champion_active=false, health score is the lowest in the eligible set (38). TOTAL AT STAKE (sum of churn_save_eligible_amount, eligible accounts only): 49707.00 + 25365.00 + 35748.00 + 5494.00 + 16829.00 + 41235.00 + 32621.00 + 17602.00 = $224,601.00 AT-RISK BUT NOT QUALIFYING (7 accounts, health<60 but fail R2 and/or R3): - C-0BC71BDD — health 55 (at risk), renews 2026-10-27 (within window), but churn_save_eligible_amount = $0.00 -> fails R2. - C-0BE96399 — health 54 (at risk), renews 2026-10-29 (within window), amount = $0.00 -> fails R2. - C-10A56B0F — health 54 (at risk), renews 2026-12-12 (within window), amount = $0.00 -> fails R2. - C-0BA71F12 — health 52 (at risk), amount $6,824.00 (passes R2), but renews 2027-04-11, after the 2027-01-03 cutoff -> fails R3. - C-0F876796 — health 47 (at risk), amount $19,958.00 (passes R2), but renews 2027-02-06, after cutoff -> fails R3. - C-0F6694C3 — health 43 (at risk), amount = $0.00 -> fails R2; renews 2027-03-21, also fails R3. - C-0FCCD2DF — health 43 (at risk), amount = $0.00 -> fails R2; renews 2027-04-23, also fails R3. All other accounts in the file (C-8C2E8F00, C-0B843542, C-14264ABD, C-0B2895EF, C-0EE1203E, C-0FC7A215, C-0D035262, C-0D6CC8E3, C-0B2213A9, C-0D0B047C, C-21FEBCBB, C-172EEFBC, C-0C3848D2, C-0D890324, C-0AAA9434) have health_score>=60, so they don't meet the "at risk" threshold (R1) and are excluded from consideration entirely.
Expansion Kit — C-0DDFC9A7 SEAT COVERAGE 150 licensed / 400 headcount = 0.375 → 37.5% of headcount licensed. USAGE HEALTH (2 lines) - Active users climbed every month for 6 straight months: 88 (Mar) → 126 (Aug), +38 users, +43.2% growth (38/88). - 126 active users / 150 licensed seats = 84.0% utilization in August — only 24 licensed seats currently unused. HEADROOM - Seats: 400 headcount − 150 licensed = 250 unlicensed seats. - Per-seat rate: $9,000.00 current ARR / 150 licensed seats = $60.00/seat/year. - ARR headroom: 250 seats × $60.00 = $15,000.00 potential incremental ARR if licensed to full headcount. WHO REPLIED / CAN THEY BUY Maria S., People Operations Coordinator, replied 2026-09-02. She explicitly states she is "not the right person for purchasing decisions" — cannot buy. RIGHT BUYER Dana R., VP People (expansion_contacts.csv, last_engaged 2026-05-18) — matches Maria's own statement that "budget and seat expansion sit with Dana R." DATA GAP NOTE No usage figure exists past 2026-08 even though the reply is dated 2026-09-02 — Sept utilization/growth can't be quantified from the provided files. REPLY EMAIL (121 words) Subject: RE: Growing your team's recognition program Hi Maria, Thank you so much for the update and for looping in the context — it's great to hear the recognition feed is buzzing every week. Your active user count grew from 88 in March to 126 in August, a 43% increase in six months, which tells us the program is genuinely resonating with your team. That momentum is exactly why I'd welcome the chance to connect with Dana on seat and budget planning as you all continue to grow. Would you be able to make that introduction? Happy to work around Dana's schedule and share the usage trends we're seeing so the conversation starts with real data. Thanks again for being such a great advocate for the program. Best, Cole
COMPLETE (per onboarding_account.csv, C-0D284E42): - Slack integration: complete — integration_slack=2026-08-12 - Allowance set: complete — allowance_set=2026-08-13 - Admins added: complete — admins_added=2 (numeric value present) - First recognition given: complete — first_recognition_at=2026-08-15 14:22 NOT COMPLETE: - HRIS integration: integration_hris field is blank — not connected - First redemption: first_redemption_at field is blank — no redemption recorded yet EARLY ENGAGEMENT SIGNALS (onboarding_usage.csv, 25 daily records, 2026-08-11 to 2026-09-04): - active_givers rose from 3 (2026-08-11, signup day) to 15 (2026-09-04) - Arithmetic: 15 − 3 = 12 more active givers; 15 / 3 = 5x (+400%) over the 25-day window - Trend is monotonic-ish growth with minor dips (e.g., 8/17=7 → 8/18=5 → 8/19=7; 8/20=6 → 8/21=9), but no sustained decline — net direction is up THREE THINGS TO COVER ON THE CALL: 1. HRIS integration is not connected (integration_hris blank) — confirm status/blocker and get it scheduled. 2. No redemption recorded yet (first_redemption_at blank) despite first recognition on 2026-08-15 — find out if points are stuck unredeemed; walk them through redemption to close the loop. 3. Active givers grew 5x (3→15) since signup — confirm this growth is broad-based across the org and not concentrated in the 2 admins added, since admin count (2) hasn't scaled with usage.
90-DAY RENEWAL RISK BRIEF (window: 2026-09-14 to 2026-12-13; all 20 accounts fall inside this window, latest renewal 2026-11-24 is 71 days out) DATE-SOURCE DECISION RULE Chargebee terms flags 5 accounts is_multi_year=true. Per instruction, ChurnZero is known to be wrong on multi-year contracts, so for those 5 I trust Chargebee (cb_renewal_date). The remaining 15 accounts are is_multi_year=false and CZ/CB dates match exactly on every one of them — no conflict, so ChurnZero date is used (nothing to override). DISAGREEMENTS FLAGGED (5 of 20 accounts — all multi-year) - C-0B7D2C30: CZ 2026-09-10 vs CB 2026-09-15 (5-day gap) - C-0BCDB8C2: CZ 2027-09-18 vs CB 2026-09-18 (CZ off by a full year) - C-0D2AB865: CZ 2026-09-10 vs CB 2026-09-22 (12-day gap) - C-0BBE3E60: CZ 2027-09-26 vs CB 2026-09-26 (CZ off by a full year) - C-0F5D2323: CZ 2026-09-10 vs CB 2026-09-29 (19-day gap) All other 15 accounts: CZ and CB agree exactly, no flag. PER-ACCOUNT DETAIL (company = account_alias, no company-name field exists in source data) 1. C-0B7D2C30 — CSM Dana Mercer — ARR $65,901.00 — date used 2026-09-15 (CB, multi-year override; CZ disagreed by 5 days) — seat util 274/476 = 57.56% — 3mo trend Jun97→Jul94→Aug84 = -13.40% — RISK: HIGH — declining usage (-13.4%) combined with sub-60% utilization and a renewal date inside 1 day of today. 2. C-0BCDB8C2 — CSM Cole Ingram — ARR $54,427.00 — date used 2026-09-18 (CB, multi-year override; CZ showed 2027, a full-year data error) — seat util 232/424 = 54.72% — 3mo trend Jun127→Jul118→Aug110 = -13.39% — RISK: HIGH — declining usage under 60% utilization, plus the CZ year-error itself signals unreliable account hygiene. 3. C-0D2AB865 — CSM Elena Sinclair — ARR $38,022.00 — date used 2026-09-22 (CB, multi-year override; CZ disagreed by 12 days) — seat util 250/407 = 61.43% — 3mo trend Jun125→Jul117→Aug109 = -12.80% — RISK: HIGH — steady double-digit usage decline into an 8-day-out renewal. 4. C-0BBE3E60 — CSM Dana Mercer — ARR $30,993.00 — date used 2026-09-26 (CB, multi-year override; CZ showed 2027, a full-year data error) — seat util 74/114 = 64.91% — 3mo trend Jun39→Jul35→Aug33 = -15.38% — RISK: HIGH — sharpest usage decline in the book, moderate utilization not enough to offset it. 5. C-0F5D2323 — CSM Cole Ingram — ARR $90,647.00 — date used 2026-09-29 (CB, multi-year override; CZ disagreed by 19 days) — seat util 111/390 = 28.46% — 3mo trend Jun20→Jul21→Aug18 = -10.00% — RISK: HIGH — lowest seat utilization of any account (28.5%) on the largest ARR line in this cohort; date reliability itself is also compromised. 6. C-0EC6999D — CSM Elena Sinclair — ARR $79,419.00 — date used 2026-10-03 (CZ=CB, agree) — seat util 31/112 = 27.68% — 3mo trend Jun17→Jul16→Aug15 = -11.76% — RISK: HIGH — near-lowest utilization in the book (27.7%) plus declining trend on a $79K line. 7. C-0B20DB64 — CSM Dana Mercer — ARR $21,770.00 — date used 2026-10-07 (CZ=CB, agree) — seat util 214/378 = 56.61% — 3mo trend Jun294→Jul298→Aug294 = 0.00% — RISK: MEDIUM — utilization stuck under 60% though usage is flat, not declining. 8. C-0BBC4E7A — CSM Cole Ingram — ARR $56,374.00 — date used 2026-10-10 (CZ=CB, agree) — seat util 228/337 = 67.66% — 3mo trend Jun142→Jul141→Aug139 = -2.11% — RISK: LOW — healthy utilization, trend essentially flat. 9. C-0FD551AB — CSM Elena Sinclair — ARR $48,815.00 — date used 2026-10-14 (CZ=CB, agree) — seat util 210/376 = 55.85% — 3mo trend Jun123→Jul122→Aug126 = +2.44% — RISK: MEDIUM — sub-60% utilization, though usage is ticking up. 10. C-0F9F8F13 — CSM Dana Mercer — ARR $46,230.00 — date used 2026-10-18 (CZ=CB, agree) — seat util 199/352 = 56.53% — 3mo trend Jun185→Jul185→Aug182 = -1.62% — RISK: MEDIUM — sub-60% utilization, flat/slightly down usage. 11. C-0BC34584 — CSM Cole Ingram — ARR $16,740.00 — date used 2026-10-22 (CZ=CB, agree) — seat util 327/494 = 66.19% — 3mo trend Jun104→Jul104→Aug106 = +1.92% — RISK: LOW — healthy utilization, stable/growing usage. 12. C-0B7A7546 — CSM Elena Sinclair — ARR $35,062.00 — date used 2026-10-25 (CZ=CB, agree) — seat util 182/205 = 88.78% — 3mo trend Jun64→Jul65→Aug63 = -1.56% — RISK: LOW — near-ceiling utilization outweighs a negligible dip. 13. C-0B369871 — CSM Dana Mercer — ARR $85,128.00 — date used 2026-10-29 (CZ=CB, agree) — seat util 317/422 = 75.12% — 3mo trend Jun326→Jul330→Aug333 = +2.15% — RISK: LOW — strong utilization and growing usage on the second-largest ARR line. 14. C-0B144C78 — CSM Cole Ingram — ARR $30,899.00 — date used 2026-11-02 (CZ=CB, agree) — seat util 169/224 = 75.45% — 3mo trend Jun101→Jul101→Aug106 = +4.95% — RISK: LOW — strong utilization, clearly growing usage. 15. C-0FC4DBB8 — CSM Elena Sinclair — ARR $94,732.00 — date used 2026-11-05 (CZ=CB, agree) — seat util 356/464 = 76.72% — 3mo trend Jun189→Jul191→Aug193 = +2.12% — RISK: LOW — largest ARR line in the book, strong utilization and growing usage. 16. C-0D5BBE3A — CSM Dana Mercer — ARR $39,740.00 — date used 2026-11-09 (CZ=CB, agree) — seat util 85/102 = 83.33% — 3mo trend Jun88→Jul90→Aug91 = +3.41% — RISK: LOW — high utilization, growing usage. 17. C-0FB9D5AF — CSM Cole Ingram — ARR $63,158.00 — date used 2026-11-13 (CZ=CB, agree) — seat util 144/199 = 72.36% — 3mo trend Jun173→Jul173→Aug176 = +1.73% — RISK: LOW — solid utilization, growing usage. 18. C-0B344485 — CSM Elena Sinclair — ARR $64,384.00 — date used 2026-11-16 (CZ=CB, agree) — seat util 224/287 = 78.05% — 3mo trend Jun238→Jul240→Aug244 = +2.52% — RISK: LOW — strong utilization, growing usage. 19. C-0CB2C1B4 — CSM Dana Mercer — ARR $40,628.00 — date used 2026-11-20 (CZ=CB, agree) — seat util 386/473 = 81.61% — 3mo trend Jun47→Jul48→Aug49 = +4.26% — RISK: LOW — strong utilization, growing usage. 20. C-22170CA1 — CSM Cole Ingram — ARR $45,646.00 — date used 2026-11-24 (CZ=CB, agree) — seat util 251/294 = 85.37% — 3mo trend Jun143→Jul148→Aug146 = +2.10% — RISK: LOW — high utilization, growing usage. RISK MIX HIGH (6): C-0B7D2C30, C-0BCDB8C2, C-0D2AB865, C-0BBE3E60, C-0F5D2323, C-0EC6999D — ARR $65,901+$54,427+$38,022+$30,993+$90,647+$79,419 = $359,409.00 MEDIUM (3): C-0B20DB64, C-0FD551AB, C-0F9F8F13 LOW (11): all remaining accounts TOTALS Total ARR renewing in window (sum of all 20 accounts): $65,901+$54,427+$38,022+$30,993+$90,647+$79,419+$21,770+$56,374+$48,815+$46,230+$16,740+$35,062+$85,128+$30,899+$94,732+$39,740+$63,158+$64,384+$40,628+$45,646 = $1,048,715.00 ARR at risk (HIGH-rated accounts only): $359,409.00 (34.27% of total renewing ARR = 359,409/1,048,715) Note: no company-name, industry, or contact-level fields exist in the provided files — all identifiers above are account_alias as given. No deals data was provided, so pipeline/expansion context could not be incorporated.
Support Ticket Themes — Q2/Q3 2026 (80 tickets total, tags ignored, classified by body_text) BROAD PATTERNS (ranked by ARR exposure, not volume) 1. HRIS Employee Provisioning Failures Count: 12 (15.0% = 12/80) | Distinct accounts: 3 | ARR affected: $114,000 ($48,000 + $36,000 + $30,000) Ticket ids: IC-460059, IC-460062 Rec: Escalate new-hire provisioning sync to eng as P0 — lowest volume but highest ARR exposure, and 7 of 12 tickets are from one account (C-0B2213A9), signaling a recurring unresolved break. 2. Gift Card / Redemption Fulfillment Failures Count: 18 (22.5% = 18/80) | Distinct accounts: 7 | ARR affected: $68,800 (11,000+10,700+10,300+9,600+9,600+8,900+8,700) Ticket ids: IC-460025, IC-460035 Rec: Audit the redemption pipeline end-to-end (checkout timeout, gift-card email delivery, and points-deducted-without-fulfillment) — three distinct failure modes across 7 accounts point to a systemic vendor/integration issue, not isolated bugs. 3. Points Not Posting / Recognition Delivery Failures Count: 20 (25.0% = 20/80) | Distinct accounts: 9 | ARR affected: $31,100 (4,500+4,500+4,200+3,500+3,400+2,900+2,900+2,700+2,500) Ticket ids: IC-460004, IC-460016 Rec: Highest volume and broadest account spread (9 accounts) — prioritize root-causing the points-crediting job (weekend/batch pattern evident) even though per-account ARR is smaller. 4. Slack Integration Sync/Auth Failures Count: 14 (17.5% = 14/80) | Distinct accounts: 4 | ARR affected: $18,900 (5,400+5,200+4,400+3,900) Ticket ids: IC-460041, IC-460047 Rec: Fix OAuth token refresh/sync-toggle reset bug — concentrated in C-0BA71F12 (6 of 14 tickets), suggests a specific integration regression rather than a widespread one. SINGLE-ACCOUNT NOISE (excluded from pattern ranking above) 5. Billing/Invoice Seat-Count Dispute — C-0E9C27D1 only Count: 16 (20.0% = 16/80) | Distinct accounts: 1 | ARR affected: $52,000 Ticket ids: IC-460069, IC-460078 Note: Despite $52,000 ARR and 16 tickets (would rank #2 by ARR if treated as a pattern), 100% of these tickets come from a single account. This is a single-account billing/CS dispute (seat-count reconciliation), not a systemic issue. Rec: Route to CS/Finance for direct account-level seat reconciliation with C-0E9C27D1 — this is a renewal-risk escalation, not an engineering fix. Arithmetic check: 12+18+20+14+16 = 80 tickets (100%). Themes derived solely from body_text; tag field was not used for grouping.
Ranking based on prospect C-82AF3719 (Technology, Mid-Market, employee_recognition, NA-West), scored only against customers with has_case_study=true. Scoring method: weight = order of criteria as given (industry=4, size_band=3, use_case=2, region=1); score = sum of weights for matching fields. Case-study customers and matches: - C-FEFCC020: 0 matches → score 0 - C-11209339: 0 matches → score 0 - C-9D69D147: size_band, region match → 3+1 = 4 - C-11C31562: size_band, use_case, region match → 3+2+1 = 6 - C-CD4829A7: industry, size_band match → 4+3 = 7 - C-0CE315B2: 0 matches → score 0 - C-64171065: industry, size_band, use_case match → 4+3+2 = 9 - C-A13C193D: industry, size_band, region match → 4+3+1 = 8 Top 3: 1. C-64171065 — score 9. Matches: industry (Technology), size_band (Mid-Market), use_case (employee_recognition). Mismatch: region (NA-East vs NA-West). 2. C-A13C193D — score 8. Matches: industry (Technology), size_band (Mid-Market), region (NA-West). Mismatch: use_case (retention vs employee_recognition). 3. C-11C31562 — score 6. Matches: size_band (Mid-Market), use_case (employee_recognition), region (NA-West). Mismatch: industry (Manufacturing vs Technology). No billing data or contact names included, per instructions; all customers named have has_case_study=true.
PAID CHANNELS — Trailing 6 Months (2026-03 to 2026-08) paid_search - Spend: $6,000 x 6 = $36,000 - SQMs: 40, SQOs: 18 - Cost/SQM: $36,000 / 40 = $900.00 - Cost/SQO: $36,000 / 18 = $2,000.00 - SQM→SQO rate: 18/40 = 45.00% - Pipeline: $720,000 - Pipeline/$: $720,000 / $36,000 = 20.00x linkedin_ads - Spend: $4,000 x 6 = $24,000 - SQMs: 25, SQOs: 8 - Cost/SQM: $24,000 / 25 = $960.00 - Cost/SQO: $24,000 / 8 = $3,000.00 - SQM→SQO rate: 8/25 = 32.00% - Pipeline: $96,000 - Pipeline/$: $96,000 / $24,000 = 4.00x - FLAGGED (SQO precedes SQM): CT-000044 (sqm 2026-07-23, sqo 2026-07-18); CT-000041 (sqm 2026-06-14, sqo 2026-06-09). If these 2 SQOs/$24,000 pipeline are excluded as data-quality errors: SQOs=6, Pipeline=$72,000, cost/SQO=$4,000.00, rate=6/25=24.00%, pipeline/$=$72,000/$24,000=3.00x. paid_social - Spend: $3,000 x 6 = $18,000 - SQMs: 0 - Cost/SQM, Cost/SQO, SQM→SQO rate, Pipeline/$: UNDEFINED (spend with zero SQMs — not zero) - Pipeline: $0 webinars - Spend: $1,500 x 6 = $9,000 - SQMs: 12, SQOs: 5 - Cost/SQM: $9,000 / 12 = $750.00 - Cost/SQO: $9,000 / 5 = $1,800.00 - SQM→SQO rate: 5/12 = 41.67% - Pipeline: $60,000 - Pipeline/$: $60,000 / $9,000 = 6.67x ORGANIC CHANNELS — no spend data provided organic_search - Volume (SQMs): 30, SQOs: 10 - SQO rate: 10/30 = 33.33% - Pipeline: $90,000 referral - Volume (SQMs): 15, SQOs: 6 - SQO rate: 6/15 = 40.00% - Pipeline: $48,000 FLAGS - linkedin_ads: CT-000044 and CT-000041 — SQO date precedes SQM date (see above). No other channel has this issue. REALLOCATION RECOMMENDATION Shift budget away from paid_social toward paid_search, with webinars as a secondary add. paid_social has spent $18,000 with zero SQMs generated in 6 months — the clearest signal to pause spend and investigate (broken tracking, wrong audience, or dead channel) before any further dollars go there. paid_search is the strongest paid performer on every metric (lowest cost/SQO at $2,000, highest rate at 45%, and 20.00x pipeline/$) and would most efficiently absorb reallocated budget. webinars is second-best on cost/SQO ($1,800, even better than paid_search) and pipeline/$ (6.67x) but on a much smaller base (12 SQMs) — a good candidate for a modest scale-test. linkedin_ads is the weakest paid channel on cost/SQO ($3,000) and pipeline/$ (4.00x, or 3.00x adjusted for the flagged rows) and its 2 date-integrity errors reduce confidence further; it's the next candidate to trim. CONFIDENCE Low-to-moderate. Sample sizes are thin for firm reallocation decisions: paid_search (n=40 SQM/18 SQO) is the only channel with a base large enough to trust its rate; webinars (n=12/5) and linkedin_ads (n=25/8) are small enough that a handful of deals swing the rate materially (e.g., linkedin_ads's 32% rate rests on just 8 SQOs, 2 of which have a date-sequence error). paid_social's zero-SQM result is directionally strong (6 months, $18,000, 0 conversions) but doesn't diagnose *why* — worth a root-cause check (tracking/attribution) before treating it as proof the channel doesn't work. Organic channels have no spend basis for CAC comparison, so pipeline/rate figures there are informational only, not efficiency metrics.
BATTLECARD: RIVALLY (updated 2026-09-14) POSITIONING (one line) Points-based recognition platform, originally positioned for mid-market (S02, S04), now expanding into EU enterprise via multi-language support and data residency (S12, S15). PRICING - 2026-01-20 (S03, pricing_page): Recognition Starter listed at $5/user/mo, annual billing required. - 2026-04-01 (S08, pricing_page): confirmed still $5/user/mo, same tier/terms. - 2026-08-12 (S17, pricing_page): price raised to $7/user/mo, annual billing required. CONFLICT NOTE: S17 is the newest pricing_page source and supersedes S03/S08 — current list price is $7/user/mo, not $5. The old card's "$5 as of 2026-01" was accurate at the time but is now stale. Deal-level color (not list price, shown for context): S13 (2026-06-02) quoted $6.50/user/mo to a 500-seat prospect on annual term — below the then-current $5 list, so likely a mid-cycle discount or bundle, unclear from snippet. S18 (2026-08-14) shows $7/user/mo list with 15% off for a 3-year term, consistent with the new S17 price. WHERE THEY WIN - EU data residency: pitched to prospects (S05, 2026-02-18) and made generally available with a new Dublin office (S15, 2026-07-01). - EU enterprise fit: reviewer calls it strong for distributed EU teams, multi-language praised (S12, 2026-05-21). - Fast setup / Slack integration: mid-market reviewer reports sub-week setup, Slack works out of the box (S04, 2026-02-02). - Support responsiveness: under 4-hour response time praised (S22, 2026-08-30). - Recognition feed engagement: praised in two reviews (S02, 2025-12-15; S16, 2026-07-19). WHERE WE WIN - Analytics depth: an 800-seat prospect chose Bonusly over Rivally specifically citing analytics depth (S25, 2026-09-03). Consistent with reviewer complaints that Rivally's analytics are limited (S02, 2025-12-15) and reporting dashboards are basic (S07, 2026-03-22). - Migration/export lock-in: analytics exports are CSV-only, making migration off Rivally hard (S20, 2026-08-25) — a switching-cost risk we can use in competitive deals. - Admin/IT controls: no SCIM provisioning, manual user management is painful (S10, 2026-04-28); admin console still lacks bulk recognition editing (S24, 2026-09-02); admin tooling generally lags peers (S16, 2026-07-19). - EMEA rewards catalog thinner than US catalog (S14, 2026-06-14) — undercuts their EU enterprise pitch. OBJECTIONS AND RESPONSES 1. "Rivally is cheaper." → List price rose from $5 to $7/user/mo as of 2026-08-12 (S17), narrowing/erasing the gap; they're now offering discounts (15% for 3-yr lock-in, S18) to hold deals, which increases switching cost. 2. "Rivally has EU data residency, we need that." → Confirmed true (S15), but their EMEA rewards catalog is thinner than their US catalog (S14) — residency without full feature parity. 3. "Rivally is quick to set up with Slack." → Confirmed for initial setup (S04), but their admin console lacks bulk recognition editing (S24) and SCIM (S10), which shows up in ongoing IT admin burden, not initial setup. 4. "Rivally's reporting is good enough." → Multiple independent reviews call it limited/basic (S02, S07), and CSV-only exports make later migration painful (S20). We've won at least one large deal (800 seats) specifically on analytics depth (S25). RECENT CHANGES (reverse chronological) - 2026-09-01: Rivally Pulse survey add-on exits beta, priced separately, not bundled (S23). - 2026-08-20: Microsoft Teams app v2 enters public preview (S19). - 2026-08-12: Recognition Starter price increase, $5 → $7/user/mo (S17). - 2026-07-01: Dublin office opens; EU data residency goes GA (S15). - 2026-05-09: Hires ex-Workday VP EMEA to lead European expansion (S11). - 2026-03-05: Launches Rivally Pulse engagement-survey add-on (S06). - 2025-11-04: Raises Series C, $40M led by Northgate Ventures (S01). 12-MONTH WIN/LOSS RECORD VS. RIVALLY (deals_with_competitor.csv, 2025-09 through 2026-08, all rows competitor=Rivally) Wins (13): Deal-A9FD43, Deal-7AA785, Deal-44C524, Deal-0D0CD6, Deal-D5B790, Deal-5C636E, Deal-67BE14, Deal-1B6969, Deal-F03E7B, Deal-072E31, Deal-F65C8F, Deal-E46EAB, Deal-1D2392 Losses (7): Deal-7767F5, Deal-5645A5, Deal-C6FFAA, Deal-D263E0, Deal-935746, Deal-9066A6, Deal-72A02F Arithmetic: 13 + 7 = 20 total deals. Win rate = 13/20 = 65%. By month: 2025-09 1W-1L, 2025-10 2W-0L, 2025-11 1W-1L, 2025-12 1W-1L, 2026-01 2W-0L, 2026-02 2W-0L, 2026-03 1W-1L, 2026-04 0W-2L, 2026-05 0W-1L, 2026-06 1W-0L, 2026-07 1W-0L, 2026-08 1W-0L. Sums: wins 1+2+1+1+2+2+1+0+0+1+1+1=13; losses 1+0+1+1+0+0+1+2+1+0+0+0=7. Note: April–May 2026 is a 0W-3L stretch, coinciding with Rivally's EU expansion push (S11, S15) — worth flagging for follow-up, but no snippet directly ties those specific losses to EU positioning. UNVERIFIED / CONTRADICTED FROM OLD CARD - "Rivally was acquired by WorkHuman in 2025" — no snippet supports this. UNVERIFIED; remove from card. (S01, 2025-11-04, shows Rivally raising an independent Series C in the same period, which is inconsistent with having just been acquired — flagging as a likely stale/incorrect claim, not confirmed either way.) - "Rivally lacks a Slack integration" — CONTRADICTED by S04 (2026-02-02): "Slack integration worked out of the box." Remove/correct. - "Points-based recognition for mid-market" — re-sourced and kept (S02, S04). - "$5/user/month, annual billing (as of 2026-01)" — re-sourced (S03) but superseded by S17; updated to $7/user/mo above. - "Strong in EU enterprise with multi-language support" — re-sourced and kept (S12). EXCLUDED AS NON-FACTS (rep opinion on calls, not competitor facts per instructions) - S09 (AE Bryce Harmon: "Rivally's UI is clunky," explicitly unverified against the product). - S21 (AE Elena Sinclair: "thinks Rivally is discounting aggressively," explicitly rep opinion).
SEQUENCE METRICS (aggregated across 3 steps; rate = totals/total sent) New Logo Nurture: sent 1,386 | opened 490 (35.4%) | replied 90 (6.5%) | meetings 27 (1.9%). Weakest step: Step 3 (18/428 = 4.2% reply, vs 8.4% and 6.5% on steps 1–2). Expansion Nurture: sent 875 | replied 59 (6.7%) | meetings 12 (1.4%). Open rate unreliable — see tracking error below. Weakest step: Step 3 (12/275 = 4.4% reply). Cold Outbound - HR Leaders: sent 1,785 | opened 545 (30.5%) | replied 8 (0.45%) | meetings 0 (0%). Weakest step: Step 3 (1/590 = 0.17% reply). Cold Outbound - People Ops: sent 1,163 | opened 340 (29.2%) | replied 29 (2.5%) | meetings 6 (0.52%). Weakest step: Step 3 (6/377 = 1.6% reply). TRACKING ERROR Expansion Nurture, Step 2: opened 340 > sent 300. Opens cannot exceed sends — this row's open data (and any blended sequence open rate using it) is invalid until corrected. AUDIENCE OVERLAP 21 contacts appear in both Cold Outbound - HR Leaders and Cold Outbound - People Ops (e.g., CT-001217, CT-001159, CT-001153, CT-000884, CT-000908 — full list available). These people are being cold-outbounded twice under different personas. 2 contacts appear in both New Logo Nurture and Expansion Nurture: CT-000301, CT-000624. UNDER-2% REPLY: FAILURE MODE Only Cold Outbound - HR Leaders sits under 2% at the sequence level (0.45%). Its open rate (30.5%) is close to the other sequences, but reply/meetings are near-zero (0 meetings across 1,785 sends). Opens without replies at this scale point to an audience/message-fit failure, not deliverability — the subject line gets opened, but the offer or targeting doesn't land with HR Leaders as a segment. ONE CHANGE PER WEAK SEQUENCE - Cold Outbound - HR Leaders: pause and rebuild targeting/offer (root cause, not a copy tweak) — fix first, largest spend (1,785 sends) for zero pipeline. - Cold Outbound - People Ops: cut or rewrite Step 3 (reply rate less than half of Step 1). - Expansion Nurture: correct Step 2 tracking before acting on any open-rate conclusion. - New Logo Nurture: shorten/revise Step 3 to arrest the reply decay (8.4% → 4.2%).
QTD SNAPSHOT — Q3-2026 (days elapsed: 66/92 = 71.74% of quarter) SQMs - QTD actual: 230 | Target: 300 | Delta: 230-300 = -70 - Actual % of target: 230/300 = 76.67% - Expected % at this point in quarter: 66/92 = 71.74% - Pace: 76.67% > 71.74% → AHEAD SQOs - QTD actual: 84 | Target: 120 | Delta: 84-120 = -36 - Actual % of target: 84/120 = 70.00% - Expected % elapsed: 71.74% - Pace: 70.00% < 71.74% → BEHIND (-1.74pp) DS2s - QTD actual: 40 | Target: 75 | Delta: 40-75 = -35 - Actual % of target: 40/75 = 53.33% - Expected % elapsed: 71.74% - Pace: 53.33% < 71.74% → BEHIND (-18.41pp) Closed-lost MIA rate - Actual rate: closed_lost_mia/closed_lost_total = 5/25 = 20.00% - Target: 10.00% (lower_better) | Delta: 20.00% - 10.00% = +10.00pp (2x target) - Pace: this is a ratio metric, not a cumulative count, so the days-elapsed pacing model used for the other rows doesn't apply cleanly. Status vs target only: currently running at 2x the target rate → BEHIND/off-target. Same-quarter closes - QTD actual: 10 | Target: 20 | Delta: 10-20 = -10 - Actual % of target: 10/20 = 50.00% - Expected % elapsed: 71.74% - Pace: 50.00% < 71.74% → BEHIND (-21.74pp) Active pipeline coverage - QTD actual: $3,000,000 | Target: $4,000,000 | Delta: $3,000,000 - $4,000,000 = -$1,000,000 - Actual % of target: 3,000,000/4,000,000 = 75.00% - Expected % elapsed: 71.74% - Pace: 75.00% > 71.74% → AHEAD What moved this week: Not determinable from the data provided. The two files supplied are a single QTD-actual snapshot (marketing_qtd.csv) and static targets (targets.csv) with no prior-week or trended values — there is no week-over-week or historical time series in the given data, so week-over-week movement cannot be calculated or described. This would require a prior snapshot (e.g., last week's QTD actuals) to diff against.
Q3 weighted forecast is $115,976.75 (COMMIT $44,729 + 35% x BEST_CASE $203,565). Caveat: Deal-D348E1 ($13,770 COMMIT) closes 2026-10-15, just outside the quarter, and would add $13,770 if pulled in. Owner is blank on 85/86 deals and why-buys is missing on all 7 in-quarter COMMIT deals, so this number can't be rep-checked or quota-validated.
Subject: Checking in on pricing for the People team Hi [Name], Following up on the pricing recap I sent August 5 for 150 seats — wanted to make sure it reached you okay. In our demo, you and the People team responded well to automated milestone awards and the points catalog, and I know birthdays and anniversaries are still tracked manually today. Would you have 15 minutes this week to review the pricing together and answer any questions from the team? Best, Alex (72 words. Sourced from ENG-00001 pricing email 2026-08-05 and ENG-00002 demo reaction; deal alias Deal-0D2F7A, owner Alex Franklin per stalled_deal.csv. Recipient name not provided in data — placeholder used.)
Marketing: The team logged 46 SQMs against a 52 target — a shortfall of 6, or 88.5% of goal (46/52 = 0.885), an 11.5% miss. Webinars pulled real weight, contributing 18 of those 46 SQMs (18/46 = 39.1% of the week's total). Paid search stayed efficient and steady, holding cost per SQM flat at $150 — proof that even on a lighter week, the channel mix is working hard for us. Sales: Sales pushed 14 SQOs forward and locked 9 DS2 meetings, adding $310,000 in new pipeline — an average of $22,142.86 per SQO ($310,000 / 14). Three deals closed same-quarter, a nice velocity signal to carry into next week. CS: CS saved 2 renewals this week and lifted team NPS to 61 — a strong trust marker for the relationships we're building. 3 red-flag accounts remain open heading into next week and will need continued attention. PLG: Product-led growth brought in 412 new signups with activation at 31% — a healthy chunk of new users finding their footing. 38 companies crossed the aha-moment threshold of 10 recognition gives, a clear sign the core loop is clicking for a growing set of teams.
PARTNER DIGEST — 2026-08-24 to 2026-09-04 Apex Rewards Co (active): 2 sourced opps this period — Deal-DDAAF2 ($180,000) and Deal-2CF33E ($95,000), both logged in stage DS1 with UTM Source = Partner confirmed. Sourced pipeline: $180,000 + $95,000 = $275,000. Co-webinar locked for 2026-09-15. HRCloud Partners (active): 1 sourced opp this period — Deal-F1CDA5 ($140,000); integration referral closed the security review and the opp moved to stage DS2. Sourced pipeline: $140,000. CultureBridge (active): 2 sourced opps this period — Deal-096E1D ($60,000) and Deal-067213 ($75,000), both early stage. Sourced pipeline: $60,000 + $75,000 = $135,000. WorkWell Group (active): No sourced deals this period. Planning call booked 2026-09-09 to restart the joint playbook in Q4. Recogniq (quiet): No activity logged this period. KudosWave (quiet): No activity logged this period. PeopleFirst Advisors (quiet): No activity logged this period. TotalPerk (quiet): No activity logged this period. Totals check: 5 deals in partner_deals.csv, all attributed above (Apex 2, HRCloud 1, CultureBridge 2, WorkWell 0). Combined partner-sourced pipeline: $275,000 + $140,000 + $135,000 + $0 = $550,000.
Q1: Yes. Encrypted at rest using AES-256. [P1] Q2: Yes. TLS 1.2 or higher. [P1] Q3: Yes, SOC 2 Type II, renewed annually. Available to prospects under NDA. [P2] Q4: Contract duration plus 90 days, then deleted from production systems. [P3] Q5: Published at trust.bonusly.com. Customers receive 30 days notice before a new subprocessor is added. [P4] Q6: Yes, SAML 2.0 SSO, available on the Enterprise plan (SCIM provisioning also included). [P5] Q7: Daily backups; encrypted; retained for 35 days. [P6] Q8: Unanswerable from excerpts provided. No ISO 27001 reference in [P1]-[P8]. Would need an ISO 27001 certificate or the compliance/certifications page of the Trust portal. Q9: Unanswerable from excerpts provided. No SLA percentage stated in [P1]-[P8]. Would need the Master Services Agreement or SLA addendum. Q10: Unanswerable from excerpts provided. No mention of HIPAA or BAA in [P1]-[P8]. Would need the legal/contracts team or a HIPAA compliance page.
FINDING 1 — ALWAYS-trigger phrase overlap/duplication
1a. comms-drafter vs email-drafter — CRITICAL — action: MERGE
Identical trigger phrases claimed by both skills: "write me an email," "draft a follow-up," "help me reply," "what should I say," "bump email," "contract nudge." comms-drafter's own text acknowledges the overlap ("For deep deal strategy, use deal-strategy-coach — this skill drafts, that skill diagnoses") but never disambiguates itself from email-drafter, which covers the identical sales/CS email surface. Two skills will both claim the same utterance.
Proposal: merge email-drafter's sales/CS-specific logic (Gmail signature retrieval, HubSpot owner scoping) into comms-drafter's "Sales Communications" section, then delete email-drafter and redirect deal-strategy-coach's email-drafter reference to comms-drafter.
1b. pipeline-intelligence-report vs weekly-pipeline-report — WARNING — action: TRIM_DESC
pipeline-intelligence-report claims "pipeline update," "what's the pipeline look like." weekly-pipeline-report claims "run the pipeline update," "what does pipeline look like," "update the pipeline." These phrasings are functionally indistinguishable to a router, yet one produces a 10-tab scored HTML (pipeline-intelligence-report) and the other a Ben Lavin-specific weekly ops report (weekly-pipeline-report).
Proposal: trim weekly-pipeline-report's description to require an explicit qualifier ("weekly," "Ben," "demand gen," "mid-month") and remove the bare "update the pipeline" / "what does pipeline look like" phrases so pipeline-intelligence-report is the default for unqualified "pipeline update" asks.
FINDING 2 — Circular delegation chain
deal-strategy-coach → email-drafter → deal-strategy-coach — CRITICAL — action: REVIEW
deal-strategy-coach.SKILL.md ("Manager-to-prospect email frameworks"): "use the `email-drafter` skill which automatically retrieves your Gmail signature." email-drafter.SKILL.md ("Lane marker"): "If the user needs strategic deal coaching ... point them to the deal-strategy-coach skill." This is a 2-node cycle — a session bouncing between the two on a coaching+email request has no defined exit condition.
Proposal: make the edge one-directional. deal-strategy-coach should inline a short signature-retrieval step (or call a shared reference file) rather than invoking email-drafter as a skill; email-drafter's lane marker should remain outbound-only.
FINDING 3 — Dangling delegation targets (referenced, not in manifest)
- prospect-research-multithreading — referenced by comms-drafter, deal-strategy-coach, email-drafter (contact lookup, multithread handoff) — CRITICAL — action: REVIEW (confirm skill exists outside this manifest or remove the references)
- bonusly-brand — referenced by comms-drafter (Step 0, mandatory), email-drafter, sales-forecast, weekly-pipeline-report — CRITICAL — action: REVIEW
- bonusly-data-questions, bonusly-product-questions, bonusly-business-reporting-questions, bonusly-rewards-questions, bonusly-ppp-questions, bonusly-feature-flag-questions, bonusly-deal-desk-questions, bonusly-datadog-questions — all 8 referenced in analysis-validator §12.4 as mandatory delegation targets for specialist validation — WARNING — action: REVIEW
- skill-orchestrator — referenced by analysis-validator §11 and signalforge-feedback (activation checklist) as the thing that registers/triggers these skills — WARNING — action: REVIEW
Proposal for all: either confirm these live in a separate (unlisted) manifest tier and cross-link it, or strip the dead references so analysis-validator's Gate 1 delegation table and the comms/email/coach handoffs don't point into a void.
FINDING 4 — Version conflict
analysis-validator internal self-reference conflict — WARNING — action: UPDATE_BODY
Frontmatter/header/changelog all state current version is v3.6 (May 9, 2026, G2-F ID Resolution). But the §7 Validation Trail output template hardcodes: "Validator: analysis-validator v3.2." The skill would stamp every published report with a stale version number.
Surviving version: v3.6 (matches header "Version: 3.6," changelog's newest entry, and the active G2-F gate). Proposal: replace the "v3.2" literal in the §7 trail template with "v3.6" (or better, a variable placeholder).
FINDING 5 — Manifest descriptions exceeding 1,024 chars
Count = 0 of 14. Max declared is 1,006 chars (pipeline-intelligence-report, signalforge-claim-compressor), 1,024 − 1,006 = 18 chars headroom; next closest is partner-digest at 1,004 (20 chars headroom). — INFO — action: REVIEW
Proposal: no action required now, but flag pipeline-intelligence-report, signalforge-claim-compressor, and partner-digest as "near-cap" — any future addition of a single trigger phrase will overflow them.
FINDING 6 — Hardcoded page IDs, dates, or person names in skill bodies
CRITICAL — action: REVIEW (systemic, spans most of the set)
- analysis-validator §12.3: hardcoded GTM roster with named individuals + numeric HubSpot owner IDs ("Updated May 4, 2026"), including a stale-employee note ("Use 'Reyer' — not 'Ashley Le' (inactive)"); §10 hardcodes escalation names "Manish or Amani."
- deal-strategy-coach: hardcoded Confluence page id 2257879045 ("AE Excellence Playbook April 2026") embedded as a live link.
- partner-digest: hardcoded Cloud ID, Space ID, folder ID, and 6 named Confluence page IDs (2265382925, 2236940297, 2237825028, 2239365136, 2238283777, 2286321666); hardcoded Slack user ID <@U03QLMBL7AR> and person name "Amani Phipps" as the fixed owner.
- pipeline-intelligence-report: hardcoded AE roster + owner IDs "verified May 2026"; hardcoded HubSpot org ID 1973303.
- weekly-pipeline-report: hardcodes person name "Ben Lavin" in the skill title itself; hardcoded Google Sheet IDs; hardcoded static Q1 2026 dollar figures ($365,152 vs $475,000; $2,490,532 vs $3,288,000).
- signalforge-feedback: hardcoded Confluence page ID 2295136266 and parent ID 2234417154.
Proposal: any personnel roster, owner-ID map, or one-time historical figure (Q1 2026 actuals, "verified May 2026") should move to a live query or a dated reference file that's re-pulled at run time, not embedded in SKILL.md prose — every named person here (roster, Ben Lavin, Manish/Amani) becomes a silent staleness risk the next time someone leaves or changes role.
FINDING 7 — Manifest drift, both directions
Within the provided snapshot: 0 drift. All 14 manifest rows (analysis-validator, closed-lost-analysis, comms-drafter, deal-strategy-coach, email-drafter, model-selection, next-to-close, partner-digest, pipeline-intelligence-report, sales-forecast, signalforge-claim-compressor, signalforge-feedback, stale-pipeline-report, weekly-pipeline-report) have a matching file, and all 14 files have a matching row — 14/14 = 100% both directions. — INFO — action: REVIEW
Note: this does not cover the skills named in Finding 3 (prospect-research-multithreading, bonusly-brand, the 8 bonusly-*-questions skills, skill-orchestrator) — those aren't "drift" by this manifest's own accounting (they have no row either), but they are load-bearing dependencies missing from the catalog entirely. Proposal: extend skill_manifest.csv to include every skill referenced by name inside a SKILL.md body, even if it lives in a different tier/repo, so drift checks actually cover the full dependency graph.
Runbook: Reward-Worker Queue Backlog Incident (#incident-2026-08-29-reward-queue, resolved) Step 1 — Acknowledge & assign IC [M01] Action: Acknowledged PagerDuty alert (reward-worker queue depth > 10k); took Incident Commander role. Who: Bryce Harmon Command: none documented (PagerDuty UI action) Verification: Not documented — needs confirmation. Rollback: N/A (non-state-changing action). Step 2 — Confirm queue depth [M02] Action: Checked reward queue depth. Who: Farid Osman Command: bundle exec rake sidekiq:queue_depth Result: 48,213 pending jobs (normal is under 500). Verification: Direct — command output. Rollback: N/A (read-only, non-state-changing). Step 3 — Inspect dead set [M03] Action: Reported dead set contains 112 jobs, all Redis::TimeoutError from around 13:58. Who: Farid Osman Command: Not documented — needs confirmation (inspection command absent). Verification: Reported by Farid; no independent verification documented. Rollback: N/A (read-only, non-state-changing). Step 4 — Disable auto-recognition enqueue [M04] Action: Paused enqueue to stop further job creation. Who: Farid Osman Command: bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)' Verification: Not documented — needs confirmation (no direct flag-state verification recorded). Rollback: bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)' (explicitly documented in M04). Step 5 — Clear dead set [M05] Action: Cleared out the dead set via console. Who: Elena Sinclair Command: Not documented — needs confirmation (exact console command absent). Verification: Not documented — needs confirmation. Rollback: Not documented — needs confirmation. (Dead-set clearing is state-changing/destructive; no rollback command, and none should be inferred.) Step 6 — Scale up reward-worker replicas [M06] Action: Scaled workers from 3 to 6 replicas. Who: Bryce Harmon Command: kubectl scale deployment/reward-worker --replicas=6 Verification: Not documented — needs confirmation (no direct replica-count verification recorded; the queue-depth drop in M07/M08 is a later, separate observation, not isolated proof of this step's effect). Rollback: kubectl scale deployment/reward-worker --replicas=3 (explicitly documented in M06). Step 7 — Observe queue draining [M07] Action: Reported queue depth down to 9,400 and falling ~1,200/min. Who: Farid Osman Command: Not documented — needs confirmation (measurement command absent). Verification: Reported observation; not an independent verification of a specific prior action. Rollback: N/A (read-only, non-state-changing). Step 8 — Verify recovery [M08] Action: Verified queue depth and error rate. Who: Cole Ingram Command: bundle exec rake sidekiq:queue_depth Result: Returns 0. Error rate in Datadog back to baseline. Verification: Direct — command output plus Datadog check. Rollback: N/A (read-only, non-state-changing). Step 9 — Re-enable auto-recognition enqueue [M09] Action: Re-enabled enqueue feature flag. Who: Bryce Harmon Command: bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)' Verification: Direct — 40 new jobs processed cleanly in the next 3 minutes. Rollback: Not documented — needs confirmation (do not infer disabling enqueue as its approved rollback). Step 10 — Scale reward-worker replicas back down [M10] Action: Scaled workers from 6 back to 3 replicas; queue stable at 0. Incident resolved. Who: Bryce Harmon Command: kubectl scale deployment/reward-worker --replicas=3 Verification: Reported — "queue stable at 0" stated in same message; not attributed to an independent check. Rollback: Not documented — needs confirmation (do not infer scaling back to 6 as its approved rollback). Items needing confirmation before this runbook is repeatable: Step 1 verification method; Step 3 inspection command; Step 4 flag-state verification; Step 5 exact command, verification, and rollback (dead-set clear); Step 6 replica-count verification; Step 7 measurement command; Step 9 rollback; Step 10 verification method and rollback.
FIRST ERROR 2026-09-03T14:01:12Z — reward-service — ERROR — "Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s" CASCADE (in order, from datadog_logs.csv) 1. 14:01:12Z reward-service ERROR — Redis::TimeoutError, connection to redis-primary:6379 timed out after 5s (first error) 2. 14:01:20Z reward-service ERROR — retry exhausted for RewardGiveJob 3. 14:01:30Z reward-service ERROR — retry exhausted for RewardGiveJob 4. 14:01:40Z reward-service ERROR — retry exhausted for RewardGiveJob 5. 14:01:40Z sidekiq ERROR — RewardGiveJob failed: Redis::TimeoutError; retrying in 60s 6. 14:02:28Z sidekiq ERROR — RewardGiveJob failed: Redis::TimeoutError; retrying 7. 14:02:30Z sidekiq WARN — "Queue reward depth above 10,000" 8. 14:03:05Z api-gateway ERROR — 502 upstream timeout calling reward-service /gives 9. 14:03:30Z web-app ERROR — Give form submission failed: upstream 502 from api-gateway 10. 14:03:31Z–14:06:52Z — repeating pattern of sidekiq ERROR (RewardGiveJob retrying), api-gateway ERROR (502 upstream timeout), web-app ERROR (Give form submission failed) — 8 more entries alternating across these three services through 14:06:52Z 11. 14:22:10Z reward-service INFO — "Redis connection restored; resuming job processing" (recovery) 12. 14:24:45Z sidekiq INFO — "Queue reward depth below 500" (queue drained) Arithmetic: outage duration (first error to Redis restored) = 14:22:10 − 14:01:12 = 20 min 58 sec. Queue fully drained 2 min 35 sec after restoration (14:24:45 − 14:22:10). SERVICE AND JOB INVOLVED - Upstream cause: Redis (redis-primary:6379), surfaced first in reward-service. - Job class failing: RewardGiveJob (sidekiq), per both datadog_logs.csv and sidekiq_jobs.csv (job IDs J-00001 through J-00012, failed_at 14:01:46Z–14:02:58Z). - Secondary job class also failing per sidekiq_jobs.csv: RecognitionDigestJob (J-00013–J-00016, failed_at 14:02:36Z–14:05:50Z, same Redis::TimeoutError) — not named in datadog_logs.csv, only in sidekiq_jobs.csv. - Downstream services pulled into the cascade: api-gateway (502s calling reward-service), web-app (Give form submission failures). DATADOG QUERY TO CONFIRM THE FIRST ERROR service:reward-service status:error "Redis::TimeoutError" "redis-primary:6379" from:2026-09-03T13:55:00Z to:2026-09-03T14:05:00Z WHAT THE LOGS DO NOT SHOW - Root cause of the Redis timeout itself (no entry explains why redis-primary became unreachable — no Redis-side log, network event, or infra alert in either file). - What action, if any, caused the "Redis connection restored" at 14:22:10Z — no restart, failover, or manual-intervention log entry appears between 14:06:52Z and 14:22:10Z. - Any log entries between 14:06:52Z and 14:10:56Z (a ~4-minute gap) — unexplained by the provided slice. - postgres checkpoint entries (14:10:56Z–14:20:59Z) show no error level and no explicit link to the Redis/reward incident; correlation to the outage is not established by the data. - Cross-reference between sidekiq_jobs.csv job_id values and the datadog_logs.csv ERROR lines — the CSV job failures do not carry service-log line references, so exact 1:1 mapping (which log line corresponds to which job_id) cannot be confirmed. - Whether the 16 jobs in sidekiq_jobs.csv (12 RewardGiveJob + 4 RecognitionDigestJob) represent the complete failed-job set or a sample — total failed-job count is not stated. - Customer/account-level impact (number of gives affected, users impacted) — not present in either file. - Any incident acknowledgment, IC assignment, or escalation record — absent from both files.
FEATURE FLAG SUMMARY (source: flags_export.csv, flag_code.md) 1. recognition_streaks_v2 — state: on, targeting: segment:beta_companies, companies: 42 Code: app/models/recognition.rb — gates StreakTracker.record(give) per company. 2. points_budget_guardrails — state: on, targeting: all_companies, companies: 220 Code: app/services/budget_service.rb — gates BudgetService#enforce! per company. 3. slack_dm_nudges — state: on, targeting: segment:region_na, companies: 87 Code: app/jobs/nudge_job.rb — gates SlackDm.send_nudge per company. 4. redeem_flow_redesign — state: off, targeting: targeted_list, companies: 12 Code: app/controllers/redeem_controller.rb — toggles RedeemV2Component vs RedeemV1Component per company. 5. analytics_dashboard_v3 — state: on, targeting: segment:tier_three, companies: 65 Code: app/controllers/analytics_controller.rb — gates AnalyticsV3 dashboard assignment per company. 6. ms_teams_app_v2 — state: off, targeting: targeted_list, companies: 9 Code: app/services/teams_installer.rb — gates TeamsAppV2.install per company. 7. legacy_give_modal — state: off, targeting: segment:legacy_plan, companies: 14 No code reference in flag_code.md. 8. survey_boosters_q3 — state: on, targeting: segment:legacy_plan, companies: 7 No code reference in flag_code.md. 9. paused_offboard_cleanup — state: off, targeting: (blank), companies: 0 No code reference in flag_code.md. No targets (empty targeting_rules and 0 companies). Flags with no code reference: legacy_give_modal, survey_boosters_q3, paused_offboard_cleanup (3 of 9). Flag with no targets: paused_offboard_cleanup (only one; blank targeting_rules, 0 company_count). Arithmetic check — total company_count across export: 42+220+87+12+65+9+14+7+0 = 456. No other flags are present in flags_export.csv beyond these 9; none omitted.
GREEN — NDA-1: Mutual, standard 2yr term/3yr survival, all five standard carve-outs present, Delaware law, no exclusivity/license created. Clause: "No license, no obligation to proceed, no exclusivity." Nothing outside standard terms. YELLOW — NDA-2: Standard carve-outs and Delaware law, but contains an embedded 18-month non-solicit of employees, which is a business-term commitment beyond confidentiality and needs counsel review before signing. Clause: "During the term of this Agreement and for eighteen (18) months thereafter, neither party shall solicit for employment or hire any employee of the other party with whom it came into contact under this Agreement." RED — NDA-3: One-way NDA favoring [PARTY C] with a 3-year non-compete embedded, foreign governing law/exclusive jurisdiction (Ireland), and zero confidentiality carve-outs stated — a combination of unusual terms requiring full legal review. Clause: "No confidentiality carve-outs are stated in this Agreement," compounded by "Recipient shall not, directly or indirectly, engage in or provide services to any business that competes with Discloser's business" and "the parties submit to the exclusive jurisdiction of its courts" (Ireland).