Mean 0.974 · 36/40 perfect tests · $0.69 total · each card: the question → the correct answer (gold) → this model's actual answer
Here is the audit. DEFINITIONS ----------- - "DS2+ deal" = current stage is DS2, DS3, DS4, or DS5. - "why-buys compliant" = the deal has a why_buys value that is either (a) a LONG(n) marker (truncated substantive text), or (b) 15+ characters and not a placeholder (tbd, n/a, see notes). - "Missing DS1 timestamp" = no value in the t_ds1 column. - "Regressed" = any stage entry timestamp is earlier than a timestamp for a prior stage (e.g. t_ds3 date > t_ds4 date). AGGREGATES ---------- Total deals in file: 156 DS2+ deals: 124 DS2+ non-compliant why-buys: 101 / 124 = 81.5% Missing DS1 timestamp: 0 Regressed deals: 0 BY OWNER (DS2+ why-buys non-compliance) --------------------------------------- Bryce Harmon (119337721): 15 / 18 non-compliant (83%) Dana Mercer (83155923): 18 / 22 non-compliant (82%) Alex Franklin (84342457): 48 / 61 non-compliant (79%) Cole Ingram (83155924): 19 / 22 non-compliant (86%) Farid Osman (716654662): 1 / 1 non-compliant (100%) Elena Sinclair (701163055): no DS2+ deals (DS1 only) THREE PROCESS FIXES ------------------- 1. Gate stage advancement on why-buys entry. 81.5% of DS2+ deals have no substantive why-buys -- the field is effectively unenforced. Add a CRM validation rule that blocks progression past DS1 unless why_buys is populated with 15+ non-placeholder characters. This is the single highest-leverage fix. 2. Audit deals missing intermediate stage timestamps. Multiple deals sit at DS4/DS5 with t_ds3, t_ds4, or t_ds5 blank (e.g. Deal-547B2B at DS5 with no t_ds4/t_ds5; Deal-403845 at DS5 with no t_ds3/t_ds4/t_ds5). Either stages were skipped or timestamps weren't logged. Implement a required timestamp field per stage transition so the history is complete and skippage is visible. 3. Clean placeholder $1 deals occupying pipeline. At least 5 deals carry amount=1 (Deal-012CB1, Deal-483B2D, Deal-3795AD, Deal-03BA69, Deal-117863, Deal-F17780, Deal-2B39B0, Deal-8FDCD2). These inflate pipeline counts and distort stage metrics. Set a minimum amount threshold or mark them as "discovery" outside the forecastable pipeline until real scoping is done.
RESULTS ======= DEALS RESOLVED: 156 of 156 DEALS WITH UNMATCHED OWNER_ID: 0 (None -- every owner_id in the deals file has a corresponding row in the owners table.) ARCHIVED/DEACTIVATED OWNERS MAPPED TO DEALS: 0 The two archived owners in the table are Gavin Porter (1520255671) and Hugo Lindqvist (77260721). Neither appears as an owner_id on any open deal. TOTAL PIPELINE PER RESOLVED OWNER: Bryce Harmon: $1,054,144.00 Alex Franklin: $624,310.00 Dana Mercer: $341,195.00 Cole Ingram: $288,161.43 Farid Osman: $4,134.00 Elena Sinclair: $2,100.00 ---------------------------------------- GRAND TOTAL: $2,314,044.43
Here are the results:
---
(a) ORPHAN GONG ROWS (deal id NOT in deals_open)
30 of 67 gong rows (44.8%) reference deal IDs that have no match in the current open-deals list. These are likely closed-won, closed-lost, or otherwise removed from the default pipeline since the calls were logged.
Sample orphan aliases:
Deal-8FA85D (46 calls, Diversified Financial Services)
Deal-8FC3F9 (24 calls, Consumer Durables & Apparel)
Deal-3B7945 (21 calls, Pharmaceuticals, Biotechnology & Life Sciences)
Deal-42B265 (21 calls, Software & Services)
Deal-9CCC42 (17 calls, Food, Beverage & Tobacco)
Deal-36EA09 (17 calls, Software & Services)
Deal-9A43B4 (14 calls, Software & Services)
Deal-605F3C (12 calls, Software & Services)
Pattern: all 30 orphans show calls_with_ds2_date=0 and calls_with_sqo_date=0, consistent with deals that progressed beyond the tracked DS2/SQO stamp window (or were disqualified after the fact) before falling out of the open pipeline.
(b) DUPLICATE CONVERSATION KEYS
0 rows. Every gong row has calls_90d == distinct_conversation_keys exactly. There are no duplicate conversation IDs within any deal -- the call log is clean on this dimension.
(c) CALL COVERAGE ON OPEN DS3+ DEALS
Open deals at DS3 or later: 85
With at least 1 logged Gong call: 25
Coverage share: 25/85 = 29.4%
60 DS3+ deals (70.6%) have zero recorded Gong activity in the last 90 days.
Sample no-call DS3+ aliases:
Deal-9AAE5F (DS4, $11,250)
Deal-403845 (DS5, $9,000)
Deal-6787C2 (DS4, $7,000)
Deal-2465CE (DS5, $5,400)
Deal-62D607 (DS4, $4,800)
Deal-7B3B0F (DS4, $2,760)
Deal-F9A08A (DS4, $2,484)
Deal-0660B4 (DS4, $1,920)
Takeaway: the Gong-to-deal linkage has significant gaps. Nearly half the gong rows point to deals no longer in the open pipeline, and fewer than 1 in 3 active DS3+ deals have any call activity on record. The 0-call DS3+ cohort warrants immediate review -- either calls are not being attributed to these deals in Gong, or rep engagement has genuinely stalled.
Looking at the catalog, `COMPANY_COHORT_SUMMARY` is the only table with per-company, first-month giving/redemption metrics (`M1_USERS`, `M1_GIVES`, `M1_REDEMPTIONS`). There is no raw recognitions table in the catalog to join against, and the other listed tables are deals/engagements/subscriptions — unrelated. `REDEMPTION_RECORDS_V2` cannot be joined to this table (no shared key documented), so `M1_REDEMPTIONS` is the only redemption source available.
```sql
-- Per customer company: unique givers, recognitions, and successful
-- redemptions in the company's first calendar month as a customer.
-- Source: COMPANY_COHORT_SUMMARY — one row per self-serve company with
-- pre-aggregated month-1 metrics. No raw givings/recognitions table
-- exists in the provided catalog, so M1_* columns are the only source.
--
-- Business rules applied:
-- • "Exclude deleted givers" filter is intentionally NOT applied here;
-- the catalog states it understates historical giving counts.
-- • Redemptions: STATE = 'succeeded' only. M1_REDEMPTIONS is used
-- because REDEMPTION_RECORDS_V2 cannot be joined (no shared key in
-- catalog). If M1_REDEMPTIONS is later found to include non-
-- succeeded states, this number must be corrected against
-- REDEMPTION_RECORDS_V2 with a STATE = 'succeeded' filter.
-- • "First calendar month" = calendar month of SIGNUP_DATE.
SELECT
-- PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
-- one row per self-serve company; only table in the catalog with
-- per-company giving and redemption metrics
COMPANY_ID,
DATE_TRUNC('MONTH', SIGNUP_DATE) AS first_calendar_month,
M1_USERS AS unique_givers,
M1_GIVES AS recognition_count,
M1_REDEMPTIONS AS successful_redemption_count
FROM
-- Source for per-company first-month metrics (M1_USERS, M1_GIVES,
-- M1_REDEMPTIONS). Refreshed with cohort data; no stale/deprecated
-- warning in the catalog.
PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
WHERE
SIGNUP_DATE IS NOT NULL
ORDER BY
first_calendar_month,
COMPANY_ID;
```
**Key notes:**
- **No raw givings table in the catalog.** `M1_USERS` (unique givers) and `M1_GIVES` (recognition count) come from the pre-aggregated cohort summary. If a raw `GIVING` or `RECOGNITIONS` table exists outside the catalog excerpt, it should be preferred — the "don't filter deleted givers" rule is documented specifically because analysts query that raw table and add the filter incorrectly.
- **Redemptions caveat:** The catalog explicitly says to "confirm before relying on [REDEMPTION_RECORDS_V2] for finance-grade numbers" and that only `STATE = 'succeeded'` rows count. Since no join key connects `REDEMPTION_RECORDS_V2` to `COMPANY_COHORT_SUMMARY`, I used `M1_REDEMPTIONS`. If reconciliation is needed, a separate pass against `REDEMPTION_RECORDS_V2` grouped by company and filtered to `STATE = 'succeeded'` within the first-calendar-month window would be the correction path.
- **`COMPANY_ID` assumption:** The catalog lists `SIGNUP_DATE`, `ACTIVATED_DATE`, `CURRENT_STATUS`, etc. but does not explicitly name the company identifier column. `COMPANY_ID` is the standard convention; replace with the actual column name if it differs.
Here is the full CRM audit.
========================================================================
CRITICAL GAP: NO DEALS FILE PROVIDED
========================================================================
The extract contains companies.csv, contacts.csv, and zoominfo_enrichment.csv
but NO deals.csv. Fields required by the schema — owner, stage, amount,
close_date, why_buys — are entirely absent from this extract. I cannot
report deal completeness or rank fixes by pipeline amount because no deal
records exist in the data provided. Request the deals extract to complete
this audit.
========================================================================
1. COMPANIES COMPLETENESS (34 records)
========================================================================
Field Filled Pct
----------- ------ -----
industry 34/34 100.0%
employee_count 25/34 73.5%
hq_country 28/34 82.4%
Missing employee_count (9):
C-EC3025, C-96039F, C-44EA29, C-D04904, C-B23205,
C-60C75F, C-7BBDFA, C-50D386, C-93C8BF
Missing hq_country (6):
C-2D1F1B, C-D73B89, C-44EA29, C-D04904, C-2C60E5, C-EE9FFB
========================================================================
2. CONTACTS COMPLETENESS (52 records)
========================================================================
Field Filled Pct
------- ------ -----
email 52/52 100.0%
title 39/52 75.0%
persona 37/52 71.2%
Missing title (13):
CT-0000, CT-0022, CT-0072, CT-0080, CT-0081, CT-0092,
CT-0120, CT-0121, CT-0122, CT-0132, CT-0141, CT-0162, CT-0170
Missing persona (15):
CT-0000, CT-0022, CT-0041, CT-0060, CT-0070, CT-0081,
CT-0082, CT-0092, CT-0110, CT-0132, CT-0162, CT-0171,
CT-0172, CT-0180, CT-0181
========================================================================
3. INDUSTRY NEEDS CANONICALIZATION (CRM has 9 variants)
========================================================================
Normalize to "Technology": tech (4), Tech (4), Technology (9), SaaS (1)
Normalize to "Healthcare": health care (2) -> Healthcare (4)
"Computer Software" from ZI = "Technology" in CRM — use CRM convention.
Proposed canonical map:
'tech', 'Tech', 'Technology', 'SaaS' -> "Technology"
'health care' -> "Healthcare"
'Finance', 'Manufacturing', 'Retail' -> already canonical
========================================================================
4. COUNTRY NEEDS CANONICALIZATION
========================================================================
US (9), USA (6), United States (2) — all mean the same thing.
Proposed canonical: "United States" (ZI's convention, also ISO-friendly).
Canada (8), UK (3) — already canonical.
========================================================================
5. DUPLICATE COMPANY CLUSTERS (shared domain)
========================================================================
Cluster 1: acme-corp.com
C-0A092931: industry=Technology, emp=500, country=US
C-0A092932: industry=tech, emp=510, country=USA
-> SURVIVOR: C-0A092931 (more canonical industry/country)
-> Action: merge C-0A092932 contacts/deals into C-0A092931, delete .32
Cluster 2: globex.io
C-0A092933: industry=SaaS, emp=200, country=US
C-0A092934: industry=Technology, emp=200, country=US
-> SURVIVOR: C-0A092934 (canonical industry; identical emp/country)
-> Action: merge C-0A092933 contacts/deals into C-0A092934, delete .33
========================================================================
6. INVALID / MALFORMED EMAILS
========================================================================
CT-0010 C-66D1FC "user0@" — no domain after @
CT-0080 C-92D97D "user0@" — no domain after @
CT-0081 C-92D97D "user1@" — no domain after @
CT-0192 C-425E2A "user2@" — no domain after @
Total: 4 invalid emails
========================================================================
7. DOMAIN MISMATCHES (email domain != company domain)
========================================================================
CT-0010 C-66D1FC "user0@" — truncated, unresolvable
CT-0011 C-66D1FC "user1@other-domain.com" — does NOT match 66d1fc.com
CT-0080 C-92D97D "user0@" — truncated, unresolvable
CT-0081 C-92D97D "user1@" — truncated, unresolvable
CT-0192 C-425E2A "user2@" — truncated, unresolvable
CT-0011 is the only true domain mismatch: the email belongs to a
different organization than C-66D1FC. Investigate whether this contact
was miscategorized or changed employers.
========================================================================
8. ENRICHMENT FILLS (CRM blank, ZI has data — apply these)
========================================================================
8 company rows have blank employee_count that ZI can fill:
Company CRM emp_count ZI emp_count
---------- ------------- ------------
C-EC3025 (blank) 400
C-96039F (blank) 400
C-44EA29 (blank) 400
C-D04904 (blank) 400
C-B23205 (blank) 400
C-60C75F (blank) 400
C-7BBDFA (blank) 400
C-50D386 (blank) 400
No enrichment available for C-93C8BF (not in ZI) or for the 6
missing hq_country rows (ZI also blank for C-2D1F1B, C-D73B89,
C-2C60E5; ZI missing entirely for C-EE9FFB).
========================================================================
9. CRM vs ZI DISAGREEMENTS (both populated, values differ)
========================================================================
All "disagreements" are format variants, not substantive conflicts:
COUNTRY mismatches (US/USA vs United States — SAME value):
C-66D1FC, C-950043, C-EC3025, C-96039F, C-77A95A, C-B23205,
C-E51FB7, C-D0662E, C-425E2A, C-2D7423
-> Recommendation: normalize CRM to "United States"; no true conflict.
INDUSTRY mismatches (tech/Tech/Technology vs "Computer Software"):
C-66D1FC, C-EC3025, C-44EA29, C-92D97D, C-D04904, C-77A95A,
C-AA8DDA, C-B25F40, C-60C75F, C-425E2A
-> Recommendation: keep CRM "Technology" (canonical), discard ZI
"Computer Software" — semantically equivalent, CRM is system-of-record.
No substantive factual disagreements found.
========================================================================
10. TOP 10 FIXES BY PIPELINE AT STAKE
========================================================================
DEALS DATA IS MISSING. Without deals.csv there is no pipeline amount to
associate with any company, contact, or data quality issue. The ranking
you requested cannot be computed.
To complete this, provide deals.csv with at minimum:
- deal_id, company_alias, amount, stage, close_date, owner, why_buys
Once available, I can rank fixes by the sum of deal.amount grouped by
company_alias, prioritizing: duplicate merges (full pipeline of both
copies), missing fields on high-pipeline companies, invalid contacts
on active deals, etc.
========================================================================
SUMMARY OF ACTIONABLE FIXES (sorted by data quality impact)
========================================================================
# Fix Records Affected
-- ------------------------------------------- ----------------
1 Normalize country to "United States" 10 companies
2 Normalize industry (tech/Tech -> Technology) 8 companies
3 Apply ZI employee_count for 8 blank rows 8 companies
4 Merge acme-corp.com duplicates (.31/.32) 2 companies
5 Merge globex.io duplicates (.33/.34) 2 companies
6 Fix 4 truncated emails (missing domain) 4 contacts
7 Resolve CT-0011 domain mismatch 1 contact
8 Fill 13 missing contact titles 13 contacts
9 Fill 15 missing contact personas 15 contacts
10 Flag C-93C8BF for manual enrichment 1 company (no ZI data)
Here is the full analysis. All arithmetic shown; all aliases cited verbatim from the file. --- STEP 1 — DEAL-BY-DEAL CLASSIFICATION I classified each of the 90 deals using the free-text reason as the source of truth, mapped to one of the seven categories. Side = who drove the loss (buyer chose to pause/delay/deprioritize = buyer; buyer chose a named or unnamed competitor or Bonusly lacked something = Bonusly when the gap is on our side; no signal = unknown). # | Deal Alias | Tag | Primary Category | Side | Rationale --|---------------|---------------------------|------------------|-----------|------------------------------------------ 1 | Deal-DB0AAC | Timing | Timing | Buyer | putting on pause, rescheduled meetings 2 | Deal-F7F635 | Competitor | Competitor | Buyer | decided to go in another direction 3 | Deal-AC944F | MIA | No Decision | Unknown | unresponsive 4 | Deal-214060 | MIA | No Decision | Unknown | unresponsive 5 | Deal-91A056 | Timing | Timing | Buyer | reconnect early 2027 6 | Deal-29326C | Timing | Timing | Buyer | timing 7 | Deal-5DB9B0 | Does not fit ICP | Other | Unknown | spam 8 | Deal-831B7B | Timing | Timing | Buyer | look at this again in new year 9 | Deal-F97C37 | Competitor | Competitor | Buyer | other vendor had more diversified offerings 10 | Deal-13E9CF | Not Priority/Cost | No Decision | Buyer | R&R deprioritized, not a budget issue 11 | Deal-39E25C | Timing | Timing | Buyer | reconnect next year 12 | Deal-7ED004 | Budget/Price | Pricing | Buyer | did not get budget approval 13 | Deal-21B045 | MIA | No Decision | Unknown | MIA 14 | Deal-B3ABED | Timing | Timing | Buyer | revisit Q2 next year, budget for 2028 15 | Deal-422BA6 | Competitor | Competitor | Buyer | chose preferred ADP TotalSource partner 16 | Deal-ED9AE7 | Lost DM | No Decision | Unknown | timing, budget, authority (no specifics) 17 | Deal-988493 | MIA | No Decision | Unknown | mia 18 | Deal-381C8C | Competitor | Competitor | Buyer | not moving forward with Bonusly (no detail given) 19 | Deal-F308CA | MIA | No Decision | Unknown | no contact since April, ignored outreach 20 | Deal-F1E8A6 | Competitor | Competitor | Buyer | not moving forward with Bonusly 21 | Deal-B6AC09 | Timing | Timing | Buyer | revisiting 2027 22 | Deal-70F704 | Lost DM | No Decision | Unknown | only wanted automating anniversary awards, MIA 23 | Deal-E6E80A | Timing | Timing | Buyer | pushed into early 2027 24 | Deal-B038F0 | Timing | Timing | Buyer | pushed back into early 2027 25 | Deal-4664E1 | MIA | No Decision | Unknown | no contact after intro, ignored outreach 26 | Deal-175756 | Timing | Timing | Buyer | on hold until 2027 27 | Deal-E74A73 | Not Priority/Cost | No Decision | Buyer | want to test points manually first 28 | Deal-DDAB52 | Competitor | Competitor | Buyer | Rippl - more at same cost, no FX issues 29 | Deal-ACE061 | Competitor | Competitor | Buyer | went with HeyTaco 30 | Deal-BB78F3 | Timing | Timing | Buyer | leadership wants survey action items first 31 | Deal-D48E0B | MIA | No Decision | Unknown | MIA 32 | Deal-15DA99 | Timing | Timing | Buyer | bring back early 2027 33 | Deal-F4AF5D | Timing | Timing | Buyer | early next year 34 | Deal-79B7A1 | Timing | Timing | Buyer | timing 35 | Deal-583ADB | MIA | No Decision | Unknown | MIA 36 | Deal-8E27DA | Feature Request | Product Gap | Bonusly | moved to swag provider, didn't want R&R 37 | Deal-2D2F8D | Competitor | Competitor | Buyer | different direction 38 | Deal-E0441F | MIA | No Decision | Unknown | stale inherited deal, no contact 39 | Deal-7CB44D | MIA | No Decision | Unknown | no meaningful contact since demo 40 | Deal-0F96AA | Competitor | Competitor | Buyer | didn't advance Bonusly to finalist demo 41 | Deal-1BCA50 | Competitor | Competitor | Buyer | budget + other vendor further ahead 42 | Deal-7CC678 | Competitor | Competitor | Buyer | nothing specific provided 43 | Deal-FAC17C | Lost DM | No Decision | Buyer | couldn't get approval from Exec IT Director 44 | Deal-242273 | Competitor | Competitor | Buyer | top vendor could digitize internal points currency 45 | Deal-50E5D8 | Not Priority/Cost | No Decision | Buyer | leadership paused 46 | Deal-A2C349 | Competitor | Competitor | Buyer | sticking with Awardco + adding surveying 47 | Deal-9F176A | Timing | Timing | Buyer | paused, pick back up end of year 48 | Deal-7B2236 | Not Priority/Cost | Pricing | Buyer | combo of budget + wanted simpler/cheaper 49 | Deal-AFA56C | MIA | No Decision | Unknown | unresponsive 50 | Deal-C7156E | Competitor | Competitor | Buyer | selected another vendor 51 | Deal-C33D91 | Budget/Price | Pricing | Buyer | budget cuts 52 | Deal-9048EB | MIA | Product Gap | Bonusly | bad fit + multiple feature gaps 53 | Deal-5E64CE | Not Priority/Cost | Competitor | Buyer | locked in Nectar contract until Oct 2027 54 | Deal-8A0992 | Competitor | Competitor | Buyer | Canadian provider more closely aligns 55 | Deal-D0C698 | Competitor | Competitor | Buyer | past Kudos user wants Kudos again 56 | Deal-69CF3D | Timing | Timing | Buyer | on hold 57 | Deal-ECBF89 | Timing | Timing | Buyer | on hold 58 | Deal-3618CC | Lost DM | Product Gap | Bonusly | wanted surveys - feature we don't offer 59 | Deal-EECC02 | Competitor | Competitor | Buyer | went another direction 60 | Deal-5AD03E | Competitor | Product Gap | Bonusly | wanted more defined budget access (feature gap) 61 | Deal-D1A623 | Timing | Timing | Buyer | timing 62 | Deal-413C56 | Not Priority/Cost | No Decision | Buyer | back to school priority, CEO not ready 63 | Deal-47F1A1 | Competitor | Competitor | Buyer | staying with WorkTango 12 months 64 | Deal-BF2A98 | Competitor | Competitor | Buyer | deployed HiThrive 65 | Deal-2A292B | Not Priority/Cost | Product Gap | Bonusly | building internally (didn't see enough value vs build) 66 | Deal-D1AABF | MIA | No Decision | Unknown | no response 67 | Deal-FEDBCB | Not Priority/Cost | No Decision | Unknown | reconnect end of year, not super engaged 68 | Deal-1E7DA9 | Competitor | Competitor | Buyer | selected another platform 69 | Deal-2BBA21 | MIA | No Decision | Unknown | no contact since intro, ignored nudges 70 | Deal-286F9C | Competitor | Competitor | Buyer | went with another platform, not a good fit 71 | Deal-7FBAC6 | Not Priority/Cost | No Decision | Buyer | leadership paused again 72 | Deal-369281 | Competitor | Competitor | Buyer | went with Paylocity 73 | Deal-386F6E | MIA | No Decision | Unknown | no response 74 | Deal-9FCD0D | Competitor | Competitor | Buyer | Canadian company, important to CEO 75 | Deal-55867E | Timing | No Decision | Unknown | vague - "not moving forward at this time" 76 | Deal-DAFB82 | Budget/Price | Pricing | Buyer | other priorities need budget, 2028 77 | Deal-2FEDDB | Not Priority/Cost | No Decision | Unknown | unsure on timing 78 | Deal-64B19A | Competitor | Competitor | Buyer | stayed with Motivosity 79 | Deal-3F86A0 | MIA | No Decision | Unknown | unresponsive 80 | Deal-096750 | MIA | No Decision | Unknown | no meaningful contact after intro 81 | Deal-F325A5 | Lost DM | No Decision | Unknown | layoffs + leadership change 82 | Deal-ABD14C | Not Priority/Cost | No Decision | Buyer | not interested in signing up 83 | Deal-79E61A | MIA | No Decision | Unknown | unresponsive 84 | Deal-8A119B | Budget/Price | Pricing | Buyer | didn't get approval 85 | Deal-AE7C4E | MIA | No Decision | Unknown | unresponsive 86 | Deal-DAB4F1 | MIA | No Decision | Unknown | unresponsive 87 | Deal-B4B50F | MIA | No Decision | Unknown | unresponsive 88 | Deal-981AD4 | Feature Request | Product Gap | Bonusly | doesn't fit UI, not UK focused 89 | Deal-DC77FE | Competitor | Product Gap | Bonusly | competitor offered more customization (label points as dollars) 90 | Deal-5885B9 | MIA | No Decision | Unknown | MIA --- STEP 2 — CATEGORY COUNTS (my primary classification, based on free-text) Category | Deals | Total Pipeline | Avg Deal Size ------------------|-------|-----------------|--------------- No Decision | 33 | $467,086.20 | $14,154 Competitor | 24 | $387,740.00 | $16,156 Timing | 16 | $260,046.00 | $16,253 Product Gap | 8 | $146,880.00 | $18,360 Pricing | 6 | $168,190.00 | $28,032 Other (spam) | 1 | $10,800.00 | $10,800 Champion Left | 0 | — | — ------------------|-------|-----------------|--------------- TOTAL | 88→90 | — | — Wait — let me recheck. 33+24+16+8+6+1+0 = 88. That is 2 short of 90. Let me verify. Actually re-counting: No Decision=33, Competitor=24, Timing=16, Product Gap=8, Pricing=6, Other=1, Champion Left=0. 33+24+16+8+6+1 = 88. Two deals missing. Deal-8E27DA (row 36) I classified Product Gap. Deal-5AD03E (row 60) I classified Product Gap. Let me recount Product Gap: 36, 52, 58, 60, 65, 88, 89 = 7. Plus Deal-3618CC (row 58) = already counted. Product Gap: rows 36, 52, 58, 60, 65, 88, 89 = 7 deals. Not 8. 33+24+16+7+6+1 = 87. Still short. Let me recount No Decision. I'll count every row labeled No Decision: 3, 4, 10, 13, 16, 17, 19, 22, 25, 31, 35, 38, 39, 43, 45, 49, 62, 66, 67, 69, 71, 73, 75, 77, 79, 80, 81, 82, 83, 85, 86, 87, 90 = 33. Correct. Competitor: 2, 9, 15, 18, 20, 28, 29, 37, 40, 41, 42, 44, 46, 50, 53, 54, 55, 59, 63, 64, 68, 70, 72, 74, 78 = 25. Not 24. I miscounted. Let me list them: 2, 9, 15, 18, 20, 28, 29, 37, 40, 41, 42, 44, 46, 50, 53, 54, 55, 59, 63, 64, 68, 70, 72, 74, 78 = 25. Yes, 25. Timing: 1, 5, 6, 8, 11, 14, 21, 23, 24, 26, 30, 32, 33, 34, 47, 56, 57, 61 = 18. Not 16. Product Gap: 36, 52, 58, 60, 65, 88, 89 = 7. Pricing: 12, 48, 51, 76, 84 = 5. Other: 7 = 1. Check: 33+25+18+7+5+1+0 = 89. Still one short. Hmm. Let me recount Pricing: 12 (Deal-7ED004), 48 (Deal-7B2236), 51 (Deal-C33D91), 76 (Deal-DAFB82), 84 (Deal-8A119B) = 5. That's correct. Let me look for any deal I might have missed or double-counted. Total should be 90. Actually, let me recheck row 75 (Deal-55867E). Tag: Timing, Text: "not moving forward at this time". I classified as No Decision. Could be Timing. Let me keep it as No Decision since the text is vague and doesn't mention a future date. So: 33+25+18+7+5+1 = 89. I'm missing one. Let me go through the 90 rows systematically checking which row I missed assigning. Row 1-10: 1=Timing, 2=Comp, 3=ND, 4=ND, 5=Timing, 6=Timing, 7=Other, 8=Timing, 9=Comp, 10=ND. (10) Row 11-20: 11=Timing, 12=Pricing, 13=ND, 14=Timing, 15=Comp, 16=ND, 17=ND, 18=Comp, 19=ND, 20=Comp. (10) Row 21-30: 21=Timing, 22=ND, 23=Timing, 24=Timing, 25=ND, 26=Timing, 27=ND, 28=Comp, 29=Comp, 30=Timing. (10) Row 31-40: 31=ND, 32=Timing, 33=Timing, 34=Timing, 35=ND, 36=PG, 37=Comp, 38=ND, 39=ND, 40=Comp. (10) Row 41-50: 41=Comp, 42=Comp, 43=ND, 44=Comp, 45=ND, 46=Comp, 47=Timing, 48=Pricing, 49=ND, 50=Comp. (10) Row 51-60: 51=Pricing, 52=PG, 53=Comp, 54=Comp, 55=Comp, 56=Timing, 57=Timing, 58=PG, 59=Comp, 60=PG. (10) Row 61-70: 61=Timing, 62=ND, 63=Comp, 64=Comp, 65=PG, 66=ND, 67=ND, 68=Comp, 69=ND, 70=Comp. (10) Row 71-80: 71=ND, 72=Comp, 73=ND, 74=Comp, 75=ND, 76=Pricing, 77=ND, 78=Comp, 79=ND, 80=ND. (10) Row 81-90: 81=ND, 82=ND, 83=ND, 84=Pricing, 85=ND, 86=ND, 87=ND, 88=PG, 89=PG, 90=ND. (10) Total: 90. Good. Now let me recount: No Decision: 3,4,10,13,16,17,19,22,25,27,31,35,38,39,43,45,49,62,66,67,69,71,73,75,77,79,80,81,82,83,85,86,87,90 = 34 Competitor: 2,9,15,18,20,28,29,37,40,41,42,44,46,50,53,54,55,59,63,64,68,70,72,74,78 = 25 Timing: 1,5,6,8,11,14,21,23,24,26,30,32,33,34,47,56,57,61 = 18 Product Gap: 36,52,58,60,65,88,89 = 7 Pricing: 12,48,51,76,84 = 5 Other: 7 = 1 Total: 34+25+18+7+5+1 = 90. ✓ Now pipeline values: Pricing deals: 12(7ED004=60000), 48(7B2236=72000), 51(C33D91=7200), 76(DAFB82=30000), 84(8A119B=3250) = 172,450. Avg = 34,490. Competitor deals - I'll compute total: 2(3600), 9(4320), 15(3000), 18(4800), 20(3150), 28(4000), 29(3600), 37(4800), 40(76800), 41(15000), 42(11116), 44(60000), 46(21600), 50(13818), 53(3360), 54(7336.56), 55(2000), 59(66690), 63(10004.4), 64(8400), 68(26400), 70(13860), 72(2400), 74(4300), 78(3240) Let me add: 3600+4320+3000+4800+3150+4000+3600+4800+76800+15000+11116+60000+21600+13818+3360+7336.56+2000+66690+10004.4+8400+26400+13860+2400+4300+3240 = 373,550.96 No Decision deals: 3(3400), 4(2880), 10(33750), 13(11700), 16(2340), 17(8400), 19(30321), 22(3000), 25(12000), 27(2100), 31(14931), 35(3600), 38(2405), 39(31860), 43(2100), 45(4800), 49(3000), 62(2760), 66(23400), 67(2000), 69(2310), 71(7200), 73(13895), 75(7200), 77(2200), 79(3840), 80(2880), 81(14400), 82(5002.2), 83(7020), 85(2800), 86(3450), 87(21060), 90(7200) = let me add these up: 3400+2880+33750+11700+2340+8400+30321+3000+12000+2100+14931+3600+2405+31860+2100+4800+3000+2760+23400+2000+2310+7200+13895+7200+2200+3840+2880+14400+5002.2+7020+2800+3450+21060+7200 = 303,735.20 Timing deals: 1(5115), 5(2975), 6(6300), 8(7200), 11(3360), 14(40001), 21(3000), 23(24000), 24(2340), 26(2880), 30(6600), 32(19600), 33(5760), 34(25000), 47(54600), 56(11520), 57(7200), 61(25200) = 5115+2975+6300+7200+3360+40001+3000+24000+2340+2880+6600+19600+5760+25000+54600+11520+7200+25200 = 245,651 Product Gap: 36(21000), 52(41790), 58(15600), 60(24000), 65(6000), 88(36855), 89(8000) = 21000+41790+15600+24000+6000+36855+8000 = 153,245 Other: 7(10800) Total: 172450+373550.96+303735.20+245651+153245+10800 = 1,259,432.16 --- STEP 2 — FINAL SUMMARY TABLES Category Counts: No Decision 34 deals (37.8%) | $303,735 | avg $8,933 Competitor 25 deals (27.8%) | $373,551 | avg $14,942 Timing 18 deals (20.0%) | $245,651 | avg $13,647 Product Gap 7 deals (7.8%) | $153,245 | avg $21,892 Pricing 5 deals (5.6%) | $172,450 | avg $34,490 Other (spam) 1 deal (1.1%) | $10,800 | avg $10,800 Champion Left 0 deals (0.0%) | — | — Side Split: Buyer 56 deals (62.2%) Unknown 27 deals (30.0%) Bonusly 7 deals (7.8%) The "Bonusly" side deals are the 7 Product Gap deals (36, 52, 58, 60, 65, 88, 89) where the free text reveals a capability shortfall on our end: missing surveys (Deal-3618CC), missing UI fit/UK focus (Deal-981AD4), missing customization granularity (Deal-DC77FE), missing budget access controls (Deal-5AD03E), feature gaps + bad fit (Deal-9048EB), no R&R desire (Deal-8E27DA), build-vs-buy (Deal-2A292B). --- STEP 3 — TAG vs. FREE-TEXT DISAGREEMENTS I compare the structured closed_lost_tag to my primary classification (derived from free-text). I count a "disagreement" when the tag's implied category does not match what the free-text actually says. Deals with clear tag/text disagreement: Row Tag Primary (from text) Deal Alias 10 Not Priority/Cost No Decision Deal-13E9CF (tag is close, marginal) 16 Lost DM No Decision Deal-ED9AE7 (tag is vague) 22 Lost DM No Decision Deal-70F704 (MIA + wrong scope, not DM issue) 36 Feature Request Product Gap Deal-8E27DA (tag is close, marginal) 43 Lost DM No Decision Deal-FAC17C (tag is close, marginal) 52 MIA Product Gap Deal-9048EB (text: bad fit + feature gaps) 53 Not Priority/Cost Competitor Deal-5E64CE (locked into Nectar = competitor lock-in) 58 Lost DM Product Gap Deal-3618CC (wanted surveys = feature gap) 60 Competitor Product Gap Deal-5AD03E (wanted more budget access = product gap) 65 Not Priority/Cost Product Gap Deal-2A292B (building internally = didn't see value) 88 Feature Request Product Gap Deal-981AD4 (tag is close, marginal) 89 Competitor Product Gap Deal-DC77FE (more customization = product gap) 71 Not Priority/Cost No Decision Deal-7FBAC6 (tag is close, marginal) 75 Timing No Decision Deal-55867E (vague, no future date) I set a strict threshold: the tag must name a fundamentally different reason than what the text says. Marginal cases where the tag is in the right neighborhood (e.g. "Not Priority" vs "No Decision", or "Feature Request" vs "Product Gap") are excluded. Clear disagreements (strict): 7 deals. Deal | Tag Given | Text Says Actually | Correct Category -----------|--------------------------|---------------------------|------------------ Deal-9048EB| MIA | bad fit + multiple feature gaps | Product Gap Deal-5E64CE| Not Priority/Cost | locked into Nectar contract until Oct 2027 | Competitor (lock-in) Deal-3618CC| Lost DM | wanted Surveys | Product Gap Deal-5AD03E| Competitor | wanted more defined budget access | Product Gap Deal-2A292B| Not Priority/Cost | going to build internally | Product Gap Deal-DC77FE| Competitor | wanted customization (label points as dollars) | Product Gap Deal-55867E| Timing (1 year or more) | vague "not moving forward at this time" | No Decision Count: 7 deals where the structured tag clearly disagrees with the free-text reason. That is 7/90 = 7.8% misclassification rate. The dominant error pattern: deals tagged "Competitor" or "Not Priority/Cost" that are actually Product Gap when you read the text. 4 of the 7 disagreements involve a product gap mislabeled as something else. This systematically hides the real reason — Bonusly's feature set wasn't enough — from reporting. --- STEP 4 — TWO PATTERNS MOST WORTH ACTING ON PATTERN 1: "No Decision" is the real #1 category at 34 deals (38%), not Competitor. The MIA/Not Priority/Lost DM tags obscure a massive pipeline decay problem. These 34 deals represent $304K in lost pipeline with an average deal size of just $8,933 — meaning they skew small and low-engagement. The common thread: the buyer never reached a real evaluation. They went dark, lost internal priority, or couldn't muster authority. This is a nurture and qualification problem, not a product or pricing problem. Actionable response: (a) tighten qualification criteria before adding deals to pipeline — deals with <2 contacts or no multi-threading are statistically doomed; (b) build a re-engagement sequence specifically for MIA deals tagged Q1-2027 revisit, since many text fields say "early 2027" or "next year." PATTERN 2: Product gaps are being misclassified as "Competitor" losses, hiding a fixable problem. 7 deals were classified as Product Gap (the largest per-deal pipeline category at $21,892 avg). Four of those 7 had tags that hid the gap — tagged as Competitor or Not Priority instead. The specific gaps cited: surveys, UI customization (labeling points as dollars), UK localization, budget access controls, and swag-only R&R. These are concrete product asks, not phantom competitive losses. If they stay tagged "Competitor," product and engineering never see them. Actionable response: (a) re-tag Deal-3618CC, Deal-5AD03E, Deal-2A292B, and Deal-DC77FE as Product Gap; (b) feed the specific feature requests (surveys, points-as-dollars labeling, UK focus, budget controls) into the product roadmap prioritization; (c) the 7 Product Gap deals totaled $153K — at even a 30% save rate, that is $46K in recoverable pipeline if the features ship.
```json
{
"tier_counts": {
"LOCK": 6,
"ACTION": 13,
"BUILD": 39,
"REVIVE": 1,
"WATCH": 94,
"RISKY": 3
},
"tier_examples": {
"LOCK": ["Deal-25F752", "Deal-D348E1", "Deal-C26D20"],
"ACTION": ["Deal-E53952", "Deal-5408B0", "Deal-9AAE5F"],
"BUILD": ["Deal-2D1F1B", "Deal-C6FE92", "Deal-FC22A3"],
"REVIVE": ["Deal-7BBDFA"],
"WATCH": ["Deal-B7EBD1", "Deal-6787C2", "Deal-0660B4"],
"RISKY": ["Deal-C61CF7", "Deal-A5E80A", "Deal-499BF6"]
},
"risky_deals": ["Deal-C61CF7", "Deal-A5E80A", "Deal-499BF6"],
"lock_violations": 0
}
```
The pipeline is heavily bottom-weighted: 94 of 156 deals (60%) sit in WATCH, meaning they are early-stage PIPELINE with low meeting activity and minimal recent engagement beyond email. The upper tiers (LOCK + ACTION) hold only 19 deals and ~$297K, concentrated in DS4-DS5 with real meetings or recent live touchpoints. BUILD (39 deals) captures the large DS1-DS3 mid-funnel with contact breadth but zero meetings -- signal to nurture, not to forecast. Only 3 deals are RISKY: Deal-C61CF7 (DS5 BEST_CASE with zero meetings), Deal-A5E80A (DS1 COMMIT), and Deal-499BF6 (DS2 COMMIT) -- all cases where the forecast category outpaces the stage or engagement evidence. Deal-7BBDFA is the lone REVIVE: a $37K DS3 BEST_CASE that hasn't been contacted since Jul 21.
```json
[
{
"transcript_id": "TX-001",
"deal_alias": "Deal-CFE7F4",
"why_buys": [
"Automate anniversary and birthday awards — HR team of three cannot keep up manually",
"Currently track everything in a spreadsheet, people slip through the cracks"
],
"pain_points": [
"Manual anniversary/birthday awards overwhelm 3-person HR team",
"Spreadsheet tracking causes people to slip through the cracks"
],
"stakeholders": [
"Alex Franklin",
"Prospect (VP People)",
"Prospect (HR Admin)"
],
"budget_signal": "$40k earmarked for engagement tools this fiscal year",
"timeline_signal": "Live before open enrollment in November",
"competitor_mentioned": "Achievers (looked at last year, too heavy for team their size)",
"next_step": "Security review with IT lead on September 12",
"objections": [
"Need SSO and audit logs for IT to sign off"
],
"confidence": "High"
},
{
"transcript_id": "TX-002",
"deal_alias": "Deal-70BB30",
"why_buys": [
"Tie recognition to retention for hourly workforce — regretted turnover over 30%"
],
"pain_points": [
"30%+ regretted turnover in hourly workforce"
],
"stakeholders": [
"Alex Franklin",
"Prospect (Head of Total Rewards)",
"Prospect (CFO)"
],
"budget_signal": "$25k pilot budget approved for this quarter",
"timeline_signal": "Decision by end of September",
"competitor_mentioned": null,
"next_step": "Send pilot agreement; Prospect (CFO) will route to legal this week",
"objections": [
"Workday integration must be rock solid"
],
"confidence": "High"
},
{
"transcript_id": "TX-003",
"deal_alias": "Deal-530B50",
"why_buys": [
"Make recognition visible across 12 retail locations",
"Store managers have zero budget autonomy for on-the-spot recognition"
],
"pain_points": [
"Recognition not visible across 12 retail locations",
"Store managers have no budget for on-the-spot recognition"
],
"stakeholders": [
"Alex Franklin",
"Prospect (People Ops Manager)"
],
"budget_signal": null,
"timeline_signal": "No rush until Q1",
"competitor_mentioned": "Bucketlist (CEO used it at previous company and liked it)",
"next_step": "Schedule a call with CEO — Prospect (People Ops Manager) will send two times",
"objections": [
"CEO must be sold first — she decides anything people-related"
],
"confidence": "Medium"
},
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": [
"Consolidate three separate recognition tools into one",
"Paying for three tools and none talk to their HRIS"
],
"pain_points": [
"Three separate recognition tools in use",
"None of the three tools integrate with HRIS"
],
"stakeholders": [
"Alex Franklin",
"Prospect (VP People)",
"Prospect (IT Security Lead)"
],
"budget_signal": "Under $15k annually — VP People can approve without board",
"timeline_signal": null,
"competitor_mentioned": null,
"next_step": null,
"objections": [
"Procurement cycle runs 6-8 weeks minimum",
"Security review took three months for last vendor"
],
"confidence": "Low"
},
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": [
"Automate service milestones",
"Get analytics on recognition equity across departments"
],
"pain_points": [
"No automation for service milestones",
"No visibility into recognition equity across departments",
"Night-shift teams feel invisible — engagement scores 20 points lower",
"Exec team skeptical after failed rollout two years ago"
],
"stakeholders": [
"Alex Franklin",
"Prospect (HR Director)",
"Prospect (People Ops Coordinator)"
],
"budget_signal": "$12k approved under engagement line",
"timeline_signal": "Running before January all-hands",
"competitor_mentioned": "Nectar (mid-pilot currently)",
"next_step": "Present to exec team on October 2",
"objections": [
"Exec team skeptical after a failed rollout two years ago",
"Need to beat current Nectar pilot experience"
],
"confidence": "Medium"
},
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": [
"Cut admin time on service awards",
"HR Manager personally spends five hours a month ordering and shipping plaques"
],
"pain_points": [
"5 hours/month spent ordering and shipping service award plaques",
"Admin burden on service awards process"
],
"stakeholders": [
"Alex Franklin",
"Prospect (HR Manager)"
],
"budget_signal": null,
"timeline_signal": "Fiscal year resets in February — Q1 start realistic",
"competitor_mentioned": null,
"next_step": "Send one-page overview — Prospect (HR Manager) will forward to COO this week",
"objections": [
"COO usually prefers building things in-house"
],
"confidence": "Medium"
}
]
```
**Top 3 deals closest to signature:** 1. **Deal-547B2B** — $11,200 (Alex Franklin, DS5/COMMIT, close 9/11) Why close: Slack (9/4) says redlines came back clean, signing page is out, VP People confirmed signing tomorrow. Left: Signature itself — nothing else. 2. **Deal-A2B47C** — $6,360 (Alex Franklin, DS5/COMMIT, close 9/11) Why close: Slack (9/4) says it's "warm, just normal legal-review pace." DS5/COMMIT stage supports that. Left: Legal review to finish, then signature. 3. **Deal-403845** — $9,000 (Alex Franklin, DS5/COMMIT, close 9/11) Why close: Slack (9/4, Dana Mercer) confirms order form is with their finance team and "moving fine." Left: Finance approval on the order form, then signature. **Excluded:** Deal-2465CE ($5,400) is in CRM as DS5/COMMIT but Slack says it's dead for now — champion left, procurement frozen, Dana pulling it out of commit. It's a Q4 deal, not imminent. All three have close dates of 9/10 or 9/11 and sit in DS5/COMMIT. Combined pipeline: $26,560.
Here is the analysis:
---
CANDIDATE 1 — TG-001 | Deal-EC3025
Prospect quote: "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management."
Product docs check: SCIM user provisioning is listed as "NOT currently listed as supported capabilities."
Classification: REAL GAP. The capability does not exist at any tier.
Deal amount: Not provided in the data.
---
CANDIDATE 2 — TG-002 | Deal-D0D6B5
Prospect quote: "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us."
Product docs check: ADP Workforce Now is listed as "NOT currently listed as supported capabilities."
Classification: REAL GAP. The integration does not exist at any tier.
Deal amount: Not provided in the data.
---
CANDIDATE 3 — TG-003 | Deal-CFE7F4
Prospect quote: "I tried to build a custom report combining recognition frequency with turnover and couldn't — is that possible on our current plan?"
Product docs check: Custom report builder exists on the Enterprise tier. The prospect's question ("on our current plan?") implies they are on Core or Pro.
Classification: PLAN GATE. The feature exists; the prospect is not on the tier that includes it. Not a product gap.
---
CANDIDATE 4 — TG-004 | Deal-84DBA6
Prospect quote: "We turned on the Slack integration in July, but half our managers still haven't given a single recognition — nobody ever trained them on it."
Product docs check: Slack integration is available on all plans. The issue is lack of internal training, not a missing feature.
Classification: ROLLOUT / ENABLEMENT ISSUE. The product works; adoption was never driven.
---
CANDIDATE 5 — TG-005 | Deal-36C33F
Prospect quote (HR Manager): "Good to know. The web version should be fine for our office staff for now."
The mobile app gap was raised by the rep (Alex Franklin), not the prospect. Per the rules, rep language does not count as prospect voice. The prospect explicitly accepted the current state.
Classification: EXCLUDED — not raised by prospect.
---
SUMMARY — TRUE PRODUCT GAPS ONLY
1. SCIM user provisioning — Deal-EC3025. Prospect requires it for security approval; capability absent from all tiers.
2. ADP Workforce Now integration — Deal-D0D6B5. Prospect's payroll system has no native integration; called a dealbreaker.
Two gaps total. Both are integration/platform capabilities missing entirely from the product, not tier-gated or enablement-related.
Here are the results. STALE OPEN DEALS -- no logged email/call/meeting in last 7 days Snapshot: 2026-09-05 | Cutoff: 2026-08-29 (Future-dated meetings excluded; only contacts logged on or before snapshot date counted) ================================================================================ --- Bryce Harmon (18 stale deals | $692,964 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-2D1F1B DS1 $240,000 81 days 2026-06-16 Deal-66D1FC DS1 $ 99,000 16 days 2026-08-20 Deal-950043 DS1 $ 70,000 19 days 2026-08-17 Deal-B23205 DS1 $ 45,000 16 days 2026-08-20 Deal-7BBDFA DS3 $ 37,440 46 days 2026-07-21 Deal-332637 DS2 $ 36,000 9 days 2026-08-27 Deal-1BEEBF DS1 $ 31,500 19 days 2026-08-17 Deal-A414F6 DS1 $ 25,200 19 days 2026-08-17 Deal-C5658B DS1 $ 23,400 16 days 2026-08-20 Deal-40522D DS3 $ 21,000 19 days 2026-08-17 Deal-C1FA6D DS1 $ 18,000 16 days 2026-08-20 Deal-01E193 DS1 $ 12,600 8 days 2026-08-28 Deal-F0EBBB DS3 $ 11,400 24 days 2026-08-12 Deal-927338 DS1 $ 10,920 18 days 2026-08-18 Deal-E25A09 DS1 $ 6,000 9 days 2026-08-27 Deal-C9C286 DS2 $ 5,502 9 days 2026-08-27 Deal-012CB1 DS1 $ 1 23 days 2026-08-13 Deal-3795AD DS2 $ 1 8 days 2026-08-28 18 stale deals | $692,964.00 --- Dana Mercer (16 stale deals | $279,495 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-44EA29 DS2 $ 60,000 10 days 2026-08-26 Deal-E51FB7 DS2 $ 43,875 12 days 2026-08-24 Deal-B42F46 DS1 $ 27,000 19 days 2026-08-17 Deal-BA3DDC DS3 $ 23,400 15 days 2026-08-21 Deal-9DDE86 DS2 $ 20,000 15 days 2026-08-21 Deal-215CCA DS3 $ 18,900 17 days 2026-08-19 Deal-5EED42 DS3 $ 16,250 11 days 2026-08-25 Deal-57887A DS2 $ 15,000 8 days 2026-08-28 Deal-944310 DS4 $ 10,500 33 days 2026-08-03 Deal-B7EBD1 DS5 $ 9,000 16 days 2026-08-20 Deal-3974EB DS4 $ 9,000 8 days 2026-08-28 Deal-F40F04 DS2 $ 8,100 15 days 2026-08-21 Deal-7599B8 DS3 $ 7,350 18 days 2026-08-18 Deal-87DDD1 DS1 $ 5,000 19 days 2026-08-17 Deal-F336B6 DS3 $ 4,200 15 days 2026-08-21 Deal-0660B4 DS4 $ 1,920 16 days 2026-08-20 16 stale deals | $279,495.00 --- Alex Franklin (20 stale deals | $113,936 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-CC08D1 DS1 $ 24,000 16 days 2026-08-20 Deal-E73427 DS3 $ 18,000 10 days 2026-08-26 Deal-885F45 DS2 $ 9,300 12 days 2026-08-24 Deal-C2FF3C DS1 $ 8,316 10 days 2026-08-26 Deal-3EED2C DS2 $ 7,200 N/A NEVER Deal-0D2F7A DS3 $ 5,100 12 days 2026-08-24 Deal-6C60D4 DS3 $ 4,800 12 days 2026-08-24 Deal-13FEBD DS2 $ 4,680 12 days 2026-08-24 Deal-819506 DS1 $ 4,400 8 days 2026-08-28 Deal-9D0060 DS3 $ 3,840 12 days 2026-08-24 Deal-690476 DS2 $ 3,600 18 days 2026-08-18 Deal-C6D97A DS4 $ 3,240 8 days 2026-08-28 Deal-EE195F DS3 $ 3,120 8 days 2026-08-28 Deal-278DEC DS3 $ 2,700 8 days 2026-08-28 Deal-635B8E DS3 $ 2,600 18 days 2026-08-18 Deal-6883F3 DS1 $ 2,400 16 days 2026-08-20 Deal-4A13AD DS3 $ 2,160 26 days 2026-08-10 Deal-F67D31 DS2 $ 1,800 8 days 2026-08-28 Deal-5FDCE4 DS3 $ 1,600 12 days 2026-08-24 Deal-BA571A DS4 $ 1,080 18 days 2026-08-18 20 stale deals | $113,936.00 --- Cole Ingram (18 stale deals | $252,905 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-D04904 DS2 $ 58,529 11 days 2026-08-25 Deal-B25F40 DS3 $ 40,000 8 days 2026-08-28 Deal-813836 DS2 $ 32,175 11 days 2026-08-25 Deal-1BA595 DS2 $ 31,750 11 days 2026-08-25 Deal-CFE1E8 DS3 $ 18,000 11 days 2026-08-25 Deal-CD47A6 DS2 $ 12,168 11 days 2026-08-25 Deal-627646 DS3 $ 11,193 11 days 2026-08-25 Deal-FF809F DS2 $ 7,781 11 days 2026-08-25 Deal-AF932D DS2 $ 7,225 11 days 2026-08-25 Deal-A71728 DS2 $ 6,948 11 days 2026-08-25 Deal-8BC9F5 DS2 $ 5,616 10 days 2026-08-26 Deal-175395 DS3 $ 4,780 11 days 2026-08-25 Deal-481E24 DS3 $ 4,140 10 days 2026-08-26 Deal-C7F9BF DS2 $ 3,360 11 days 2026-08-25 Deal-2F3A66 DS3 $ 3,335 11 days 2026-08-25 Deal-342E96 DS2 $ 2,700 24 days 2026-08-12 Deal-E568D5 DS3 $ 1,875 11 days 2026-08-25 Deal-FD9F4E DS5 $ 1,330 10 days 2026-08-26 18 stale deals | $252,905.03 --- Farid Osman (2 stale deals | $2,881 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-8BA24E DS1 $ 2,880 8 days 2026-08-28 Deal-8FDCD2 DS1 $ 1 15 days 2026-08-21 2 stale deals | $2,881.00 --- Elena Sinclair (1 stale deal | $2,100 stale) --- Deal Alias Stage Amount Days Since Last Contact Deal-57FF13 DS1 $ 2,100 N/A NEVER 1 stale deal | $2,100.00 ================================================================================ GRAND TOTAL: 75 stale deals | $1,344,281.03 stale pipeline ================================================================================ PER-OWNER SUMMARY: Owner Stale Deals Stale Amount Bryce Harmon 18 $692,964.00 Dana Mercer 16 $279,495.00 Alex Franklin 20 $113,936.00 Cole Ingram 18 $252,905.03 Farid Osman 2 $2,881.00 Elena Sinclair 1 $2,100.00 NOTES: - Recency computed from engagements_by_deal_90d.csv last_email/last_call/last_meeting fields only. - Future-dated entries (meetings scheduled after 2026-09-05) were excluded from recency calculations. - Deal-3EED2C (Alex Franklin) and Deal-57FF13 (Elena Sinclair) show N/A -- no email, call, or meeting has ever been logged. - Bryce Harmon carries the most stale dollar volume ($693K), led by Deal-2D1F1B at $240K with no contact in 81 days. - Alex Franklin carries the most stale deal count (20), though at lower dollar amounts.
RESULTS: Last-30-Day Activity vs. DS2 Entries by Rep (Snapshot: 2026-09-05) Window: 2026-08-06 to 2026-09-05 Elena Sinclair excluded: 0 activities, 0 DS2 entries (no measurable pipeline motion) ======================================================================================= Rep Emails Calls Mtgs Total E% C% M% DS2 Act/DS2 ======================================================================================= Bryce Harmon 162 0 43 205 79.0% 0.0% 21.0% 4 51.2 Dana Mercer 84 18 11 113 74.3% 15.9% 9.7% 1 113.0 Alex Franklin 307 36 41 384 79.9% 9.4% 10.7% 18 21.3 Cole Ingram 96 14 1 111 86.5% 12.6% 0.9% 2 55.5 Farid Osman 38 0 34 72 52.8% 0.0% 47.2% 1 72.0 Elena Sinclair 0 0 0 0 N/A N/A N/A 0 N/A EFFICIENCY RANKING (lowest activities per DS2 entry = most efficient): 1. Alex Franklin 384 act / 18 DS2 = 21.3 act/DS2 2. Bryce Harmon 205 act / 4 DS2 = 51.2 act/DS2 3. Cole Ingram 111 act / 2 DS2 = 55.5 act/DS2 4. Farid Osman 72 act / 1 DS2 = 72.0 act/DS2 5. Dana Mercer 113 act / 1 DS2 = 113.0 act/DS2 Most efficient rep: Alex Franklin (21.3 activities per DS2 entry) Highest-volume rep: Alex Franklin (384 total activities) They are the SAME rep. NOTABLE ACTIVITY MIX DIFFERENCES: - Farid Osman's mix is unique: 47% meetings, 0% calls, 53% emails. He is meeting-heavy relative to every other rep. - Cole Ingram is almost entirely email-driven (87%) with minimal meetings (0.9%). - Bryce Harmon also shows 0 calls in the 30-day window; his mix is 79% email / 21% meetings. - Dana Mercer has the most balanced email/call/meeting distribution among the active reps.
Building the QTD scorecard now. Let me crunch the numbers. === QTD SCORECARD: ALEX FRANKLIN === Snapshot Date: 2026-09-05 | Quarter: Q3 2026 (Jul 1 - Sep 30) Quota: $200,000 --- BOOKINGS vs QUOTA --- Q3 closed-won deals (close_date >= 2026-07-01): Deal-A1C3E5 $40,000 new 2026-07-15 Deal-F2C7D8 $20,000 expansion 2026-07-24 Deal-B7D2F4 $35,000 new 2026-07-31 Deal-C9E1A6 $21,000 new 2026-08-12 Deal-A8B4D6 $12,000 expansion 2026-08-19 Deal-D4B8C2 $11,000 new 2026-08-21 Deal-E6F3A9 $6,500 new 2026-09-02 Deal-C5D9E2 $4,500 expansion 2026-09-03 Excluded: Deal-B3E6F1 ($24,000, closed 2026-06-20 - before Q3) New Bookings: $113,500 (40k + 35k + 21k + 11k + 6.5k) Expansion Bookings: $36,500 (20k + 12k + 4.5k) Total Bookings: $150,000 Quota: $200,000 Attainment: 75.0% New vs Expansion Split: 75.7% new / 24.3% expansion --- ACTIVE PIPELINE BY STAGE --- Stage Count Total Amount ----- ----- ------------ DS1 18 $235,421 DS2 24 $294,740 DS3 66 $523,390 DS4 4 $25,640 DS5 5 $45,730 ----- ----- ------------ Total 117 $1,124,921 --- ROLLING 90-DAY DS2-TO-WON CONVERSION RATE --- Window: 2026-06-07 to 2026-09-05 Deals that entered DS2 (entered_ds2 >= 2026-06-07): Total count: 59 Of those, won (is_won=true AND entered_ds2 >= 2026-06-07): Deal-F2C7D8 (entered_ds2: 2026-06-29) ✓ Deal-A1C3E5 (entered_ds2: 2026-06-22) ✓ Deal-B7D2F4 (entered_ds2: 2026-07-02) ✓ Deal-C9E1A6 (entered_ds2: 2026-07-14) ✓ Deal-A8B4D6 (entered_ds2: 2026-07-09) ✓ Deal-D4B8C2 (entered_ds2: 2026-07-22) ✓ Deal-E6F3A9 (entered_ds2: 2026-08-05) ✓ Deal-C5D9E2 (entered_ds2: 2026-08-10) ✓ Won from window: 8 of 59 DS2-to-Won Rate: 13.6% (8 / 59) --- WIN AND LOSS COUNTS --- Wins: 8 Losses: 27 Win Rate (W/W+L): 22.9% (8 / 35) Top Loss Reasons: Reason Count Total $ Lost --------------------------------------- ----- ----------- Lost- Timing (1 year or more) 12 $190,501 Competitor 6 $88,800 MIA 5 $49,531 Lost DM 2 $17,940 Feature Request 1 $21,000 Lost- Does not fit ICP (write in notes) 1 $10,800 --------------------------------------- ----- ----------- Total 27 $378,572 #1 loss reason: "Lost- Timing (1 year or more)" at 12 deals / $190,501 --- ACTIVITY VOLUME (LAST 30 DAYS) --- Summed across all deals in ae_engagements.csv: Emails: 779 Calls: 73 Meetings: 82 Notes: 52 Total touchpoints: 986 Avg per active deal (117 open deals): Emails 6.7 | Calls 0.6 | Meetings 0.7 | Notes 0.4 --- COACHING OBSERVATIONS --- 1. PIPELINE COVERAGE IS STRONG BUT CONVERSION IS THE BOTTLENECK. $1.12M in active pipeline vs $50K remaining quota (22.5x coverage) should be more than enough. But the 13.6% DS2-to-won rate means Alex is leaking deals in middle-to-late stages. With 9 deals in DS4/DS5 ($71,370), accelerating those 9 to close is the highest- leverage play to close the $50K gap before Sep 30. 2. TIMING OBJECTIONS ARE THE #1 KILLER — 12 OF 27 LOSSES (44%). "Lost- Timing (1 year or more)" accounted for $190,501 in lost pipeline. That pattern suggests deals are qualifying through DS2 without confirming the prospect has an active initiative or budget cycle alignment. Adding a timing/gate check at the DS2-to-DS3 transition could prevent 12 future losses per quarter. 3. ACTIVITY IS EMAIL-HEAVY AND CALL-LIGHT. 779 emails vs 73 calls and 82 meetings across the pipeline. That's a 10.7:1 email-to-call ratio. Top-performing AEs typically run 3-4:1. The 66 DS3 deals averaging only 0.6 calls each suggests deals are being nurtured via email rather than advanced through live conversation. Shifting 20-30 of those DS3 emails into calls this month could unlock the velocity needed to close the quota gap.
Here is the analysis. I used 2026-09-07 as today; "active" = last_engaged_date >= 2026-07-09 AND is_former = false.
---
NOTE: The provided CSVs do not contain deal amount or stage fields. I cannot report those values without inventing them. If you can supply a deals table with amount and stage, I will fill those columns.
---
11 of 14 deals are flagged. Three deals are clean:
CLEAN — Deal-84DBA6 | 3 active (champion, economic buyer, IT security)
CLEAN — Deal-4B0BEB | 4 active (champion, economic buyer, HR admin, finance)
CLEAN — Deal-D348E1 | 5 active (all 5 personas covered)
========================================================================
FLAGGED DEALS
========================================================================
1. Deal-EC3025 (C-FDD0C7)
Active contacts: 1 — CT-047C54 (champion)
Flag: SINGLE-THREADED (< 2 active)
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Note: CT-F2C1AE (economic buyer) is former — does not count.
Most valuable persona to add: economic buyer (budget authority; the previous one is former, creating a gap)
Unengaged match: CT-6827DB — Chief People Officer, economic buyer ✓
2. Deal-92D97D (C-E23238)
Active contacts: 1 — CT-01F5B4 (HR admin)
Flag: SINGLE-THREADED (< 2 active)
Note: CT-A902AE (champion) last engaged 2026-06-01 = 98 days ago, stale.
Personas present: {HR admin}
Personas missing: economic buyer, champion, IT security, finance
Most valuable persona to add: champion (lost the only champion; need internal advocate before anything else)
Unengaged match: none on file for C-E23238
3. Deal-50D386 (C-EB10E4)
Active contacts: 2 — CT-AA41B2 (champion), CT-B9C35B (HR admin)
Flag: UNDER-THREADED (< 3 active)
Personas present: {champion, HR admin}
Personas missing: economic buyer, IT security, finance
Most valuable persona to add: economic buyer (no budget authority engaged)
Unengaged match: CT-A1C4B3 — Chief People Officer, economic buyer ✓
4. Deal-D0D6B5 (C-32918E)
Active contacts: 3 — all champion
Flag: UNDER-THREADED (all contacts in one persona)
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable persona to add: economic buyer (3 champions but zero budget authority)
Unengaged match: CT-1FA4DB — Chief People Officer, economic buyer ✓
5. Deal-5BFE3B (C-535D36)
Active contacts: 2 — both champion
Flag: UNDER-THREADED (< 3 active AND all one persona)
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable persona to add: economic buyer (same logic — no budget authority)
Unengaged match: none on file for C-535D36
6. Deal-36C33F (C-077A0E)
Active contacts: 1 — CT-4FE556 (IT security)
Flag: SINGLE-THREADED (< 2 active)
Note: CT-405B45 (champion) and CT-86B22F (economic buyer) are both former.
Personas present: {IT security}
Personas missing: champion, economic buyer, HR admin, finance
Most valuable persona to add: economic buyer (former CPO leaves a budget-authority vacuum)
Unengaged match: CT-1DB73E — Chief People Officer, economic buyer ✓
7. Deal-885F45 (C-5E8EFB)
Active contacts: 2 — CT-51C81E (economic buyer), CT-D9A0E8 (champion)
Flag: UNDER-THREADED (< 3 active)
Personas present: {economic buyer, champion}
Personas missing: HR admin, IT security, finance
Most valuable persona to add: IT security (next blocker in typical procurement; economic buyer + champion are the hardest to land — already have both)
Unengaged match: CT-B3F25D — IT Security Lead, IT security ✓
8. Deal-FCBE5B (C-737030)
Active contacts: 1 — CT-4A5317 (champion)
Flag: SINGLE-THREADED (< 2 active)
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable persona to add: economic buyer (no budget authority)
Unengaged match: none on file for C-737030
9. Deal-5408B0 (C-2AE3AA)
Active contacts: 2 — CT-D33AE4 (champion), CT-8742FD (HR admin)
Flag: UNDER-THREADED (< 3 active)
Personas present: {champion, HR admin}
Personas missing: economic buyer, IT security, finance
Most valuable persona to add: economic buyer (no budget authority engaged)
Unengaged match: CT-07FA76 — Chief People Officer, economic buyer ✓
10. Deal-C6D97A (C-5A8FC2)
Active contacts: 3 — all champion
Flag: UNDER-THREADED (all contacts in one persona)
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable persona to add: economic buyer (3 champions but zero budget authority)
Unengaged match: none on file for C-5A8FC2
11. Deal-F9A08A (C-0D15DF)
Active contacts: 1 — CT-931B10 (champion)
Flag: SINGLE-THREADED (< 2 active)
Note: CT-913581 (economic buyer) last engaged 2026-06-20 = 79 days ago, stale.
Personas present: {champion}
Personas missing: economic buyer, HR admin, IT security, finance
Most valuable persona to add: economic buyer (the prior one went dormant)
Unengaged match: CT-697541 — Chief People Officer, economic buyer ✓
========================================================================
SUMMARY
========================================================================
5 deals are single-threaded (1 active contact):
Deal-EC3025, Deal-92D97D, Deal-36C33F, Deal-FCBE5B, Deal-F9A08A
6 deals are under-threaded (< 3 active or single-persona concentration):
Deal-50D386, Deal-D0D6B5, Deal-5BFE3B, Deal-885F45, Deal-5408B0, Deal-C6D97A
Economic buyer is the #1 missing persona across all 11 flagged deals.
7 of 11 flagged deals have an on-file unengaged economic buyer ready to activate:
Deal-EC3025 → CT-6827DB
Deal-50D386 → CT-A1C4B3
Deal-D0D6B5 → CT-1FA4DB
Deal-36C33F → CT-1DB73E
Deal-885F45 → CT-B3F25D (IT security, not EB — but that's the highest-value add for that deal)
Deal-5408B0 → CT-07FA76
Deal-F9A08A → CT-697541
4 deals have no unengaged contacts on file:
Deal-92D97D, Deal-5BFE3B, Deal-FCBE5B, Deal-C6D97A
HERE IS THE ANALYSIS
═══════════════════════════════════════
1. WHAT ALEX LEADS WITH (first 5 minutes)
═══════════════════════════════════════
8 of 10 calls (TT-001 through TT-003, TT-005 through TT-008, TT-010) open with the identical social-proof pitch:
"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."
2 calls deviate:
- TT-004: "I put together a short agenda — security review first, then pricing." (Deal-403845)
- TT-009: "You asked for straight pricing last time, so let's start there." (Deal-1E2498)
Verdict: 80% default lead is the retailer case-study hook. The other 20% tailor to prior conversation context.
═══════════════════════════════════════
2. THREE MOST COMMON OBJECTIONS & HOW ALEX HANDLES THEM
═══════════════════════════════════════
OBJECTION A — "Budget is locked" (raised 4x: TT-001, TT-003, TT-006, TT-010)
Prospect quote: "Honestly, budget is locked until next fiscal year — I can't add a new line item right now."
Alex's response: "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 B — "Revisit next quarter" (raised 3x: TT-002, TT-005, TT-008)
Prospect quote: "This is good, but can we revisit it next quarter? Open enrollment starts in October and we're underwater."
Alex's response: "Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?"
OBJECTION C — "We already use spreadsheets / gift cards" (raised 3x: TT-004, TT-007, TT-009)
Prospect quote: "We already do recognition with a spreadsheet and quarterly gift cards — why would we change?"
Alex's response: "Spreadsheets work until they scale — the difference is automation: milestones fire without HR lifting a finger, and you get analytics on who is being recognized."
Each objection gets the same scripted response every time — no variation.
═══════════════════════════════════════
3. CONCRETE NEXT-STEP AGREEMENT RATE
═══════════════════════════════════════
Alex asks "Should we lock the next step — a working session with your team this week?" in 9 of 10 calls (all except TT-004).
Prospect agrees to a specific date/time ("Yes, Thursday at 2pm works") in 8 of those 9.
Calls where no next step was agreed:
- TT-004 (Deal-403845): prospect says "I need to see what the budget committee says"; Alex says "Understood — I'll leave it with you." No next step asked.
- TT-007 (Deal-EDC141): prospect says "I need to think about it — there's no urgency"; Alex says "Fair enough." Next step was asked but NOT agreed.
- TT-010 (Deal-84DBA6): prospect says "We'll have to wait for the committee"; Alex says "Understood, thanks for the candor." Next step was NOT asked (the ask appears at minute 14 but no prospect agreement follows — the call ends with the committee objection).
Agreed next steps: 7 out of 10 calls = 70% next-step agreement rate.
═══════════════════════════════════════
4. EVERY COMPETITOR A PROSPECT RAISED
═══════════════════════════════════════
Three competitors, each raised once:
1. Awardco (TT-003, Deal-547B2B): "We're also in late talks with Awardco — their rewards catalog looks bigger than yours."
2. Workhuman (TT-005, Deal-C61CF7): raised by Alex, not the prospect — "And unlike Workhuman, our pricing includes the full rewards catalog with no extra margin."
3. Kudos (TT-007, Deal-EDC141): "How are you different from Kudos? Our CEO used them at her last company."
Note: Workhuman was proactively named by Alex, not raised by the prospect. Only Awardco and Kudos were prospect-initiated.
═══════════════════════════════════════
5. TWO COACHING NOTES
═══════════════════════════════════════
COACHING NOTE 1: Diversify the opening. The retailer case study is strong but 8 of 10 calls use it verbatim — prospects in overlapping territories will hear the same pitch from peers or competitors. Build 2-3 alternate hooks (e.g., a mid-market SaaS story, a public-sector example) and rotate by industry or persona.
COACHING NOTE 2: Script breaks when the objection isn't budget or timing. When the prospect raises "no urgency" (TT-007) or "committee approval" (TT-004, TT-010), Alex has no reframe — he defaults to "Fair enough" or "Understood" and the deal stalls. Train a response that ties urgency to a quantifiable cost of inaction (e.g., "Each quarter of delay is ~$52K in avoidable turnover based on the retailer's numbers — does that change the calculus for the committee?").
## Q3 2026 Forecast (2026-07-01 to 2026-09-30)
### COMMIT deals inside Q3 (100% weighting)
Deal-547B2B $11,200 (2026-09-11)
Deal-B7EBD1 $9,000 (2026-09-10)
Deal-403845 $9,000 (2026-09-11)
Deal-A2B47C $6,360 (2026-09-11)
Deal-2465CE $5,400 (2026-09-10)
Deal-A5E80A $2,520 (2026-09-11)
Deal-499BF6 $1,249 (2026-09-30)
-------
COMMIT total: $44,729
Arithmetic: 11200 + 9000 + 9000 + 6360 + 5400 + 2520 + 1249 = 44,729
Count: 7 deals
### BEST_CASE deals inside Q3 (35% weighting)
Deal-2D7423 $38,935 (2026-09-30)
Deal-25F752 $24,000 (2026-09-25)
Deal-E53952 $19,656 (2026-09-30)
Deal-5EED42 $16,250 (2026-09-30)
Deal-FC22A3 $10,800 (2026-09-30)
Deal-FA32A0 $11,116 (2026-09-25)
Deal-944310 $10,500 (2026-09-30)
Deal-5195DB $9,890 (2026-09-25)
Deal-180D02 $9,720 (2026-09-17)
Deal-3974EB $9,000 (2026-09-11)
Deal-5D8CEE $7,200 (2026-09-30)
Deal-9D0060 $3,840 (2026-09-29)
Deal-46988D $3,780 (2026-09-25)
Deal-357C30 $3,600 (2026-09-17)
Deal-C6D97A $3,240 (2026-09-23)
Deal-DAF1D9 $3,150 (2026-09-18)
Deal-EE195F $3,120 (2026-09-24)
Deal-55164C $3,060 (2026-09-11)
Deal-001FF4 $2,916 (2026-09-30)
Deal-7B3B0F $2,760 (2026-09-25)
Deal-F9A08A $2,484 (2026-09-15)
Deal-8952F0 $2,100 (2026-09-10)
Deal-1FC049 $1,920 (2026-09-11)
Deal-87412C $528 (2026-09-18)
-------
BEST_CASE total: $210,265
Count: 24 deals
Arithmetic check on a subset:
38935+24000+19656+16250+10800+11116+10500+9890+9720+9000 = 159,867
7200+3840+3780+3600+3240+3150+3120+3060+2916+2760+2484+2100+1920+528 = 50,398
159,867 + 50,398 = 210,265 ✓
### Weighted Forecast
COMMIT contribution: $44,729 × 100% = $44,729.00
BEST_CASE contribution: $210,265 × 35% = $73,592.75
Total = $118,321.75
Arithmetic: 44729 + (210265 × 0.35) = 44729 + 73592.75 = 118,321.75
### Summary Table
Category Deals Unweighted $ Weighted $
--------- ----- ------------ ----------
COMMIT 7 $44,729 $44,729.00
BEST_CASE 24 $210,265 $73,592.75
PIPELINE -- n/a $0 (weighted out)
TOTAL 31 $254,994 $118,321.75
### Excluded: Close date outside Q3 (after 2026-09-30)
9 deals, $48,570 total
Deal-E51FB7 $43,875 PIPELINE 2026-10-01 (Oct 1 — 1 day past quarter)
Deal-C61CF7 $5,400 BEST_CASE 2026-10-09
Deal-48B656 $5,160 BEST_CASE 2026-10-15
Deal-901332 $3,600 BEST_CASE 2026-10-15
Deal-47AE31 $3,600 BEST_CASE 2026-10-09
Deal-15D24F $3,600 BEST_CASE 2026-10-09
Deal-ED725A $2,400 BEST_CASE 2026-10-08
Deal-8AD4A5 $1,800 BEST_CASE 2026-10-07
Deal-F5A622 $1,080 BEST_CASE 2026-10-08
Deal-D348E1 $13,770 COMMIT 2026-10-15
Deal-5FDCE4 $1,600 BEST_CASE 2026-10-01
Correction — recount: 11 deals excluded.
Total: 43875+5400+5160+3600+3600+3600+2400+1800+1080+13770+1600 = 85,845
11 deals, $85,845 total excluded for being outside Q3.
### Top 5 BEST_CASE deals by amount (inside Q3)
1. Deal-2D7423 $38,935 (2026-09-30)
2. Deal-25F752 $24,000 (2026-09-25)
3. Deal-E53952 $19,656 (2026-09-30)
4. Deal-5EED42 $16,250 (2026-09-30)
5. Deal-FA32A0 $11,116 (2026-09-25)
---
## Data Quality
1. Owner is blank on 67 of 68 deals — the forecast cannot be broken down by rep, territory, or team, making commit-call validation impossible. 2. The `why_buys_chars` field is 0 or empty on nearly every deal, meaning there is no documented buyer value proposition to stress-test stage/forecast-category accuracy. 3. Deal-A5E80A is labeled COMMIT at stage DS1 (discovery), which is a staging error — a discovery-stage deal should not be in COMMIT, inflating that bucket by $2,520. 4. Close dates of 2026-10-01 (Deal-E51FB7, $43,875) and 2026-10-09 (several deals) fall just outside the quarter boundary; these look like they may have been pushed rather than genuinely lost, but the extract provides no stage-change history to confirm.
Here are the results.
================================================================
ACTIVATION HYPOTHESIS TEST — 2x2 MATRIX
================================================================
Definitions (first calendar month):
Giver signal: m1_users >= 5
Redemption signal: m1_redemptions >= 1
m1_redemptions >= 1 m1_redemptions = 0
+------------------------+------------------------+
m1_users >= 5 | BOTH SIGNALS | GIVERS-ONLY |
| n = 47 | n = 49 |
| retained = 31 | retained = 23 |
| 24-mo rate = 66.0% | 24-mo rate = 46.9% |
+------------------------+------------------------+
m1_users < 5 | REDEMPTION-ONLY | NEITHER |
| n = 29 | n = 95 |
| retained = 9 | retained = 38 |
| 24-mo rate = 31.0% | 24-mo rate = 40.0% |
+------------------------+------------------------+
Total companies: 220
Excluded from denominator: 0 — every company in the extract already has
m1_users and m1_redemptions values (including zeros), so all 220 are
classifiable. No rows were dropped.
================================================================
RETENTION LIFTS vs NEITHER BASELINE (40.0%)
================================================================
Both signals: +26.0 pp (66.0% vs 40.0%)
Givers-only: +6.9 pp (46.9% vs 40.0%)
Redemption-only: -9.0 pp (31.0% vs 40.0%)
================================================================
SINGLE SIGNAL WITH LARGEST RETENTION LIFT
================================================================
Givers (m1_users >= 5): +6.9 pp over the neither baseline.
Redemption-only actually underperforms neither by 9.0 pp, meaning a
redemption without a broad giver base is associated with worse retention
than having neither signal. This makes the redemption signal
non-positive in isolation — it only helps when paired with 5+ givers
(both = +26.0 pp, which is super-additive: 6.9 + (-9.0) = -2.1 pp
expected if independent, but observed = +26.0 pp).
================================================================
WHAT THIS DOES AND DOES NOT PROVE
================================================================
DOES prove (descriptive, from this cohort):
Companies that hit both activation thresholds in month 1 retain at
66% at 24 months vs 40% for those that hit neither — a 26 pp gap.
The combination is super-additive: the joint effect exceeds the sum
of the individual lifts, suggesting givers and redemptions reinforce
each other. Givers alone provides a modest positive signal (+6.9 pp);
redemptions alone is actually negative (-9.0 pp).
DOES NOT prove (limitations):
1. Causation. This is observational. Companies with 5+ givers and
redemptions may differ systematically (larger teams, better HRIS
integration, higher product tier) in ways that independently
predict retention. The analysis does not control for confounders.
2. Generalizability. Cohort is 2023 signups only; behavior may differ
in other vintages or markets.
3. Mechanism. We cannot tell whether driving more givers/redemptions
in month 1 would cause higher retention — only that co-occurrence
is correlated with it.
================================================================
ARR RECONCILIATION — as of 2026-09-05
================================================================
TOTALS
CRM ARR (39 company records): 603,581.76
Billing ARR (35 active subs, MRR*12): 604,739.28
Variance (Billing - CRM): 1,157.52
Arithmetic: billing sums 35 active subscriptions' MRR * 12;
CRM sums all 39 rows in company_arr.csv. Two cancelled subs
(SUB-000E/C-0C8323BF, SUB-000F/C-0DC4FB8C) are excluded from
billing ARR but still carry ARR in CRM.
================================================================
VARIANCE DECOMPOSITION (4 buckets, sum = 1,157.52)
================================================================
BUCKET 1 — STATUS MISMATCH -13,158.48
Subscriptions cancelled in Chargebee but CRM still shows ARR.
C-0C8323BF billing=0 CRM=4,905.24 delta=-4,905.24
C-0DC4FB8C billing=0 CRM=8,253.24 delta=-8,253.24
BUCKET 2 — MISSING RECORDS +11,952.00
In CRM only (no subscription exists):
C-0D5BBE3A CRM=16,497.24 billing=0 delta=-16,497.24
In Billing only (no CRM record):
C-21629AA4 billing=28,449.24 CRM=0 delta=+28,449.24
Net: -16,497.24 + 28,449.24 = +11,952.00
BUCKET 3 — ROUNDING (|delta| <= $24) -36.00
C-0D66DF9E billing=23,184.00 CRM=23,200.00 delta=-16.00
(1932*12=23,184 vs CRM 23,200 — CRM ~$1.33/mo higher)
C-14D70CE0 billing=18,180.00 CRM=18,200.00 delta=-20.00
(1515*12=18,180 vs CRM 18,200 — CRM ~$1.67/mo higher)
BUCKET 4 — OTHER (pricing discrepancy) +2,400.00
C-0F7269D7 billing=26,796.00 CRM=24,396.00 delta=+2,400.00
(Chargebee MRR=2,233 → 26,796/yr; CRM implies ~2,033/mo.
$200/mo gap — likely a mid-term price change not synced.)
SUM CHECK:
-13,158.48 + 11,952.00 + (-36.00) + 2,400.00 = 1,157.52
Reported variance: 1,157.52 ✓ RECONCILED
================================================================
MISMATCHED ACCOUNTS (7 total)
================================================================
Alias Bucket Billing ARR CRM ARR Delta
--------------- ------------------- ------------ ------------ -----------
C-0C8323BF Status mismatch 0.00 4,905.24 -4,905.24
C-0DC4FB8C Status mismatch 0.00 8,253.24 -8,253.24
C-0D5BBE3A Missing (CRM only) 0.00 16,497.24 -16,497.24
C-21629AA4 Missing (Bill only) 28,449.24 0.00 +28,449.24
C-0D66DF9E Rounding 23,184.00 23,200.00 -16.00
C-0F7269D7 Pricing mismatch 26,796.00 24,396.00 +2,400.00
C-14D70CE0 Rounding 18,180.00 18,200.00 -20.00
NOTE: Source files contain no owner field. Suggested owners cannot
be assigned without a CRM user/owner lookup. Each account above
needs a human owner assigned to drive resolution.
================================================================
BUSINESS RULE VIOLATIONS
================================================================
Rule: any subscription with term != 12 months must have
cf_agreement_end_date populated.
VIOLATION 1: SUB-0002 (C-1794A52C)
term=24mo, status=active, cf_agreement_end_date=EMPTY
VIOLATION 2: SUB-0019 (C-22170CA1)
term=36mo, status=active, cf_agreement_end_date=EMPTY
Compliant non-12mo subscriptions (for reference):
SUB-000C (C-0DB48281) term=24mo end_date=2027-11-30 ✓
SUB-001A (C-0FC4DBB8) term=36mo end_date=2027-11-30 ✓
================================================================
RECOMMENDED ACTIONS
================================================================
1. C-0C8323BF / C-0DC4FB8C — confirm cancellation status in
CRM; zero out ARR or reactivate billing as appropriate.
2. C-0D5BBE3A — CRM has $16,497 ARR with no billing sub;
investigate whether a subscription was never created or was
deleted.
3. C-21629AA4 — billing has $28,449 ARR with no CRM record;
create or restore the company record.
4. C-0F7269D7 — $200/mo pricing gap between Chargebee and CRM;
determine which is authoritative and sync.
5. C-0D66DF9E / C-14D70CE0 — minor rounding; likely a cents-
level MRR mismatch. Low priority but should be normalized.
6. SUB-0002 / SUB-0019 — populate cf_agreement_end_date to
satisfy the multi-term agreement rule.
KVM Summary: Aug-2026 vs Jul-2026 KVM Jul Aug Abs Δ Rel Δ Direction ───────────────────────────────────────────────────────────────────── Giving Rate 0.6023 0.6027 +0.0004 +0.07% → flat Redemptions/User 1.7300 1.7302 +0.0002 +0.01% → flat 1:1 Engagement 0.4469 0.4472 +0.0003 +0.06% → flat Pulse Engagement 0.6006 0.5086 -0.0920 -15.31% ↓ sharp drop Largest relative move: Pulse Engagement at -15.31%. Driven by the enterprise size_band. Enterprise pulse fell from 0.5500 to 0.2743 (-50.13%), accounting for the entire portfolio decline. SMB (-0.22%) and mid-market (+0.21%) were essentially flat. All 10 enterprise accounts show pulse values halving to ~0.26-0.29, suggesting a systemic event (survey config change, platform issue, or survey roll-off) rather than organic engagement loss. The other three KVMs moved less than 0.4% in every segment — enterprise pulse is the sole outlier.
REDEMPTION SECTION — WEEKLY REWARDS REPORT Last completed month: August 2026 (2026-08) Redemption count: 378 Total spend: $27,846.00 Unique redeemers: 235 Redemptions/deemer: 1.61 (378 / 235) PROVIDER MIX (% of spend) custom: 39.0% ($10,873.00) Tremendous: 30.5% ($8,505.00) Snappy: 18.8% ($5,238.00) TangoCard: 11.6% ($3,230.00) TOTAL: 100.0% TOP 5 COUNTRIES BY REDEMPTIONS US: 244 CA: 24 AU: 21 GB: 17 NL: 17 Note: All 378 rows in the file have redeemed_at dates <= 2026-08-31; no rows were excluded.
Here is the full analysis. Snapshot date for R3 calculations: 2026-09-05. Window = 120 days = through 2027-01-03. --- ELIGIBILITY RULES (all three must pass) R1: health_score < 60 R2: churn_save_eligible_amount > 0 R3: renewal_date within 120 days of 2026-09-05 (on or before 2027-01-03) --- SECTION 1: QUALIFIED ACCOUNTS (8 accounts) Total churn-save amount at stake: $224,601 Breakdown: 49,707 + 25,365 + 35,748 + 5,494 + 16,829 + 41,235 + 32,621 + 17,602 = $224,601 --- 1) C-0B0F1BAB | COMMERCIAL CONCESSION Health: 38 | ARR: $15,391 | Eligible: $5,494 Renewal: 2026-09-23 (18 days out) Usage: flat | Seats: 238/363 (66%) | Champion: false Signal: Renewal in 18 days, no active champion, flat usage, health 38. No internal advocate remains; only a pricing concession can anchor the renewal conversation before the contract lapses. 2) C-0E9C27D1 | COMMERCIAL CONCESSION Health: 39 | ARR: $75,093 | Eligible: $41,235 Renewal: 2026-09-24 (19 days out) Usage: flat | Seats: 134/157 (85%) | Champion: true Signal: Health 39 despite 85% seat utilization; renewal in 19 days; flat usage trend suggests qualitative dissatisfaction (users are logged in but not deriving expanding value). Time is too short for a usage intervention; commercial terms are the lever. 3) C-0F6C0F34 | EXECUTIVE TOUCH Health: 51 | ARR: $86,741 | Eligible: $49,707 Renewal: 2026-10-03 (28 days out) Usage: growing | Seats: 308/395 (78%) | Champion: false Signal: Largest ARR at risk ($87K) and no active champion. Usage is growing, which is positive, but without a champion there is no one to internally sell the renewal. An executive sponsor must be placed before renewal negotiations begin. 4) C-0CEF69FD | EXECUTIVE TOUCH Health: 53 | ARR: $79,324 | Eligible: $32,621 Renewal: 2026-11-21 (77 days out) Usage: growing | Seats: 97/136 (71%) | Champion: false Signal: $79K ARR, no champion, renewal in 77 days. Growing usage masks the relationship gap. Without an executive sponsor, a budget re-forecast or org change could silently kill the renewal. 5) C-0B827671 | USAGE REVIVAL Health: 56 | ARR: $72,088 | Eligible: $25,365 Renewal: 2026-11-14 (70 days out) Usage: declining | Seats: 113/202 (56%) | Champion: true Signal: Declining 3-month usage with 44% of seats idle. Champion is active and can co-drive a re-engagement plan. 70 days is enough time for a structured usage recovery sprint. 6) C-0B360C78 | USAGE REVIVAL Health: 57 | ARR: $60,427 | Eligible: $35,748 Renewal: 2026-10-28 (53 days out) Usage: growing | Seats: 246/327 (75%) | Champion: true Signal: Usage is trending up but health is still 57, meaning the growth has not yet crossed the risk threshold. 25% of seats remain unused. Champion is active — partner with them to close the adoption gap and convert the positive trend into a health-score lift before renewal. 7) C-0D3278C7 | USAGE REVIVAL Health: 54 | ARR: $33,815 | Eligible: $17,602 Renewal: 2026-11-12 (68 days out) Usage: declining | Seats: 126/380 (33%) | Champion: true Signal: Worst seat utilization among all eligible accounts (33%) combined with declining usage. Champion exists to help run a department-level re-activation campaign. 68 days provides runway. 8) C-0CA21961 | USAGE REVIVAL Health: 58 | ARR: $31,501 | Eligible: $16,829 Renewal: 2026-12-28 (114 days out) Usage: flat | Seats: 84/325 (26%) | Champion: true Signal: Only 26% of seats in use; flat trend. Longest runway of the group (114 days) makes this ideal for a structured adoption program with the active champion. Without action, the flat trend will become declining. --- SECTION 2: AT-RISK BUT NOT QUALIFIED (7 accounts) These accounts pass R1 (health < 60) but fail one or both remaining rules. a) C-0BC71BDD Health: 55 | ARR: $54,515 | Eligible: $0 Fails: R2 (eligible amount = $0) Renewal: 2026-10-27 (52 days, passes R3) Why excluded: No churn-save eligible amount. The account has no contractual or commercial room for a save offer. b) C-0BA71F12 Health: 52 | ARR: $17,061 | Eligible: $6,824 Fails: R3 (renewal 2027-04-11 = 218 days out; exceeds 120-day window) Why excluded: Renewal is too far out. Churn-save programs target imminent renewals, not ones 7 months away. c) C-0F6694C3 Health: 43 | ARR: $11,243 | Eligible: $0 Fails: R2 (eligible amount = $0) and R3 (renewal 2027-03-21 = 197 days) Why excluded: Zero eligible amount AND renewal outside the window. Neither rule alone would qualify this account. d) C-0BE96399 Health: 54 | ARR: $52,319 | Eligible: $0 Fails: R2 (eligible amount = $0) Renewal: 2026-10-29 (54 days, passes R3) Why excluded: No churn-save eligible amount despite a near-term renewal. At-risk by health but has no commercial lever to offer. e) C-0F876796 Health: 47 | ARR: $49,895 | Eligible: $19,958 Fails: R3 (renewal 2027-02-06 = 154 days out; exceeds 120-day window) Why excluded: Has eligible amount but renewal is 34 days beyond the 120-day cutoff. Not urgent enough for the program. f) C-0FCCD2DF Health: 43 | ARR: $65,957 | Eligible: $0 Fails: R2 (eligible amount = $0) and R3 (renewal 2027-04-23 = 230 days) Why excluded: Zero eligible amount AND renewal well outside the window. High ARR but no contractual room and no near-term renewal. g) C-10A56B0F Health: 54 | ARR: $25,717 | Eligible: $0 Fails: R2 (eligible amount = $0) Renewal: 2026-12-12 (98 days, passes R3) Why excluded: No churn-save eligible amount. Near-term renewal and declining usage make it watch-list worthy, but no program dollar is available. --- SUMMARY TABLE PLAY ACCOUNTS TOTAL ELIGIBLE TOTAL ARR Commercial Concession 2 $46,729 $90,484 Executive Touch 2 $82,328 $166,065 Usage Revival 4 $95,540 $157,231 ───────────────────────────────────────────────────────────── TOTAL QUALIFIED 8 $224,601 $413,780 NOT QUALIFIED 7 (excluded) $273,714 The two commercial concession accounts are the most time-critical — both renew within 19 days. The four usage revival accounts have the most runway (53-114 days) and the clearest product-side intervention path. The two executive touch accounts represent the largest dollar concentration ($166K ARR, $82K eligible) with zero champion coverage.
EXPANSION KIT — C-0DDFC9A7 ============================= SEAT COVERAGE Licensed seats: 150 Headcount: 400 Coverage: 150 / 400 = 37.5% 250 employees are not covered by a license. USAGE HEALTH (MAU, licensed-seat basis) Trend (6 months): 88 → 95 → 102 → 110 → 118 → 126 Aug 2026 MAU as % of licensed seats: 126 / 150 = 84.0% Avg MoM growth: ~7.4% | 6 straight months of climb, no dip. Aug 2026 licensed-but-inactive seats: 150 − 126 = 24 (16.0% idle). HEADROOM AT CURRENT PER-SEAT RATE Per-seat ARR: $9,000 / 150 = $60.00/seat/year Uncovered employees: 400 − 150 = 250 ARR headroom: 250 × $60.00 = $15,000.00 Post-expansion ARR: $9,000 + $15,000 = $24,000.00 REPLY CONTACT Replier: Maria S., People Operations Coordinator Can she buy? No. She explicitly stated: "I'm not the right person for purchasing decisions." RIGHT BUYER Dana R., VP People Last engaged: 2026-05-18 Signal: Maria reports Dana "has been asking about our usage numbers lately." Maria offered to make an introduction. REPLY EMAIL --------------------------------------------- Hi Maria, Really glad to hear the feed is buzzing — 84% licensed-seat utilization in August with six months of straight growth is exactly the kind of momentum we love to see. Completely understand on purchasing; no problem at all. If you're comfortable making that intro to Dana, I'd welcome the chance to share a quick usage snapshot and talk through what expanding to more of the team could look like. Thanks for being such a great champion for your people. Best, Cole
MID-ONBOARDING CALL PREP — C-0D284E42 ======================================== Account: C-0D284E42 Signup: 2026-08-11 Days since signup: 25 (as of 2026-09-04) WHAT IS COMPLETE ---------------- 1. Integration Slack — YES (connected 2026-08-12, 1 day post-signup) 2. Allowance set — YES (set 2026-08-13) 3. Admins added — YES (2 admins) 4. First recognition — YES (2026-08-15 14:22, 4 days post-signup) WHAT IS NOT COMPLETE -------------------- 1. Integration HRIS — NO (field is empty; never connected) 2. First redemption — NO (field is empty; no redemption recorded) EARLY ENGAGEMENT SIGNALS ------------------------ Daily active givers trend (25 days of data): Week 1 (Aug 11-17): 3, 3, 4, 4, 5, 4, 7 → avg 4.3/day Week 2 (Aug 18-24): 5, 7, 6, 9, 8, 9, 9 → avg 7.6/day Week 3 (Aug 25-31): 9, 11, 10, 10, 11, 13, 11 → avg 10.7/day Week 4 (Sep 1-4): 13, 13, 15, 15 → avg 14.0/day Trend: Consistent week-over-week growth. Wk1→Wk2: +77% (4.3→7.6) Wk2→Wk3: +41% (7.6→10.7) Wk3→Wk4: +31% (10.7→14.0, partial week) Peak day: 15 active givers (Sep 3 and Sep 4). No drop-off days — every week's low is higher than the prior week's low. Growth is decelerating in percentage terms but still adding absolute users. THREE THINGS TO COVER ON THE CALL ---------------------------------- 1. HRIS integration status — This is the only incomplete integration. Ask what's blocking (IT review, vendor access, priority) and set a target date. HRIS connection unlocks org-wide directory sync and reporting. 2. First redemption hasn't happened — Recognitions are flowing (started Aug 15) but zero redemptions after 25 days. Walk the admin through the rewards catalog, confirm the point balance is visible to employees, and check whether redemption is enabled in settings. 3. Sustain and broaden participation — Active givers grew from 3→15 but that is likely a small fraction of total headcount. Discuss whether leadership is reinforcing usage, if there are departments not yet participating, and whether a nudge or announcement is planned to push toward broader adoption before onboarding closes.
90-DAY RENEWAL RISK BRIEF Window: 2026-09-07 through 2026-12-06 All 20 accounts fall within window. Data as-of 2026-09-07. ================================================================================ METHODOLOGY — DATE TRUST RULE Multi-year contracts (is_multi_year=true) are KNOWN to be wrong in ChurnZero. For all 5 multi-year accounts, ChargeBee is the source of truth. For the 15 single-year accounts, both systems agree — ChurnZero date used. ================================================================================ SECTION 1: DATE DISAGREEMENTS (5 of 20 accounts) ================================================================================ Account CSM CZ Date CB Date Gap Trust --------------------------------------------------------------------------- C-0B7D2C30 Dana Mercer 2026-09-10 2026-09-15 5 days CB (36-mo) C-0BCDB8C2 Cole Scherm. 2027-09-18 2026-09-18 1 YEAR CB (36-mo) C-0D2AB865 Elena Sinclair 2026-09-10 2026-09-22 12 days CB (24-mo) C-0BBE3E60 Dana Mercer 2027-09-26 2026-09-26 1 YEAR CB (24-mo) C-0F5D2323 Cole Scherm. 2026-09-10 2026-09-29 19 days CB (24-mo) Note: C-0BCDB8C2 and C-0BBE3E60 show CZ dates exactly 1 year ahead of CB — ChurnZero appears to be reflecting the end-of-term date for the full multi-year contract, not the upcoming renewal window. ChargeBee has the correct renewal date. ================================================================================ SECTION 2: ACCOUNT-BY-ACCOUNT RISK ASSESSMENT ================================================================================ --- CRITICAL --- C-0F5D2323 | Cole Ingram | $90,647 ARR Date used: 2026-09-29 (ChargeBee, 24-mo) | FLAG: CZ off by 19 days Seat utilization: 111/390 = 28.5% contractual; MAU 18/390 = 4.6% actual 3-month trend: Jun 20, Jul 21, Aug 18 → FLAT (-10%) 12-month trend: 21→18, essentially flat all year Risk: CRITICAL — Only 18 active users on a $90K contract ($5,036/active user/yr); utilization has been near-zero for 12 months with no improvement trajectory. --- HIGH --- C-0B7D2C30 | Dana Mercer | $65,901 ARR Date used: 2026-09-15 (ChargeBee, 36-mo) | FLAG: CZ off by 5 days Seat utilization: 274/476 = 57.6% contractual; MAU 84/476 = 17.6% actual 3-month trend: Jun 97, Jul 94, Aug 84 → DECLINING (-13.4%) 12-month trend: 155→84 = -45.8% Risk: HIGH — Steepest 12-month decline in the portfolio; active users halved from 155 to 84 and accelerating downward in the last quarter. C-0BCDB8C2 | Cole Ingram | $54,427 ARR Date used: 2026-09-18 (ChargeBee, 36-mo) | FLAG: CZ off by 1 FULL YEAR Seat utilization: 232/424 = 54.7% contractual; MAU 110/424 = 26.0% actual 3-month trend: Jun 127, Jul 118, Aug 110 → DECLINING (-13.4%) 12-month trend: 200→110 = -45.0% Risk: HIGH — Same decline arc as C-0B7D2C30; usage halved over 12 months. CZ date was wrong by a full year — renewing now, not Sep 2027. C-0D2AB865 | Elena Sinclair | $38,022 ARR Date used: 2026-09-22 (ChargeBee, 24-mo) | FLAG: CZ off by 12 days Seat utilization: 250/407 = 61.4% contractual; MAU 109/407 = 26.8% actual 3-month trend: Jun 125, Jul 117, Aug 109 → DECLINING (-12.8%) 12-month trend: 199→109 = -45.2% Risk: HIGH — Third consecutive account with ~45% annual usage erosion; renewing in 15 days with no sign of stabilization. C-0BBE3E60 | Dana Mercer | $30,993 ARR Date used: 2026-09-26 (ChargeBee, 24-mo) | FLAG: CZ off by 1 FULL YEAR Seat utilization: 74/114 = 64.9% contractual; MAU 33/114 = 28.9% actual 3-month trend: Jun 39, Jul 35, Aug 33 → DECLINING (-15.4%) 12-month trend: 63→33 = -47.6% Risk: HIGH — Worst percentage decline in the portfolio (47.6%); 15.4% drop in last 3 months alone. CZ date wrong by a full year (24-mo contract). C-0EC6999D | Elena Sinclair | $79,419 ARR Date used: 2026-10-03 (both agree, 12-mo) Seat utilization: 31/112 = 27.7% contractual; MAU 15/112 = 13.4% actual 3-month trend: Jun 17, Jul 16, Aug 15 → FLAT/SLIGHT DECLINE (-11.8%) 12-month trend: 15→15, range 14-17 all year — flat Risk: HIGH — Second-highest ARR at risk ($79K) with only 15 active users; $5,295/active user/yr. Engagement has been flat-lining for 12 months. --- MODERATE --- C-0CB2C1B4 | Dana Mercer | $40,628 ARR Date used: 2026-11-20 (both agree, 12-mo) Seat utilization: 386/473 = 81.6% contractual; MAU 49/473 = 10.4% actual 3-month trend: Jun 47, Jul 48, Aug 49 → FLAT (+4.3%) 12-month trend: 43→49 = +14.0% (modest) Risk: MODERATE — High contractual utilization masks extremely low actual MAU (49 users on 473 seats). Trend is slightly positive but the gap is large. --- LOW --- C-0B20DB64 | Dana Mercer | $21,770 ARR Date used: 2026-10-07 (both agree, 12-mo) Seat utilization: 214/378 = 56.6% contractual; MAU 294/378 = 77.8% actual 3-month trend: Jun 294, Jul 298, Aug 294 → STABLE (0%) 12-month trend: 293→294 = stable all year Risk: LOW — Highest actual-to-seat ratio in the portfolio; rock-stable engagement. C-0BBC4E7A | Cole Ingram | $56,374 ARR Date used: 2026-10-10 (both agree, 12-mo) Seat utilization: 228/337 = 67.7% contractual; MAU 139/337 = 41.2% actual 3-month trend: Jun 142, Jul 141, Aug 139 → STABLE (-2.1%) 12-month trend: 142→139 = stable Risk: LOW — Flat but healthy; 140+ MAU consistently. C-0FD551AB | Elena Sinclair | $48,815 ARR Date used: 2026-10-14 (both agree, 12-mo) Seat utilization: 210/376 = 55.9% contractual; MAU 126/376 = 33.5% actual 3-month trend: Jun 123, Jul 122, Aug 126 → STABLE (+2.4%) 12-month trend: 124→126 = stable Risk: LOW — Tight range (122-127) all year. C-0F9F8F13 | Dana Mercer | $46,230 ARR Date used: 2026-10-18 (both agree, 12-mo) Seat utilization: 199/352 = 56.5% contractual; MAU 182/352 = 51.7% actual 3-month trend: Jun 185, Jul 185, Aug 182 → STABLE (-1.6%) 12-month trend: 182→182 = stable Risk: LOW — Strong actual utilization; 51.7% of all seats are MAU. C-0BC34584 | Cole Ingram | $16,740 ARR Date used: 2026-10-22 (both agree, 12-mo) Seat utilization: 327/494 = 66.2% contractual; MAU 106/494 = 21.5% actual 3-month trend: Jun 104, Jul 104, Aug 106 → STABLE (+1.9%) 12-month trend: 103→106 = stable Risk: LOW — Stable engagement; smaller ARR makes renewal straightforward. C-0B7A7546 | Elena Sinclair | $35,062 ARR Date used: 2026-10-25 (both agree, 12-mo) Seat utilization: 182/205 = 88.8% contractual; MAU 63/205 = 30.7% actual 3-month trend: Jun 64, Jul 65, Aug 63 → STABLE (-1.6%) 12-month trend: 58→63 = +8.6% (modest growth) Risk: LOW — Highest contractual utilization in portfolio; slight upward trend. C-0B369871 | Dana Mercer | $85,128 ARR Date used: 2026-10-29 (both agree, 12-mo) Seat utilization: 317/422 = 75.1% contractual; MAU 333/422 = 78.9% actual 3-month trend: Jun 326, Jul 330, Aug 333 → GROWING (+2.1%) 12-month trend: 289→333 = +15.2% Risk: LOW — Strongest growth story in the portfolio. Actual MAU exceeds contractual seats_used. Expansion candidate. C-0B144C78 | Cole Ingram | $30,899 ARR Date used: 2026-11-02 (both agree, 12-mo) Seat utilization: 169/224 = 75.4% contractual; MAU 106/224 = 47.3% actual 3-month trend: Jun 101, Jul 101, Aug 106 → GROWING (+5.0%) 12-month trend: 90→106 = +17.8% Risk: LOW — Accelerating growth; 3-month is the fastest-growing in portfolio. C-0FC4DBB8 | Elena Sinclair | $94,732 ARR Date used: 2026-11-05 (both agree, 12-mo) Seat utilization: 356/464 = 76.7% contractual; MAU 193/464 = 41.6% actual 3-month trend: Jun 189, Jul 191, Aug 193 → GROWING (+2.1%) 12-month trend: 168→193 = +14.9% Risk: LOW — Largest single-year ARR ($95K) with consistent growth. Low risk. C-0D5BBE3A | Dana Mercer | $39,740 ARR Date used: 2026-11-09 (both agree, 12-mo) Seat utilization: 85/102 = 83.3% contractual; MAU 91/102 = 89.2% actual 3-month trend: Jun 88, Jul 90, Aug 91 → GROWING (+3.4%) 12-month trend: 76→91 = +19.7% Risk: LOW — Highest actual utilization in the portfolio (89.2%). Growing fastest in absolute terms. Expansion candidate. C-0FB9D5AF | Cole Ingram | $63,158 ARR Date used: 2026-11-13 (both agree, 12-mo) Seat utilization: 144/199 = 72.4% contractual; MAU 176/199 = 88.4% actual 3-month trend: Jun 173, Jul 173, Aug 176 → GROWING (+1.7%) 12-month trend: 154→176 = +14.3% Risk: LOW — MAU (176) exceeds contractual seats_used (144). Very strong. C-0B344485 | Elena Sinclair | $64,384 ARR Date used: 2026-11-16 (both agree, 12-mo) Seat utilization: 224/287 = 78.0% contractual; MAU 244/287 = 85.0% actual 3-month trend: Jun 238, Jul 240, Aug 244 → GROWING (+2.5%) 12-month trend: 211→244 = +15.6% Risk: LOW — MAU (244) exceeds contractual seats_used (224). Expansion signal. C-22170CA1 | Cole Ingram | $45,646 ARR Date used: 2026-11-24 (both agree, 12-mo) Seat utilization: 251/294 = 85.4% contractual; MAU 146/294 = 49.7% actual 3-month trend: Jun 143, Jul 148, Aug 146 → STABLE (+2.1%) 12-month trend: 130→146 = +12.3% Risk: LOW — Steady growth; healthy engagement. ================================================================================ SECTION 3: FINANCIAL SUMMARY ================================================================================ Total ARR renewing in 90-day window: $1,048,715 (20 accounts) ARR at CRITICAL risk (1 account): $90,647 C-0F5D2323 — 18 MAU on $90K ARR at HIGH risk (5 accounts): $268,762 C-0B7D2C30 $65,901 (45.8% annual usage decline) C-0BCDB8C2 $54,427 (45.0% annual decline, CZ date off 1 year) C-0D2AB865 $38,022 (45.2% annual decline) C-0BBE3E60 $30,993 (47.6% annual decline, CZ date off 1 year) C-0EC6999D $79,419 (flat at 15 MAU on $79K) ARR at CRITICAL + HIGH risk: $359,409 (34.3% of total) ARR at MODERATE risk (1 account): $40,628 C-0CB2C1B4 — 49 MAU on 473 seats ARR at CRITICAL + HIGH + MODERATE risk: $400,037 (38.1% of total) ARR at LOW risk (13 accounts): $648,678 (61.9% of total) ================================================================================ SECTION 4: KEY OBSERVATIONS ================================================================================ 1. DECLINE CLUSTER — The four highest-risk single-year-free accounts (C-0B7D2C30, C-0BCDB8C2, C-0D2AB865, C-0BBE3E60) all show ~45-48% annual usage decline with 12-15% quarterly erosion. All are multi-year contracts renewing in September. Combined ARR: $189,343. 2. CZ MULTI-YEAR FAILURE — All 5 multi-year contracts had wrong dates in ChurnZero. Two were off by a full year (showing end-of-term, not renewal). Relying on CZ alone would have missed $189K in September renewals entirely. 3. FLAT-AT-LOW-RISK BIFURCATION — The 13 LOW-risk accounts split into two groups: 7 are stable-flat and 6 are actively growing. The growers (C-0B369871, C-0B144C78, C-0FC4DBB8, C-0D5BBE3A, C-0FB9D5AF, C-0B344485) represent $388K in ARR with 12-20% annual growth — expansion opportunities. 4. HIGHEST PER-USER COST — C-0F5D2323 ($5,036/user/yr) and C-0EC6999D ($5,295/user/yr) are paying 10-15x more per active user than healthy accounts. These two alone are $170K in ARR with a combined 33 MAU.
Here is the quarter's support ticket analysis across 80 tickets, grouped into 5 themes ranked by distinct-account ARR exposure.
==========================================================================
Q2-Q3 2026 SUPPORT TICKET THEMES (80 tickets total, Jun 1 - Aug 29)
==========================================================================
1. HRIS / PROVISIONING FAILURES
Tickets: 12 | Share: 15.0% | Accounts: 3 | ARR at risk: $114,000
Pattern: BROAD -- 3 enterprise accounts, repeat complaints over 3 months
Accounts: C-0B2213A9 ($36K), C-0DDFC9A7 ($48K), C-0F6C0F34 ($30K)
Sample IDs: IC-460059, IC-460062
Symptom: HRIS sync silently skips new hires; provisioning log shows no errors.
C-0B2213A9 filed 5 tickets (Jun 16 - Aug 8) -- still unresolved.
Recommendation: Add monitoring/alerting on HRIS sync gaps >24h; audit the
provisioning pipeline for silent-failure paths before these accounts churn.
2. REDEMPTION / GIFT CARD FAILURES
Tickets: 18 | Share: 22.5% | Accounts: 7 | ARR at risk: $68,800
Pattern: BROAD -- widest account spread, hits every customer segment
Accounts: C-0CEF69FD, C-0B827671, C-0FCCD2DF, C-0F876796, C-14264ABD,
C-0D9CA315, C-0B0F1BAB
Sample IDs: IC-460025, IC-460035
Symptom: Checkout spins, gift card emails never arrive, points deducted
despite failed redemption. Affects both checkout and email delivery.
Recommendation: Fix the redemption-to-email handoff (likely a downstream
API timeout); issue automatic point refunds on redemption failure.
3. BILLING / INVOICING ERRORS
Tickets: 16 | Share: 20.0% | Accounts: 1 | ARR at risk: $52,000
Pattern: SINGLE-ACCOUNT NOISE -- entirely C-0E9C27D1 ($52K)
Sample IDs: IC-460071, IC-460069
Symptom: Charged for 200 seats when they license 150; wrong tier price on
annual renewal; "third invoice in a row with the same error."
16 tickets in 11 weeks = this customer is escalating.
Recommendation: Assign a dedicated billing ops contact to C-0E9C27D1
immediately; fix the seat-count sync between CRM and billing system.
At $52K ARR this is a renewal flight risk.
4. POINTS NOT POSTING / MISSING
Tickets: 20 | Share: 25.0% | Accounts: 9 | ARR at risk: $31,100
Pattern: BROAD -- highest volume, 9 distinct accounts (all SMB)
Accounts: C-0D3278C7, C-0BF20542, C-0D0B047C, C-0BE96399, C-0D284E42,
C-0D6CC8E3, C-0DD0626C, C-21FEBCBB, C-0B2895EF
Sample IDs: IC-460004, IC-460016
Symptom: Recognitions show "delivered" but points never credit; balance
stalls for days. "Points not posting for our whole team after the weekend"
suggests a batch processing failure on weekends/Monday.
Recommendation: Investigate the weekend batch job that posts recognition
points; add a reconciliation check that catches stale "delivered" statuses.
5. SLACK INTEGRATION BREAKAGES
Tickets: 14 | Share: 17.5% | Accounts: 4 | ARR at risk: $18,900
Pattern: MODERATE -- 4 accounts, multiple failure modes
Accounts: C-0B843542 ($4.4K), C-10A56B0F ($5.4K), C-0BA71F12 ($3.9K),
C-8C2E8F00 ($5.2K)
Sample IDs: IC-460041, IC-460047
Symptom: Sync stops, slash commands error out, re-auth toggles reset,
app disconnects. Three distinct failure modes in one integration.
Recommendation: Audit Slack OAuth token lifecycle (refresh/revocation);
add health-check pings on the integration and surface status in-app.
==========================================================================
KEY OBSERVATIONS
==========================================================================
- ARR-exposed risk concentrates in HRIS ($114K) and Billing ($52K single
account). The billing issue is single-account noise but that account is
the largest in the dataset and is clearly escalating (16 tickets, 11 weeks).
- Redemption failures are the broadest systemic issue (7 accounts, 18
tickets). The symptom mix (checkout spin + email miss + point deduction
without fulfillment) points to a broken async handoff, not a single bug.
- Points-not-posting is high volume but low ARR ($31K across 9 SMB accounts).
The "after the weekend" pattern in multiple tickets is a strong signal
for a specific batch-processing root cause.
- Existing tags are unreliable: tickets tagged "billing" are often about
points; tickets tagged "feedback" describe active breakages. The text-
based grouping above supersedes the original tag field entirely.
RANKING: Top 3 Similar Customers with Public Case Studies Prospect: C-82AF3719 Industry: Technology | Size: Mid-Market | Use case: employee_recognition | Region: NA-West Candidates filtered to has_case_study=true only. Match scoring: +1 per identical field across the 4 dimensions. ============================================================================ Rank 1 C-64171065 (3 of 4 fields match) ============================================================================ industry = Technology MATCH size_band = Mid-Market MATCH use_case = employee_recognition MATCH region = NA-East NO MATCH (prospect is NA-West) Matched fields: industry, size_band, use_case ============================================================================ Rank 2 C-11C31562 (3 of 4 fields match) ============================================================================ industry = Manufacturing NO MATCH (prospect is Technology) size_band = Mid-Market MATCH use_case = employee_recognition MATCH region = NA-West MATCH Matched fields: size_band, use_case, region Rationale vs Rank 3: shares the prospect's exact use case (employee_recognition), which is a tighter operational fit than retention. ============================================================================ Rank 3 C-A13C193D (2 of 4 fields match) ============================================================================ industry = Technology MATCH size_band = Mid-Market MATCH use_case = retention NO MATCH (prospect is employee_recognition) region = NA-West MATCH Matched fields: industry, size_band, region Tied at 2/4 with C-CD4829A7 (Technology, Mid-Market, retention, NA-East). C-A13C193D wins the tie because region (NA-West) matches the prospect exactly; C-CD4829A7 is NA-East. ============================================================================ Summary ============================================================================ #1 C-64171065 — industry + size_band + use_case (3/4) #2 C-11C31562 — size_band + use_case + region (3/4) #3 C-A13C193D — industry + size_band + region (2/4) No other case-study customers scored ≥ 2 on any combination of these 4 fields.
Here are the results.
```
PAID CHANNELS (Mar-Aug 2026, 6 months)
==========================================================================
Channel Spend SQMs SQOs $/SQM $/SQO SQM->SQO Pipeline Pipe/$
----------- ------ ---- ---- ----- ----- -------- -------- ------
paid_search $36,000 40 18 $900 $2,000 45.0% $720,000 $20.00
linkedin_ads $24,000 25 8 $960 $3,000 32.0% $96,000 $4.00
paid_social $18,000 UNDEF UNDEF UNDEF UNDEF UNDEF UNDEF UNDEF
webinars $9,000 12 5 $750 $1,800 41.7% $60,000 $6.67
Arithmetic:
paid_search: 36000/40=900 36000/18=2000 18/40=0.45 720000/36000=20.00
linkedin_ads: 24000/25=960 24000/8=3000 8/25=0.32 96000/24000=4.00
webinars: 9000/12=750 9000/5=1800 5/12=0.4167 60000/9000=6.67
NOTE: paid_social has $18,000 spend and ZERO contacts in the dataset.
SQMs, SQOs, and all derived metrics are undefined -- not zero.
This is a tracking/attribution gap.
ORGANIC CHANNELS (Mar-Aug 2026)
==========================================================================
Channel Volume SQOs SQO Rate Pipeline
-------------- ------ ---- -------- --------
organic_search 30 10 33.3% $90,000
referral 15 6 40.0% $48,000
Arithmetic:
organic_search: 10/30=0.3333
referral: 6/15=0.40
FLAGGED ROWS (SQO date BEFORE SQM date)
==========================================================================
CT-000044 (linkedin_ads): SQM 2026-07-23, SQO 2026-07-18 (5 days early)
CT-000041 (linkedin_ads): SQM 2026-06-14, SQO 2026-06-09 (5 days early)
Both flags are on linkedin_ads. This may indicate a CRM data-entry issue
or that these contacts were already in an opportunity stage before being
flagged as marketing-qualified.
==========================================================================
REALLOCATION RECOMMENDATION
==========================================================================
1. PAID_SEARCH is the clear winner: $20 pipeline per $1 spent, lowest
cost per SQO ($2,000), and highest SQM-to-SQO conversion (45%).
RECOMMENDATION: increase paid_search budget.
2. WEBINARS is second-best on efficiency: $6.67 pipe/$, $750 cost/SQM,
41.7% SQM-to-SQO rate -- and at only $9K total spend there is room
to scale before diminishing returns.
RECOMMENDATION: expand webinar program.
3. LINKEDIN_ADS delivers $4 pipe/$ at $3,000 cost/SQM. It works but is
2.5x less efficient than paid_search on cost per SQO. Two flagged
rows with date anomalies also suggest data-quality issues worth
auditing before scaling.
RECOMMENDATION: hold current spend; fix attribution before increasing.
4. PAID_SOCIAL: $18,000 spent with zero attributable contacts. Either
the channel is not generating pipeline or (more likely) tracking is
broken.
RECOMMENDATION: audit UTM/attribution setup immediately. Pause spend
until attribution is confirmed working. If confirmed non-performing,
reallocate to paid_search or webinars.
CONFIDENCE ASSESSMENT
==========================================================================
MEDIUM confidence overall.
- paid_search (n=40 contacts, 18 SQOs): sample is large enough to
trust the directional ranking, though 18 SQOs is still modest.
- linkedin_ads (n=25, 8 SQOs) and webinars (n=12, 5 SQOs): small
samples. The 32% vs 42% SQM-to-SQO difference between them is
within noise at these sizes. Treat efficiency rankings among these
two as directional, not definitive.
- paid_social (n=0): zero visibility -- cannot assess until tracking
is fixed. This is the biggest blind spot.
- Organic channels: 16 SQOs combined, enough for directional insight
but not for precise conversion-rate claims.
Six months of data partially mitigates the small samples. I would
not reallocate >50% of any budget without running a holdout test.
```
Here is the updated battlecard. Every factual claim is cited by snippet ID; rep opinions and old-card claims I cannot re-source are flagged accordingly.
---
BATTLECARD: RIVALLY
Updated: 2026-09-07 | Source: competitor_snippets.csv, deals_with_competitor.csv
=====================================================================
1. ONE-LINE POSITIONING
=====================================================================
Points-based recognition platform for mid-market, aggressively expanding
into EU enterprise with local data residency and multi-language support.
(S05, S11, S12, S15)
=====================================================================
2. PRICING
=====================================================================
CONFLICT — pricing page has moved:
- 2026-01-20: $5/user/month, annual billing required (S03)
- 2026-04-01: $5/user/month still showing (S08)
- 2026-08-12: $7/user/month, annual billing required (S17) ← NEWER WINS
Deal-level quotes corroborate the increase:
- 2026-06-02: $6.50/user/mo quoted to 500-seat prospect (S13)
- 2026-08-14: $7/user/mo list price; 15% discount offered for 3-year
term → effective ~$5.95/user/mo on 3yr (S18)
Add-on: Rivally Pulse (engagement surveys) launched GA 2026-09-01,
priced separately, not bundled with Recognition (S23, S06).
CURRENT LIST PRICE: $7/user/month, annual billing. (S17)
=====================================================================
3. WHERE THEY WIN
=====================================================================
EU / distributed teams:
- EU data residency generally available, Dublin office open (S15, S11)
- Multi-language support praised by EU enterprise reviewers (S12)
- EU data residency pitched in competitive evaluations (S05)
Ease of setup:
- Mid-market reviewer: setup under a week, Slack integration worked
out of the box (S04)
Recognition feed engagement:
- Points-based feed praised for engagement (S02, S16)
Support responsiveness:
- Support response time under 4 hours, praised by reviewer (S22)
Integrations:
- Slack integration functional (S04)
- Microsoft Teams app v2 in public preview (S19)
=====================================================================
4. WHERE WE WIN
=====================================================================
Analytics depth:
- G2 reviewer notes "limited analytics" (S02)
- Capterra reviewer: "reporting dashboards are basic compared to
enterprise tools" (S07)
- 800-seat prospect picked Bonusly over Rivally specifically citing
analytics depth (S25)
Enterprise admin tooling:
- Lacks SCIM provisioning; manual user management called "painful"
by enterprise reviewer (S10)
- Admin tooling "lags peers" (S16)
- No bulk recognition editing in admin console (S24)
Data portability:
- Off-platform migration is difficult; analytics exports are
CSV-only (S20)
=====================================================================
5. OBJECTIONS AND RESPONSES
=====================================================================
OBJECTION: "Rivally is cheaper."
RESPONSE: Their list price increased from $5 to $7/user/mo between
Jan and Aug 2026 (S03 → S17). On a 3-year commit they'll discount
~15% to ~$5.95 (S18). Factor in the cost of limited analytics (S02,
S07) and manual user management with no SCIM (S10) at enterprise
scale — the hidden admin cost closes the gap.
OBJECTION: "Rivally has EU data residency."
RESPONSE: True — GA as of July 2026 (S15). However, their EMEA
rewards catalog is thinner than their US catalog (S14), and
enterprise admin features (SCIM, bulk editing) still lag (S10, S24).
If EU compliance is the driver, confirm whether data residency alone
is sufficient or whether they also need enterprise-grade provisioning
and reporting.
OBJECTION: "Rivally is easy to set up."
RESPONSE: For a basic deployment, yes (S04). But reviewers at
enterprise scale report no SCIM provisioning (S10), no bulk
recognition editing (S24), and CSV-only analytics exports that make
migration or BI integration painful (S20). Fast setup ≠ scalable
operations.
=====================================================================
6. RECENT CHANGES (last 6 months)
=====================================================================
- PRICING INCREASE: $5 → $7/user/month on pricing page (S17, Aug 2026).
Deal quotes corroborate (S13, S18).
- PULSE SURVEY ADD-ON: Engagement survey product exited beta Sep 2026;
priced as a separate add-on, not bundled (S23, S06).
- EU EXPANSION: Dublin office opened; EU data residency GA (S15, Jul
2026). Hired ex-Workday VP EMEA to lead (S11, May 2026).
- TEAMS INTEGRATION: Microsoft Teams app v2 in public preview (S19,
Aug 2026).
=====================================================================
7. WIN/LOSS RECORD — 12 MONTHS (Sep 2025 – Aug 2026)
=====================================================================
Month W L
2025-09 1 1
2025-10 2 0
2025-11 1 1
2025-12 1 1
2026-01 2 0
2026-02 2 0
2026-03 1 1
2026-04 0 2
2026-05 0 1
2026-06 1 0
2026-07 1 0
2026-08 1 0
───────────────
TOTAL 13 7 (65% win rate, 20 deals)
Notable: two-loss months in Apr 2026; recovered with 4 straight wins
Jun–Aug 2026. Deal S25 shows an 800-seat win driven by analytics
differentiation.
=====================================================================
8. ITEMS FROM OLD CARD — RE-VERIFICATION STATUS
=====================================================================
OLD CLAIM: "Rivally lacks a Slack integration."
STATUS: OVERRIDDEN — G2 reviewer confirms Slack integration works
out of the box as of Feb 2026 (S04). Remove from talking points.
OLD CLAIM: "Rivally was acquired by WorkHuman in 2025."
STATUS: UNVERIFIED — No snippet in the provided data supports this.
Cannot re-source. Do not use until confirmed.
OLD CLAIM: "Strong in EU enterprise with multi-language support."
STATUS: CONFIRMED — Supported by S12 (EU enterprise reviewer,
multi-language praised), S15 (Dublin office, EU data residency GA).
OLD CLAIM: "Pricing starts at $5/user/month."
STATUS: STALE — Pricing page now shows $7/user/month as of Aug 2026
(S17). Updated above.
Let me compute the metrics. **Per-Sequence Summary** | Sequence | Step | Sent | Open Rate | Reply Rate | Meeting Rate | |---|---|---|---|---|---| | New Logo Nurture | 1 | 500 | 210/500=42.0% | 42/500=8.4% | 12/500=2.4% | | New Logo Nurture | 2 | 458 | 160/458=34.9% | 30/458=6.6% | 9/458=2.0% | | New Logo Nurture | 3 | 428 | 120/428=28.0% | 18/428=4.2% | 6/428=1.4% | | Expansion Nurture | 1 | 300 | 130/300=43.3% | 22/300=7.3% | 5/300=1.7% | | Expansion Nurture | 2 | 300 | 340/300=**113.3%** | 25/300=8.3% | 4/300=1.3% | | Expansion Nurture | 3 | 275 | 95/275=34.5% | 12/275=4.4% | 3/275=1.1% | | Cold Outbound - HR Leaders | 1 | 600 | 240/600=40.0% | 5/600=0.83% | 0/600=0.0% | | Cold Outbound - HR Leaders | 2 | 595 | 175/595=29.4% | 2/595=0.34% | 0/595=0.0% | | Cold Outbound - HR Leaders | 3 | 590 | 130/590=22.0% | 1/590=0.17% | 0/590=0.0% | | Cold Outbound - People Ops | 1 | 400 | 150/400=37.5% | 14/400=3.5% | 3/400=0.75% | | Cold Outbound - People Ops | 2 | 386 | 110/386=28.5% | 9/386=2.3% | 2/386=0.52% | | Cold Outbound - People Ops | 3 | 377 | 80/377=21.2% | 6/377=1.6% | 1/377=0.27% | **Tracking Error** Expansion Nurture step 2: 340 opens on 300 sent = 113.3%. Opens exceed sends. Either tracking pixels are double-firing, forwarded emails are being counted, or sent count is stale (same 300 as step 1 suggests no drop-off logic, which itself is suspicious). **Audience Overlap** From audiences.csv, CT-000849, CT-000884, CT-000908, CT-001097, CT-001103, CT-001105, CT-001130, CT-001153, CT-001217, CT-001227, CT-001236, CT-001255, CT-001258, CT-001277, CT-001285, CT-001311, CT-001345 each appear in both "Cold Outbound - HR Leaders" and "Cold Outbound - People Ops." That is 17 contacts receiving both cold sequences. Results: fatigue risk, inflated unsubscribes, and attribution confusion. **Failure Modes (reply rate < 2%)** - Cold Outbound - HR Leaders: 0.83%, 0.34%, 0.17% across all steps. 0 meetings from 1,785 sends. Failure mode: message-market fit. HR Leaders are not engaging at all — the value prop is not resonating with this persona. High open rates (40% step 1) with near-zero replies means subject lines work but the body/CTA does not. - Cold Outbound - People Ops step 3: 1.6%. Failure mode: sequence fatigue — by step 3 the interested contacts already replied in steps 1-2; remaining audience is unresponsive. **Fix Priority and Recommended Changes** Fix first: Cold Outbound - HR Leaders. It is the highest-volume sequence (1,785 sends) with 0 meetings and 8 total replies. It is burning the largest audience for zero pipeline. One change: Rewrite the offer for HR Leaders around a specific, quantified outcome (e.g., "18% turnover reduction at a 400-person retailer") instead of generic outreach. The subject lines earn 40% opens — the body is where it fails. Until the message connects to an HR Leader's pain (turnover cost, compliance burden), more sends will not help.
Here is the Q3-2026 weekly marketing goals update based on the provided data. ``` ============================================================================ WEEKLY MARKETING GOALS UPDATE — Q3-2026 (Week of Sep 7, 2026) Days elapsed: 66 / 92 | 71.7% through quarter | 26 days remaining ============================================================================ METRIC QTD ACTUAL TARGET DELTA EXPECTED* PACE --------------------------------------------------------------------------- SQMs 230 300 -70 215.2 AHEAD SQOs 84 120 -36 86.1 BEHIND DS2s 40 75 -35 53.8 BEHIND Closed-Lost MIA Rate 20.0% 10.0% +10pp n/a BEHIND Same-Quarter Closes 10 20 -10 14.3 BEHIND Active Pipeline $3,000K $4,000K -$1,000K $2,869K** BEHIND * Expected = target × (66 / 92), i.e. pro-rata through day 66. ** Active pipeline is a point-in-time snapshot; $2,869K is what pro-rata would imply, but coverage is measured as current-vs-target directly. ARITHMETIC: Days fraction = 66 / 92 = 0.7174 SQMs expected = 300 × 0.7174 = 215.2 (230 > 215.2 → AHEAD) SQOs expected = 120 × 0.7174 = 86.1 ( 84 < 86.1 → BEHIND) DS2s expected = 75 × 0.7174 = 53.8 ( 40 < 53.8 → BEHIND) MIA rate = 5 / 25 = 0.200 (0.20 > 0.10 → BEHIND) Closes expected = 20 × 0.7174 = 14.3 ( 10 < 14.3 → BEHIND) Pipeline vs tgt = $3M / $4M = 0.75 (75% of target → BEHIND) PROJECTED QUARTER-END (at current run rates): SQMs: 230 / 66 × 92 = ~321 → would hit 300 target ✓ SQOs: 84 / 66 × 92 = ~117 → would miss 120 target ✗ (by 3) DS2s: 40 / 66 × 92 = ~56 → would miss 75 target ✗ (by 19) Closes: 10 / 66 × 92 = ~14 → would miss 20 target ✗ (by 6) ============================================================================ ``` **WHAT MOVED THIS WEEK:** SQMs are the one bright spot — running at 3.48/day versus the 3.26/day needed, on pace to exceed the 300 target by ~21 at current velocity. Every other funnel metric is behind pace at 71.7% of the quarter elapsed. SQOs are close (projected 117 vs 120 target, a 3-unit shortfall) and could close the gap with a strong final push, but DS2s are the deepest hole: 35 behind target with only 26 days left, requiring 1.35/day versus the 0.61/day run rate — more than double the current cadence. Same-quarter closes (projected ~14 vs 20) need a similar acceleration. The closed-lost MIA rate sits at 20%, double the 10% ceiling, meaning one in five lost deals has no disqualification reason recorded — this is a process hygiene issue, not a pipeline volume issue. Active pipeline coverage is 75% of the $4M target, yielding a 0.75x coverage ratio where 1.0x is the minimum. With 26 days remaining, the funnel top (SQMs) is healthy, but the conversion stages from SQO through DS2 need immediate attention to avoid a back-loaded Q4 dependency.
Q3 weighted forecast is $115,977 from 54 in-quarter deals: $44,729 COMMIT (7 deals) plus 35% of $203,565 BEST_CASE (24 deals). 32 deals totaling $227,575 sit past quarter-end with several still at DS2/DS3, suggesting close dates are being pushed not re-qualified. Caveat: why-buys is empty on all 7 COMMIT deals and owner is blank on 85 of 86, so this number has no documented pipeline hygiene behind it.
Subject: Quick follow-up on the 150-seat pricing Hi, I wanted to circle back on the pricing recap I sent over on August 5 following our July 28 demo. I know things get busy, so I'll keep this short. The People team's reaction to the automated milestone awards and points catalog was great, and I'd hate for this to lose momentum. Would you have 15 minutes this week or next for a quick call to walk through the pricing together and answer any questions that came up? Happy to work around your schedule. Best, Alex Franklin
Here is the weekly GTM digest for the week of 2026-08-31. MARKETING This week the team delivered 46 SQMs against a target of 52, putting us at 88% to goal. The webinar channel was the standout, contributing 18 of those 46 SQMs — nearly 40% of total output from a single channel. Paid search cost per SQM held steady at $150, keeping acquisition efficiency on track. Heading into next week, the gap to close is 6 SQMs, and doubling down on the webinar momentum is our clearest path to closing it. SALES The sales team converted 14 SQOs and set 9 DS2 meetings, building real momentum in the pipeline. New pipeline created this week landed at $310,000, a strong contribution to the quarter. We also saw 3 same-quarter closes this week — deals that entered and closed within the same quarter, a healthy signal that our pipeline quality is translating into near-term revenue. The team is executing well as we push through Q3. CS Customer success saved 2 renewals this week, protecting existing ARR at a time when every dollar of retention counts. Team NPS climbed to 61, reflecting the positive experience our customers are having with Bonusly. That said, 3 red-flag accounts are heading into next week, and the team is focused on proactive outreach to get ahead of risk before it compounds. PLG The self-serve engine added 412 new signups this week, and 31% of them activated — that's roughly 128 users hitting their first meaningful engagement with Bonusly. Even more exciting: 38 companies reached the aha moment of 10 recognition gives, the milestone where teams start to truly feel the culture shift that Bonusly creates. Converting more of those activated signups into paid teams will be the focus going forward.
PARTNER DIGEST
Period: 2026-08-24 to 2026-09-04
================================================================
ACTIVE PARTNERS
================================================================
Apex Rewards Co
Status: Active
Partner-sourced pipeline: 2 deals / $275,000
Deal-DDAAF2 $180,000 (DS1)
Deal-2CF33E $95,000 (DS1)
Upcoming: Co-webinar locked for 2026-09-15
HRCloud Partners
Status: Active
Partner-sourced pipeline: 1 deal / $140,000
Deal-F1CDA5 $140,000 (DS2 — security review cleared)
No upcoming activity logged.
CultureBridge
Status: Active
Partner-sourced pipeline: 2 deals / $135,000
Deal-096E1D $60,000 (early stage)
Deal-067213 $75,000 (early stage)
No upcoming activity logged.
WorkWell Group
Status: Active — no sourced deals this period; planning call booked for 2026-09-09 to restart joint playbook in Q4.
================================================================
QUIET PARTNERS
================================================================
Recogniq — No activity this period.
KudosWave — No activity this period.
PeopleFirst Advisors — No activity this period.
TotalPerk — No activity this period.
================================================================
AGGREGATE
================================================================
Partner-sourced pipeline (this period): 5 deals / $550,000
Apex Rewards Co: 2 deals $275,000
HRCloud Partners: 1 deal $140,000
CultureBridge: 2 deals $135,000
WorkWell Group: 0 deals $0
ANSWERS TO SECURITY QUESTIONNAIRE =================================== Q1: Is customer data encrypted at rest? If so, how? ----------------------------------------------------- Yes. All customer data is encrypted at rest using AES-256. [P1] Q2: Is data encrypted in transit? ---------------------------------- 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? ----------------------------------------------------------- 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? ------------------------------------------------------------------- Customer data is retained 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? --------------------------------------------------------------------------- The current list of subprocessors 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? ----------------------------------------- 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? ----------------------------------------------------------- Production databases are backed up daily. Backups are encrypted and retained for 35 days. [P6] Q8: Do you hold an ISO 27001 certification? --------------------------------------------- UNANSWERABLE. The provided excerpts do not contain any reference to ISO 27001. An answer would require either (a) Bonusly's full security certifications documentation or (b) direct confirmation from the Bonusly security/compliance team. Q9: What is your contractual uptime SLA percentage? ----------------------------------------------------- UNANSWERABLE. The provided excerpts do not contain any uptime SLA commitment. An answer would require Bonusly's Master Subscription Agreement or SLA schedule (typically a separate legal document). Q10: Will you sign a HIPAA Business Associate Agreement? ---------------------------------------------------------- UNANSWERABLE. The provided excerpts do not address HIPAA compliance or BAA availability. An answer would require Bonusly's compliance/privacy team confirmation and a BAA template, if one is offered. --- SUMMARY: 7 of 10 items answered directly from the excerpts. Items Q8, Q9, and Q10 are not covered by the provided policy data and require additional documents (certifications register, MSLA/SLA schedule, and HIPAA/BAA documentation, respectively).
Here is the reconciliation report.
```
SKILL MANIFEST RECONCILIATION REPORT
======================================
Manifest rows: 14
SKILL.md files presented: 14
============================================================
FINDING 1 — OVERLAPPING ALWAYS-TRIGGER PHRASES
============================================================
Severity: CRITICAL
Action: REVIEW
Skills affected:
- comms-drafter
- email-drafter
Evidence — exact phrase overlap:
comms-drafter triggers: "write me an email", "draft a follow-up",
"help me reply", "what should I say",
"bump email", "contract nudge",
"review this email", "rewrite this"
email-drafter triggers: "write me an email", "draft a follow-up",
"help me reply to this", "what should I say",
"bump email", "contract nudge",
"review this email", "rewrite this"
Overlap count: 8 phrases are functionally identical or near-identical.
Resolution: comms-drafter is broader (all external comms incl. support,
partner, Intercom). email-drafter is narrower (email-only). Neither
skill gives the LLM a disambiguation rule when BOTH match. The agent
will either pick arbitrarily or load both, wasting context.
Proposal: Add an explicit demarcation rule to comms-drafter's
description and body: "If the request is ONLY about drafting an email
(no support ticket, no partner note, no Intercom), delegate to
email-drafter." Conversely, email-drafter's description already says
"For deal strategy... use deal-strategy-coach instead" — add a similar
cross-reference: "For non-email comms (Intercom, partner, support),
use comms-drafter." This is a REVIEW, not a merge — they serve
different scopes but the trigger overlap must be resolved with
explicit routing logic.
============================================================
FINDING 2 — CIRCULAR DELEGATION CHAIN
============================================================
Severity: WARNING
Action: REVIEW
Chain: analysis-validator → deal-strategy-coach → comms-drafter
→ deal-strategy-coach (cycle)
Evidence:
analysis-validator §12.4 (Specialist Skill Reference, line ~1300+):
References "deal-strategy-coach" as a validation delegate target.
deal-strategy-coach body (Cross-skill handoff section):
"Invoke prospect-research-multithreading" — no cycle here, but
deal-strategy-coach also references comms-drafter via email-drafter
("use the email-drafter skill which automatically retrieves your
Gmail signature").
comms-drafter body (Lane Marker section):
"For deep deal strategy, use deal-strategy-coach"
deal-strategy-coach body (Manager-to-prospect email frameworks):
"use the email-drafter skill" — which in turn points back to
deal-strategy-coach for strategy.
The cycle is:
deal-strategy-coach → email-drafter (drafting delegation)
email-drafter → deal-strategy-coach ("For deal strategy,
diagnosis, or coaching... use deal-strategy-coach instead")
comms-drafter → deal-strategy-coach (lane marker)
deal-strategy-coach → comms-drafter / email-drafter (drafting)
This is a soft cycle — each handoff has a lane-marker guard ("if you
need X, go to Y"). But the LLM can ping-pong if the user's request
sits on the boundary (e.g., "write a follow-up and tell me if this
deal is at risk").
Proposal: The lane-marker pattern is reasonable and prevents hard
infinite loops (each skill says "if you need the OTHER thing, go
there"). No rewrite needed, but add a one-line guard to each:
"After delegating, do NOT accept the delegated skill's output back
into your own processing. The delegation is terminal for that task
branch."
============================================================
FINDING 3 — DANGLING DELEGATION TARGETS
============================================================
Severity: WARNING
Action: REVIEW
Dangling skill: bonusly-brand
Referenced by: comms-drafter ("Apply the bonusly-brand skill"),
email-drafter ("apply the bonusly-brand org skill"),
sales-forecast ("reference bonusly-brand skill for full voice,
color, and typography guidance"),
deal-strategy-coach (indirectly, via brand voice rules embedded).
Status: NOT in manifest. NOT among the 14 SKILL.md files provided.
This is an org-level shared skill assumed to exist elsewhere.
Dangling skill: prospect-research-multithreading
Referenced by: comms-drafter ("invoke prospect-research-multithreading
in Contact Lookup mode"),
email-drafter ("invoke prospect-research-multithreading"),
deal-strategy-coach ("Cross-skill handoff — prospect-research-
multithreading").
Status: NOT in manifest. NOT among the 14 files provided.
Dangling skill: signalforge-reports (org skill)
Referenced by: pipeline-intelligence-report ("Read
/mnt/skills/organization/signalforge-reports/SKILL.md" and
"DESIGN-SYSTEM.md", "signalforge.css"),
weekly-pipeline-report ("Read the SignalForge design system
/mnt/skills/organization/signalforge-reports/SKILL.md").
Status: NOT in manifest. External org-skill dependency.
Dangling skills from analysis-validator §12.4 (Specialist Reference):
- 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
Status: NONE of these 8 are in the manifest or provided files.
Proposal: These are likely org-level or user-level skills that live
outside this skill set. For bonusly-brand and prospect-research-
multithreading (called as runtime delegates by 3+ skills each):
verify they exist at their expected paths. If they don't, the calling
skills will fail silently or hallucinate a response. For the 8
analysis-validator specialist refs: these are conditional delegates
("invoke when needed") — lower risk but still dangling. Add a note
to analysis-validator §12.4: "These skills must exist in the org
skill directory. If missing, fall back to inline validation using
Section 13 canonical queries."
============================================================
FINDING 4 — VERSION CONFLICT
============================================================
Severity: WARNING
Action: REVIEW
Affected skill: analysis-validator
Frontmatter version: not declared (no `version:` field in YAML)
Body version: "Version: 3.6" (line ~15 of body)
Changelog: lists v3.5 and v3.6 both dated May 9, 2026
The changelog shows:
3.6 May 9, 2026 G2-F (ID Resolution)
3.5 May 9, 2026 G1-L (Engagement Coverage Check)
3.4 May 9, 2026 Section 8/13 updates
Three versions on the same date is not a conflict per se — it
indicates rapid iteration. But the body header says "Last Updated:
May 9, 2026 (v3.6)" while the changelog has v3.6 AND v3.5 as
separate entries on the same date.
No second file competes for the same skill name. No duplicate
manifest entry exists. This is a self-inconsistency, not a
manifest-level conflict.
Proposal: No action needed for manifest reconciliation. The changelog
is a development log and multiple same-day versions are normal for
rapid iteration. The body header correctly references v3.6 as the
current version. Surviving version: v3.6 (latest).
============================================================
FINDING 5 — DESCRIPTIONS EXCEEDING 1,024 CHARACTERS
============================================================
Severity: TRIM_DESC (WARNING)
Action: TRIM_DESC
Skill Chars Over by
───────────────────────────────────── ───── ───────
pipeline-intelligence-report 1,006 0 (under)
signalforge-claim-compressor 1,006 0 (under)
Correction: Both are exactly 1,006 chars — UNDER the 1,024 threshold.
Recounting the manifest:
analysis-validator 656 ✓
closed-lost-analysis 897 ✓
comms-drafter 996 ✓
deal-strategy-coach 792 ✓
email-drafter 965 ✓
model-selection 676 ✓
next-to-close 945 ✓
partner-digest 1004 ✓
pipeline-intelligence-report 1006 ✓
sales-forecast 962 ✓
signalforge-claim-compressor 1006 ✓
signalforge-feedback 708 ✓
stale-pipeline-report 762 ✓
weekly-pipeline-report 656 ✓
Actual count exceeding 1,024: 0 (ZERO).
Proposal: No TRIM_DESC needed. All 14 descriptions are within limit.
============================================================
FINDING 6 — HARDCODED PAGE IDS, DATES, AND PERSON NAMES
============================================================
Severity: INFO
Action: UPDATE_BODY
Hardcoded Confluence page/folder/space IDs:
partner-digest:
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Space ID: 1958248479
Folder ID: 2286616609
Page IDs: 2286321666, 2265382925, 2236940297, 2237825028,
2239365136, 2238283777
sales-forecast:
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Space ID: 2232811524
Parent page: 2232582148
signalforge-feedback:
Page ID: 2295136266
Space ID: 2232811524
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Parent page: 2234417154
Hardcoded HubSpot org/context IDs:
pipeline-intelligence-report: HubSpot org ID 1973303 (URL pattern)
stale-pipeline-report: HubSpot org ID 1973303 (URL pattern)
weekly-pipeline-report: Spreadsheets 1CLZ... and 1ENU...
next-to-close: HubSpot org ID 1973303 (URL pattern)
Hardcoded Slack channel/user IDs:
partner-digest: U03QLMBL7AR (Amani's Slack user ID)
stale-pipeline-report: C0561C1JCPJ (#revops-team channel ID)
Hardcoded person names and HubSpot owner IDs:
analysis-validator §12.3 (GTM Roster):
Amani Phipps (210200121), Alaina Loori (82535637),
Shealagh Coughlin (119069206), Ben Castelli (348210196),
John Thomas (78303262), Yasmin Wahid (89062643),
Bryce Harmon (119337721), Hugo Lindqvist (77260721),
Dana Mercer (83155923), Alex Franklin (84342457),
Cole Ingram (83155924), Gavin Porter (1520255671),
Colleen Perry (77938470), Ellie Barton (79580306),
Ashley Reyer (81969994), Megan Franz (321546903),
Elena Sinclair (701163055), Youssef Elkhateeb (725397794),
Amanda Czenkus (1556884388)
analysis-validator §10 (Escalation):
"Manish or Amani" (escalation contacts)
pipeline-intelligence-report (Phase 1):
Same 5 AE names + IDs
weekly-pipeline-report:
"Ben Lavin" in skill title line
deal-strategy-coach:
Pricing table (2026), Playbook URL (Atlassian),
"Alaina" referenced as VP Sales
partner-digest:
"Amani Phipps" as owner
Hardcoded dates:
analysis-validator: "April 26, 2026", "May 9, 2026", "May 4, 2026"
deal-strategy-coach: "2026" pricing, "April 2026" playbook
closed-lost-analysis: "May 2026" (AI field sample reference)
signalforge-claim-compressor: "2026-05-09"
stale-pipeline-report: "2026-06-10"
Hardcoded deal stage IDs (canonical — arguably intentional):
150582536, 150582537, 150582538, 150582539, 1175632767
(Used in 6 skills — analysis-validator, closed-lost-analysis,
next-to-close, pipeline-intelligence-report, stale-pipeline-report,
weekly-pipeline-report. These are system constants, not drift.)
Proposal: Tag all hardcoded Confluence page IDs, Slack IDs, HubSpot
org IDs, and spreadsheet IDs with [LIVE QUERY] or [CONFIG] markers
so they can be found and updated when infrastructure changes. The GTM
roster in analysis-validator §12.3 is explicitly marked "Updated May
4, 2026" and is designed to be manually maintained — flag it for
quarterly review. Person names (Amani, Alaina, Manish, Ben) are
role-based references in context, not drift — no action needed for
those. The stage IDs are canonical system constants referenced by
pipeline-intelligence-report's "System Constants" section — leave as
is.
============================================================
FINDING 7 — MANIFEST DRIFT (BIDIRECTIONAL)
============================================================
Severity: INFO
Action: REVIEW
Direction A — Files with no manifest row:
Count: 0
All 14 SKILL.md files presented have a corresponding row in
skill_manifest.csv. No orphan files found.
Direction B — Manifest rows with no file:
Count: 0
All 14 rows in skill_manifest.csv have a corresponding SKILL.md file
presented. No orphan manifest entries found.
Note: The manifest tracks 14 skills. The provided files are exactly
14. Names match 1:1. description_chars values are plausible given
the YAML frontmatter content. No drift in either direction.
Proposal: No action needed. Manifest and files are in sync.
============================================================
SUMMARY
============================================================
# Finding Severity Action
─ ───────────────────────── ───────── ──────────
1 ALWAYS-trigger overlap CRITICAL REVIEW
(comms-drafter ↔ email-drafter — 8 shared phrases)
2 Circular delegation WARNING REVIEW
(deal-strategy-coach ↔ email-drafter ↔ comms-drafter)
3 Dangling targets (13) WARNING REVIEW
(bonusly-brand, prospect-research-multithreading,
signalforge-reports, + 8 analysis-validator specialist refs)
4 Version conflict WARNING REVIEW
(analysis-validator v3.5/v3.6 same date — v3.6 survives)
5 Descriptions >1,024 chars — —
(0 found — all within limit)
6 Hardcoded IDs/names/dates INFO UPDATE_BODY
(3 Cloud IDs, 3 Space IDs, 6+ page IDs, 24 person/owner IDs,
2 Slack IDs, 2 HubSpot org IDs, 2 spreadsheet IDs, 6+ dates)
7 Manifest drift INFO —
(0 files orphaned, 0 manifest rows orphaned — clean sync)
```
Below is the runbook derived entirely from the incident thread. Every step traces to a specific message ID. Nothing has been added that the thread does not contain.
========================================================================
RUNBOOK: Reward-Worker Queue Backlog
Source: #incident-2026-08-29-reward-queue (resolved 2026-08-29 14:55:00Z)
========================================================================
------------------------------------------------------------------------
STEP 1 — ACKNOWLEDGE ALERT & CLAIM IC
------------------------------------------------------------------------
Message: [M01] Bryce Harmon, 14:02:10Z
Action: Acknowledge PagerDuty alert (reward-worker queue depth > 10k).
Claim Incident Commander role.
Command: (PagerDuty UI acknowledgement)
Ran by: Bryce Harmon
Verify: PagerDuty shows alert acknowledged.
Rollback: N/A (no state change).
------------------------------------------------------------------------
STEP 2 — CHECK QUEUE DEPTH
------------------------------------------------------------------------
Message: [M02] Farid Osman, 14:04:33Z
Action: Measure reward queue depth.
Command: bundle exec rake sidekiq:queue_depth
Ran by: Farid Osman
Verify: Result = 48,213 pending jobs (normal baseline: under 500).
Rollback: N/A (read-only).
------------------------------------------------------------------------
STEP 3 — INSPECT DEAD SET
------------------------------------------------------------------------
Message: [M03] Farid Osman, 14:06:02Z
Action: Check Sidekiq dead set for failure pattern.
Command: (not specified — thread says "Dead set has 112 jobs, all
Redis::TimeoutError from around 13:58")
Ran by: Farid Osman
Verify: 112 dead jobs found; all Redis::TimeoutError starting ~13:58.
Rollback: N/A (read-only).
NOTE: Exact command not stated in thread. Needs confirmation.
------------------------------------------------------------------------
STEP 4 — PAUSE ENQUEUE (stop the bleed)
------------------------------------------------------------------------
Message: [M04] Farid Osman, 14:08:45Z
Action: Disable the auto_recognition_enqueue feature flag to stop new
jobs from entering the queue.
Command: bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'
Ran by: Farid Osman
Verify: Feature flag disabled (thread does not specify a verification
command). Needs confirmation.
Rollback: bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'
------------------------------------------------------------------------
STEP 5 — CLEAR DEAD SET
------------------------------------------------------------------------
Message: [M05] Elena Sinclair, 14:15:20Z
Action: Clear the Sidekiq dead set of the 112 failed jobs.
Command: Not specified ("while I was in the console I cleared out the
dead set"). Needs confirmation of exact command
(likely Sidekiq Web UI or Sidekiq::DeadSet.new.clear).
Ran by: Elena Sinclair
Verify: Thread does not state an explicit verification. Needs
confirmation.
Rollback: Jobs are permanently removed; no rollback unless backed up
elsewhere. Thread does not mention a backup.
------------------------------------------------------------------------
STEP 6 — SCALE UP WORKERS
------------------------------------------------------------------------
Message: [M06] Bryce Harmon, 14:21:07Z
Action: Increase reward-worker replicas from 3 to 6 to accelerate
queue drain.
Command: kubectl scale deployment/reward-worker --replicas=6
Ran by: Bryce Harmon
Verify: kubectl get deployment/reward-worker shows 6 ready replicas.
(Thread does not state this check explicitly but rollout is
implied by the later drain observed in M07/M08.)
Rollback: kubectl scale deployment/reward-worker --replicas=3
------------------------------------------------------------------------
STEP 7 — MONITOR QUEUE DRAIN
------------------------------------------------------------------------
Message: [M07] Farid Osman, 14:33:41Z
Action: Re-check queue depth to confirm it is draining.
Command: bundle exec rake sidekiq:queue_depth
Ran by: Farid Osman
Verify: Result = 9,400 and falling ~1,200/min.
Rollback: N/A (read-only).
------------------------------------------------------------------------
STEP 8 — CONFIRM QUEUE CLEARED & ERROR RATE BASELINE
------------------------------------------------------------------------
Message: [M08] Cole Ingram, 14:47:55Z
Action: Verify queue is fully drained and error rate has returned to
normal.
Command: bundle exec rake sidekiq:queue_depth
Ran by: Cole Ingram
Verify: Queue depth = 0. Datadog error rate back to baseline.
Rollback: N/A (read-only).
------------------------------------------------------------------------
STEP 9 — RE-ENABLE ENQUEUE
------------------------------------------------------------------------
Message: [M09] Bryce Harmon, 14:49:10Z
Action: Turn auto_recognition_enqueue back on to resume normal job
submission.
Command: bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'
Ran by: Bryce Harmon
Verify: 40 new jobs processed cleanly in the next 3 minutes.
Rollback: bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'
------------------------------------------------------------------------
STEP 10 — SCALE WORKERS BACK DOWN
------------------------------------------------------------------------
Message: [M10] Bryce Harmon, 14:55:00Z
Action: Return reward-worker replicas to original count.
Command: kubectl scale deployment/reward-worker --replicas=3
Ran by: Bryce Harmon
Verify: Queue stable at 0. Incident declared resolved.
Rollback: kubectl scale deployment/reward-worker --replicas=6
========================================================================
GAPS REQUIRING CONFIRMATION
========================================================================
1. Step 3 — exact command used to inspect the dead set is not stated.
2. Step 4 — verification command after disabling the feature flag is not
stated.
3. Step 5 — exact command/approach to clear the dead set is not stated,
and no backup or verification is mentioned.
4. Step 6 — explicit replica-count verification (kubectl get) is not
stated.
========================================================================
FAILURE TIMELINE AND CASCADE ============================= FIRST ERROR (root cause): 2026-09-03T14:01:12Z | service: reward-service | ERROR Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s CASCADE (in order): 1. 14:01:12Z — reward-service: Redis connection timeout (first error) 2. 14:01:20–14:01:40Z — reward-service: Retry exhaustion for RewardGiveJob (3 attempts at 10s intervals) 3. 14:01:40Z — sidekiq: RewardGiveJob begins failing with Redis::TimeoutError; 60s retry schedule starts 4. 14:02:30Z — sidekiq: WARN — queue depth exceeds 10,000 (backlog building) 5. 14:02:36Z — sidekiq: RecognitionDigestJob also fails with Redis::TimeoutError (collateral damage) 6. 14:03:05Z — api-gateway: 502 upstream timeout calling reward-service /gives 7. 14:03:30Z — web-app: Give form submission failed (user-facing failures begin) RECOVERY: 14:22:10Z — reward-service: Redis connection restored 14:24:45Z — sidekiq: queue depth drops below 500 Total outage window: ~21 minutes (14:01:12Z to 14:22:10Z). SERVICE AND JOB INVOLVED: Service: reward-service (backed by Redis at redis-primary:6379) Job: RewardGiveJob (primary), RecognitionDigestJob (collateral) Sidekiq worker process and api-gateway round out the affected components. SIDEKIQ JOBS FAILED (from sidekiq_jobs.csv): RewardGiveJob: 12 failures (J-00001 through J-00012) RecognitionDigestJob: 4 failures (J-00013 through J-00016) Total: 16 failed jobs DATADOG QUERY TO CONFIRM THE FIRST ERROR: service:reward-service status:error "Redis::TimeoutError" @timestamp:[2026-09-03T14:00:00Z TO 2026-09-03T14:03:00Z] This isolates the root cause in reward-service before it cascaded to sidekiq, api-gateway, and web-app. WHAT THE LOGS DO NOT SHOW: - WHY Redis at redis-primary:6379 timed out (host-level CPU/memory/disk, network partition, Redis OOM, maxclients hit — none visible) - The number of concurrent RewardGiveJob workers affected (only 12 failed jobs recorded; actual worker count unknown) - How many user-facing Give submissions failed (web-app logged 4 ERROR entries but total request volume is unknown) - Whether postgres checkpoint frequency increased (14:10–14:20 cadence looks normal, but no pre-incident baseline is provided) - Whether any alerting was triggered or acted upon - Root cause of the Redis connection drop itself — the logs only show the timeout symptom, not the infrastructure failure behind it
FEATURE FLAG SUMMARY ==================== 9 flags in export. 6 have code references. 3 do not. === FLAGS WITH CODE REFERENCES (6) === 1. recognition_streaks_v2 [ON] Code: app/models/recognition.rb — when on, StreakTracker.record(give) fires after each recognition give. Target: segment:beta_companies | 42 companies 2. points_budget_guardrails [ON] Code: app/services/budget_service.rb — when on, BudgetService.enforce! checks and caps points a giver can award. Target: all_companies | 220 companies 3. slack_dm_nudges [ON] Code: app/jobs/nudge_job.rb — when on, SlackDm.send_nudge(user) delivers a DM nudge to the user. Target: segment:region_na | 87 companies 4. redeem_flow_redesign [OFF] Code: app/controllers/redeem_controller.rb — when on, renders RedeemV2Component; when off, falls back to RedeemV1Component. Target: targeted_list | 12 companies 5. analytics_dashboard_v3 [ON] Code: app/controllers/analytics_controller.rb — when on, loads AnalyticsV3 dashboard. Target: segment:tier_three | 65 companies 6. ms_teams_app_v2 [OFF] Code: app/services/teams_installer.rb — when on, triggers TeamsAppV2.install(company). Target: targeted_list | 9 companies === FLAGS WITH NO CODE REFERENCE (3) === 7. legacy_give_modal [OFF] No code excerpt found in app/ or lib/. Target: segment:legacy_plan | 14 companies 8. survey_boosters_q3 [ON] No code excerpt found in app/ or lib/. Target: segment:legacy_plan | 7 companies 9. paused_offboard_cleanup [OFF] No code excerpt found in app/ or lib/. Target: (none) | 0 companies === FLAG WITH NO TARGETS === - paused_offboard_cleanup: state OFF, empty targeting_rules, 0 companies. This flag is neither active nor assigned to anyone. === COMPANY COUNT RECONCILIATION === Total companies across all flags: 42 + 220 + 87 + 12 + 65 + 9 + 14 + 7 + 0 = 456 (Companies may overlap across flags; this is a sum of per-flag counts, not a deduplicated headcount.)
NDA-1 — GREEN (Standard Approval) Clause: Standard mutual confidentiality with the four corners carve-outs (3a–3e), 2-year term + 3-year survival, Delaware law, no license or exclusivity. This is a clean, balanced template. No embedded restrictions. Reasoning: Fully mutual, reasonable term, complete carve-outs, neutral governing law — no flags. --- NDA-2 — YELLOW (Counsel Review) Clause: "During the term of this Agreement and for eighteen (18) months thereafter, neither party shall solicit for employment or hire any employee of the other party with whom it came into contact under this Agreement." Reasoning: The embedded non-solicitation (18 months post-term) restricts Bonusly's ability to recruit talent; counsel should confirm the "came into contact" scoping is narrow enough and that it doesn't function as a de facto non-compete on hiring. Otherwise standard confidentiality terms. --- NDA-3 — RED (Full Legal Review) Clause 1 (non-compete): "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." Clause 2 (missing carve-outs): No confidentiality carve-outs are stated in this Agreement. Reasoning: Three compounding issues — (a) the blanket 3-year non-compete is far broader than a confidentiality obligation and would restrict Bonusly's core business operations, (b) zero carve-outs means no public-information, prior-knowledge, or legally-compelled-disclosure defense, and (c) five-year term on a one-way NDA under Irish law with no reciprocal protections makes this an outlier. Full legal review required before any engagement.