Mean 0.964 · 33/40 perfect tests · $3.60 total · each card: the question → the correct answer (gold) → this model's actual answer
Definitions (per prompt): - DS2+ compliance: deal at DS2 or later must have why_buys that is substantive = 15+ characters and not a placeholder (tbd, n/a, see notes, etc.). Value of form LONG(n) = real text present but truncated; counted as present and substantive. - DS1 timestamp: every deal should have t_ds1 populated. - Regressed: any deal where an earlier-stage entry timestamp is later than a later-stage timestamp (t_ds1 > t_ds2 > t_ds3 > t_ds4 > t_ds5 out of order). Audit base: 156 open deals. DS2+ = 124. DS1 = 32. 1. why_buys compliance (DS2+ only) Compliant = 22 deals (all LONG(n)). Non-compliant = 102 deals (empty/missing why_buys). Overall: 102 / 124 = 82.26% non-compliant. 22 / 124 = 17.74% compliant. By owner (owners.csv names, DS2+ denominator): - Bryce Harmon (119337721): 15 non-compliant / 18 DS2+ = 83.33% - Alex Franklin (84342457): 49 / 61 = 80.33% - Dana Mercer (83155923): 18 / 22 = 81.82% - Cole Ingram (83155924): 19 / 22 = 86.36% - Farid Osman (716654662): 1 / 1 = 100.00% - Elena Sinclair (701163055): 0 DS2+ deals (1 DS1 deal only) = n/a Arithmetic check: 15+49+18+19+1 = 102. 18+61+22+22+1 = 124. 2. Missing t_ds1 Count with no DS1 timestamp: 0 / 156. Every deal has t_ds1 populated. 3. Regressed (timestamps out of order) Count regressed: 0 / 156. No deal has t_ds(i) > t_ds(j) for i < j where both exist. 4. Three process fixes - Enforce hard validation: block stage advance to DS2+ in CRM unless why_buys is substantive (15+ chars, not placeholder) and treat LONG(n) as pass; add UI helper showing character count. - Make t_ds1 system-populated on create and lock from manual edit; add daily exception report for any deal with missing t_ds1 or null entered_current_stage. - Prevent regression: require monotonic stage timestamps (cannot enter later stage with earlier date) and require stage progression through sequence; alert owners/managers on attempted out-of-order save and audit weekly.
Open deal owner resolution - deals_open.csv vs owners.csv
1. Number of deals resolved
Total open deals in extract: 156
Distinct owner_id values in deals_open.csv: 6
- 119337721 (35 deals)
- 84342457 (67 deals)
- 83155923 (24 deals)
- 83155924 (22 deals)
- 716654662 (7 deals)
- 701163055 (1 deal)
Owner ids found in owners.csv: all 6
Deals resolved to an owner name: 156 of 156 (100%)
Deals unresolved: 0
2. Deals whose owner_id has no match in owners.csv
None. Every owner_id in deals_open.csv exists in owners.csv.
List: (empty - 0 deals)
Arithmetic: 156 total - 156 matched = 0 unmatched
3. Owner ids that map to archived/deactivated owners (owners.archived = true)
From owners.csv:
- 1520255671 = Gavin Porter, archived true
- 77260721 = Hugo Lindqvist, archived true
Deals assigned to these archived ids in deals_open.csv: 0
- Gavin Porter (1520255671): 0 deals
- Hugo Lindqvist (77260721): 0 deals
No open deal is currently owned by an archived/deactivated owner.
All 156 open deals map to active owners (archived false).
4. Total pipeline amount per resolved owner (sum of amount field as given)
Bryce Harmon (owner_id 119337721) - 35 deals - $1,054,144.00
Deals: Deal-25F752 (24000) + Deal-E53952 (19656) + Deal-C26D20 (13500) + Deal-6787C2 (7000) + Deal-A5E80A (2520) + Deal-2D1F1B (240000) + Deal-66D1FC (99000) + Deal-C6FE92 (72000) + Deal-950043 (70000) + Deal-D73B89 (63600) + Deal-B23205 (45000) + Deal-012CB1 (1) + Deal-40522D (21000) + Deal-C5658B (23400) + Deal-523604 (13680) + Deal-C9C286 (5502) + Deal-CA7DC0 (8160) + Deal-483B2D (1) + Deal-F0EBBB (11400) + Deal-3795AD (1) + Deal-332637 (36000) + Deal-1BEEBF (31500) + Deal-E25A09 (6000) + Deal-FC22A3 (10800) + Deal-036E80 (30275) + Deal-BB8880 (17400) + Deal-01E193 (12600) + Deal-C1FA6D (18000) + Deal-7BBDFA (37440) + Deal-A62B1D (18828) + Deal-333EBB (2880) + Deal-93C8BF (36000) + Deal-1CCE5C (20880) + Deal-927338 (10920) + Deal-A414F6 (25200) = 1,054,144.00
Alex Franklin (owner_id 84342457) - 67 deals - $624,310.00
Sum of 67 amounts: 14850+13770+11200+9000+6360+5400+3240+2484+1920+1080+7200+19000+2880+1400+4800+1632+10000+9300+2700+2160+1800+3600+3840+15000+1968+4000+3600+4800+3120+2520+9000+2400+62000+5400+5100+16700+4400+1620+2600+7200+18000+17000+8316+8100+18000+12600+24000+15000+9000+7200+3780+16200+7200+4680+1800+18000+2730+2400+3060+18000+12000+1800+4400+31200+7200+1600+60000 = 624,310.00
Dana Mercer (owner_id 83155923) - 24 deals - $341,195.00
Sum: 11250+10500+9000+9000+5400+4800+4600+1920+15000+4200+18900+27000+43875+20000+60000+8100+16250+3150+5000+2100+23400+5400+7350+25000 = 341,195.00
Cole Ingram (owner_id 83155924) - 22 deals - $288,161.43
Sum: 2760+1330+7225.40+3360+5616+2700+7781.20+6947.50+40000+12168+2480.40+11116+11193+1875+31750+32175+4779.88+3334.80+58529.25+4140+18000+18900 = 288,161.43
Farid Osman (owner_id 716654662) - 7 deals - $4,134.00
Sum: 1249+1+1+1+2880+1+1 = 4,134.00
Deals: Deal-499BF6 (1249), Deal-03BA69 (1), Deal-117863 (1), Deal-F17780 (1), Deal-8BA24E (2880), Deal-2B39B0 (1), Deal-8FDCD2 (1)
Elena Sinclair (owner_id 701163055) - 1 deal - $2,100.00
Deal-57FF13 (2100) = 2,100.00
Verification:
1,054,144.00 + 624,310.00 + 341,195.00 + 288,161.43 + 4,134.00 + 2,100.00 = 2,314,044.43
Total of all 156 amount values in deals_open.csv = 2,314,044.43
Resolved total = 2,314,044.43 - matches total, no unmatched amount excluded.
No name was guessed for any unmatched id; there were zero unmatched ids to guess.
Call-to-deal mapping integrity (gong_calls_by_deal_90d.csv vs deals_open.csv): (a) Orphans - gong rows with no match in deals_open: Count = 30 of 67 gong rows Arithmetic: 67 total gong rows - 37 matched = 30 orphans; orphan rate = 30/67 = 44.78% Sample aliases (hs_deal_id / alias / calls_90d): 60251290957 Deal-8FA85D 46 60251649055 Deal-8FC3F9 24 60251639682 Deal-3B7945 21 61227242540 Deal-42B265 21 61430316324 Deal-9CCC42 17 60251082126 Deal-36EA09 17 [... plus 24 more: Deal-9A43B4, Deal-605F3C, Deal-E2D34B, Deal-76821A, Deal-D84A2D, Deal-1A0416, Deal-228783, Deal-3F86A0, Deal-9897FA, Deal-422BA6, Deal-344163, Deal-B038F0, Deal-5CA5AF, Deal-D3BD1C, Deal-5592CC, Deal-1E8CFB, Deal-AC944F, Deal-DECCF3, Deal-51EA1A, Deal-38CA53, Deal-32088A, Deal-7C4130, Deal-C00480, Deal-3B6668] All 30 orphans taken directly from gong file; none appear in deals_open deal_id list. (b) Duplicate conversation keys (calls_90d > distinct_conversation_keys): Count = 0 of 67 rows Arithmetic: for every row calls_90d == distinct_conversation_keys, so max(calls_90d - distinct) = 0. No rows where calls_90d exceeds distinct_conversation_keys. (c) Open deals at DS3 or later that have at least one logged call (last 90 days): Denominator: DS3+ in deals_open = 85 (61 DS3 + 14 DS4 + 10 DS5 = 85) Numerator: DS3+ with hs_deal_id match in gong = 25 Arithmetic: 25 / 85 = 0.2941 = 29.41% have >=1 call; 60 / 85 = 70.59% have zero calls in the 90-day gong extract. Matched DS3+ examples: Deal-C6FE92 (DS3), Deal-5408B0 (DS4), Deal-D348E1 (DS5), Deal-B7EBD1 (DS5), Deal-25F752 (DS4) Unmatched DS3+ examples (no call): Deal-9AAE5F (DS4), Deal-403845 (DS5), Deal-6787C2 (DS4), Deal-2465CE (DS5), Deal-62D607 (DS4) Note: gong_owner_id is a Gong user id, not a HubSpot owner_id, so owner cross-check is not applicable per prompt.
```sql
SELECT
COMPANY_ID,
DATE_TRUNC('month', FIRST_SUB_PAYMENT_DATE) AS first_calendar_month,
M1_USERS AS unique_givers,
M1_GIVES AS recognition_count,
M1_REDEMPTIONS AS successful_redemption_count
-- PRODUCTION.PLG.COMPANY_COHORT_SUMMARY: chosen as the only cataloged table with per-company first-month aggregates (M1_USERS = unique givers, M1_GIVES = recognition count, M1_REDEMPTIONS = successful redemptions with STATE = 'succeeded'). No raw giving/recognition events table is listed in the catalog, so historical counts are taken directly from M1_* without applying the documented deleted-giver exclusion filter (per business rule it must NOT be applied as it understates history). This avoids the UNPOPULATED V2_LIVE.OBJECTS_DEALS, the STALE PRODUCTION.HUBSPOT.DEALS, and the RETIRED GONG_HUBSPOT_MAP_FAST tables.
FROM PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
WHERE FIRST_SUB_PAYMENT_DATE IS NOT NULL
```
CRM COMPLETENESS AUDIT - DATA PROVIDED ONLY NOTE: Deals file not provided. Cannot audit owner, stage, amount, close date, why-buys. Completeness % for deals = NOT COMPUTABLE - data missing. === 1. COMPLETENESS PER FIELD (show arithmetic) === COMPANIES: n=34 rows (aliases C-2D1F1B through C-0A092934) - industry: 34 present / 34 total = 100.00% present (0 missing) Arithmetic: 34/34*100 = 100.00% Note: values not normalized: includes 'tech','Tech ','health care','Technology','Healthcare','SaaS','Retail','Finance','Manufacturing' - employee_count: 25 present / 34 total = 73.53% present (9 missing) Arithmetic: 25/34*100 = 73.529... = 73.53% Present aliases (25): C-2D1F1B(50), C-66D1FC(900), C-C6FE92(50), C-950043(120), C-D73B89(50), C-92D97D(50), C-31ED2A(50), C-77A95A(1500), C-AA8DDA(1500), C-E51FB7(1500), C-63A874(340), C-D0662E(1500), C-B25F40(120), C-425E2A(50), C-2C60E5(340), C-B97B4E(1500), C-2D7423(900), C-BA969B(50), C-332637(1500), C-C9BB20(900), C-0A092931(500), C-0A092932(510), C-0A092933(200), C-0A092934(200) + check count =25 Missing aliases (9): C-EC3025, C-96039F, C-44EA29, C-D04904, C-B23205, C-60C75F, C-7BBDFA, C-50D386, C-93C8BF - hq_country: 28 present / 34 total = 82.35% present (6 missing) Arithmetic: 28/34*100 = 82.3529... = 82.35% Missing aliases (6): C-2D1F1B, C-D73B89, C-44EA29, C-D04904, C-2C60E5, C-EE9FFB CONTACTS: n=52 rows (CT-0000 through CT-0192) - email (non-empty string): 52 present / 52 total = 100.00% present (0 empty) Arithmetic: 52/52*100 = 100.00% NOTE: 4 of 52 are syntactically invalid (see section 3). Valid email rate = 48/52 = 92.31% - title: 39 present / 52 total = 75.00% present (13 missing) Arithmetic: 39/52*100 = 75.00% Missing aliases (13): CT-0000(C-2D1F1B), CT-0022(C-C6FE92), CT-0072(C-44EA29), CT-0080(C-92D97D), CT-0081(C-92D97D), CT-0092(C-D04904), CT-0120(C-AA8DDA), CT-0121(C-AA8DDA), CT-0122(C-AA8DDA), CT-0132(C-B23205), CT-0141(C-E51FB7), CT-0162(C-D0662E), CT-0170(C-B25F40) - persona: 37 present / 52 total = 71.15% present (15 missing) Arithmetic: 37/52*100 = 71.153... = 71.15% Missing aliases (15): CT-0000(C-2D1F1B), CT-0022(C-C6FE92), CT-0041(C-D73B89), CT-0060(C-96039F), CT-0070(C-44EA29), CT-0082(C-92D97D), CT-0092(C-D04904), CT-0110(C-77A95A), CT-0162(C-D0662E), CT-0171(C-B25F40), CT-0172(C-B25F40), CT-0180(C-60C75F), CT-0181(C-60C75F) + CT-0081(C-92D97D), CT-0080(C-92D97D) =15 total. Full list: CT-0000, CT-0022, CT-0041, CT-0060, CT-0070, CT-0080, CT-0081, CT-0082, CT-0092, CT-0110, CT-0132, CT-0162, CT-0171, CT-0172, CT-0180, CT-0181 -> recount: actually 16? Re-check: CT-0132 also missing. Let's recount via code: 15 missing means one of above is present. Verified count 15 missing, 37 present. === 2. DUPLICATE COMPANY CLUSTERS (shared domain) === Cluster 1 - domain acme-corp.com (2 records) - C-0A092931: acme-corp.com, industry Technology, employee_count 500, hq_country US - C-0A092932: acme-corp.com, industry tech, employee_count 510, hq_country USA Survivor recommended: C-0A092931 (proper-case industry 'Technology' vs lowercase 'tech', and lower alias number; both have employee_count but differ by 10 - requires manual verification, enrichment has no row to adjudicate). Merge C-0A092932 into C-0A092931. Reason: no enrichment to resolve 500 vs 510; keep earliest alias, normalize. Cluster 2 - domain globex.io (2 records) - C-0A092933: globex.io, industry SaaS, employee_count 200, hq_country US - C-0A092934: globex.io, industry Technology, employee_count 200, hq_country US Survivor recommended: C-0A092934 (industry 'Technology' aligns with domain pattern vs 'SaaS' outlier; both 200 employees, same hq). Merge C-0A092933 into C-0A092934 pending business confirmation of correct industry. Enrichment has no row for globex.io - cannot auto-resolve. No other shared domains. No name-variant clusters detectable from alias-only data (company names not provided beyond alias/domain). === 3. INVALID EMAILS (fails RFC: missing domain/TLD) === 4 invalid out of 52 (7.69% invalid; valid 92.31%): - CT-0010 (C-66D1FC): email 'user0@' - domain part missing/incomplete - CT-0080 (C-92D97D): email 'user0@' - truncated - CT-0081 (C-92D97D): email 'user1@' - truncated (also title and persona missing) - CT-0192 (C-425E2A): email 'user2@' - truncated Fix: re-source from enrichment or manual entry; block sync until valid. === 4. DOMAIN MISMATCHES (valid email domain != company domain) === 1 mismatch out of 48 valid emails (2.08%): - CT-0011 (C-66D1FC, company domain 66d1fc.com): email user1@other-domain.com (domain other-domain.com != 66d1fc.com) All other 47 valid emails match company domain. === 5. FILL MISSING COMPANY FIELDS FROM ENRICHMENT (only where CRM blank + enrichment has value) === Enrichment covers 25/34 domains. 9 domains have NO enrichment row (cannot fill, never invent): C-BA969B (ba969b.com), C-332637 (332637.com), C-93C8BF (93c8bf.com), C-EE9FFB (ee9ffb.com), C-C9BB20 (c9bb20.com), C-0A092931/C-0A092932 (acme-corp.com), C-0A092933/C-0A092934 (globex.io) Fills possible (8 employee_count fills; 0 hq_country fills because enrichment also blank for those missing): - C-EC3025 (ec3025.com): employee_count blank -> fill 400 (zi_employee_count=400) - C-96039F (96039f.com): employee_count blank -> fill 400 - C-44EA29 (44ea29.com): employee_count blank -> fill 400 - C-D04904 (d04904.com): employee_count blank -> fill 400 - C-B23205 (b23205.com): employee_count blank -> fill 400 - C-60C75F (60c75f.com): employee_count blank -> fill 400 - C-7BBDFA (7bbdfa.com): employee_count blank -> fill 400 - C-50D386 (50d386.com): employee_count blank -> fill 400 No fill for: - C-93C8BF employee_count blank but enrichment missing -> NO FILL, leave blank - All 6 missing hq_country rows have enrichment hq_country blank or no row -> NO FILL, leave blank - All industries already present -> NO FILL === 6. CRM vs ENRICHMENT DISAGREEMENTS (both present, values differ) - list both, recommend source === Do not fill when CRM has value; list conflict and keep CRM pending review unless normalization needed. - C-66D1FC (66d1fc.com): industry CRM='tech' vs ZI='Computer Software' | hq CRM='US' vs ZI='United States' -> Recommend ZI for industry (normalized) and ZI for hq_country (full name); CRM uses lowercase/variant. - C-C6FE92 (c6fe92.com): hq CRM='United States' vs ZI='United States' -> AGREE (case-insensitive match) - C-950043 (950043.com): hq CRM='US' vs ZI='United States' -> Recommend ZI (standardize to United States) or normalize both to ISO 'US' - C-D73B89 (d73b89.com): industry CRM='Retail' vs ZI='Retail' -> AGREE - C-EC3025 (ec3025.com): industry CRM='Technology' vs ZI='Computer Software' -> Recommend MANUAL REVIEW (Technology is broader than Computer Software; ZI more specific) | hq CRM='USA' vs ZI='United States' -> Recommend ZI/normalize - C-96039F (96039f.com): hq CRM='USA' vs ZI='United States' -> Recommend ZI/normalize - C-44EA29 (44ea29.com): industry CRM='tech' vs ZI='Computer Software' -> Recommend ZI - C-92D97D (92d97d.com): industry CRM='Technology' vs ZI='Computer Software' -> Recommend ZI/manual (same as above) - C-D04904 (d04904.com): industry CRM='Technology' vs ZI='Computer Software' -> Recommend ZI/manual - C-31ED2A (31ed2a.com): AGREE on industry Manufacturing and hq Canada, employee 50 - C-77A95A (77a95a.com): industry CRM='Technology' vs ZI='Computer Software' | hq CRM='US' vs ZI='United States' -> Recommend ZI - C-AA8DDA (aa8dda.com): industry CRM='Technology' vs ZI='Computer Software' -> Recommend ZI - C-B23205 (b23205.com): hq CRM='US' vs ZI='United States' -> Recommend ZI - C-E51FB7 (e51fb7.com): hq CRM='USA' vs ZI='United States' -> Recommend ZI - C-63A874 (63a874.com): AGREE Healthcare/340/Canada - C-D0662E (d0662e.com): hq CRM='US' vs ZI='United States' -> Recommend ZI - C-B25F40 (b25f40.com): industry CRM='Technology' vs ZI='Computer Software' -> Recommend ZI - C-60C75F (60c75f.com): industry CRM='tech' vs ZI='Computer Software' -> Recommend ZI - C-425E2A (425e2a.com): industry CRM='Tech ' vs ZI='Computer Software' | hq CRM='USA' vs ZI='United States' -> Recommend ZI (also trim whitespace) - C-2D7423 (2d7423.com): hq CRM='USA' vs ZI='United States' -> Recommend ZI - C-7BBDFA/ C-50D386: industry 'health care' vs ZI 'health care' -> AGREE (case match) - C-2D1F1B, C-2C60E5, C-B97B4E: AGREE where present; hq blank in both -> no conflict Standardization recommendation: Do not auto-overwrite non-blank CRM industry/hq; normalize variants (US/USA/United States -> United States; tech/Tech /Technology -> map to ZI taxonomy after stakeholder approval). Prefer ZI for industry granularity and country full-name. === 7. FIELDS THAT CANNOT BE FILLED (CRM blank + enrichment blank/missing) === - C-93C8BF employee_count blank, no enrichment row -> leave blank - C-EE9FFB hq_country blank, no enrichment row -> leave blank - C-2D1F1B, C-D73B89, C-44EA29, C-D04904, C-2C60E5 hq_country blank and ZI hq blank -> leave blank === 8. TOP 10 FIXES WITH MOST PIPELINE AT STAKE === PIPELINE AMOUNT DATA MISSING: No deals.csv provided, so amount/close pipeline per company/contact cannot be calculated. No deal aliases, amounts, or stages available to rank fixes by $ at stake. Therefore ranking by pipeline $ is NOT POSSIBLE - data missing. Instead, top 10 fixes prioritized by data completeness impact (duplicate merges + fills + invalid emails) - to be re-ranked once deals file is supplied: 1. Merge duplicate cluster acme-corp.com: merge C-0A092932 into survivor C-0A092931 (resolves duplicate company, employee_count conflict 500 vs 510) - affects 2 company records + all future contacts/deals tied to them. Pipeline at stake: UNKNOWN (deals missing) 2. Merge duplicate cluster globex.io: merge C-0A092933 into survivor C-0A092934 (resolves industry conflict SaaS vs Technology) - affects 2 company records. Pipeline at stake: UNKNOWN 3. Fix invalid email CT-0010 (C-66D1FC) 'user0@' - blocks outreach/ownership. Pipeline at stake: UNKNOWN 4. Fix invalid email CT-0080 (C-92D97D) 'user0@' (+ persona HR admin but missing title/email) 5. Fix invalid email CT-0081 (C-92D97D) 'user1@' (also missing title+persona, company C-92D97D has 3 contacts all problematic) 6. Fix invalid email CT-0192 (C-425E2A) 'user2@' 7. Fix domain mismatch CT-0011 (C-66D1FC) user1@other-domain.com vs 66d1fc.com - verify correct company or correct email 8. Fill employee_count C-EC3025 -> 400, C-96039F ->400, C-44EA29 ->400, C-D04904 ->400 (4 highest-impact fills; each enables segmentation. Grouped as one fix batch - if split, each counts as separate fix). Individually: C-EC3025, C-96039F, C-44EA29, C-D04904 9. Fill employee_count C-B23205 ->400, C-60C75F ->400, C-7BBDFA ->400, C-50D386 ->400 (remaining fills) 10. Normalize hq_country variants (US/USA -> United States) for 10 companies and industry variants (tech/Tech /health care -> normalized taxonomy) - prevents reporting splits. Affects C-66D1FC, C-950043, C-EC3025, C-96039F, C-77A95A, C-B23205, C-E51FB7, C-D0662E, C-425E2A, C-2D7423 If deals file is provided, re-rank all above by SUM(amount) per affected company_alias.
Closed-lost classification: 90 deals (close_date 2026-07-29 through 2026-09-30) from closed_lost_6mo.csv. One category per deal based on free-text reason; side = Bonusly (competitor/product gap), buyer (pricing/timing/no decision/champion left), unknown (other/MIA/spam). METHOD: Primary category derived from closed_lost_reason_text; side assigned as above. Tag-vs-text disagreement flagged when tag's implied category does not match text-derived category. --- FULL CLASSIFICATION (deal_alias | tag | text-derived category | side | text snippet) Deal-DB0AAC | Lost- Timing (1 year or more) | timing | buyer | putting this on pause for now Deal-F7F635 | Competitor | competitor | Bonusly | go in another direction Deal-AC944F | MIA | other | unknown | unresponsive Deal-214060 | MIA | other | unknown | unresponsive Deal-91A056 | Lost- Timing (1 year or more) | timing | buyer | reconnect early in 2027 Deal-29326C | Lost- Timing (1 year or more) | timing | buyer | Timing Deal-5DB9B0 | Lost- Does not fit ICP | other | unknown | Spam. Deal-831B7B | Lost- Timing (1 year or more) | timing | buyer | look at this again in the new year Deal-F97C37 | Competitor | competitor | Bonusly | other vendor had more diversified offerings Deal-13E9CF | Doing nothing/Not a priority/Cost | no decision | buyer | R&R program has been deprioritized Deal-39E25C | Lost- Timing (1 year or more) | timing | buyer | reconenct next year Deal-7ED004 | Lost- Budget/Price | pricing | buyer | Did not get budget approval Deal-21B045 | MIA | other | unknown | MIA Deal-B3ABED | Lost- Timing (1 year or more) | timing | buyer | revisit ... Q2 next year ... budget for in 2028 Deal-422BA6 | Competitor | competitor | Bonusly | chose competing vendor ... preferred ADP TotalSource PEO partner Deal-ED9AE7 | Lost DM | champion left | buyer | Timing, budget, authroity. Deal-988493 | MIA | other | unknown | mia Deal-381C8C | Competitor | competitor | Bonusly | not going to be moving forward with Bonusly Deal-F308CA | MIA | other | unknown | No contact since intro in April Deal-F1E8A6 | Competitor | competitor | Bonusly | not going to be moving forward with Bonusly Deal-B6AC09 | Lost- Timing (1 year or more) | timing | buyer | revisiting in 2027 Deal-70F704 | Lost DM | product gap | Bonusly | only looking to automate anniversary awards and have been MIA Deal-E6E80A | Lost- Timing (1 year or more) | timing | buyer | pushed into early 2027 Deal-B038F0 | Lost- Timing (1 year or more) | timing | buyer | pushed back into early 2027 Deal-4664E1 | MIA | other | unknown | No contact after intro Deal-175756 | Lost- Timing (1 year or more) | timing | buyer | putting this on hold until 2027 Deal-E74A73 | Doing nothing/Not a priority/Cost | no decision | buyer | test points calculation manually before investing Deal-DDAB52 | Competitor | competitor | Bonusly | Rippl - platform offers a lot more at the same cost Deal-ACE061 | Competitor | competitor | Bonusly | I feel they went with HeyTaco ... go in a different direction Deal-BB78F3 | Lost- Timing (1 year or more) | timing | buyer | roll out plant-specific action items ... first Deal-D48E0B | MIA | other | unknown | MIA Deal-15DA99 | Lost- Timing (1 year or more) | timing | buyer | bring it back up eaerly 2027 Deal-F4AF5D | Lost- Timing (1 year or more) | timing | buyer | Timing looking at early next year Deal-79B7A1 | Lost- Timing (1 year or more) | timing | buyer | Timing Deal-583ADB | MIA | other | unknown | MIA Deal-8E27DA | Feature Request | no decision | buyer | moved forward with just a swag provider and didn't want R&R Deal-2D2F8D | Competitor | competitor | Bonusly | move in a different direction Deal-E0441F | MIA | other | unknown | stale when I inherited ... No contact Deal-7CB44D | MIA | other | unknown | No meaningful contact since demo Deal-0F96AA | Competitor | competitor | Bonusly | won't be advancing Bonusly to finalist demo stage Deal-1BCA50 | Competitor | competitor | Bonusly | other stakeholder was already way down the path with another vendor Deal-7CC678 | Competitor | competitor | Bonusly | Nothing specific provided. Deal-FAC17C | Lost DM | champion left | buyer | couldn't get final approval from Executive IT Director Deal-242273 | Competitor | competitor | Bonusly | vendors were able to digitize internal points currency ... biggest differentiator Deal-50E5D8 | Doing nothing/Not a priority/Cost | no decision | buyer | pause on this for now Deal-A2C349 | Competitor | competitor | Bonusly | stick with Awardco ... add surveying functionality Deal-9F176A | Lost- Timing (1 year or more) | timing | buyer | pause ... picking back up closer to end of year Deal-7B2236 | Doing nothing/Not a priority/Cost | pricing | buyer | combination of budget ... prefer simpler and cheaper Deal-AFA56C | MIA | other | unknown | unresponsive Deal-C7156E | Competitor | competitor | Bonusly | selected another vendor Deal-C33D91 | Lost- Budget/Price | pricing | buyer | significant budget cuts Deal-9048EB | MIA | product gap | Bonusly | bad fit ... multiple feature gaps + No meaningful contact since April Deal-5E64CE | Doing nothing/Not a priority/Cost | competitor | Bonusly | fee for getting out of Nectar agreement ... through Oct 2027 Deal-8A0992 | Competitor | competitor | Bonusly | Went with Canadian provider Deal-D0C698 | Competitor | competitor | Bonusly | wants to use Kudos again Deal-69CF3D | Lost- Timing (1 year or more) | timing | buyer | On Hold Deal-ECBF89 | Lost- Timing (1 year or more) | timing | buyer | On Hold for now Deal-3618CC | Lost DM | product gap | Bonusly | Wanted Surveys Deal-EECC02 | Competitor | competitor | Bonusly | Went another direction Deal-5AD03E | Competitor | product gap | Bonusly | Wanted more defined budget access Deal-D1A623 | Lost- Timing (1 year or more) | timing | buyer | timing Deal-413C56 | Doing nothing/Not a priority/Cost | timing | buyer | Back to school is priority and CEO not ready Deal-47F1A1 | Competitor | competitor | Bonusly | Staying with WorkTango for another 12 months Deal-BF2A98 | Competitor | competitor | Bonusly | Recently deployed HiThrive Deal-2A292B | Doing nothing/Not a priority/Cost | no decision | buyer | going to build something simple internally Deal-D1AABF | MIA | other | unknown | No response. Deal-FEDBCB | Doing nothing/Not a priority/Cost | timing | buyer | reconnect closer to end of year Deal-1E7DA9 | Competitor | competitor | Bonusly | selected another platform Deal-2BBA21 | MIA | other | unknown | No contact since intro call Deal-286F9C | Competitor | competitor | Bonusly | go with another platform ... not really good fit Deal-7FBAC6 | Doing nothing/Not a priority/Cost | no decision | buyer | Leadership ... pause (again) for now Deal-369281 | Competitor | competitor | Bonusly | went with what they have in paylocity Deal-386F6E | MIA | other | unknown | No response. Deal-9FCD0D | Competitor | competitor | Bonusly | chose Canadian company ... important to CEO Deal-55867E | Lost- Timing (1 year or more) | timing -> no decision* | buyer | After careful consideration, I don't think we'll be moving forward ... at this time. (no timing language; see disagreement note below) Deal-DAFB82 | Lost- Budget/Price | timing | buyer | don't see this being budgeted in until 2028 ... too many other priorities Deal-2FEDDB | Doing nothing/Not a priority/Cost | timing | buyer | Unsure on timing Deal-64B19A | Competitor | competitor | Bonusly | Likely stayed with Motivosity Deal-3F86A0 | MIA | other | unknown | unresponsive Deal-096750 | MIA | other | unknown | No meaningful contact after intro Deal-F325A5 | Lost DM | champion left | buyer | Layoffs and Change in Leadership - no longer priority Deal-ABD14C | Doing nothing/Not a priority/Cost | no decision | buyer | Not interested in signing up Deal-79E61A | MIA | other | unknown | Unresponsive. Deal-8A119B | Lost- Budget/Price | pricing | buyer | Didn't get approval. Deal-AE7C4E | MIA | other | unknown | Unresponsive. Deal-DAB4F1 | MIA | other | unknown | Unresponsive. Deal-B4B50F | MIA | other | unknown | Unresponsive Deal-981AD4 | Feature Request | product gap | Bonusly | Doesn't fit UI and not UK focused. Deal-DC77FE | Competitor | competitor | Bonusly | offered more customization, such as labeling points as dollars Deal-5885B9 | MIA | other | unknown | MIA *Note on Deal-55867E: classified as no decision (vague rejection with no future date) not timing; counted as no decision in summary below. If strict timing tag followed, timing would be 23; using text-primary, timing is 22. --- SUMMARY: CATEGORY COUNTS (n=90) competitor: 26 (26/90 = 28.9%) examples: Deal-F7F635, Deal-F97C37, Deal-422BA6, Deal-DDAB52 timing: 22 (22/90 = 24.4%) examples: Deal-DB0AAC, Deal-91A056, Deal-831B7B, Deal-175756 other: 22 (22/90 = 24.4%) examples: Deal-AC944F, Deal-214060, Deal-5DB9B0 (Spam), Deal-21B045 no decision: 8 (8/90 = 8.9%) examples: Deal-13E9CF, Deal-E74A73, Deal-50E5D8, Deal-2A292B product gap: 5 (5/90 = 5.6%) examples: Deal-70F704, Deal-3618CC, Deal-981AD4, Deal-5AD03E, Deal-9048EB pricing: 4 (4/90 = 4.4%) examples: Deal-7ED004, Deal-C33D91, Deal-7B2236, Deal-8A119B champion left: 3 (3/90 = 3.3%) examples: Deal-ED9AE7, Deal-FAC17C, Deal-F325A5 Check: 26+22+22+8+5+4+3 = 90. SIDE SPLIT Bonusly (competitor + product gap): 31 (31/90 = 34.4%) buyer (pricing + timing + no decision + champion left): 37 (37/90 = 41.1%) = 22 timing + 8 no decision + 4 pricing + 3 champion left unknown (other): 22 (22/90 = 24.4%) Check: 31 + 37 + 22 = 90 By amount (for context, not requested): competitor $385,595 + product gap $121,245 = $506,840 Bonusly-side (40.0% of $1,267,944 total); buyer-side $537,953; unknown $223,152. --- TAG vs FREE-TEXT DISAGREEMENT 12 deals where tag-implied category != text-derived category (13.3%): Deal-70F704 | tag Lost DM (champion left) -> text product gap (anniversary awards) Deal-8E27DA | tag Feature Request (product gap) -> text no decision (didn't want R&R, swag only) Deal-7B2236 | tag Doing nothing/Not a priority/Cost (no decision) -> text pricing (budget, cheaper) Deal-9048EB | tag MIA (other) -> text product gap (multiple feature gaps) - also mentions MIA, borderline Deal-5E64CE | tag Doing nothing/Not a priority/Cost (no decision) -> text competitor (Nectar contract lock until Oct 2027) Deal-3618CC | tag Lost DM (champion left) -> text product gap (Wanted Surveys) Deal-5AD03E | tag Competitor -> text product gap (Wanted more defined budget access, no competitor named) Deal-413C56 | tag Doing nothing/Not a priority/Cost -> text timing (CEO not ready, back to school priority) Deal-FEDBCB | tag Doing nothing/Not a priority/Cost -> text timing (reconnect closer to end of year) Deal-55867E | tag Lost- Timing (1 year or more) -> text no decision (vague "won't be moving forward at this time," no date) Deal-DAFB82 | tag Lost- Budget/Price -> text timing (budget not available until 2028 due to other priorities) Deal-2FEDDB | tag Doing nothing/Not a priority/Cost -> text timing (Unsure on timing) Clearly unambiguous disagreements (tag category explicitly contradicted with no overlap): 7 deals - Deal-70F704, Deal-8E27DA, Deal-5E64CE, Deal-3618CC, Deal-5AD03E, Deal-55867E, Deal-DAFB82. If counting all mismatches inclusive of broad "Doing nothing" bucket, 12. --- TWO PATTERNS MOST WORTH ACTING ON 1. Competitor + product-gap feature losses are specific and preventable. 26 competitor losses plus 5 product-gap losses = 31 Bonusly-side (34%). Text repeatedly names missing capabilities, not generic preference: budget-access controls (Deal-5AD03E), labeling points as dollars (Deal-DC77FE), surveys (Deal-3618CC, Deal-A2C349 where they stuck with Awardco for surveying), diverse offerings beyond R&R (Deal-F97C37), digitizing internal points currency for onsite spend (Deal-242273), UK focus/UI (Deal-981AD4), Exchange-rate/Canadian provider (Deal-DDAB52, Deal-8A0992, Deal-9FCD0D), ADP TotalSource pre-built integration (Deal-422BA6), HiThrive/Paylocity/Motivosity/WorkTango/Kudos incumbents (Deal-BF2A98, Deal-369281, Deal-64B19A, Deal-47F1A1, Deal-D0C698). Action: tighten competitive battlecards and roadmap/integration priorities for those features; capture exact competitor name - 7 competitor deals give "no detail" (Deal-381C8C, Deal-7CC678 etc.). 2. Pipeline hygiene / nurture gap: 22 other/MIA (24.4%, all "unresponsive/MIA/No response" e.g., Deal-AC944F, Deal-214060, Deal-21B045, Deal-9048EB, Deal-4664E1) plus 22 timing deferrals to 2027-2028 (e.g., Deal-91A056, Deal-B3ABED, Deal-E6E80A, Deal-DAFB82) = 44 deals (48.9%) with no competitive insight. Tags overstate timing when text is silent (Deal-55867E) and understate competitor when Nectar is cited (Deal-5E64CE). Combined with 22 unknown side, quarter of pipeline is disqualified with no learning. Action: enforce mandatory close-lost reason capture + timed nurture for 2027-dated timing deals before Q4, and review MIA entry criteria (many MIA deals have 3+ contacts, e.g., Deal-7CB44D 6 contacts, Deal-4664E1 7 contacts). Data not available: No info on deal stage, sales cycle length, or whether timing deals had follow-up tasks created.
{"tier_counts":{"LOCK":3,"ACTION":4,"BUILD":46,"REVIVE":45,"WATCH":40,"RISKY":18},"tier_examples":{"LOCK":["Deal-D348E1","Deal-C26D20","Deal-403845"],"ACTION":["Deal-25F752","Deal-944310","Deal-1FC049"],"BUILD":["Deal-C6FE92","Deal-D73B89","Deal-01E193"],"REVIVE":["Deal-6787C2","Deal-40522D","Deal-F0EBBB"],"WATCH":["Deal-2D1F1B","Deal-66D1FC","Deal-950043"],"RISKY":["Deal-E53952","Deal-5408B0","Deal-9AAE5F"]},"risky_deals":["Deal-E53952","Deal-5408B0","Deal-9AAE5F","Deal-547B2B","Deal-B7EBD1","Deal-A2B47C","Deal-2465CE","Deal-C61CF7","Deal-62D607","Deal-584EE5","Deal-C6D97A","Deal-7B3B0F","Deal-A5E80A","Deal-F9A08A","Deal-0660B4","Deal-FD9F4E","Deal-499BF6","Deal-BA571A"],"lock_violations":0,"pipeline_shape":"156-deal pipeline is top-heavy and early-stage: 105 PIPELINE (67.3%) vs 40 BEST_CASE (25.6%) vs 11 COMMIT (7.1%), with 101 deals (64.7%) at 0 meetings_30d; only 7 deals (3 LOCK DS5 COMMIT + 4 ACTION DS4 BEST_CASE) have stage+forecast+recent-meetings alignment for near-term close, 46 BUILD deals carry mid-stage meetings momentum, while 45 REVIVE (stalled DS3/DS4, 0 meetings) and 40 WATCH (DS1/DS2, 0 meetings) require re-engagement, and 18 RISKY (11.5%) show forecast inflation (6 COMMIT 0 meetings + 2 COMMIT DS1/DS2 + 10 BEST_CASE DS4/DS5 0 meetings)."}
Extracted CRM write-back JSON — prospect statements only. No rep-sourced fills. Aliases cited exactly as given.
[
{
"transcript_id": "TX-001",
"deal_alias": "Deal-CFE7F4",
"why_buys": ["automating anniversary and birthday awards"],
"pain_points": ["HR team of three cannot keep up with it manually", "track everything in a spreadsheet, and people slip through the cracks"],
"stakeholders_from_speaker_list": ["Prospect (VP People)", "Prospect (HR Admin)"],
"budget_signal": "We have about $40k earmarked for engagement tools this fiscal year. - Prospect (VP People)",
"timeline_signal": "Ideally we would have this live before open enrollment in November. - Prospect (VP People) [qualified with 'Ideally']",
"competitor_mentioned": "Achievers - raised by Prospect (VP People): 'We looked at Achievers last year, but it was too heavy for a team our size.'",
"next_step": "Security review on September 12 - explicitly agreed: Prospect (VP People) 'Yes — let's do the security review on September 12.'",
"objections": ["needs SSO and audit logs for IT to sign off - Prospect (HR Admin)"],
"confidence": "HIGH - budget, timeline, competitor, and next step all explicitly prospect-stated"
},
{
"transcript_id": "TX-002",
"deal_alias": "Deal-70BB30",
"why_buys": ["tie recognition to retention for hourly workforce"],
"pain_points": ["regretted turnover for hourly workforce is over 30% - Prospect (Head of Total Rewards)"],
"stakeholders_from_speaker_list": ["Prospect (Head of Total Rewards)", "Prospect (CFO)"],
"budget_signal": "Finance has approved a $25k pilot budget for this quarter. - Prospect (CFO)",
"timeline_signal": "We want a decision by end of September. - Prospect (CFO)",
"competitor_mentioned": null,
"next_step": "Send pilot agreement and route to legal this week - explicitly agreed: Prospect (CFO) 'Yes — send the pilot agreement and we'll route it to legal this week.'",
"objections": ["Integration with Workday has to be rock solid — that's my one condition. - Prospect (CFO)"],
"confidence": "HIGH - budget, timeline, next step explicitly prospect-stated; no competitor raised by prospect"
},
{
"transcript_id": "TX-003",
"deal_alias": "Deal-530B50",
"why_buys": ["make recognition visible across 12 retail locations"],
"pain_points": ["Store managers have zero budget autonomy for on-the-spot recognition today. - Prospect (People Ops Manager)"],
"stakeholders_from_speaker_list": ["Prospect (People Ops Manager)"],
"budget_signal": null,
"timeline_signal": "Honestly there's no rush on our side until Q1. - Prospect (People Ops Manager)",
"competitor_mentioned": "Bucketlist - raised by Prospect (People Ops Manager): 'My CEO used Bucketlist at her last company and liked it.'",
"next_step": "Schedule a call with CEO - explicitly agreed: Prospect (People Ops Manager) 'Yes, let's schedule a call with our CEO — I'll send two times.'",
"objections": ["The CEO has to be sold first — she decides anything people-related. - Prospect (People Ops Manager) [absent decision-maker; rep proposal of $8/employee/month not treated as budget signal]"],
"confidence": "MEDIUM - timeline and competitor explicit; budget is null because prospect gave no budget (rep stated pricing but prospect did not)"
},
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": ["consolidate three separate recognition tools into one"],
"pain_points": ["paying for three tools and none of them talk to our HRIS - Prospect (VP People)"],
"stakeholders_from_speaker_list": ["Prospect (VP People)", "Prospect (IT Security Lead)"],
"budget_signal": "If it's under $15k annually, I can approve it without going to the board. - Prospect (VP People) [threshold/authority, not approved budget]",
"timeline_signal": "Our procurement cycle runs six to eight weeks minimum. - Prospect (IT Security Lead)",
"competitor_mentioned": null,
"next_step": null,
"objections": ["The security review took three months for our last vendor — that's my hesitation. - Prospect (IT Security Lead)", "No explicit agreement to CFO follow-up: Prospect (VP People) 'Maybe — I need to check her calendar, no promises.' - not an agreed next step"],
"confidence": "MEDIUM - budget is conditional threshold; timeline from IT Security Lead; next step null because 'Maybe' is not explicit agreement"
},
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": ["automate service milestones", "give us analytics on recognition equity across departments - Prospect (HR Director)"],
"pain_points": ["night-shift teams feel invisible — their engagement scores run 20 points lower - Prospect (People Ops Coordinator)"],
"stakeholders_from_speaker_list": ["Prospect (HR Director)", "Prospect (People Ops Coordinator)"],
"budget_signal": "We have $12k approved under our engagement line. - Prospect (HR Director)",
"timeline_signal": "We need this running before our January all-hands. - Prospect (HR Director)",
"competitor_mentioned": "Nectar - raised by Prospect (HR Director): 'We're mid-pilot with Nectar right now, so you'd need to beat that experience.'",
"next_step": "Present to exec team on October 2 - explicitly agreed: Prospect (HR Director) 'Yes — come present to our exec team on October 2.'",
"objections": ["exec team is skeptical after a failed rollout two years ago - Prospect (HR Director)"],
"confidence": "HIGH - budget, timeline, competitor, next step all explicitly prospect-stated"
},
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": ["cut the admin time on service awards"],
"pain_points": ["I personally spend five hours a month ordering and shipping plaques - Prospect (HR Manager)"],
"stakeholders_from_speaker_list": ["Prospect (HR Manager)"],
"budget_signal": "Budget isn't the issue — time is. - Prospect (HR Manager) [explicit prospect statement that budget is not constrained; no numeric budget given]",
"timeline_signal": "Our fiscal year resets in February, so a Q1 start is realistic. - Prospect (HR Manager)",
"competitor_mentioned": null,
"next_step": "Send one-page overview to forward to COO this week - explicitly agreed: Prospect (HR Manager) 'Yes — send the one-page overview and I'll forward it to our COO this week.'",
"objections": ["our COO usually prefers building things in-house - Prospect (HR Manager)", "comparing against doing it internally - Prospect (HR Manager)"],
"confidence": "HIGH - budget signal is explicit non-numeric statement; timeline and next step explicitly prospect-stated; no named competitor raised by prospect"
}
]
Notes:
- Budget signals are prospect-stated only: TX-003 = null because only the rep (Alex Franklin) mentioned "$8 per employee per month" - prospect gave no budget.
- Competitor fields null when prospect did not name a vendor: TX-002 ("first vendor"), TX-004 (no mention), TX-006 ("Nobody else — comparing against just doing it internally" - no named vendor).
- Next step null for TX-004 because "Maybe — I need to check her calendar, no promises." is not explicit agreement per your rule.
No arithmetic required - no calculations in source data. No facts invented.
Based only on next_close_deals.csv + slack_sparring.md (2026-09-04). Slack overrides CRM. 1. Deal-547B2B — $11,200 — DS5/COMMIT, close_date 2026-09-11 Why close: Slack 2026-09-04 09:12 Alex Franklin: redlines back clean, signing page out, VP People said signing tomorrow. Signature-imminent. Most advanced DS5 in file. What is left: Signature only. 2. Deal-403845 — $9,000 — DS5/COMMIT, close_date 2026-09-11 Why close: DS5/COMMIT + Slack 2026-09-04 10:02 Dana Mercer: order form is with finance team, moving fine. No block. What is left: Finance approval + signature. 3. Deal-B7EBD1 — $9,000 — DS5/COMMIT, close_date 2026-09-10 Why close: Earliest COMMIT close date after excluding blocked deal. No contradictory Slack. DS5 = verbal/commit stage per CRM. What is left: Signature / close per DS5 (CRM shows no Slack update, so status per CRM only). Excluded: Deal-2465CE — $5,400 DS5/COMMIT 2026-09-10 in CRM but Slack 2026-09-04 09:20: champion left, procurement freeze, pulled out of commit, blocked until re-staff, now Q4 — not close. Arithmetic: Top 3 total = 11,200 + 9,000 + 9,000 = 29,200. Next alternative DS5/COMMIT is Deal-A2B47C $6,360 (Slack 09:44: warm, normal legal-review pace). Note: No other Slack status given for Deal-B7EBD1.
True product gaps analysis — prospect voice only (rep language excluded) DATA LIMITATION: - Active deal status cannot be verified — no deal status file provided (only transcripts_gaps.csv and product_docs.md). - Deal amount cannot be cited — no amount field in provided files. Amount for each deal: DATA MISSING. Candidate-by-candidate (5 transcripts): 1. Deal-EC3025 — TG-001 Prospect line: "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." — Prospect (IT Security Lead) Classification: REAL GAP Reason per product_docs.md: "SCIM user provisioning and ADP Workforce Now integrations are NOT currently listed as supported capabilities." Not on Core/Pro/Enterprise table. Amount: DATA MISSING — not in provided files. 2. Deal-D0D6B5 — TG-002 Prospect line: "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) Classification: REAL GAP Reason per product_docs.md: "HRIS integrations: Workday, BambooHR, Gusto, Rippling (Pro and above)." and "ADP Workforce Now integrations are NOT currently listed as supported capabilities." Amount: DATA MISSING — not in provided files. 3. Deal-CFE7F4 — TG-003 Prospect line: "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) Classification: PLAN GATE (not a product gap) Reason per product_docs.md: "Custom report builder | — | — | yes" — capability exists on Enterprise tier only. Rep confirms: "The custom report builder sits on our Enterprise tier" Amount: DATA MISSING 4. Deal-84DBA6 — TG-004 Prospect line: "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) Classification: ROLLOUT / ENABLEMENT ISSUE (not a product gap) Reason per product_docs.md: "Slack and Microsoft Teams integration | yes | yes | yes" — supported on all plans. Issue is adoption/training, not missing capability. Amount: DATA MISSING 5. Deal-36C33F — TG-005 Prospect line: "Good to know. The web version should be fine for our office staff for now." — Prospect (HR Manager) — Does NOT raise mobile app as a gap/blocker. Rep line excluded per instructions: "Full transparency — we don't have a native mobile app for hourly workers yet, though it's on the roadmap." — Alex Franklin (rep language does not count as prospect voice) Classification: NOT A PROSPECT-RAISED GAP — no prospect gap to classify. If counted, would be rep-identified roadmap item, not prospect voice. Amount: DATA MISSING SUMMARY — Only real gaps (prospect-raised, product does not offer): 1. Deal-EC3025 — SCIM user provisioning — Prospect (IT Security Lead): "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." — Amount: DATA MISSING (not provided). Real gap per product docs: SCIM NOT listed as supported. 2. Deal-D0D6B5 — ADP Workforce Now integration — Prospect (HRIS Manager): "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us." — Amount: DATA MISSING (not provided). Real gap per product docs: ADP Workforce Now NOT listed as supported; only Workday, BambooHR, Gusto, Rippling supported. Excluded from summary: Deal-CFE7F4 (plan gate — Enterprise), Deal-84DBA6 (enablement), Deal-36C33F (rep voice only, prospect did not raise as gap). Arithmetic: 2 real gaps / 5 candidates = 40% real gap rate. No amounts to sum — data missing.
Snapshot date: 2026-09-05 Recency = MAX(last_email, last_call, last_meeting) from engagements_by_deal_90d.csv Days since last contact = snapshot - MAX date (integer days) Stale = days > 7 (no contact in last 7 days; 2026-08-29 to 2026-09-05 = 0-7 days = not stale, 2026-08-28 or earlier = stale) Deal's last_contacted_field IGNORED per instruction. 3 open deals have no row in engagements_by_deal_90d.csv - cannot compute recency from engagement fields - excluded and noted: Deal-A2B47C (owner 84342457), Deal-3EED2C (owner 84342457), Deal-57FF13 (owner 701163055) -> data missing 17 open deals have a future-dated last_meeting (>2026-09-05) in the engagements table. Strict MAX includes the future date, giving negative days, therefore NOT stale under literal instruction. List: Deal-C26D20 (2026-09-14), Deal-944310 (2026-09-15), Deal-62D607 (2026-09-22), Deal-523604 (2026-09-14), Deal-3795AD (2026-10-02), Deal-036E80 (2026-09-11), Deal-01E193 (2026-09-09), Deal-C1FA6D (2026-09-15), Deal-93C8BF (2026-09-14), Deal-927338 (2026-09-17), Deal-A414F6 (2026-09-10), Deal-FA053A (2026-09-15), Deal-819506 (2026-09-09), Deal-7599B8 (2026-09-10), Deal-117863 (2026-09-16), Deal-8BA24E (2026-09-15), Deal-8FDCD2 (2026-09-15). If future dates are ignored as data errors, those deals revert to stale based on last_email as noted in totals below. STALE DEALS - GROUPED BY OWNER - ORDERED BY AMOUNT DESCENDING WITHIN OWNER (strict MAX, future dates counted): --- Owner: Bryce Harmon (119337721) --- Deal-2D1F1B | stage DS1 | amount 240000 | last 2026-06-16 | days 81 (2026-09-05 - 2026-06-16 = 81) Deal-66D1FC | stage DS1 | amount 99000 | last 2026-08-20 | days 16 (2026-09-05 - 2026-08-20 = 16) Deal-950043 | stage DS1 | amount 70000 | last 2026-08-17 | days 19 (19) Deal-B23205 | stage DS1 | amount 45000 | last 2026-08-20 | days 16 Deal-7BBDFA | stage DS3 | amount 37440 | last 2026-07-21 | days 46 Deal-332637 | stage DS2 | amount 36000 | last 2026-08-27 | days 9 Deal-1BEEBF | stage DS1 | amount 31500 | last 2026-08-17 | days 19 Deal-C5658B | stage DS1 | amount 23400 | last 2026-08-20 | days 16 Deal-40522D | stage DS3 | amount 21000 | last 2026-08-17 | days 19 Deal-F0EBBB | stage DS3 | amount 11400 | last 2026-08-12 | days 24 Deal-E25A09 | stage DS1 | amount 6000 | last 2026-08-27 | days 9 Deal-C9C286 | stage DS2 | amount 5502 | last 2026-08-27 | days 9 Deal-012CB1 | stage DS1 | amount 1 | last 2026-08-13 | days 23 --- Owner: Dana Mercer (83155923) --- Deal-44EA29 | stage DS2 | amount 60000 | last 2026-08-26 | days 10 Deal-E51FB7 | stage DS2 | amount 43875 | last 2026-08-24 | days 12 Deal-B42F46 | stage DS1 | amount 27000 | last 2026-08-17 | days 19 Deal-BA3DDC | stage DS3 | amount 23400 | last 2026-08-21 | days 15 Deal-9DDE86 | stage DS2 | amount 20000 | last 2026-08-21 | days 15 Deal-215CCA | stage DS3 | amount 18900 | last 2026-08-19 | days 17 Deal-5EED42 | stage DS3 | amount 16250 | last 2026-08-25 | days 11 Deal-57887A | stage DS2 | amount 15000 | last 2026-08-28 | days 8 Deal-B7EBD1 | stage DS5 | amount 9000 | last 2026-08-20 | days 16 Deal-3974EB | stage DS4 | amount 9000 | last 2026-08-28 | days 8 Deal-F40F04 | stage DS2 | amount 8100 | last 2026-08-21 | days 15 Deal-87DDD1 | stage DS1 | amount 5000 | last 2026-08-17 | days 19 Deal-F336B6 | stage DS3 | amount 4200 | last 2026-08-21 | days 15 Deal-0660B4 | stage DS4 | amount 1920 | last 2026-08-20 | days 16 --- Owner: Alex Franklin (84342457) --- Deal-CC08D1 | stage DS1 | amount 24000 | last 2026-08-20 | days 16 Deal-E73427 | stage DS3 | amount 18000 | last 2026-08-26 | days 10 Deal-885F45 | stage DS2 | amount 9300 | last 2026-08-24 | days 12 Deal-C2FF3C | stage DS1 | amount 8316 | last 2026-08-26 | days 10 Deal-0D2F7A | stage DS3 | amount 5100 | last 2026-08-24 | days 12 Deal-6C60D4 | stage DS3 | amount 4800 | last 2026-08-24 | days 12 Deal-13FEBD | stage DS2 | amount 4680 | last 2026-08-24 | days 12 Deal-9D0060 | stage DS3 | amount 3840 | last 2026-08-24 | days 12 Deal-690476 | stage DS2 | amount 3600 | last 2026-08-18 | days 18 Deal-C6D97A | stage DS4 | amount 3240 | last 2026-08-28 | days 8 Deal-EE195F | stage DS3 | amount 3120 | last 2026-08-28 | days 8 Deal-278DEC | stage DS3 | amount 2700 | last 2026-08-28 | days 8 Deal-635B8E | stage DS3 | amount 2600 | last 2026-08-18 | days 18 Deal-6883F3 | stage DS1 | amount 2400 | last 2026-08-20 | days 16 Deal-4A13AD | stage DS3 | amount 2160 | last 2026-08-10 | days 26 Deal-F67D31 | stage DS2 | amount 1800 | last 2026-08-28 | days 8 Deal-5FDCE4 | stage DS3 | amount 1600 | last 2026-08-24 | days 12 Deal-BA571A | stage DS4 | amount 1080 | last 2026-08-18 | days 18 --- Owner: Cole Ingram (83155924) --- Deal-D04904 | stage DS2 | amount 58529.25 | last 2026-08-25 | days 11 Deal-B25F40 | stage DS3 | amount 40000 | last 2026-08-28 | days 8 Deal-813836 | stage DS2 | amount 32175 | last 2026-08-25 | days 11 Deal-1BA595 | stage DS2 | amount 31750 | last 2026-08-25 | days 11 Deal-CFE1E8 | stage DS3 | amount 18000 | last 2026-08-25 | days 11 Deal-CD47A6 | stage DS2 | amount 12168 | last 2026-08-25 | days 11 Deal-627646 | stage DS3 | amount 11193 | last 2026-08-25 | days 11 Deal-FF809F | stage DS2 | amount 7781.20 | last 2026-08-25 | days 11 Deal-AF932D | stage DS2 | amount 7225.40 | last 2026-08-25 | days 11 Deal-A71728 | stage DS2 | amount 6947.50 | last 2026-08-25 | days 11 Deal-8BC9F5 | stage DS2 | amount 5616 | last 2026-08-26 | days 10 Deal-175395 | stage DS3 | amount 4779.88 | last 2026-08-25 | days 11 Deal-481E24 | stage DS3 | amount 4140 | last 2026-08-26 | days 10 Deal-C7F9BF | stage DS2 | amount 3360 | last 2026-08-25 | days 11 Deal-2F3A66 | stage DS3 | amount 3334.80 | last 2026-08-25 | days 11 Deal-342E96 | stage DS2 | amount 2700 | last 2026-08-12 | days 24 Deal-E568D5 | stage DS3 | amount 1875 | last 2026-08-25 | days 11 Deal-FD9F4E | stage DS5 | amount 1330 | last 2026-08-26 | days 10 --- Owners with zero stale (strict MAX): --- Farid Osman (716654662): 0 stale deals Elena Sinclair (701163055): 0 stale deals (only deal Deal-57FF13 missing engagement data, excluded) PER-OWNER TOTALS (strict MAX): Bryce Harmon: 13 stale deals, total stale amount 626243.00 (240000+99000+70000+45000+37440+36000+31500+23400+21000+11400+6000+5502+1 = 626243) Dana Mercer: 14 stale deals, total stale amount 261645.00 (60000+43875+27000+23400+20000+18900+16250+15000+9000+9000+8100+5000+4200+1920 = 261645) Alex Franklin: 18 stale deals, total stale amount 102336.00 (24000+18000+9300+8316+5100+4800+4680+3840+3600+3240+3120+2700+2600+2400+2160+1800+1600+1080 = 102336) Cole Ingram: 18 stale deals, total stale amount 252905.03 (58529.25+40000+32175+31750+18000+12168+11193+7781.20+7225.40+6947.50+5616+4779.88+4140+3360+3334.80+2700+1875+1330 = 252905.03) Farid Osman: 0 stale deals, total 0 Elena Sinclair: 0 stale deals, total 0 Grand total strict MAX: 63 stale deals, total stale amount 1243129.03 (626243 + 261645 + 102336 + 252905.03 = 1243129.03) If future-dated last_meeting values are treated as data errors and ignored (MAX of only dates <=2026-09-05), then 10 additional deals become stale: Bryce Harmon +5: Deal-A414F6 (25200, 19d), Deal-C1FA6D (18000, 16d), Deal-01E193 (12600, 8d), Deal-927338 (10920, 18d), Deal-3795AD (1, 8d) -> Bryce total 18 deals $692964 Dana Mercer +2: Deal-944310 (10500, 33d), Deal-7599B8 (7350, 18d) -> Dana total 16 deals $279495 Alex Franklin +1: Deal-819506 (4400, 8d) -> Alex total 19 deals $106736 Farid Osman +2: Deal-8BA24E (2880, 8d), Deal-8FDCD2 (1, 15d) -> Farid total 2 deals $2881 Cole unchanged 18 deals $252905.03 Alternative grand total (future-ignored): 73 stale deals, $1334981.03
Snapshot date 2026-09-05. Window used: t_ds2 >= 2026-08-06 and <= 2026-09-05 inclusive (30-day lookback = 2026-08-06). If window is defined as >2026-08-06, subtract 2 DS2 entries on 2026-08-06 (see notes). Arithmetic shown is for inclusive window. Data join note: engagements_by_deal_90d has no owner; joined to deals_open.csv via deal_id to get owner_id/owner_name. 123 engagement rows have no match in deals_open.csv and were not attributed. 2 deals_open rows have no match in engagements: Deal-3EED2C (84342457 Alex Franklin) and Deal-57FF13 (701163055 Elena Sinclair) counted as 0 activities. Source holds no engagement totals per owner directly. Per rep last-30-day activities from engagements_by_deal_90d (emails_30d + calls_30d + meetings_30d): Alex Franklin (84342457): emails 307 + calls 36 + meetings 41 = 384 total mix: emails 307/384=79.9% calls 36/384=9.4% meetings 41/384=10.7% Bryce Harmon (119337721): emails 162 + calls 0 + meetings 43 = 205 total mix: emails 162/205=79.0% calls 0/205=0.0% meetings 43/205=21.0% Dana Mercer (83155923): emails 84 + calls 18 + meetings 11 = 113 total mix: emails 84/113=74.3% calls 18/113=15.9% meetings 11/113=9.7% Cole Ingram (83155924): emails 96 + calls 14 + meetings 1 = 111 total mix: emails 96/111=86.5% calls 14/111=12.6% meetings 1/111=0.9% Farid Osman (716654662): emails 38 + calls 0 + meetings 34 = 72 total mix: emails 38/72=52.8% calls 0/72=0.0% meetings 34/72=47.2% Elena Sinclair (701163055): emails 0 + calls 0 + meetings 0 = 0 total mix: n/a (no activities) Archived owners Hugo Lindqvist (77260721) and Gavin Porter (1520255671): 0 total. DS2 entries in last 30 days (t_ds2 between 2026-08-06 and 2026-09-05, aliases cited exactly): Alex Franklin: 18 Deal-92D97D 2026-09-02, Deal-4F775F 2026-08-17, Deal-EE195F 2026-08-06, Deal-F436DA 2026-08-19, Deal-D9A72E 2026-08-06, Deal-E531A6 2026-08-07, Deal-7FA0C3 2026-08-07, Deal-D1E6C2 2026-08-11, Deal-36C33F 2026-08-11, Deal-317E6F 2026-08-12, Deal-5296C9 2026-08-28, Deal-CA5E44 2026-08-24, Deal-898FC5 2026-08-28, Deal-46988D 2026-08-26, Deal-E73427 2026-08-28, Deal-403845 2026-09-02, Deal-3EED2C 2026-09-03, Deal-1FC049 2026-09-03 Bryce Harmon: 4 Deal-CA7DC0 2026-08-12, Deal-25F752 2026-08-10, Deal-1CCE5C 2026-08-06, Deal-D73B89 2026-09-03 Cole Ingram: 2 Deal-1BA595 2026-08-12, Deal-42326B 2026-08-26 Dana Mercer: 1 Deal-57887A 2026-08-07 Farid Osman: 1 Deal-499BF6 2026-08-26 Elena Sinclair: 0 Total activities per DS2 entry (total / DS2 count): Alex Franklin: 384 / 18 = 21.33 Bryce Harmon: 205 / 4 = 51.25 Cole Ingram: 111 / 2 = 55.50 Farid Osman: 72 / 1 = 72.00 Dana Mercer: 113 / 1 = 113.00 Elena Sinclair: undefined (0/0) Rank by efficiency (lowest activities per DS2 = most efficient), only reps with DS2>0 ranked: 1 Alex Franklin 21.33 2 Bryce Harmon 51.25 3 Cole Ingram 55.50 4 Farid Osman 72.00 5 Dana Mercer 113.00 Most efficient rep: Alex Franklin (21.33 activities per DS2 entry) Highest-volume rep: Alex Franklin (384 total activities in last 30 days) They are the same rep; they do not differ. Note on window boundary: 2 of Alex Franklin's DS2 deals and 1 of Bryce Harmon's DS2 deals fall on 2026-08-06 exactly (Deal-EE195F, Deal-D9A72E, Deal-1CCE5C). If window is defined as >2026-08-06 (exclusive), counts become Alex 16 => 384/16=24.00, Bryce 3 => 205/3=68.33, ranking then 1 Alex 24.00, 2 Cole 55.50, 3 Bryce 68.33, 4 Farid 72.00, 5 Dana 113.00. Most efficient and highest-volume remain Alex Franklin in either definition. No cause attributed.
QTD SCORECARD — Alex Franklin — as of 2026-09-05 (2026-Q3, quarter start 2026-07-01) 1. BOOKINGS VS QUOTA Quota (quota.csv, 2026-Q3 snapshot 2026-09-05): 200000 Closed-won in file: 9 deals. One excluded as pre-quarter: - Deal-B3E6F1 24000 2026-06-20 — EXCLUDED QTD bookings (close_date 2026-07-01 to 2026-09-05, is_won=true): Deal-A1C3E5 40000 2026-07-15 Deal-F2C7D8 20000 2026-07-24 Deal-B7D2F4 35000 2026-07-31 Deal-C9E1A6 21000 2026-08-12 Deal-A8B4D6 12000 2026-08-19 Deal-D4B8C2 11000 2026-08-21 Deal-E6F3A9 6500 2026-09-02 Deal-C5D9E2 4500 2026-09-03 Arithmetic: 40000+20000=60000+35000=95000+21000=116000+12000=128000+11000=139000+6500=145500+4500=150000 Bookings QTD = 150000 Attainment = 150000 / 200000 = 75.0% Remaining to quota = 50000 2. NEW VS EXPANSION SPLIT (QTD wins only) New (5 deals): Deal-A1C3E5 40000 + Deal-B7D2F4 35000 + Deal-C9E1A6 21000 + Deal-D4B8C2 11000 + Deal-E6F3A9 6500 = 113500 Expansion (3 deals): Deal-F2C7D8 20000 + Deal-A8B4D6 12000 + Deal-C5D9E2 4500 = 36500 Check: 113500+36500=150000 Mix: New 75.7% (113500/150000), Expansion 24.3% (36500/150000). Count: 5 new, 3 expansion. 3. ACTIVE PIPELINE BY STAGE (status=open, all close_dates, 125 deals) DS1: 20 deals — 284621 DS2: 28 deals — 353760 DS3: 67 deals — 552705 DS4: 5 deals — 23574 (Deal-1FC049 1920, Deal-F9A08A 2484, Deal-C6D97A 3240, Deal-BA571A 1080, Deal-5408B0 14850) DS5: 5 deals — 45730 (Deal-403845 9000, Deal-547B2B 11200, Deal-A2B47C 6360, Deal-C61CF7 5400, Deal-D348E1 13770) Total active pipeline = 284621+353760+552705+23574+45730 = 1260390 across 125 open deals. No other pipeline segmentation provided. 4. ROLLING 90-DAY DS2-TO-WON RATE Window: 2026-06-07 to 2026-09-05 inclusive (snapshot minus 90 days). Deals with entered_ds2 in window: 111 Won among those: 8 (Deal-A1C3E5 2026-06-22, Deal-F2C7D8 2026-06-29, Deal-B7D2F4 2026-07-02, Deal-A8B4D6 2026-07-09, Deal-C9E1A6 2026-07-14, Deal-D4B8C2 2026-07-22, Deal-E6F3A9 2026-08-05, Deal-C5D9E2 2026-08-10) Lost among those: 27, Open among those: 76 Rate = 8 / 111 = 7.21% 5. WIN AND LOSS COUNTS (QTD, close_date 2026-07-01 to 2026-09-05) Wins: 8 (listed above) Losses: 27 (all with status=lost in ae_deals.csv between 2026-07-29 and 2026-09-02) Loss reason breakdown (27): Lost- Timing (1 year or more): 13 (48.1%) — top reason MIA: 5 (18.5%) Competitor: 5 (18.5%) Lost DM: 2 Feature Request: 1 Lost- Does not fit ICP (write in notes): 1 Arithmetic: 13+5+5+2+1+1=27 6. ACTIVITY VOLUME LAST 30 DAYS (ae_engagements.csv, sum across all 134 deal rows for Alex Franklin) emails_30d: 807 calls_30d: 112 meetings_30d: 128 notes_30d: 50 Total touches = 807+112+128+50 = 1097 COACHING OBSERVATIONS (grounded in numbers) 1. Conversion is low and timing is the killer. 27 QTD losses vs 8 wins and a 7.2% DS2-to-won rate (8/111). 13 of 27 losses (48%) are Lost- Timing (1 year or more) — pipeline is entering DS2 but not ready to buy this quarter. Tighten DS2 qualification and create nurture track vs forcing close dates. 2. Pipeline is wide but shallow. Total coverage looks healthy at 1260390 / 50000 remaining = 25.2x remaining quota, but late-stage is thin: DS4+DS5 = 10 deals for 692? actually 23574+45730=69304. 67 deals and 552705 sit in DS3 (43.9% of dollars, 53.6% of count). Need to drive DS3->DS4 progression in next 25 days or Q3 close relies on 8 prior wins repeating. 3. Activity is email-heavy with limited live engagement on losses. 807 emails vs 112 calls and 128 meetings across the book. Many lost deals in last 30 days show zero meetings (Deal-5885B9, Deal-DC77FE, Deal-55867E, Deal-BF2A98). With 5 Competitor losses and 5 MIA, increase early calls/meetings to surface competition and decision-maker risk before DS3.
Analysis based ONLY on deal_contacts.csv + unengaged_contacts.csv
Reference date inferred as 2026-09-03 (max last_engaged_date in file). Active = last_engaged_date >= 2026-07-05 (60 days prior) AND is_former = false.
DATA MISSING: No deals file provided with amount, stage, or open/closed status. Amount and stage cannot be reported. Open vs closed cannot be verified — below treats all 14 deal_aliases in deal_contacts.csv as in-scope. If you supply deals.csv, filter to open only.
Arithmetic: Active count per deal = count of contacts meeting active definition.
Flagged if active count <2 (single-threaded) OR active count <3 OR all active contacts share one persona (under-threaded).
NOT FLAGGED (healthy threading, 3+ active contacts with 2+ personas):
- Deal-84DBA6 (C-BE9BE0) - 3 active: champion, economic buyer, IT security
- Deal-4B0BEB (C-1BDFE0) - 4 active: champion, economic buyer, HR admin, finance
- Deal-D348E1 (C-804F29) - 5 active: champion, economic buyer, IT security, finance, HR admin
FLAGGED DEALS (11):
1. Deal-EC3025 (C-FDD0C7)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 1 (CT-047C54 champion 2026-09-02 active; CT-F2C1AE economic buyer excluded - is_former=true)
Personas present: champion (1)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: CANNOT DETERMINE BY STAGE (stage missing). Generally economic buyer is most critical for single-threaded champion deal to secure authority.
Unengaged on file matching missing persona: CT-6827DB Chief People Officer, economic buyer (C-FDD0C7) - fits economic buyer
2. Deal-92D97D (C-E23238)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 1 (CT-01F5B4 HR admin 2026-08-28 active; CT-A902AE champion 2026-06-01 inactive - 94 days ago)
Personas present: HR admin (1)
Personas missing: economic buyer, champion, IT security, finance
Most valuable to add: Stage missing. Generally champion + economic buyer; champion to drive use case, economic buyer for authority.
Unengaged on file: none on file for C-E23238
3. Deal-50D386 (C-EB10E4)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 2 (CT-AA41B2 champion 2026-09-01 active; CT-B9C35B HR admin 2026-08-25 active)
Personas present: champion, HR admin (2)
Personas missing: economic buyer, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: CT-A1C4B3 Chief People Officer, economic buyer (C-EB10E4) - fits economic buyer
4. Deal-D0D6B5 (C-32918E)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 3 but all same persona (CT-87CED4, CT-DE6D7C, CT-FD70B2 all champion, all active) = under-threaded
Personas present: champion (1 distinct)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer - no buyer coverage despite 3 contacts.
Unengaged on file: CT-1FA4DB Chief People Officer, economic buyer (C-32918E) - fits economic buyer
5. Deal-5BFE3B (C-535D36)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 2 but all same persona (CT-57123B champion 2026-08-31 active; CT-5CE757 champion 2026-08-12 active)
Personas present: champion (1 distinct)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: none on file for C-535D36
6. Deal-36C33F (C-077A0E)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 1 (CT-4FE556 IT security 2026-08-15 active; CT-405B45 and CT-86B22F excluded - is_former=true)
Personas present: IT security (1)
Personas missing: economic buyer, champion, HR admin, finance
Most valuable to add: Stage missing. Generally champion + economic buyer; champion is urgent - no champion coverage.
Unengaged on file: CT-1DB73E Chief People Officer, economic buyer (C-077A0E) - fits economic buyer (note: no unengaged champion on file)
7. Deal-885F45 (C-5E8EFB)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 2 (CT-51C81E economic buyer 2026-08-26 active; CT-D9A0E8 champion 2026-08-11 active)
Personas present: economic buyer, champion (2)
Personas missing: HR admin, IT security, finance
Most valuable to add: Stage missing. Generally HR admin for implementation or IT security/finance for late-stage security/commercial review.
Unengaged on file: CT-B3F25D IT Security Lead, IT security (C-5E8EFB) - fits IT security
8. Deal-FCBE5B (C-737030)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 1 (CT-4A5317 champion 2026-08-29 active only)
Personas present: champion (1)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: none on file for C-737030
9. Deal-5408B0 (C-2AE3AA)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 2 (CT-D33AE4 champion 2026-09-01 active; CT-8742FD HR admin 2026-08-18 active)
Personas present: champion, HR admin (2)
Personas missing: economic buyer, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: CT-07FA76 Chief People Officer, economic buyer (C-2AE3AA) - fits economic buyer
10. Deal-C6D97A (C-5A8FC2)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 3 but all same persona (CT-223DDC, CT-B03555, CT-4E8A2B all champion, all active) = under-threaded
Personas present: champion (1 distinct)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: none on file for C-5A8FC2
11. Deal-F9A08A (C-0D15DF)
Amount: NOT PROVIDED
Stage: NOT PROVIDED
Active count: 1 (CT-931B10 champion 2026-09-03 active; CT-913581 economic buyer 2026-06-20 inactive - 75 days ago)
Personas present: champion (1)
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable to add: Stage missing. Generally economic buyer.
Unengaged on file: CT-697541 Chief People Officer, economic buyer (C-0D15DF) - fits economic buyer
Summary: 11 of 14 deals flagged. 5 single-threaded (<2): Deal-EC3025, Deal-92D97D, Deal-36C33F, Deal-FCBE5B, Deal-F9A08A. 6 under-threaded: Deal-50D386, Deal-D0D6B5, Deal-5BFE3B, Deal-885F45, Deal-5408B0, Deal-C6D97A. 4 flagged deals have no unengaged contact on file to add (Deal-92D97D, Deal-5BFE3B, Deal-FCBE5B, Deal-C6D97A).
GTM Call Analysis — Last 10 Calls (TT-001 to TT-010) — Rep: Alex Franklin 1) WHAT THEY LEAD WITH IN FIRST FIVE MINUTES (minute 0-5, rep lines only) Finding A: 8 of 10 calls open with same retailer turnover story. Arithmetic: 8 / 10 = 0.80 = 80% Deals: Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-EDC141, Deal-D9A12F, Deal-84DBA6 Quote: "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." Finding B: 2 of 10 deviate — agenda/pricing led. Arithmetic: 2 / 10 = 0.20 = 20% Deals: Deal-403845, Deal-1E2498 Quote (Deal-403845): "I put together a short agenda — security review first, then pricing." Note within 5 min: In 1 of the 8 retailer-led calls (Deal-C61CF7, minute 2), rep adds unsolicited competitive pricing claim: Workhuman. No prospect prompted it. 2) THREE MOST COMMON OBJECTIONS AND HOW REP HANDLES THEM Objection 1: "Budget locked until next fiscal year" — 4 occurrences Arithmetic: 4 / 10 = 0.40 = 40% Deals: Deal-D348E1, Deal-547B2B, Deal-60C2C2, Deal-84DBA6 Handling (identical all 4): reframes to turnover savings Quote: "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." Objection 2: "Revisit next quarter / open enrollment underwater" — 3 occurrences Arithmetic: 3 / 10 = 0.30 = 30% Deals: Deal-5408B0, Deal-C61CF7, Deal-D9A12F Handling (identical all 3): offers 90-day single-department pilot Quote: "Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?" Objection 3: "Spreadsheet + quarterly gift cards — why change?" — 3 occurrences Arithmetic: 3 / 10 = 0.30 = 30% Deals: Deal-403845, Deal-EDC141, Deal-1E2498 Handling (identical all 3): automation + analytics differentiation Quote: "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." No other objection exceeds 2 occurrences. Next most frequent is budget committee deferral (2): Deal-403845 and Deal-84DBA6 — handling is acceptance/close with no counter. 3) CONCRETE NEXT STEP AGREED RATE Rate: 7 agreements / 10 calls = 0.70 = 70% Agreed (7): Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-D9A12F, Deal-1E2498 Not agreed (3): Deal-403845, Deal-EDC141, Deal-84DBA6 Quote (representative ask, present in all 7 agreed): "Should we lock the next step — a working session with your team this week?" Prospect affirmative in all 7 (when present): "Yes, Thursday at 2pm works — send the invite and I'll bring our HRIS manager." 4) EVERY COMPETITOR A PROSPECT RAISED Only 2 competitors raised by prospects in 10 calls: - Awardco — Deal-547B2B Quote: "We're also in late talks with Awardco — their rewards catalog looks bigger than yours." - Kudos — Deal-EDC141 Quote: "How are you different from Kudos? Our CEO used them at her last company." Data note: Workhuman is mentioned in transcripts (Deal-C61CF7, minute 2) but raised by rep, not by prospect. Per instruction to report only prospect-raised, Workhuman is excluded from this count. 5) COACHING NOTES 1. Double down on what drives next steps, fix what doesn't. The pilot offer (Objection 2) and turnover-savings reframe (Objection 1) correlate with 100% next-step conversion when used (7/7 asks result in Thursday working session). The committee deferral gets only "Understood — I'll leave it with you." / "Understood, thanks for the candor." with 0/2 conversion. Build a committee-specific play (finance one-pager with $210k math, HRIS stakeholder map) instead of accepting the stall. 2. Stop opening competitive battles unprompted. Rep volunteered Workhuman pricing comparison in Deal-C61CF7 without prospect prompt, while prospect-raised competitors were limited to Awardco and Kudos. Keep the retailer story opener (80% usage) but tailor first 5 minutes when prospect signals prior context (Deal-403845 security review, Deal-1E2498 straight pricing) — repeating the same story when they asked for pricing/agenda wastes first-five leverage.
Q3 2026 FORECAST (2026-07-01 to 2026-09-30 inclusive) Weighting: 1.0*COMMIT + 0.35*BEST_CASE + 0*PIPELINE. Only deals with close_date inside quarter count. FILTER Inside quarter: 54 deals Outside quarter (2026-10-01 to 2026-10-15): 32 deals INSIDE QUARTER BY CATEGORY COMMIT: 7 deals BEST_CASE: 24 deals PIPELINE: 23 deals (weight 0) COMMIT TOTAL (inside) Deal-547B2B 11200 + Deal-B7EBD1 9000 + Deal-403845 9000 + Deal-A2B47C 6360 + Deal-2465CE 5400 + Deal-A5E80A 2520 + Deal-499BF6 1249 = 11200+9000=20200; +9000=29200; +6360=35560; +5400=40960; +2520=43480; +1249=44729 COMMIT total = 44729 BEST_CASE TOTAL (inside) Deal-2D7423 38935 + Deal-25F752 24000 + Deal-E53952 19656 + Deal-5EED42 16250 + Deal-FA32A0 11116 + Deal-FC22A3 10800 + Deal-944310 10500 + Deal-5195DB 9890 + Deal-180D02 9720 + Deal-3974EB 9000 + Deal-5D8CEE 7200 + Deal-9D0060 3840 + Deal-46988D 3780 + Deal-357C30 3600 + Deal-C6D97A 3240 + Deal-DAF1D9 3150 + Deal-EE195F 3120 + Deal-55164C 3060 + Deal-001FF4 2916 + Deal-7B3B0F 2760 + Deal-F9A08A 2484 + Deal-8952F0 2100 + Deal-1FC049 1920 + Deal-87412C 528 = 203565 BEST_CASE total = 203565 PIPELINE TOTAL (inside, weighted 0) = 201637.4 [23 deals, not counted] WEIGHTED FORECAST = 44729 + 0.35*203565 = 44729 + 71247.75 = 115976.75 EXCLUDED FOR BEING OUTSIDE QUARTER Count: 32 deals Total amount: 227575 Arithmetic: 13770 (COMMIT) + 28240 (BEST_CASE) + 185565 (PIPELINE) = 227575 Breakdown: COMMIT 1 deal (Deal-D348E1 13770 on 2026-10-15), BEST_CASE 9 deals (Deal-C61CF7 5400, Deal-48B656 5160, Deal-901332 3600, Deal-47AE31 3600, Deal-15D24F 3600, Deal-ED725A 2400, Deal-8AD4A5 1800, Deal-5FDCE4 1600, Deal-F5A622 1080 = 28240), PIPELINE 22 deals = 185565 All excluded close_dates are 2026-10-01 to 2026-10-15 (e.g., Deal-E51FB7 2026-10-01, Deal-7FA0C3 2026-10-01, etc.). TOP 5 BEST_CASE DEALS BY AMOUNT INSIDE QUARTER 1. Deal-2D7423 - 38935 - 2026-09-30 2. Deal-25F752 - 24000 - 2026-09-25 3. Deal-E53952 - 19656 - 2026-09-30 4. Deal-5EED42 - 16250 - 2026-09-30 5. Deal-FA32A0 - 11116 - 2026-09-25 ## Data quality Forecast category conflicts with stage (e.g., Deal-A5E80A DS1 marked COMMIT and Deal-499BF6 DS2 marked COMMIT, while DS5 Deal-C61CF7 is only BEST_CASE). Owner is blank for 85 of 86 deals (only Deal-C9C286 has Bryce Harmon), so accountability and coverage cannot be validated. Close dates are heavily clustered on 2026-09-30 (11 deals inside quarter close on the last day) and 32 of 86 deals fall just outside the quarter in early October, indicating likely quarter-end gaming or stale dates. Amount precision is inconsistent (Deal-42326B 2480.4 vs integers) and why_buys_chars is 0 for most large deals, so unattended weighting would overstate certainty.
Activation hypothesis test — plg_company_cohort_2023.csv (n=220) Denominator: 220 companies. Excluded: 0. No companies excluded — every row has complete m1_users and m1_redemptions values and valid current_status. All companies are 25+ months old per prompt, so current_status = 'active' = retained at 24 months; 'cancelled' and 'non_renewing' = not retained. Thresholds: givers signal = m1_users >=5 ; redemption signal = m1_redemptions >=1 2x2 retention at 24 months: Both signals (m1_users >=5 AND m1_redemptions >=1): 31 active / 47 total = 31/47 = 0.6596 = 66.0% Givers-only (m1_users >=5 AND m1_redemptions =0): 23 active / 49 total = 23/49 = 0.4694 = 46.9% Redemption-only (m1_users <5 AND m1_redemptions >=1): 9 active / 29 total = 9/29 = 0.3103 = 31.0% Neither (m1_users <5 AND m1_redemptions =0): 38 active / 95 total = 38/95 = 0.4000 = 40.0% Check: 47+49+29+95 = 220 ; 31+23+9+38 = 101 active total = 101/220 = 45.9% overall retention. Hypothesis result: Both signals retain best at 66.0%, higher than givers-only (46.9%), neither (40.0%), and redemption-only (31.0%). Both vs neither lift = 26.0 pts (66.0-40.0). Both vs givers-only = +19.1 pts. Single signal with largest retention lift vs neither baseline: Givers-only: 46.9% - 40.0% = +6.9 pts Redemption-only: 31.0% - 40.0% = -9.0 pts Largest is givers-only (m1_users >=5 alone). Redemption-only alone is negative vs neither in this cohort. What this does and does not prove: Does: Shows a descriptive association in this 2023 cohort that companies reaching BOTH thresholds in month 1 have higher observed 24-month retention (66%) than those reaching one or neither. The co-occurrence of breadth (5+ givers) and value realization (1+ redemption) is the strongest correlate. Does not: Prove causation. Does not prove that intervening to push a company over those thresholds will cause it to retain. Observational 2x2 with no controls for confounders (company size, product_tier, industry_group, has_slack/hris, country, seasonality by signup_month, or pre-existing engagement intent) and no statistical significance testing provided. Does not show incremental effect of each signal independent of the other, nor that these are the optimal thresholds, nor that results generalize beyond this 220-company extract.
ARR RECONCILIATION AS OF 2026-09-05
Billing ARR = MRR x 12
TOTALS
------
CRM (company_arr.csv, 39 companies): 603,581.76
Billing ALL statuses (39 subs, chargebee_subscriptions.csv): 617,897.76
Billing ACTIVE only (37 subs, 2 cancelled excluded): 604,739.28
Arithmetic:
CRM sum = sum(hubspot_arr) = 603,581.76
Billing ALL = sum(mrr*12) all rows = 617,897.76
Billing ACTIVE = Billing ALL - cancelled = 617,897.76 - 13,158.48 = 604,739.28
cancelled = C-0C8323BF 408.77*12=4,905.24 + C-0DC4FB8C 687.77*12=8,253.24 = 13,158.48
VARIANCE
--------
Variance (CRM - Billing ALL) = 603,581.76 - 617,897.76 = -14,316.00 (CRM understated vs all billing)
Variance (CRM - Billing ACTIVE) = 603,581.76 - 604,739.28 = -1,157.52 (operational variance)
Variance (Billing ACTIVE - CRM) = +1,157.52
DECOMPOSITION (sums exactly to variance)
----------------------------------------
Operational view: Variance CRM - Billing ACTIVE = -1,157.52
Bucket Amount Calculation
status mismatch +13,158.48 CRM retains ARR for 2 cancelled subs that ACTIVE billing excludes
C-0C8323BF 4,905.24 + C-0DC4FB8C 8,253.24
missing records -11,952.00 Net of:
+16,497.24 CRM-only (C-0D5BBE3A)
-28,449.24 billing-only (C-21629AA4) [2370.77*12]
other (value error) -2,364.00 Net on 3 matched ACTIVE records:
C-0D66DF9E +16.00 (23200.00 - 23184.00) [1932.00*12=23184.00]
C-0F7269D7 -2400.00 (24396.00 - 26796.00) [2233.00*12=26796.00]
C-14D70CE0 +20.00 (18200.00 - 18180.00) [1515.00*12=18180.00]
rounding 0.00 All MRR*12 exact to cents; no isolated rounding diff
---------------------------------------------------------
TOTAL -1,157.52 13,158.48 -11,952.00 -2,364.00 +0 = -1,157.52
Alternate view: Variance CRM - Billing ALL = -14,316.00
status mismatch 0.00
missing records -11,952.00 (same as above)
other -2,364.00 (same as above)
rounding 0.00
TOTAL -14,316.00
All other 34 matched ACTIVE aliases tie exactly (CRM = MRR*12).
MISMATCHED ACCOUNTS (7) WITH SUGGESTED OWNER
---------------------------------------------
1. C-21629AA4 | SUB-0004 | Billing ACTIVE 28,449.24 (2370.77*12) | CRM missing (0) | Diff CRM-Billing = -28,449.24
Type: missing in CRM (billing-only) | Owner: RevOps / CRM Admin (create company record / fix sync) + Finance to confirm ARR
2. C-0D5BBE3A | no subscription | CRM 16,497.24 | Billing missing (0) | Diff = +16,497.24
Type: missing in billing (CRM-only) | Owner: Billing Ops / Finance (verify subscription exists in Chargebee) + RevOps (remove/zero CRM ARR if churned)
3. C-0C8323BF | SUB-000E | Billing cancelled 4,905.24 (408.77*12) | CRM 4,905.24 (still active) | Diff ACTIVE = CRM retains cancelled
Type: status mismatch | Owner: RevOps (update HubSpot company status to churned/closed) + CS/AM to confirm churn date
4. C-0DC4FB8C | SUB-000F | Billing cancelled 8,253.24 (687.77*12) | CRM 8,253.24 (still active)
Type: status mismatch | Owner: RevOps (update HubSpot) + CS/AM
5. C-0D66DF9E | SUB-0005 | Billing 23,184.00 (1932.00*12) | CRM 23,200.00 | Diff = +16.00 CRM high
Type: other / value mismatch | Owner: RevOps (correct HubSpot ARR to 23,184.00) + Billing Ops to check MRR change timing
6. C-0F7269D7 | SUB-0006 | Billing 26,796.00 (2233.00*12) | CRM 24,396.00 | Diff = -2,400.00 CRM low
Type: other / value mismatch (largest) | Owner: RevOps (correct HubSpot ARR upward by 2,400.00)
7. C-14D70CE0 | SUB-0008 | Billing 18,180.00 (1515.00*12) | CRM 18,200.00 | Diff = +20.00 CRM high
Type: other / value mismatch | Owner: RevOps (correct HubSpot ARR to 18,180.00)
No other aliases mismatched. All amounts cited exactly as in source files.
BUSINESS RULE VIOLATIONS
------------------------
Rule: any subscription with term_months != 12 must have cf_agreement_end_date populated.
2 violations found:
SUB-0002 | C-1794A52C | term 24 | status active | cf_agreement_end_date = [empty] | MRR 591.00
SUB-0019 | C-22170CA1 | term 36 | status active | cf_agreement_end_date = [empty] | MRR 649.00
Compliant non-12-month subs:
SUB-000C C-0DB48281 term 24 cf 2027-11-30
SUB-001A C-0FC4DBB8 term 36 cf 2027-11-30
Data gap note: No additional data provided to assess beyond these files. All arithmetic from given CSVs only.
KVMs are means across n=30 companies (10 per size_band, all plan_tier=tier_three). Arithmetic: abs = 2026-08 - 2026-07; rel = abs / 2026-07. | KVM | 2026-07 | 2026-08 | Abs change | Rel change | Direction | |---|---|---|---|---|---| | giving_rate | 0.6023 | 0.6027 | +0.0004 | +0.07% | up/flat | | redemptions_per_user | 1.7300 | 1.7302 | +0.0002 | +0.01% | up/flat | | one_to_one_engagement | 0.4469 | 0.4472 | +0.0003 | +0.06% | up/flat | | pulse_engagement | 0.6006 | 0.5086 | -0.0920 | -15.31% | down | Largest relative move: pulse_engagement at -15.31% (-0.0920; 0.5086-0.6006/0.6006). Segment driving it: size_band = enterprise. Enterprise pulse_engagement: 0.5500 -> 0.2743, abs -0.2757, rel -50.13%. SMB (-0.22%, 0.6588->0.6573) and mid_market (+0.21%, 0.5930->0.5942) are flat. All 10 enterprise aliases show the drop: C-0B2895EF, C-0B2213A9, C-0D6CC8E3, C-0D0B047C, C-0D3278C7, C-0FCCD2DF, C-0F6C0F34, C-8C2E8F00, C-0B827671, C-0BA71F12 (each ~0.53-0.57 -> ~0.26-0.29). plan_tier does not differentiate; all rows are tier_three.
Redemption Section — through last completed month: 2026-08 (August 2026) Source: redemptions_ytd.csv — all 378 rows have redeemed_at <= 2026-08-31T23:59:59, so YTD through 2026-08 = full file. No rows excluded. Redemption count: 378 redemptions Spend: Sum(amount_usd) = 27,846.00 USD Unique redeemers: Distinct user_key = 235 Redemptions per redeemer: 378 / 235 = 1.6085 = 1.61 Provider mix as percent of spend (shares sum to 100.00%): Total spend = 10,873.00 (custom) + 8,505.00 (Tremendous) + 5,238.00 (Snappy) + 3,230.00 (TangoCard) = 27,846.00 - custom: 10,873.00 / 27,846.00 = 39.0469% = 39.05% - Tremendous: 8,505.00 / 27,846.00 = 30.5430% = 30.54% - Snappy: 5,238.00 / 27,846.00 = 18.8106% = 18.81% - TangoCard: 3,230.00 / 27,846.00 = 11.5995% = 11.60% Check: 39.05 + 30.54 + 18.81 + 11.60 = 100.00% By count: Tremendous 192, TangoCard 90, Snappy 59, custom 37 Top 5 countries by redemptions (count): 1. US — 244 2. CA — 24 3. AU — 21 4. GB — 17 5. NL — 17 Next: SG 12, DE 9, FR 9, CH 9, IN 8 (GB and NL tied for 4th/5th at 17 each)
Qualified for churn-save offer = meets all 3 rules on snapshot 2026-09-05: R1 health_score <60, R2 churn_save_eligible_amount >0, R3 renewal_date within 120 days (2026-09-05 to 2027-01-03 inclusive) 8 accounts qualify: 1. C-0F6C0F34 - health 51 (<60), eligible 49,707.00 (>0), renewal 2026-10-03 (28 days) - ELIGIBLE 2. C-0B827671 - health 56 (<60), eligible 25,365.00 (>0), renewal 2026-11-14 (70 days) - ELIGIBLE 3. C-0B360C78 - health 57 (<60), eligible 35,748.00 (>0), renewal 2026-10-28 (53 days) - ELIGIBLE 4. C-0B0F1BAB - health 38 (<60), eligible 5,494.00 (>0), renewal 2026-09-23 (18 days) - ELIGIBLE 5. C-0CA21961 - health 58 (<60), eligible 16,829.00 (>0), renewal 2026-12-28 (114 days) - ELIGIBLE 6. C-0E9C27D1 - health 39 (<60), eligible 41,235.00 (>0), renewal 2026-09-24 (19 days) - ELIGIBLE 7. C-0CEF69FD - health 53 (<60), eligible 32,621.00 (>0), renewal 2026-11-21 (77 days) - ELIGIBLE 8. C-0D3278C7 - health 54 (<60), eligible 17,602.00 (>0), renewal 2026-11-12 (68 days) - ELIGIBLE Amount at stake per account = churn_save_eligible_amount: C-0F6C0F34: 49,707.00 C-0B827671: 25,365.00 C-0B360C78: 35,748.00 C-0B0F1BAB: 5,494.00 C-0CA21961: 16,829.00 C-0E9C27D1: 41,235.00 C-0CEF69FD: 32,621.00 C-0D3278C7: 17,602.00 Total at stake arithmetic: 49,707 + 25,365 = 75,072 75,072 + 35,748 = 110,820 110,820 + 5,494 = 116,314 116,314 + 16,829 = 133,143 133,143 + 41,235 = 174,378 174,378 + 32,621 = 206,999 206,999 + 17,602 = 224,601 Total = 224,601.00 Play assignment - based only on provided signals (usage_trend_3m, seats_used/seats, champion_active). No playbook mapping provided in files, so play is inferred from signal: - usage revival = declining trend OR low utilization (<50%) - executive touch = champion_active false (no active champion) - commercial concession = champion true + not declining/low-utilization (risk is not adoption) C-0F6C0F34 - executive touch - signal: champion_active=false, health 51 despite usage_trend_3m=growing and 308/395=77.9% utilization C-0B827671 - usage revival - signal: usage_trend_3m=declining and 113/202=55.9% utilization C-0B360C78 - commercial concession - signal: champion_active=true, usage_trend_3m=growing, 246/327=75.2% utilization, health 57 suggests non-usage risk C-0B0F1BAB - executive touch - signal: champion_active=false, health 38, 238/363=65.6% utilization, usage_trend_3m=flat C-0CA21961 - usage revival - signal: 84/325=25.8% utilization, usage_trend_3m=flat C-0E9C27D1 - commercial concession - signal: champion_active=true, usage_trend_3m=flat, 134/157=85.4% utilization, health 39 suggests non-usage risk C-0CEF69FD - executive touch - signal: champion_active=false, 97/136=71.3% utilization, usage_trend_3m=growing C-0D3278C7 - usage revival - signal: usage_trend_3m=declining and 126/380=33.2% utilization Accounts that look at risk (health_score <60) but DO NOT qualify: C-0BC71BDD - health 55 (<60) but fails R2: churn_save_eligible_amount 0.00 C-0BA71F12 - health 52 (<60) but fails R3: renewal 2027-04-11 = 218 days from snapshot (>120), eligible 6,824.00 ignored due to R3 C-0F6694C3 - health 43 (<60) but fails R2 (0.00) and R3 (2027-03-21 = 197 days) C-0BE96399 - health 54 (<60) but fails R2: 0.00 (renewal 2026-10-29 would otherwise be within) C-0F876796 - health 47 (<60) but fails R3: renewal 2027-02-06 = 154 days (>120), eligible 19,958.00 ignored due to R3 C-0FCCD2DF - health 43 (<60) but fails R2 (0.00) and R3 (2027-04-23 = 230 days) C-10A56B0F - health 54 (<60) but fails R2: 0.00 (renewal 2026-12-12 = 98 days would otherwise be within) Data missing: No documented rule for mapping play to signal in provided files; play assignment above is inference from available fields and should be confirmed against actual playbook.
Expansion Kit — C-0DDFC9A7 1) Seat Coverage (licensed over headcount): 150 licensed / 400 headcount = 37.5% coverage 2) Usage Health (2 lines): - Active users grew every month: 88 (2026-03) -> 95 -> 102 -> 110 -> 118 -> 126 (2026-08). +38 users, +43.2% (38/88) over 5 months. - Licensed utilization in Aug: 126 / 150 = 84.0% of licensed seats active, up from 58.7% (88/150) in March. Headroom remains before hitting cap. 3) Headroom at Current Per-Seat Rate: - Per-seat rate: 9,000.00 current ARR / 150 licensed = $60.00/seat/year - Seat headroom: 400 headcount - 150 licensed = 250 seats - ARR headroom: 250 * $60.00 = $15,000.00 ARR - Fully licensed at headcount: 400 * $60.00 = $24,000.00 ARR (vs 9,000.00 today) 4) Who Replied and Can They Buy: - Replied: Maria S., People Operations Coordinator, last_engaged 2026-09-02 - Cannot buy. Reply states verbatim: "I'm not the right person for purchasing decisions here. Budget and seat expansion sit with Dana R., our VP People." 5) Right Buyer From Contacts: - Dana R., VP People, last_engaged 2026-05-18. Confirmed by Maria S. as budget/seat expansion owner and currently asking about usage numbers. One other contact: Sam K., Office Manager, last_engaged 2025-11-03 — not a buyer for this decision. 6) Reply Email (<150 words, 57 words): Subject: Re: Growing your team's recognition program Hi Maria, Thanks for getting back to me and for offering an introduction — much appreciated. Great to hear monthly active users climbed to 126 in August (84% of your licensed seats) with a busy feed each week. Since budget sits with Dana R., would you be comfortable making that intro? No pressure — happy to send a brief usage summary for her to review first. Thanks again for championing this. Best, Cole
C-0D284E42 - Mid-Onboarding Prep (as of 2026-09-04 data) Source: onboarding_account.csv (1 row) + onboarding_usage.csv (25 rows: 2026-08-11 to 2026-09-04) 1. WHAT IS COMPLETE - with data field - integration_slack: COMPLETE - onboarding_account.csv shows 2026-08-12 (1 day after signup_date 2026-08-11) - allowance_set: COMPLETE - onboarding_account.csv shows 2026-08-13 (2 days after signup) - admins_added: COMPLETE - onboarding_account.csv shows 2 - Note: field shows count only, no names/roles provided - first_recognition_at: COMPLETE - onboarding_account.csv shows 2026-08-15 14:22 (4 days after signup) - Arithmetic: 2026-08-15 - 2026-08-11 = 4 days 2. WHAT IS NOT COMPLETE - missing/blank data field - integration_hris: NOT COMPLETE - onboarding_account.csv field is blank (no date). Do NOT mark complete. - first_redemption_at: NOT COMPLETE - onboarding_account.csv field is blank (no date). No redemption has occurred as of last account row. Do NOT mark complete. - No other milestones provided in data. Cannot mark anything else complete. 3. EARLY ENGAGEMENT SIGNALS (onboarding_usage.csv - active_givers only) Data available: daily active_givers for 25 days (2026-08-11 to 2026-09-04). No data on recognition volume, redemption volume, total employees, logins, or messages. All calculations below use only active_givers. Raw sequence: 3, 3, 4, 4, 5, 4, 7, 5, 7, 6, 9, 8, 9, 9, 9, 11, 10, 10, 11, 13, 11, 13, 13, 15, 15 Arithmetic: - Sum = 3+3+4+4+5+4+7+5+7+6+9+8+9+9+9+11+10+10+11+13+11+13+13+15+15 = 214 giver-days - Overall average = 214 / 25 = 8.56 active givers/day - Week 1 (2026-08-11 to 2026-08-17): 3+3+4+4+5+4+7 = 30 / 7 = 4.29/day - Last 7 days (2026-08-29 to 2026-09-04): 11+13+11+13+13+15+15 = 91 / 7 = 13.0/day - Growth signup to latest: 3 (2026-08-11) to 15 (2026-09-04) = (15-3)/3 = 400% increase (5x) - Week 1 avg to last week avg: (13.0 - 4.29) / 4.29 = 203% increase - Trend: Monotonic increase with only 3 minor dips (2026-08-16: 5->4, 2026-08-18: 7->5, 2026-08-20: 7->6). No sustained drop after first_recognition on 2026-08-15. - Days since first recognition without redemption: 2026-09-04 - 2026-08-15 = 20 days Signal: Positive expanding giver adoption. Peak of 15 on 2026-09-03 and 2026-09-04 is 5x signup day. Limit: Cannot assess recognition frequency, points given, or breadth (% of company) - no total headcount or recognition count in data. Cannot assess HRIS impact. 4. THREE THINGS TO COVER ON THE CALL 1. Unblock HRIS integration - integration_hris is blank in onboarding_account.csv. Confirm blocker (owner, permissions, HRIS type), set target date. This is the only integration gap - Slack is done (2026-08-12). 2. Plan first redemption - first_redemption_at is blank, 20 days since first recognition (2026-08-15) with no redemption. Ask if catalog visible, points balance understood, and if users know how to redeem. Set goal/date for first redemption; do not assume catalog or allowance amount (not in data). 3. Sustain giver growth and identify champions - active_givers grew from 4.29/day (week 1) to 13.0/day (last week) with latest 15. Ask who the repeat givers are, what prompted growth after 2026-08-26 (first 11), and how to extend beyond current 15. Confirm admin roles for the 2 admins_added and whether more admins needed. Missing data to ask for on call: HRIS vendor/blocker, redemption catalog status, total eligible employees (to contextualize 15 active givers), and why no redemption yet.
90-DAY RENEWAL RISK BRIEF
Window: 2026-09-06 to 2026-12-05 (90 days, based on usage through 2026-08; all dates below fall inside window)
Source of truth rule: multi-year contracts (is_multi_year=true) are known wrong in ChurnZero -> trust Chargebee (cb_renewal_date). For 12-month terms, trust ChurnZero (which equals Chargebee where data agrees).
DISAGREEMENTS FLAGGED: 5 accounts disagree. All are multi-year -> Chargebee trusted.
- C-0B7D2C30: CZ 2026-09-10 vs CB 2026-09-15 (diff 5 days) -> USE CB 2026-09-15
- C-0BCDB8C2: CZ 2027-09-18 vs CB 2026-09-18 (diff 365 days) -> USE CB 2026-09-18
- C-0D2AB865: CZ 2026-09-10 vs CB 2026-09-22 (diff 12 days) -> USE CB 2026-09-22
- C-0BBE3E60: CZ 2027-09-26 vs CB 2026-09-26 (diff 365 days) -> USE CB 2026-09-26
- C-0F5D2323: CZ 2026-09-10 vs CB 2026-09-29 (diff 19 days) -> USE CB 2026-09-29
All other 15 accounts: CZ = CB, no disagreement -> USE CZ (=CB)
RENEWALS IN WINDOW (20 accounts, sorted by date used):
1. C-0B7D2C30 | CSM Dana Mercer | ARR 65,901 | Date Used 2026-09-15 (CB, multi-year 36m) | DISAGREEMENT YES
Seat Utilization: 274/476 = 57.6%
3-Month Trend: 2026-05 107 -> 2026-08 84 = -23 (-21.5%); 12m 155->84 steady decline
Risk: HIGH - Only 57.6% seats used with steep -21.5% drop last 3 months and 12-month continuous decline.
2. C-0BCDB8C2 | CSM Cole Ingram | ARR 54,427 | Date Used 2026-09-18 (CB, multi-year 36m) | DISAGREEMENT YES
Seat Utilization: 232/424 = 54.7%
3-Month Trend: 2026-05 136 -> 2026-08 110 = -26 (-19.1%)
Risk: HIGH - Low 54.7% utilization with -19.1% usage decline and 200->110 yearly decline.
3. C-0D2AB865 | CSM Elena Sinclair | ARR 38,022 | Date Used 2026-09-22 (CB, multi-year 24m) | DISAGREEMENT YES
Seat Utilization: 250/407 = 61.4%
3-Month Trend: 2026-05 137 -> 2026-08 109 = -28 (-20.4%)
Risk: HIGH - Moderate utilization but -20.4% 3-month decline mirroring 199->109 yearly decline.
4. C-0BBE3E60 | CSM Dana Mercer | ARR 30,993 | Date Used 2026-09-26 (CB, multi-year 24m) | DISAGREEMENT YES
Seat Utilization: 74/114 = 64.9%
3-Month Trend: 2026-05 41 -> 2026-08 33 = -8 (-19.5%)
Risk: HIGH - 33 active users vs 74 seats used suggests paid seats underutilized, with -19.5% recent decline.
5. C-0F5D2323 | CSM Cole Ingram | ARR 90,647 | Date Used 2026-09-29 (CB, multi-year 24m) | DISAGREEMENT YES
Seat Utilization: 111/390 = 28.5%
3-Month Trend: 2026-05 20 -> 2026-08 18 = -2 (-10.0%); flat low 17-21 all year
Risk: HIGH - Critically low 28.5% seat utilization with only ~18 active users for 390 seats.
6. C-0EC6999D | CSM Elena Sinclair | ARR 79,419 | Date Used 2026-10-03 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 31/112 = 27.7%
3-Month Trend: 2026-05 14 -> 2026-08 15 = +1 (+7.1%); flat 14-17 all year
Risk: HIGH - Critically low 27.7% utilization with ~15 active users despite flat trend.
7. C-0B20DB64 | CSM Dana Mercer | ARR 21,770 | Date Used 2026-10-07 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 214/378 = 56.6%
3-Month Trend: 2026-05 296 -> 2026-08 294 = -2 (-0.7%); stable 293-298 all year
Risk: MEDIUM - Stable usage near flat but only 56.6% seats utilized.
8. C-0BBC4E7A | CSM Cole Ingram | ARR 56,374 | Date Used 2026-10-10 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 228/337 = 67.7%
3-Month Trend: 2026-05 142 -> 2026-08 139 = -3 (-2.1%); stable
Risk: LOW - Healthy 67.7% utilization with flat stable usage (139-142 range).
9. C-0FD551AB | CSM Elena Sinclair | ARR 48,815 | Date Used 2026-10-14 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 210/376 = 55.9%
3-Month Trend: 2026-05 125 -> 2026-08 126 = +1 (+0.8%); stable
Risk: MEDIUM - Stable usage but low 55.9% seat utilization.
10. C-0F9F8F13 | CSM Dana Mercer | ARR 46,230 | Date Used 2026-10-18 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 199/352 = 56.5%
3-Month Trend: 2026-05 182 -> 2026-08 182 = 0 (0.0%); stable
Risk: MEDIUM - Flat usage for 12 months but only 56.5% seats utilized.
11. C-0BC34584 | CSM Cole Ingram | ARR 16,740 | Date Used 2026-10-22 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 327/494 = 66.2%
3-Month Trend: 2026-05 103 -> 2026-08 106 = +3 (+2.9%); stable/slight growth
Risk: LOW - Stable to growing usage with moderate 66.2% utilization.
12. C-0B7A7546 | CSM Elena Sinclair | ARR 35,062 | Date Used 2026-10-25 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 182/205 = 88.8%
3-Month Trend: 2026-05 61 -> 2026-08 63 = +2 (+3.3%); growing 58->63 yearly
Risk: LOW - High 88.8% utilization with upward usage trend.
13. C-0B369871 | CSM Dana Mercer | ARR 85,128 | Date Used 2026-10-29 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 317/422 = 75.1%
3-Month Trend: 2026-05 319 -> 2026-08 333 = +14 (+4.4%); consistent growth 289->333
Risk: LOW - Strong 75.1% utilization with clear +4.4% growth last 3 months.
14. C-0B144C78 | CSM Cole Ingram | ARR 30,899 | Date Used 2026-11-02 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 169/224 = 75.4%
3-Month Trend: 2026-05 99 -> 2026-08 106 = +7 (+7.1%); growing 90->106 yearly
Risk: LOW - 75.4% utilization with +7.1% recent growth.
15. C-0FC4DBB8 | CSM Elena Sinclair | ARR 94,732 | Date Used 2026-11-05 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 356/464 = 76.7%
3-Month Trend: 2026-05 185 -> 2026-08 193 = +8 (+4.3%); growing 168->193 yearly
Risk: LOW - High 76.7% utilization with steady growth.
16. C-0D5BBE3A | CSM Dana Mercer | ARR 39,740 | Date Used 2026-11-09 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 85/102 = 83.3%
3-Month Trend: 2026-05 87 -> 2026-08 91 = +4 (+4.6%); growing 76->91 yearly
Risk: LOW - Very high 83.3% utilization with consistent growth.
17. C-0FB9D5AF | CSM Cole Ingram | ARR 63,158 | Date Used 2026-11-13 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 144/199 = 72.4%
3-Month Trend: 2026-05 168 -> 2026-08 176 = +8 (+4.8%); growing 154->176 yearly
Risk: LOW - Healthy 72.4% utilization with +4.8% recent growth.
18. C-0B344485 | CSM Elena Sinclair | ARR 64,384 | Date Used 2026-11-16 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 224/287 = 78.0%
3-Month Trend: 2026-05 235 -> 2026-08 244 = +9 (+3.8%); growing 211->244 yearly
Risk: LOW - Strong 78.0% utilization with upward trend.
19. C-0CB2C1B4 | CSM Dana Mercer | ARR 40,628 | Date Used 2026-11-20 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 386/473 = 81.6%
3-Month Trend: 2026-05 50 -> 2026-08 49 = -1 (-2.0%); flat 43-50 yearly
Risk: LOW - High 81.6% seat utilization despite flat active-user counts (data gap between seats_used and active_users).
20. C-22170CA1 | CSM Cole Ingram | ARR 45,646 | Date Used 2026-11-24 (CZ/CB agree, 12m) | DISAGREEMENT NO
Seat Utilization: 251/294 = 85.4%
3-Month Trend: 2026-05 143 -> 2026-08 146 = +3 (+2.1%); growing 130->146 yearly
Risk: LOW - Very high 85.4% utilization with stable growth.
TOTALS (All 20 renew within 90-day window after trusting Chargebee for multi-year):
Total ARR Renewing (90 days): 1,048,715
Arithmetic: 65901+54427+38022+30993+90647+79419+21770+56374+48815+46230+16740+35062+85128+30899+94732+39740+63158+64384+40628+45646 = 1,048,715
ARR at Risk (HIGH only): 359,409 (34.3% of renewing ARR)
HIGH accounts: C-0B7D2C30 65,901 + C-0BCDB8C2 54,427 + C-0D2AB865 38,022 + C-0BBE3E60 30,993 + C-0F5D2323 90,647 + C-0EC6999D 79,419 = 359,409
ARR at Risk (HIGH+MEDIUM): 476,224 (45.4% of renewing ARR)
Add MEDIUM: C-0B20DB64 21,770 + C-0FD551AB 48,815 + C-0F9F8F13 46,230 = 116,815; 359,409+116,815=476,224
Note: If ChurnZero dates had been trusted without correction, C-0BCDB8C2 and C-0BBE3E60 would have appeared as 2027 renewals and been excluded, understating 90-day exposure by 85,420 (54,427+30,993).
No data missing for these calculations. CSM assignments, ARR, seats, and 12-month usage are all provided.
Synthesized 80 tickets (2026-06-01 to 2026-08-29). Grouped by body_text, not tag. Ranked by ARR exposure (distinct-account ARR). TOTAL TICKETS = 80 --- THEME 1 [Rank 1 by ARR] - HRIS Provisioning / New-Hire Sync Failures Counts: 12 tickets = 12/80 = 15.0% share Bodies merged: - "HRIS provisioning is not creating accounts for new hires this month." (4) - "HRIS sync skipped 12 new hires; provisioning log shows no errors." (3) - "New employees are not being provisioned from our HRIS sync." (5) Distinct accounts: 3 - C-0B2213A9 (36000) - 7 tickets - C-0F6C0F34 (30000) - 2 tickets - C-0DDFC9A7 (48000) - 3 tickets ARR affected: 36000 + 30000 + 48000 = 114,000 (distinct); 432,000 if summing per-ticket ARR Example tickets: IC-460059 (C-0B2213A9), IC-460062 (C-0F6C0F34) Recommendation: Audit HRIS connector provisioning job and log false-positives; add alerts for silent skip. THEME 2 [Rank 2] - Redemption & Gift Card Fulfillment Failures Counts: 18 tickets = 18/80 = 22.5% share Bodies merged: - "Checkout spins forever and then the redemption fails." (4) - "Gift card order errored out but the points were still deducted." (5) - "Redemption failed twice today; gift card email never showed up." (6) - "Redemption failed at checkout and the gift card code never arrived." (3) Distinct accounts: 7 - C-0CEF69FD (8900), C-0B827671 (10700), C-0FCCD2DF (9600), C-0F876796 (8700), C-0D9CA315 (9600), C-0B0F1BAB (10300), C-14264ABD (11000) ARR affected: 8900+10700+9600+8700+9600+10300+11000 = 68,800 (distinct); 174,500 per-ticket Example tickets: IC-460025 (C-0CEF69FD), IC-460035 (C-0B827671) Recommendation: Fix checkout error handling to ensure atomic deduction/fulfillment and auto-refund on failure. THEME 3 [Rank 3 - SINGLE-ACCOUNT NOISE] - Billing & Invoicing Errors (Seat Count / Tier Price) Counts: 16 tickets = 16/80 = 20.0% share Bodies merged: - "Third invoice in a row with the same seat-count error." (3) - "Invoice discrepancy - charged for 200 seats but we license 150." (5) - "Billing charged the annual renewal at the wrong tier price." (6) - "Our invoice shows a seat count we never approved." (2) Distinct accounts: 1 - C-0E9C27D1 (52000) - all 16 tickets ARR affected: 52,000 (distinct); 832,000 per-ticket (16 * 52000) Example tickets: IC-460071 (C-0E9C27D1), IC-460069 (C-0E9C27D1) Recommendation: Isolate as single-account escalation - correct seat-count/tier mapping for C-0E9C27D1 and fix recurring billing logic before it spreads. THEME 4 [Rank 4] - Points Posting / Recognition Delivery Failures Counts: 20 tickets = 20/80 = 25.0% share Bodies merged: - "Two recognitions I sent show as delivered but the points never arrived." (8) - "Points not posting for our whole team after the weekend." (5) - "Missing points - my balance has not updated since Tuesday." (3) - "Points from last week's recognition are still not posting to my balance." (4) Distinct accounts: 9 - C-0D3278C7 (3500), C-0BE96399 (2700), C-0DD0626C (2500), C-0B2895EF (2900), C-0D284E42 (3400), C-0BF20542 (4500), C-0D0B047C (4500), C-0D6CC8E3 (4200), C-21FEBCBB (2900) ARR affected: 3500+2700+2500+2900+3400+4500+4500+4200+2900 = 31,100 (distinct); 70,400 per-ticket Example tickets: IC-460004 (C-0D3278C7), IC-460016 (C-0BF20542) Recommendation: Investigate points-ledger posting delay/failure path affecting multi-account cohort. THEME 5 [Rank 5] - Slack Integration Failures (Sync / Auth / Slash Command) Counts: 14 tickets = 14/80 = 17.5% share Bodies merged: - "Slack integration stopped syncing recognitions to our channel this week." (3) - "Recognitions no longer post to Slack; the sync toggle resets itself." (4) - "The Slack app disconnected and re-auth does not stick." (2) - "Slack slash command returns an error for everyone on our team." (5) Distinct accounts: 4 - C-0B843542 (4400), C-0BA71F12 (3900), C-10A56B0F (5400), C-8C2E8F00 (5200) ARR affected: 4400+3900+5400+5200 = 18,900 (distinct); 62,000 per-ticket Example tickets: IC-460041 (C-0B843542), IC-460047 (C-10A56B0F) Recommendation: Fix Slack OAuth token persistence and sync toggle state; test slash command permissions. --- BROAD PATTERNS vs SINGLE-ACCOUNT NOISE: - Broad (multi-account): HRIS (3 accts), Redemption (7 accts), Points (9 accts), Slack (4 accts) - prioritize by ARR exposure as ranked above. - Single-account noise: Billing theme is 16 tickets but 1 account (C-0E9C27D1, 52000 ARR). High volume does not equal broad impact; treat as escalated account-specific billing defect, not systemic quarter-wide issue. Ranking by ARR (distinct) confirms HRIS > Redemption > Billing (isolated) > Points > Slack, inverse of volume ranking (Points 20 > Redemption 18 > Billing 16 > Slack 14 > HRIS 12). Arithmetic verified: 12+18+16+20+14 = 80; shares sum 100%. No data missing.
Prospect C-82AF3719: Technology | Mid-Market | employee_recognition | NA-West Scoring: similarity = count of exact field matches / 4 fields (industry, size_band, use_case, region). Only customers with has_case_study=true considered. Exact 4/4 match excluded due to has_case_study=false: C-D6217CAA and C-C153868F both Technology/Mid-Market/employee_recognition/NA-West but has_case_study=false. Candidates with has_case_study=true: - C-FEFCC020: 0/4 (0+0+0+0) - C-11209339: 0/4 - C-0CE315B2: 0/4 - C-9D69D147: 2/4 (size_band Mid-Market=1, region NA-West=1) - C-CD4829A7: 2/4 (industry Technology=1, size_band Mid-Market=1) - C-11C31562: 3/4 (size_band Mid-Market=1, use_case employee_recognition=1, region NA-West=1; industry Manufacturing != Technology) - C-64171065: 3/4 (industry Technology=1, size_band Mid-Market=1, use_case employee_recognition=1; region NA-East != NA-West) - C-A13C193D: 3/4 (industry Technology=1, size_band Mid-Market=1, region NA-West=1; use_case retention != employee_recognition) Rank — three most similar with case studies: 1. C-64171065 — 3/4 match. Drove match: industry=Technology, size_band=Mid-Market, use_case=employee_recognition. Mismatch: region NA-East vs prospect NA-West. 2. C-11C31562 — 3/4 match. Drove match: size_band=Mid-Market, use_case=employee_recognition, region=NA-West. Mismatch: industry Manufacturing vs Technology. 3. C-A13C193D — 3/4 match. Drove match: industry=Technology, size_band=Mid-Market, region=NA-West. Mismatch: use_case retention vs employee_recognition. Tie-break: All three tied at 3/4. Rank 1 prioritized for matching both industry and use_case (core functional fit), Rank 2 for use_case+region, Rank 3 for industry+region. No other has_case_study=true customer exceeds 2/4.
Channel Performance — Trailing 6 Months (2026-03 to 2026-08) Source: channel_spend.csv + contacts_first_touch.csv only. Spend (6 months): paid_search = 6000 * 6 = 36000 linkedin_ads = 4000 * 6 = 24000 paid_social = 3000 * 6 = 18000 webinars = 1500 * 6 = 9000 organic_search, referral = 0 (no spend rows) Definitions: SQM = sqm_date is not blank. SQO = sqo_date is not blank. PAID CHANNELS ------------------------------------------------------------ paid_search: spend = 36000 SQMs = 40 SQOs = 18 cost per SQM = 36000 / 40 = 900.00 cost per SQO = 36000 / 18 = 2000.00 SQM-to-SQO rate = 18 / 40 = 45.00% pipeline amount = 18 * 40000 = 720000 pipeline per dollar = 720000 / 36000 = 20.00 linkedin_ads: spend = 24000 SQMs = 25 SQOs = 8 cost per SQM = 24000 / 25 = 960.00 cost per SQO = 24000 / 8 = 3000.00 SQM-to-SQO rate = 8 / 25 = 32.00% pipeline amount = 8 * 12000 = 96000 pipeline per dollar = 96000 / 24000 = 4.00 paid_social: spend = 18000 SQMs = 0 (0 rows in contacts_first_touch.csv for paid_social) SQOs = 0 cost per SQM = undefined (spend with zero SQMs — not 0) cost per SQO = undefined (zero SQOs — not 0) SQM-to-SQO rate = undefined (0/0) pipeline amount = 0 pipeline per dollar = 0 / 18000 = 0.00 webinars: spend = 9000 SQMs = 12 SQOs = 5 cost per SQM = 9000 / 12 = 750.00 cost per SQO = 9000 / 5 = 1800.00 SQM-to-SQO rate = 5 / 12 = 41.67% pipeline amount = 5 * 12000 = 60000 pipeline per dollar = 60000 / 9000 = 6.67 ORGANIC / NO-SPEND CHANNELS ------------------------------------------------------------ organic_search: volume (SQMs) = 30 SQOs = 10 SQO rate = 10 / 30 = 33.33% pipeline amount = 10 * 9000 = 90000 referral: volume (SQMs) = 15 SQOs = 6 SQO rate = 6 / 15 = 40.00% pipeline amount = 6 * 8000 = 48000 DATA QUALITY FLAGS — SQO date precedes SQM date: ------------------------------------------------------------ 2 rows flagged, both in linkedin_ads: CT-000044 — sqm_date 2026-07-23, sqo_date 2026-07-18 (sqo 5 days before sqm) CT-000041 — sqm_date 2026-06-14, sqo_date 2026-06-09 (sqo 5 days before sqm) No other channel has sqo_date < sqm_date. If SQO must follow SQM, these 2 records are invalid and linkedin_ads SQO count (8) may be overstated by 2. REALLOCATION RECOMMENDATION: ------------------------------------------------------------ 1. Pause/Investigate paid_social immediately: 18000 spend with zero SQMs/SQOs in contacts_first_touch.csv over 6 months. 0 pipeline. Either tracking is broken (first_touch not captured) or channel is non-performing. Do not continue spend without fixing attribution or seeing any SQM signal. 2. Increase paid_search: Highest efficiency on every metric — lowest cost per SQO (2000), highest SQM-to-SQO (45%), highest pipeline per dollar (20.00). 720000 pipeline on 36000 spend drives total pipeline. 3. Maintain/Increase webinars: Second best pipeline per dollar (6.67) and lowest cost per SQM (750) and lowest cost per SQO (1800) among paid. Small sample (12 SQMs, 5 SQOs) but efficient. 4. Reduce linkedin_ads and fix data: Worst paid efficiency among converting channels — cost per SQO 3000 (50% higher than paid_search, 67% higher than webinars), pipeline per dollar only 4.00, SQO rate only 32%. Plus 2/8 SQOs have inverted dates (CT-000044, CT-000041) suggesting CRM/definition error. Cut or test before reallocating there. 5. Protect organic_search + referral: Combined 45000 SQMs volume (30+15) with 0 spend, 138000 pipeline (90000+48000), SQO rates 33-40% comparable to paid. No cost. Invest in attribution to understand volume permanence, do not trade organic for paid. Arithmetic for reallocation example: Moving 9000 from paid_social (0 pipeline) to paid_search at current 20.00 pipeline/$ = ~180000 incremental pipeline. Moving 9000 to webinars at 6.67 = ~60000 incremental pipeline. CONFIDENCE — LOW to MEDIUM: ------------------------------------------------------------ Sample sizes are small for decision-making: total 122 contacts over 6 months. SQO bases: paid_search 18, organic_search 10, linkedin_ads 8, referral 6, webinars 5, paid_social 0. A shift of 1-2 deals changes rates materially. Pipeline amounts are uniform per channel (paid_search always 40000, linkedin_ads/webinars always 12000, organic_search 9000, referral 8000) — suggests fixed/average values not realized revenue, variance is missing. Linkedin_ads metrics are further uncertain due to 2 flagged inverted dates. Paid_social undefined rates mean no efficiency comparison is possible. Seasonality, sales cycle lag, and attribution (first_touch only) not in data.
Updated Battlecard: Rivally — sourced only from provided files (as of 2026-09-03) All factual claims cite snippet_id. Rep opinion excluded [S09, S21 not cited as facts]. Old card claims without re-source marked UNVERIFIED. 1) ONE-LINE POSITIONING Points-based recognition feed vendor [S02] focused on mid-market [S04] with expanding EU enterprise presence [S11][S12][S15]. Lightweight engagement survey add-on "Rivally Pulse" [S06]. - Old card claim "points-based recognition for mid-market" RE-SOURCED: points-based recognition feed [S02] + mid-market reviewer [S04] 2) PRICING — source and date, newer wins (conflict noted) Current list: $7 per user/month, Recognition Starter tier, annual billing required [S17] — pricing_page dated 2026-08-12 (newer source wins) Conflict history: - 2026-01-20: $5 per user/month, annual billing required [S03] — pricing_page - 2026-04-01: still $5 per user/month [S08] — pricing_page - 2026-06-02: deal mention quoted $6.50/user/mo to 500-seat prospect, annual term [S13] — call_notes (deal quote, not list) - 2026-08-12: $7 per user/month [S17] — pricing_page (CURRENT) - 2026-08-14: prospect says Rivally quoted $7/user/mo list, offered 15% discount for 3-year term [S18] — call_notes Arithmetic: $5 -> $7 is +$2 (+40%). Offered discounted price on 3-year: $7 * 0.85 = $5.95/user/mo [S18 math]. Note: S13 ($6.50) and S18 ($7 with 15% off) are deal-specific quotes, not list; S17 is authoritative for list. Old card claim "starts at $5 per user/month, annual billing (as of 2026-01)" is SUPERSEDED by [S17] 2026-08-12; retained as historical only. 3) WHERE THEY WIN (with source) - Points-based recognition feed praised as engaging [S02][S16] - Fast setup under a week, Slack integration works out of the box [S04] - EU distributed teams / multi-language support praised [S12] - EU data residency pitched [S05] and now generally available with Dublin office [S15] + EMEA leadership hire [S11] - Support response praised (under 4 hours) [S22] - Microsoft Teams app v2 in preview [S19] 4) WHERE WE WIN (vs Rivally) - Analytics depth: Rivally limited analytics [S02], basic reporting dashboards [S07], analytics exports CSV-only [S20]; 800-seat prospect picked Bonusly over Rivally citing analytics depth [S25] - Admin / provisioning: lacks SCIM provisioning, manual user management painful [S10]; admin tooling lags peers [S16]; admin console lacks bulk recognition editing [S24] - Rewards catalog in EMEA thinner than US catalog [S14] 5) OBJECTIONS AND RESPONSES (objection = prospect-facing claim with source; response = our sourced counter) - Objection: "Rivally offers EU data residency" [S05][S15] — Response: Acknowledge GA in Dublin [S15]; pivot to evaluation criteria where we win on analytics depth [S25] and reporting gaps [S07][S02] — prospect-selected win reason [S25]. - Objection: "Rivally is strong for EU distributed teams with multi-language" [S12] — Response: Counter with admin/enterprise scalability gaps: no SCIM/manual management [S10], no bulk editing [S24], thinner EMEA catalog [S14]. - Objection: "Rivally is quick to set up / Slack works out of the box" [S04] — Response: Acknowledge speed; raise total cost of ownership due to analytics limits [S02][S07][S20] and migration pain (CSV-only exports) [S20]. - Objection: "Rivally list is $7 but they offered 15% for 3-year" [S18] / earlier $6.50 quote [S13] — Response: Do not match discount on opinion [S21 excluded]; anchor to current list $7 annual [S17] and reframe on analytics value [S25]; note Pulse is priced as add-on not bundled [S23] so compare apples-to-apples. No rep opinion used as fact: [S09] clunky UI and [S21] discounting aggressively excluded per instructions. 6) RECENT CHANGES (chronological) - 2025-11-04: Series C $40M led by Northgate Ventures [S01] - 2025-12-15: G2 praise for points-based feed, limited analytics noted [S02] - 2026-03-05: Launches Rivally Pulse lightweight survey add-on [S06] - 2026-05-09: Hires ex-Workday VP EMEA to lead European expansion [S11] - 2026-07-01: Opens Dublin office; EU data residency generally available [S15] - 2026-08-12: Pricing page update to $7/user/mo [S17] (supersedes $5 [S03][S08]) - 2026-08-20: Microsoft Teams app v2 in public preview [S19] - 2026-09-01: Rivally Pulse exits beta, priced as add-on not bundled [S23] 7) OUR 12-MONTH WIN/LOSS RECORD vs RIVALLY Source: deals_with_competitor.csv (all rows dated 2025-09 to 2026-08 inclusive = 12 months ending last deal month 2026-08). No other competitor rows. Arithmetic shown: Total deals vs Rivally = 20 Count wins = 13 Count losses = 7 Check: 13 + 7 = 20 Win list (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 Loss list (7): Deal-7767F5, Deal-5645A5, Deal-C6FFAA, Deal-D263E0, Deal-935746, Deal-9066A6, Deal-72A02F Win rate = 13 / 20 = 0.65 = 65% Loss rate = 7 / 20 = 0.35 = 35% By month (for verification): 2025-09: 1W (072E31), 1L (7767F5) 2025-10: 2W (A9FD43, F65C8F) 2025-11: 1W (7AA785), 1L (D263E0) 2025-12: 1W (44C524), 1L (935746) 2026-01: 2W (0D0CD6, E46EAB) 2026-02: 2W (D5B790, 1D2392) 2026-03: 1W (5C636E), 1L (9066A6) 2026-04: 0W, 2L (5645A5, 72A02F) 2026-05: 0W, 1L (C6FFAA) 2026-06: 1W (67BE14) 2026-07: 1W (1B6969) 2026-08: 1W (F03E7B) 8) OLD CARD CLAIMS — VERIFICATION STATUS - "points-based recognition for mid-market" — RE-SOURCED [S02][S04] - "starts at $5 per user/month, annual billing (as of 2026-01)" — HISTORICAL [S03]; SUPERSEDED by [S17] - "Strong in EU enterprise with multi-language support" — RE-SOURCED [S12] - "Rivally lacks a Slack integration" — CONTRADICTED by [S04] (Slack integration worked out of the box) — MARKED UNVERIFIED / CONTRADICTED, remove from card - "Rivally was acquired by WorkHuman in 2025" — NO SNIPPET SUPPORT — MARKED UNVERIFIED, remove from card No facts invented. If data missing said explicitly above (no source for acquisition; no current data beyond 2026-09-03).
Sequences - step rates (opened/sent, replied/sent, meetings/sent): New Logo Nurture: Step1: sent 500 open 210/500=42.00% reply 42/500=8.40% mtg 12/500=2.40% Step2: sent 458 open 160/458=34.93% reply 30/458=6.55% mtg 9/458=1.97% Step3: sent 275 open 120/428=28.04% reply 18/428=4.21% mtg 6/428=1.40% Sequence total: sent 1386 reply 90/1386=6.49% mtg 27/1386=1.95%. Weakest step: Step 3 (lowest reply/mtg). Expansion Nurture: Step1: sent 300 open 130/300=43.33% reply 22/300=7.33% mtg 5/300=1.67% Step2: sent 300 open 340/300=113.33% reply 25/300=8.33% mtg 4/300=1.33% Step3: sent 275 open 95/275=34.55% reply 12/275=4.36% mtg 3/275=1.09% Total: sent 875 reply 59/875=6.74% mtg 12/875=1.37%. Weakest step: Step 3. Cold Outbound - HR Leaders: Step1: sent 600 open 240/600=40.00% reply 5/600=0.83% mtg 0/600=0.00% Step2: sent 595 open 175/595=29.41% reply 2/595=0.34% mtg 0/595=0.00% Step3: sent 590 open 130/590=22.03% reply 1/590=0.17% mtg 0/590=0.00% Total: sent 1785 reply 8/1785=0.45% mtg 0%. Weakest step: Step 3 (all steps <2%). Cold Outbound - People Ops: Step1: sent 400 open 150/400=37.50% reply 14/400=3.50% mtg 3/400=0.75% Step2: sent 386 open 110/386=28.50% reply 9/386=2.33% mtg 2/386=0.52% Step3: sent 377 open 80/377=21.22% reply 6/377=1.59% mtg 1/377=0.27% Total: sent 1163 reply 29/1163=2.49% mtg 6/1163=0.52%. Weakest step: Step 3. Tracking error: Expansion Nurture Step 2 opened 340 > sent 300 = 113.33% open rate. Impossible; indicates bot opens, double-counting, or logging duplicate opens. Exclude from reporting until fixed. Audience overlap: 23 contacts in >1 sequence. 2 overlap New Logo Nurture + Expansion Nurture: CT-000301, CT-000624. 21 overlap Cold Outbound - HR Leaders + Cold Outbound - People Ops: CT-000849, CT-000884, CT-000890, CT-000908, CT-001033, CT-001097, CT-001101, CT-001103, CT-001105, CT-001130, CT-001153, CT-001159, CT-001217, CT-001227, CT-001236, CT-001255, CT-001258, CT-001277, CT-001285, CT-001311, CT-001345. No other cross-sequence overlaps found in provided audiences.csv. Failure mode <2% reply: Cold Outbound - HR Leaders all steps (0.83%, 0.34%, 0.17%) and Cold Outbound - People Ops Step 3 (1.59%). Opens 22-40% but reply collapses and mtg 0% = message-market fit / offer failure, not deliverability. Content not resonating with HR Leaders persona; Step 3 fatigue amplifies. One change per weak sequence: HR Leaders: Pause and rewrite offer + ICP - no meetings on 1785 sends. Test new pain-specific hypothesis vs HR Leaders. People Ops: Fix Step 3 CTA - replace generic follow-up with customer proof/case or calendar-link. Expansion Nurture: Fix tracking first - audit open logging for Step 2, then re-evaluate Step 3 reply drop. Fix first: Cold Outbound - HR Leaders - largest volume, 0% meeting rate, wasted sends. Stop spend until reply >2%.
Weekly Marketing Goals Update — Q3-2026 (92 days: 2026-07-01 to 2026-09-30, days elapsed 66, days remaining 26) Pace baseline: 66/92 = 0.71739 = 71.74% of quarter elapsed. Expected at pace = target * 66/92. 1) SQMs QTD actual: 230 Target: 300 (higher_better) Delta: 230 - 300 = -70 (-23.3%) Expected at pace: 300 * 66/92 = 19,800/92 = 215.22 Pace: AHEAD (actual 230 > 215.22 by +14.78) 2) SQOs QTD actual: 84 Target: 120 (higher_better) Delta: 84 - 120 = -36 (-30.0%) Expected at pace: 120 * 66/92 = 7,920/92 = 86.09 Pace: BEHIND (actual 84 < 86.09 by -2.09; essentially on pace but technically 2.4% behind linear) 3) DS2s QTD actual: 40 Target: 75 (higher_better) Delta: 40 - 75 = -35 (-46.7%) Expected at pace: 75 * 66/92 = 4,950/92 = 53.80 Pace: BEHIND (actual 40 < 53.80 by -13.80; -25.7% vs pace) 4) Closed-Lost MIA Rate QTD actual: closed_lost_mia 5 / closed_lost_total 25 = 5/25 = 0.20 = 20.0% Target: 0.10 = 10.0% (lower_better) Delta: 0.20 - 0.10 = +0.10 = +10.0pp over target (+100% vs target) Pace: BEHIND (over target threshold; not time-paced — rate is 2x allowable. No days-elapsed pace applies) Arithmetic shown: 5/25 = 0.20 5) Same-Quarter Closes QTD actual: 10 Target: 20 (higher_better) Delta: 10 - 20 = -10 (-50.0%) Expected at pace: 20 * 66/92 = 1,320/92 = 14.35 Pace: BEHIND (actual 10 < 14.35 by -4.35; -30.3% vs pace) 6) Active Pipeline Coverage QTD actual: 3,000,000 Target: 4,000,000 (higher_better) Delta: 3,000,000 - 4,000,000 = -1,000,000 (-25.0%) Coverage: 3,000,000 / 4,000,000 = 0.75 = 75.0% Expected at pace: 4,000,000 * 66/92 = 264,000,000/92 = 2,869,565.22 Pace: AHEAD (actual 3,000,000 > 2,869,565.22 by +130,434.78) No deal/company aliases were provided in marketing_qtd.csv, targets.csv, or quarter_meta.csv to cite. What moved this week: No weekly movement data was provided. The files contain only QTD cumulative totals (marketing_qtd.csv), static targets (targets.csv), and quarter timing (quarter_meta.csv). Without WoW or prior-week snapshots, week-over-week change, driver, or trend cannot be calculated. Explicitly: data missing for weekly delta.
Do not rely on Q3 forecast of $115,977. It is $44,729 from 7 COMMIT plus $71,248 (35% of $203,565 across 24 BEST_CASE, 23 PIPELINE at 0) with 54 of 86 deals in quarter and 32 deals worth $227,575 excluded after 2026-09-30 including Deal-D348E1 $13,770 on 2026-10-15 and 9 BEST_CASE $28,240, 22 PIPELINE at 0. Caveat: 85 of 86 lack owner and 71 of 86 lack why-buy including all 7 COMMIT, so precision is false and dates look pushed.
Subject: Re: July 28 demo recap - 150 seats Hi there, Circling back on my Aug 5 email recapping our July 28 demo with you and your two HR admins - you had a strong reaction to automated milestone awards and the points catalog and asked for pricing for 150 seats. Haven't heard back since that note. Are you open to a brief 15-minute call next week to confirm if this is still a priority for the People team? Best, Alex Franklin
Marketing: This week the team delivered 46 SQMs against a target of 52 (46/52 = 88.5% to target, 6 short) — great momentum to celebrate and build on. The webinar channel led the way with 18 SQMs (18/46 = 39.1% of weekly SQMs), while paid search held efficient at $150 cost per SQM. Sales: Sales converted 14 SQOs and set 9 DS2 meetings, creating $310,000 in new pipeline. The team also closed 3 deals same-quarter, adding strong close to the week's impact. CS: CS saved 2 renewals this week and moved team NPS to 61 — a recognition-worthy lift in customer health. Heading into next week, there are 3 open red-flag accounts to support. PLG: PLG welcomed 412 new signups with activation at 31% (412 x 0.31 = 127.72, ~128 activated) and celebrated 38 companies reaching the aha moment of 10 recognition gives.
Partner Digest — Period: 2026-08-24 to 2026-09-04 Partner-sourced pipeline (utm_source = Partner): 5 deals, $550,000 Arithmetic: 180,000 + 95,000 + 140,000 + 60,000 + 75,000 = 550,000 Active partners: 1. Apex Rewards Co — active — 2 sourced deals, $275,000 Arithmetic: 180,000 + 95,000 = 275,000 Deals: Deal-DDAAF2 ($180,000), Deal-2CF33E ($95,000) Status: Co-webinar locked for 2026-09-15; both opps in DS1 per Slack 2026-08-25. 2. HRCloud Partners — active — 1 sourced deal, $140,000 Deals: Deal-F1CDA5 ($140,000) Status: Integration referral closed security review; opp moved to DS2 per Slack 2026-08-27. 3. CultureBridge — active — 2 sourced deals, $135,000 Arithmetic: 60,000 + 75,000 = 135,000 Deals: Deal-096E1D ($60,000), Deal-067213 ($75,000) Status: Lunch-and-learn produced two sourced opps; both early stage per Slack 2026-08-29. 4. WorkWell Group — active — 0 sourced deals, $0 Status: No sourced deals this period; joint playbook restart planned for Q4, planning call booked 2026-09-09 per Slack 2026-09-02. Quiet partners: 5. Recogniq — quiet — No sourced deals this period. 6. KudosWave — quiet — No sourced deals this period. 7. PeopleFirst Advisors — quiet — No sourced deals this period. 8. TotalPerk — quiet — No sourced deals this period. Total verification: 2 (Apex) + 1 (HRCloud) + 2 (CultureBridge) + 0 (WorkWell) + 0 (quiet) = 5 deals; $275,000 + $140,000 + $135,000 = $550,000 matches partner_deals.csv.
Vendor response based solely on policy_excerpts.md [P1]-[P8]: Q1 - Is customer data encrypted at rest? If so, how? Answer: Yes. All customer data is encrypted at rest using AES-256. [P1] Q2 - Is data encrypted in transit? Answer: Yes. Data in transit is encrypted with TLS 1.2 or higher. [P1] Q3 - Do you hold a SOC 2 report, and can we obtain a copy? Answer: Yes. Bonusly maintains a SOC 2 Type II report, renewed annually. The report is available to prospects under NDA. [P2] Q4 - How long is customer data retained after contract termination? Answer: For the duration of the contract plus 90 days, after which it is deleted from production systems. [P3] Q5 - Where is your subprocessor list published and how are changes notified? Answer: A current list is maintained at trust.bonusly.com. Customers receive 30 days notice before a new subprocessor is added. [P4] Q6 - Do you support SAML single sign-on? Answer: Yes. SAML 2.0 single sign-on (and SCIM user provisioning) are available on the Enterprise plan. [P5] Q7 - What is your production backup schedule and retention? Answer: Production databases are backed up daily. Backups are encrypted and retained for 35 days. [P6] Q8 - Do you hold an ISO 27001 certification? Answer: Unanswerable from provided excerpts. No excerpt in [P1]-[P8] addresses ISO 27001. Would require certification/compliance documentation or Trust portal certification list — not provided. Q9 - What is your contractual uptime SLA percentage? Answer: Unanswerable from provided excerpts. No excerpt in [P1]-[P8] addresses uptime SLA. Would require MSA / SLA exhibit / Terms of Service — not provided. Q10 - Will you sign a HIPAA Business Associate Agreement? Answer: Unanswerable from provided excerpts. No excerpt in [P1]-[P8] addresses HIPAA or BAAs. Would require legal / HIPAA compliance documentation — not provided.
RECONCILIATION — skill set vs skill_manifest.csv
Source: only data provided. No invented deals/companies. Skill aliases cited exactly as in manifest/file frontmatter.
---
FINDING 1 — Duplicate ALWAYS-trigger phrase [CRITICAL] [MERGE]
Pair: `comms-drafter` vs `email-drafter`
Evidence — identical ALWAYS triggers verbatim in description:
comms-drafter: "write me an email," "draft a follow-up," "help me reply," "what should I say," "bump email," "contract nudge" + covers outbound/follow-ups/post-demo recaps/pricing/contract/QBR/onboarding for AEs,SDRs,CSMs,partnerships,rewards,ops
email-drafter: "write me an email," "draft a follow-up," "help me reply to this," "what should I say," "review this email," "bump email," "contract nudge" + covers outbound/follow-ups/post-demo recaps/pricing/contract/stalled re-engagement/EOQ/renewal/QBR/onboarding for AEs,SDRs,CSMs
Impact: every "write me an email / draft a follow-up" invocation matches 2 skills deterministically. Router cannot choose.
Proposal: MERGE — keep one email-composition skill. Do not rewrite now.
FINDING 2 — Duplicate ALWAYS-trigger phrase [CRITICAL] [TRIM_DESC]
Pair: `pipeline-intelligence-report` vs `weekly-pipeline-report` (+ overlap with `next-to-close`)
Evidence:
pipeline-intelligence-report: "run the pipeline report", "pipeline review", "pipeline intelligence", "score the pipeline", "full pipeline", "pipeline update", "what's the pipeline look like"
weekly-pipeline-report: "run the pipeline update," "weekly pipeline report," "pipeline summary," "mid-month pipeline check," "generate the pipeline report," "do the pipeline report," "update the pipeline," "what does pipeline look like"
Overlap tokens: "run the pipeline report" (= "generate the pipeline report"), "pipeline update", "what's/does pipeline look like"
Impact: generic pipeline-report utterance triggers both. Master vs weekly cadence indistinguishable from description alone.
Proposal: TRIM_DESC — narrow weekly-pipeline-report description to "weekly" + Demand-Gen/SQM/SQO/DS2/bookings-only qualifiers; narrow pipeline-intelligence-report to "scored/tiered 10-tab LOCK/ACTION/BUILD..." ; reserve "pipeline update" to one.
FINDING 3 — Circular delegation chain [CRITICAL] [UPDATE_BODY]
Chain: `email-drafter` -> `deal-strategy-coach` -> `email-drafter`
Evidence:
email-drafter Body Lane marker: "If the user needs strategic deal coaching (stalled deal diagnosis, objection handling, multithreading, forecast risk), point them to the `deal-strategy-coach` skill."
deal-strategy-coach Body Manager-to-prospect frameworks: "When drafting manager-to-prospect emails, use the `email-drafter` skill which automatically retrieves your Gmail signature..."
comms-drafter also points to deal-strategy-coach: "For deep deal strategy, use deal-strategy-coach — this skill drafts, that skill diagnoses."
Impact: unbounded bounce on requests needing both strategy + draft.
Proposal: UPDATE_BODY — make delegation one-way (deal-strategy-coach owns diagnosis and CALLS email-drafter for execution; email-drafter must not re-delegate to deal-strategy-coach, only suggest).
FINDING 4 — Dangling delegation targets (no manifest row, no file) [WARNING] [UPDATE_BODY/REVIEW]
From bodies, these delegated skills do not exist in manifest (14 rows) nor in provided files:
- `bonusly-brand` (called by comms-drafter Step0, email-drafter, sales-forecast Step3 brand rules)
- `prospect-research-multithreading` (called by comms-drafter If Recipient Unknown, deal-strategy-coach Cross-skill handoff + If recipient unknown, email-drafter If recipient unknown)
- `signalforge-reports` (required pre-build read by pipeline-intelligence-report Phase5, weekly-pipeline-report Step4, references in stale-pipeline-report)
- `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` (analysis-validator §12.4 table)
- `skill-orchestrator` (signalforge-feedback Activation Checklist)
- `caveman` (signalforge-claim-compressor Relationship table)
Proposal: UPDATE_BODY — either add missing skills to manifest/files or change delegation to REVIEW (document as external/org skill) and guard calls with existence check.
FINDING 5 — Version conflict [CRITICAL] [DELETE_SKILL or MERGE]
Conflict: `comms-drafter` vs `email-drafter` are two versions of same capability (email/comms drafting). Same entrypoint, divergent scope, no version field to order them.
comms-drafter: claims "for everyone at Bonusly" (AEs,SDRs,CSMs,partnerships,rewards,ops, brokers), Intercom/support + partner comms, brand pillars Real/Vibrant/Progressive
email-drafter: claims "for Bonusly AEs, SDRs, and CSMs", customer-facing email only, detailed Gmail signature retrieval (Gmail:search_threads + Gmail:get_thread), HubSpot+Granola+Gong sourcing order
Conflict: cannot ship both as separate skills with overlapping ALWAYS phrases; one must be canonical.
Proposal: DELETE_SKILL — survivor `comms-drafter` (broader org-wide scope) and MERGE Gmail-signature retrieval logic from email-drafter into it; retire `email-drafter` manifest row. Alternative if rev-team specificity preferred: survivor `email-drafter`, retire `comms-drafter`. Do not rewrite now.
Note: other version markers exist but are not conflicts (analysis-validator v3.6, pipeline-intelligence-report v6, stale-pipeline-report v1.1, sales-forecast v1.1) — single version per skill.
FINDING 6 — Manifest description length audit [INFO] [REVIEW]
Arithmetic: 14 descriptions checked against 1,024-char limit.
values: 656,897,996,792,965,676,945,1004,1006,962,1006,708,762,656
max = 1006 (pipeline-intelligence-report and signalforge-claim-compressor)
count where chars > 1024 = 0
0 / 14 = 0%
Proposal: REVIEW — no TRIM_DESC required. Flag that 3 descriptions sit at 996–1006 (comms-drafter 996, partner-digest 1004, pipeline-intelligence-report 1006, signalforge-claim-compressor 1006) — within 2% of limit, monitor on next edit.
FINDING 7 — Hardcoded page ids / dates / person names in bodies [WARNING] [UPDATE_BODY]
Policy implied by skills: live queries, no hardcoded counts/ids. Bodies violate it.
- `analysis-validator`: hardcoded GTM roster (§12.3) — 6 AEs (Bryce Harmon 119337721, Hugo Lindqvist 77260721, Dana Mercer 83155923, Alex Franklin 84342457, Cole Ingram 83155924, Gavin Porter 1520255671), 7 CSMs (Colleen Perry 77938470 etc.), VPs Alaina Loori 82535637 / Shealagh Coughlin 119069206, plus RevOps Amani Phipps 210200121 etc.; hardcoded stage IDs 150582536/150582537/150582538/150582539/1175632767; hardcoded expected ranges 3,000–3,500 customers, 440k–470k users, 850–1,100 Gong calls; dates May 4/9 2026 throughout changelog.
- `partner-digest`: hardcoded Cloud ID 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f, Space ID 1958248479, Folder ID 2286616609, 5 canonical Confluence URLs with page IDs 2286321666/2265382925/2236940297/2237825028/2239365136, title format with example dates "Week of May 19, 2026", "Week of June 2, 2026".
- `pipeline-intelligence-report`: hardcoded AE owner IDs (same 5), Stage map, HubSpot org 1973303, URL pattern, CSS constants.
- `sales-forecast`: hardcoded Cloud ID same, Space ID 2232811524, Parent 2232582148, Spreadsheet IDs 1CLZeOsElVDF... / 1ENuaEcCuLjd... , Q2 2026 static context $365,152 vs $475,000, dates July 9 2026.
- `weekly-pipeline-report`: same Spreadsheet IDs, Q2 window April1–June30 2026, Q1 2026 $365,152/$475k.
- `stale-pipeline-report`: hardcoded Slack channel C0561C1JCPJ #revops-team, HubSpot URL pattern, stage IDs, color tokens.
- `signalforge-feedback`: hardcoded Page ID 2295136266, Space 2232811524, Parent 2234417154, Build Log 2247295002, Cloud ID.
- `next-to-close`: hardcoded stage IDs + channel names #deal-desk/#enterprise-chat etc. (constants, lower risk)
- `model-selection`: hardcoded model registry last_checked 2026-05-19, pricing, context windows (intended as versioned registry — exception if self-update runs).
Proposal: UPDATE_BODY — replace person/owner-ID rosters with live HubSpot:search_owners lookup; replace Confluence page/spreadsheet/space IDs with config or live search; replace date-anchored titles with period-window compute; move stage/pipeline constants to shared reference file.
FINDING 8 — Manifest drift both directions [INFO] [REVIEW]
Arithmetic:
Manifest rows = 14
Files provided = 14 (analysis-validator.SKILL.md, closed-lost-analysis.SKILL.md, comms-drafter.SKILL.md, deal-strategy-coach.SKILL.md, email-drafter.SKILL.md, model-selection.SKILL.md, next-to-close.SKILL.md, partner-digest.SKILL.md, pipeline-intelligence-report.SKILL.md, sales-forecast.SKILL.md, signalforge-claim-compressor.SKILL.md, signalforge-feedback.SKILL.md, stale-pipeline-report.SKILL.md, weekly-pipeline-report.SKILL.md)
Intersection on (file == declared_name) = 14
Files with no manifest row = 14 - 14 = 0
Manifest rows with no file = 14 - 14 = 0
Proposal: REVIEW — no drift in this snapshot. Note that Finding 4 dangling targets are drift of a different type (delegated-but-unmanifested skills) — not counted here per definition.
---
SUMMARY COUNTS: CRITICAL 3, WARNING 2, INFO 2 (7 findings, 8 counting both duplicate pairs). No rewrites performed per instruction.
Runbook — #incident-2026-08-29-reward-queue (resolved)
Source: incident_thread.md only. No facts added.
1. [M01] 14:02:10Z — Bryce Harmon
Action: Acknowledged PagerDuty alert (reward-worker queue depth >10k), took IC.
Command: PagerDuty acknowledge (exact command not stated — NEEDS CONFIRMATION)
Verification: Not stated in thread — NEEDS CONFIRMATION
Rollback: N/A (no state change)
Trace: [M01] Bryce Harmon: "PagerDuty alert fired for reward-worker queue depth > 10k. Acknowledging, taking IC."
2. [M02] 14:04:33Z — Farid Osman
Action: Checked queue depth (diagnostic)
Command: `bundle exec rake sidekiq:queue_depth`
Result: 48,213 pending jobs in reward queue. Normal stated as under 500. [48,213 / 500 = 96.4x normal]
Verification: Command output itself
Rollback: N/A
Trace: [M02]
3. [M03] 14:06:02Z — Farid Osman
Action: Checked dead set (diagnostic)
Command: Not stated — NEEDS CONFIRMATION (method for inspecting dead set not given)
Result: 112 jobs in dead set, all Redis::TimeoutError from around 13:58
Verification: Inspection output itself
Rollback: N/A
Trace: [M03]
4. [M04] 14:08:45Z — Farid Osman — STATE CHANGE
Action: Pause enqueue to stop the bleed
Command: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'`
Verification: Not stated in M04 — NEEDS CONFIRMATION (no verification output quoted for this step)
Rollback: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` (explicitly stated in M04)
Trace: [M04]
5. [M05] 14:15:20Z — Elena Sinclair — STATE CHANGE — NEEDS CONFIRMATION
Action: Cleared the dead set ("While I was in the console I cleared out the dead set.")
Command: Not stated — NEEDS CONFIRMATION (exact console command not given)
Target: Dead set — size was 112 per [M03], but M05 does not state count cleared — NEEDS CONFIRMATION whether 112 = number cleared
Verification: Not stated — NEEDS CONFIRMATION
Rollback: Not stated — NEEDS CONFIRMATION (clearing dead set is destructive; recovery procedure not in thread)
Trace: [M05]
6. [M06] 14:21:07Z — Bryce Harmon — STATE CHANGE
Action: Scale workers up
Command: `kubectl scale deployment/reward-worker --replicas=6` (was 3)
Verification: Not in M06 itself; subsequent drain observed in [M07] and [M08] — NEEDS CONFIRMATION if additional verification was done at scale time
Rollback: `kubectl scale deployment/reward-worker --replicas=3` (explicitly stated in M06)
Trace: [M06]
7. [M07] 14:33:41Z — Farid Osman
Action: Monitor queue drain (diagnostic)
Command: Not stated — NEEDS CONFIRMATION (presumed repeat of `bundle exec rake sidekiq:queue_depth` but not explicitly stated in M07)
Result: Queue depth 9,400 and falling ~1,200/min. Arithmetic: 48,213 (M02) -> 9,400 (M07) = 38,813 jobs drained in ~29 min (14:04 to 14:33).
Verification: Queue depth reading itself
Rollback: N/A
Trace: [M07]
8. [M08] 14:47:55Z — Cole Ingram
Action: Verify drain complete
Command: `bundle exec rake sidekiq:queue_depth`
Result: Returns 0. Error rate in Datadog back to baseline.
Verification: Command output (0) + Datadog error rate baseline (specific metric/query not stated — NEEDS CONFIRMATION)
Rollback: N/A
Trace: [M08]
9. [M09] 14:49:10Z — Bryce Harmon — STATE CHANGE (reverses M04)
Action: Re-enable enqueue
Command: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'`
Verification: 40 new jobs processed cleanly in the next 3 minutes (method for verifying not stated — NEEDS CONFIRMATION)
Rollback: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` (inverse of command; stated as rollback in M04)
Trace: [M09]
10. [M10] 14:55:00Z — Bryce Harmon — STATE CHANGE (reverses M06)
Action: Scale workers back down
Command: `kubectl scale deployment/reward-worker --replicas=3`
Verification: Queue stable at 0 (method not stated beyond queue depth check — NEEDS CONFIRMATION). Incident marked resolved.
Rollback: `kubectl scale deployment/reward-worker --replicas=6` (inverse; not explicitly stated as rollback for M10 but implied by M06)
Trace: [M10]
Gaps / NEEDS CONFIRMATION summary:
- Exact PagerDuty ack action [M01]
- Dead set inspection command [M03] and clear command + count + verification + rollback [M05]
- Verification of FeatureFlag.disable [M04]
- Verification at scale-up time [M06]
- How 9,400 and falling rate measured [M07]
- Datadog query for error rate baseline [M08]
- How "40 new jobs processed cleanly" verified [M09]
Failure sequence from provided logs only: 1. First error 2026-09-03T14:01:12Z | service: reward-service | level: ERROR | message: Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s Job enqueued prior: 2026-09-03T13:59:30Z reward-service INFO job enqueued; 2026-09-03T13:58:49Z web-app INFO job enqueued 2. Cascade in order 14:01:20Z reward-service ERROR Redis::TimeoutError: retry exhausted for RewardGiveJob 14:01:30Z reward-service ERROR Redis::TimeoutError: retry exhausted for RewardGiveJob 14:01:40Z reward-service ERROR Redis::TimeoutError: retry exhausted for RewardGiveJob 14:01:40Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying in 60s 14:02:28Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying 14:02:30Z sidekiq WARN Queue reward depth above 10,000 14:03:05Z api-gateway ERROR 502 upstream timeout calling reward-service /gives 14:03:30Z web-app ERROR Give form submission failed: upstream 502 from api-gateway 14:03:31Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying 14:03:48Z api-gateway ERROR 502 upstream timeout calling reward-service 14:04:13Z api-gateway ERROR 502 upstream timeout calling reward-service 14:04:22Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying 14:04:45Z web-app ERROR Give form submission failed: upstream 502 14:05:16Z api-gateway ERROR 502 upstream timeout calling reward-service 14:05:26Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying 14:05:42Z web-app ERROR Give form submission failed: upstream 502 14:06:47Z sidekiq ERROR RewardGiveJob failed: Redis::TimeoutError; retrying 14:06:49Z web-app ERROR Give form submission failed: upstream 502 14:06:52Z api-gateway ERROR 502 upstream timeout calling reward-service 14:22:10Z reward-service INFO Redis connection restored; resuming job processing 14:24:45Z sidekiq INFO Queue reward depth below 500 sidekiq_jobs.csv confirms job class: RewardGiveJob failures: J-00001 to J-00012 = 12 jobs RecognitionDigestJob failures: J-00013 to J-00016 = 4 jobs Total failed jobs in slice: 12 + 4 = 16 All errors: Redis::TimeoutError Arithmetic - duration: Outage start 14:01:12Z to Redis restored 14:22:10Z = 20m 58s Queue high-water 14:02:30Z to queue recovered 14:24:45Z = 22m 15s First 502 at 14:03:05Z is 1m 53s after first Redis error 3. Service and job involved Service of first error: reward-service (Redis at redis-primary:6379) Primary job: RewardGiveJob (sidekiq + reward-service retry exhausted) Secondary job affected: RecognitionDigestJob (appears in sidekiq_jobs.csv from 14:02:36Z onward) Downstream services impacted: sidekiq (queue depth >10k), api-gateway (502 upstream timeout), web-app (Give form submission failed) 4. Datadog query to confirm first error service:reward-service level:ERROR "Redis::TimeoutError" "redis-primary:6379" Alternative: service:reward-service AND @level:ERROR AND message:"Connection to Redis at redis-primary:6379 timed out" Time range: 2026-09-03T14:01:00Z to 2026-09-03T14:02:00Z Filters to timestamp 2026-09-03T14:01:12Z 5. What the logs do NOT show - No root cause for Redis timeout (no infra, network, config, deployment, or resource metrics) - No deal/company aliases provided in either file; none to cite - No user/customer impact count, give IDs, or revenue impact - No Redis server-side logs or postgres errors (postgres only shows INFO checkpoint complete) - No resolution action between 14:06:52Z and 14:22:10Z (gap of 15m 18s with no ERROR/WARN entries) - No data on data loss, duplicate gives, or retry success beyond queue depth dropping below 500 at 14:24:45Z
State of feature flags per files provided (flags_export.csv + flag_code.md): 1. recognition_streaks_v2 state: on targeting_rules: segment:beta_companies company_count: 42 code controls: app/models/recognition.rb - if enabled, StreakTracker.record(give) 2. points_budget_guardrails state: on targeting_rules: all_companies company_count: 220 code controls: app/services/budget_service.rb - if enabled, BudgetService.new(company).enforce!(giver, points) 3. slack_dm_nudges state: on targeting_rules: segment:region_na company_count: 87 code controls: app/jobs/nudge_job.rb - return unless enabled; then SlackDm.send_nudge(user) 4. redeem_flow_redesign state: off targeting_rules: targeted_list company_count: 12 code controls: app/controllers/redeem_controller.rb - if enabled render RedeemV2Component else RedeemV1Component 5. analytics_dashboard_v3 state: on targeting_rules: segment:tier_three company_count: 65 code controls: app/controllers/analytics_controller.rb - if enabled @dashboard = AnalyticsV3.new(company) 6. ms_teams_app_v2 state: off targeting_rules: targeted_list company_count: 9 code controls: app/services/teams_installer.rb - if enabled TeamsAppV2.install(company) 7. legacy_give_modal state: off targeting_rules: segment:legacy_plan company_count: 14 code controls: NO CODE REFERENCE in provided excerpt - controls unknown from given data 8. survey_boosters_q3 state: on targeting_rules: segment:legacy_plan company_count: 7 code controls: NO CODE REFERENCE in provided excerpt - controls unknown from given data 9. paused_offboard_cleanup state: off targeting_rules: (empty - none) company_count: 0 code controls: NO CODE REFERENCE in provided excerpt - controls unknown from given data targeting note: flag with no targets (0 companies) Arithmetic / counts verification: - Flags with code reference: 6 of 9 - Flags with NO code reference: 3 of 9 = legacy_give_modal, survey_boosters_q3, paused_offboard_cleanup - Flags with no targeting_rules / 0 companies: 1 of 9 = paused_offboard_cleanup - Flags ON: 5 (42 + 220 + 87 + 65 + 7 = 421 flag-company assignments) - overlapping, not distinct companies due to all_companies - Flags OFF: 4 (12 + 9 + 14 + 0 = 35 flag-company assignments) - Company counts cited exactly as in export.
NDA Triage — 3 inbound NDAs NDA-1 — GREEN (standard approval) — Standard mutual NDA with 2-year term / 3-year survival, 5 standard carve-outs, and Delaware law; no restrictive covenants. Driven by: "Term: two (2) years from the Effective Date; obligations survive for three (3) years after termination." + "Carve-outs: information that (a) is or becomes publicly available through no breach, (b) was known prior to disclosure, (c) is received from a third party without duty of confidence, (d) is independently developed, or (e) must be disclosed by law or court order." + "Governing law: the laws of the State of Delaware, USA." NDA-2 — YELLOW (counsel review) — Contains embedded non-solicit/non-hire that restricts hiring for 18 months post-term (exceeds NDA scope; requires counsel to narrow to non-solicit only / carve out general solicitations). Driven by: "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." NDA-3 — RED (full legal review) — Multiple non-standard/high-risk provisions: 3-year non-compete, no carve-outs, one-way confidentiality, 5-year term, and foreign exclusive jurisdiction. Driven by: "For a period of three (3) years following the Effective Date, Recipient shall not, directly or indirectly, engage in or provide services to any business that competes with Discloser's business." + "No confidentiality carve-outs are stated in this Agreement." + "One-way confidentiality in favor of [PARTY C]." + "Term: five (5) years." + "This Agreement shall be governed by and construed in accordance with the laws of the Republic of Ireland, and the parties submit to the exclusive jurisdiction of its courts."