Mean 0.923 · 29/40 perfect tests · $0.45 total · each card: the question → the correct answer (gold) → this model's actual answer
**Stage Hygiene Audit** **Definitions:** - DS2+ deals: stages DS2, DS3, DS4, DS5 - why_buys compliance: substantive text (≥15 characters), excluding empty values and placeholders (tbd, n/a, see notes, na). LONG(n) format is considered present and compliant. - Regression: stage entry timestamps not in chronological order by stage - DS1 timestamp: every deal should have entered_stage timestamp for DS1 **Results:** Overall non-compliance on why_buys (DS2+): 81.5% (101/124) By owner: - Alex Franklin: 78.7% (48/61) - Cole Ingram: 86.4% (19/22) - Dana Mercer: 81.8% (18/22) - Bryce Harmon: 83.3% (15/18) - Farid Osman: 100% (1/1) Deals with no DS1 timestamp: 0 Deals with regressed timestamps: 0 **Three process fixes:** 1. Enforce why-buys requirement at DS2 entry with validation (min 15 chars, block placeholders) 2. Automated alerts for missing DS1 timestamps on new deals 3. Implement stage transition timestamp integrity check; freeze edit capability on historical stage dates
Number of deals resolved: 156 Deals whose owner id has no match in owners table (0 deals): Owner ids that map to archived/deactivated owners (0 owners): Total pipeline amount per resolved owner: Dana Mercer (ID: 83155923): $341,195.00 Cole Ingram (ID: 83155924): $288,161.43 Alex Franklin (ID: 84342457): $624,310.00 Bryce Harmon (ID: 119337721): $1,054,144.00 Elena Sinclair (ID: 701163055): $2,100.00 Farid Osman (ID: 716654662): $4,134.00
**Call-to-Deal Mapping Integrity Check** **(a) Orphaned Gong rows**: 30 rows whose `hs_deal_id` has no match in `deals_open` Sample orphan aliases: - `Deal-8FA85D` - `Deal-8FC3F9` - `Deal-3B7945` - `Deal-42B265` - `Deal-9CCC42` **(b) Duplicate conversation keys**: 0 rows (no cases where `calls_90d` exceeds `distinct_conversation_keys`) **(c) Coverage for DS3+ open deals**: 85 total deals at stage DS3, DS4, or DS5 - 25 have at least one logged call - **Share: 29.4%** Sample DS3+ deals without logged calls: - `Deal-9AAE5F` - `Deal-403845` - `Deal-6787C2` - `Deal-2465CE` - `Deal-62D607`
```sql -- Use COMPANY_COHORT_SUMMARY because it contains pre-aggregated first-month metrics (M1_*) per self-serve company, avoiding stale/unpopulated tables. -- M1_USERS represents unique givers, M1_GIVES is recognition count, M1_REDEMPTIONS already filters to STATE='succeeded' per business rule. -- No deleted-giver filter is applied, preserving historical counts as required. SELECT COMPANY_ID AS customer_company, M1_USERS AS unique_givers, M1_GIVES AS recognition_count, M1_REDEMPTIONS AS successful_redemption_count FROM PRODUCTION.PLG.COMPANY_COHORT_SUMMARY; ```
=== CRM Completeness and Data Quality Audit ===
I. Data Completeness (N = record count)
A. Companies (N=34)
- Industry: 34/34 (100.00%)
- Employee Count: 23/34 (67.65%) [missing: 11]
- HQ Country: 28/34 (82.35%) [missing: 6]
B. Contacts (N=52)
- Email (non-empty): 52/52 (100.00%) [4 invalid syntax]
- Title: 38/52 (73.08%) [missing: 14]
- Persona: 36/52 (69.23%) [missing: 16]
II. Duplicate Company Clusters (by shared domain)
Domain acme-corp.com
Aliases: C-0A092931, C-0A092932
Survivor: C-0A092931
Domain globex.io
Aliases: C-0A092933, C-0A092934
Survivor: C-0A092933
III. Invalid Emails (contact.email)
CT-0010: user0@
CT-0080: user0@
CT-0081: user1@
CT-0192: user2@
IV. Domain Field Mismatches (contact.domain vs company.domain)
None detected.
V. Fill Missing Company Fields from ZoomInfo Enrichment
(Only applied where enrichment row exists and CRM field is blank)
- C-EC3025: employee_count = 400
- C-96039F: employee_count = 400
- C-44EA29: employee_count = 400
- C-D04904: employee_count = 400
- C-B23205: employee_count = 400
- C-60C75F: employee_count = 400
- C-2C60E5: employee_count = 340
- C-7BBDFA: employee_count = 400
- C-50D386: employee_count = 400
VI. CRM vs ZoomInfo Disagreements (both non-blank, values differ)
A. Industry
66d1fc.com: CRM "tech" vs ZI "Computer Software" -> Recommend ZI
ec3025.com: CRM "Technology" vs ZI "Computer Software" -> Recommend ZI
44ea29.com: CRM "tech" vs ZI "Computer Software" -> Recommend ZI
d04904.com: CRM "Technology" vs ZI "Computer Software" -> Recommend ZI
77a95a.com: CRM "Technology" vs ZI "Computer Software" -> Recommend ZI
aa8dda.com: CRM "Technology" vs ZI "Computer Software" -> Recommend ZI
b25f40.com: CRM "Technology" vs ZI "Computer Software" -> Recommend ZI
425e2a.com: CRM "Tech " vs ZI "Computer Software" -> Recommend ZI
60c75f.com: CRM "tech" vs ZI "Computer Software" -> Recommend ZI
B. HQ Country
66d1fc.com: CRM "US" vs ZI "United States" -> Recommend ZI
950043.com: CRM "US" vs ZI "United States" -> Recommend ZI
ec3025.com: CRM "USA" vs ZI "United States" -> Recommend ZI
96039f.com: CRM "USA" vs ZI "United States" -> Recommend ZI
b23205.com: CRM "US" vs ZI "United States" -> Recommend ZI
e51fb7.com: CRM "USA" vs ZI "United States" -> Recommend ZI
d0662e.com: CRM "US" vs ZI "United States" -> Recommend ZI
2d7423.com: CRM "USA" vs ZI "United States" -> Recommend ZI
425e2a.com: CRM "USA" vs ZI "United States" -> Recommend ZI
77a95a.com: CRM "US" vs ZI "United States" -> Recommend ZI
VII. Top 10 Fixes by Pipeline Amount at Stake
Cannot be computed: deals data (including amount, stage, close date) not provided. Please supply deals.csv to prioritize fixes by monetary impact.
I'll analyze each deal systematically, assigning classification and side based only on the provided data.
## Deal-by-Deal Classification
Let me process each record:
**1. Deal-DB0AAC** - Tag: "Lost- Timing (1 year or more)"; Text: "rescheduled a lot of meetings and let me know they are putting this on pause for now. working on getting timeline to reconnect."
- Category: **timing**
- Side: **buyer** (they're pausing, not rejecting)
**2. Deal-F7F635** - Tag: "Competitor"; Text: "group decided to go in another direction"
- Category: **competitor**
- Side: **unknown** (vague, likely buyer chose competitor)
**3. Deal-AC944F** - Tag: "MIA"; Text: "unresponsive"
- Category: **no decision**
- Side: **unknown** (no contact)
**4. Deal-214060** - Tag: "MIA"; Text: "unresponsive"
- Category: **no decision**
- Side: **unknown**
**5. Deal-91A056** - Tag: "Lost- Timing (1 year or more)"; Text: "asked to reconnect early in 2027"
- Category: **timing**
- Side: **buyer**
**6. Deal-29326C** - Tag: "Lost- Timing (1 year or more)"; Text: "Timing"
- Category: **timing**
- Side: **buyer**
**7. Deal-5DB9B0** - Tag: "Lost- Does not fit ICP (write in notes)"; Text: "Spam."
- Category: **product gap** (tag says doesn't fit ICP)
- Side: **Bonusly** (text suggests poor fit from our side)
**8. Deal-831B7B** - Tag: "Lost- Timing (1 year or more)"; Text: "hoping we'll be able to look at this again in the new year"
- Category: **timing**
- Side: **buyer**
**9. Deal-F97C37** - Tag: "Competitor"; Text: "thought other vendor had more diversified offerings"
- Category: **competitor**
- Side: **buyer** (they preferred competitor's features)
**10. Deal-13E9CF** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Not a budget issue - R&R program has been deprioritized by the org"
- Category: **no decision**
- Side: **buyer** (org deprioritized)
**11. Deal-39E25C** - Tag: "Lost- Timing (1 year or more)"; Text: "Timing, reconnect next year"
- Category: **timing**
- Side: **buyer**
**12. Deal-7ED004** - Tag: "Lost- Budget/Price"; Text: "Did not get budget approval"
- Category: **pricing**
- Side: **buyer** (budget constraints)
**13. Deal-21B045** - Tag: "MIA"; Text: "MIA"
- Category: **no decision**
- Side: **unknown**
**14. Deal-B3ABED** - Tag: "Lost- Timing (1 year or more)"; Text: "MIA- We'll revisit this again likely in Q2 next year"
- Category: **timing**
- Side: **buyer**
**15. Deal-422BA6** - Tag: "Competitor"; Text: "Executive team chose a competing vendor... preferred ADP TotalSource PEO partner"
- Category: **competitor**
- Side: **buyer** (partner advantage)
**16. Deal-ED9AE7** - Tag: "Lost DM"; Text: "Timing, budget, authority"
- Category: **no decision** (fragmented decision process)
- Side: **unknown**
**17. Deal-988493** - Tag: "MIA"; Text: "mia"
- Category: **no decision**
- Side: **unknown**
**18. Deal-381C8C** - Tag: "Competitor"; Text: "not going to be moving forward"
- Category: **competitor**
- Side: **unknown**
**19. Deal-F308CA** - Tag: "MIA"; Text: "No contact since intro in April"
- Category: **no decision**
- Side: **unknown**
**20. Deal-F1E8A6** - Tag: "Competitor"; Text: "not going to be moving forward"
- Category: **competitor**
- Side: **unknown**
**21. Deal-B6AC09** - Tag: "Lost- Timing (1 year or more)"; Text: "revisiting in 2027"
- Category: **timing**
- Side: **buyer**
**22. Deal-70F704** - Tag: "Lost DM"; Text: "only looking to automate anniversary awards and have been MIA"
- Category: **product gap** (too narrow use case)
- Side: **buyer** (mismatched fit)
**23. Deal-E6E80A** - Tag: "Lost- Timing (1 year or more)"; Text: "Got pushed into early 2027"
- Category: **timing**
- Side: **buyer**
**24. Deal-B038F0** - Tag: "Lost- Timing (1 year or more)"; Text: "Got pushed back into early 2027"
- Category: **timing**
- Side: **buyer**
**25. Deal-4664E1** - Tag: "MIA"; Text: "No contact after intro"
- Category: **no decision**
- Side: **unknown**
**26. Deal-175756** - Tag: "Lost- Timing (1 year or more)"; Text: "Due to other priorities putting on hold until 2027"
- Category: **timing**
- Side: **buyer**
**27. Deal-E74A73** - Tag: "Doing nothing/Not a priority/Cost"; Text: "test points calculation manually before investing"
- Category: **no decision** (testing internally first)
- Side: **buyer**
**28. Deal-DDAB52** - Tag: "Competitor"; Text: "Rippl - platform offers a lot more at same cost, easier to budget"
- Category: **competitor**
- Side: **buyer** (better value proposition)
**29. Deal-ACE061** - Tag: "Competitor"; Text: "feel they went with HeyTaco"
- Category: **competitor**
- Side: **unknown**
**30. Deal-BB78F3** - Tag: "Lost- Timing (1 year or more)"; Text: "roll out a few plant-specific action items first"
- Category: **timing**
- Side: **buyer**
**31. Deal-D48E0B** - Tag: "MIA"; Text: "MIA"
- Category: **no decision**
- Side: **unknown**
**32. Deal-15DA99** - Tag: "Lost- Timing (1 year or more)"; Text: "looking to bring it back up early 2027"
- Category: **timing**
- Side: **buyer**
**33. Deal-F4AF5D** - Tag: "Lost- Timing (1 year or more)"; Text: "Timing looking at early next year"
- Category: **timing**
- Side: **buyer**
**34. Deal-79B7A1** - Tag: "Lost- Timing (1 year or more)"; Text: "Timing"
- Category: **timing**
- Side: **buyer**
**35. Deal-583ADB** - Tag: "MIA"; Text: "MIA"
- Category: **no decision**
- Side: **unknown**
**36. Deal-8E27DA** - Tag: "Feature Request"; Text: "moved forward with just a swag provider and didn't want R&R"
- Category: **product gap**
- Side: **buyer** (they wanted something different, not R&R)
**37. Deal-2D2F8D** - Tag: "Competitor"; Text: "Decided to move in a different direction"
- Category: **competitor**
- Side: **unknown**
**38. Deal-E0441F** - Tag: "MIA"; Text: "Was stale when inherited... No contact"
- Category: **no decision**
- Side: **unknown**
**39. Deal-7CB44D** - Tag: "MIA"; Text: "No meaningful contact since demo"
- Category: **no decision**
- Side: **unknown**
**40. Deal-0F96AA** - Tag: "Competitor"; Text: "won't be advancing Bonusly to finalist demo stage"
- Category: **competitor**
- Side: **buyer** (explicit competitive loss)
**41. Deal-1BCA50** - Tag: "Competitor"; Text: "other stakeholder was already way down the path with another vendor"
- Category: **competitor**
- Side: **buyer**
**42. Deal-7CC678** - Tag: "Competitor"; Text: "Nothing specific provided"
- Category: **competitor**
- Side: **unknown**
**43. Deal-FAC17C** - Tag: "Lost DM"; Text: "Contract out two months but couldn't get final approval"
- Category: **champion left** (approval process broke down - likely decision maker left/changed)
- Side: **unknown**
**44. Deal-242273** - Tag: "Competitor"; Text: "Both top two vendors could digitize points currency... this was biggest differentiator"
- Category: **product gap** (feature we lacked)
- Side: **Bonusly** (we couldn't meet requirement)
**45. Deal-50E5D8** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Leadership decided to pause"
- Category: **no decision**
- Side: **buyer**
**46. Deal-A2C349** - Tag: "Competitor"; Text: "decided to stick with Awardco and add surveying"
- Category: **competitor**
- Side: **buyer**
**47. Deal-9F176A** - Tag: "Lost- Timing (1 year or more)"; Text: "put a pause... not picking back up until end of year"
- Category: **timing**
- Side: **buyer**
**48. Deal-7B2236** - Tag: "Doing nothing/Not a priority/Cost"; Text: "combination of budget and shift in what they wanted"
- Category: **no decision** (budget + requirement change)
- Side: **buyer**
**49. Deal-AFA56C** - Tag: "MIA"; Text: "unresponsive"
- Category: **no decision**
- Side: **unknown**
**50. Deal-C7156E** - Tag: "Competitor"; Text: "selected another vendor"
- Category: **competitor**
- Side: **unknown**
**51. Deal-C33D91** - Tag: "Lost- Budget/Price"; Text: "company going through significant budget cuts"
- Category: **pricing**
- Side: **buyer** (external budget crisis)
**52. Deal-9048EB** - Tag: "MIA"; Text: "bad fit based on desired setup and multiple feature gaps"
- Category: **product gap** (text reveals real reason)
- Side: **Bonusly** (fit issue)
**53. Deal-5E64CE** - Tag: "Doing nothing/Not a priority/Cost"; Text: "fee for getting out of Nectar agreement is a lot... will reach out when closer to contract end"
- Category: **pricing** (switching cost barrier)
- Side: **buyer** (locked into competitor)
**54. Deal-8A0992** - Tag: "Competitor"; Text: "Went with a Canadian provider"
- Category: **competitor**
- Side: **buyer**
**55. Deal-D0C698** - Tag: "Competitor"; Text: "wants to use Kudos again"
- Category: **competitor**
- Side: **buyer**
**56. Deal-69CF3D** - Tag: "Lost- Timing (1 year or more)"; Text: "On Hold"
- Category: **timing**
- Side: **buyer**
**57. Deal-ECBF89** - Tag: "Lost- Timing (1 year or more)"; Text: "On Hold for now"
- Category: **timing**
- Side: **buyer**
**58. Deal-3618CC** - Tag: "Lost DM"; Text: "Wanted Surveys"
- Category: **product gap** (feature mismatch)
- Side: **buyer**
**59. Deal-EECC02** - Tag: "Competitor"; Text: "Went another direction"
- Category: **competitor**
- Side: **unknown**
**60. Deal-5AD03E** - Tag: "Competitor"; Text: "Wanted more defined budget access"
- Category: **competitor** (competitor met that need)
- Side: **unknown**
**61. Deal-D1A623** - Tag: "Lost- Timing (1 year or more)"; Text: "timing"
- Category: **timing**
- Side: **buyer**
**62. Deal-413C56** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Back to school is priority and CEO not ready"
- Category: **no decision** (priority conflict)
- Side: **buyer**
**63. Deal-47F1A1** - Tag: "Competitor"; Text: "Staying with WorkTango for another 12 months"
- Category: **competitor**
- Side: **buyer**
**64. Deal-BF2A98** - Tag: "Competitor"; Text: "Recently deployed HiThrive within the org"
- Category: **competitor**
- Side: **buyer**
**65. Deal-2A292B** - Tag: "Doing nothing/Not a priority/Cost"; Text: "going to build something simple internally"
- Category: **other** (build vs buy)
- Side: **buyer** (chose not to buy)
**66. Deal-D1AABF** - Tag: "MIA"; Text: "No response"
- Category: **no decision**
- Side: **unknown**
**67. Deal-FEDBCB** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Wanted to reconnect closer to end of year but not super engaged"
- Category: **no decision**
- Side: **unknown** (poor engagement)
**68. Deal-1E7DA9** - Tag: "Competitor"; Text: "selected another platform"
- Category: **competitor**
- Side: **unknown**
**69. Deal-2BBA21** - Tag: "MIA"; Text: "No contact since intro call"
- Category: **no decision**
- Side: **unknown**
**70. Deal-286F9C** - Tag: "Competitor"; Text: "decided to go with another platform... not really a good fit"
- Category: **competitor**
- Side: **buyer** (fit issue but they chose competitor)
**71. Deal-7FBAC6** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Leadership has made the decision to pause (again) for now"
- Category: **no decision**
- Side: **buyer**
**72. Deal-369281** - Tag: "Competitor"; Text: "went with what they have in paylocity"
- Category: **competitor**
- Side: **buyer**
**73. Deal-386F6E** - Tag: "MIA"; Text: "No response"
- Category: **no decision**
- Side: **unknown**
**74. Deal-9FCD0D** - Tag: "Competitor"; Text: "chose to go with a Canadian company as that was important to CEO"
- Category: **competitor**
- Side: **buyer** (geographic preference)
**75. Deal-55867E** - Tag: "Lost- Timing (1 year or more)"; Text: "don't think we'll be moving forward at this time"
- Category: **timing** (tag says timing but text is vague "at this time")
- Side: **buyer**
**76. Deal-DAFB82** - Tag: "Lost- Budget/Price"; Text: "too many other company priorities... won't be budgeted until 2028"
- Category: **pricing**
- Side: **buyer**
**77. Deal-2FEDDB** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Unsure on timing"
- Category: **no decision**
- Side: **unknown**
**78. Deal-64B19A** - Tag: "Competitor"; Text: "Likely stayed with Motivosity"
- Category: **competitor**
- Side: **buyer**
**79. Deal-3F86A0** - Tag: "MIA"; Text: "unresponsive"
- Category: **no decision**
- Side: **unknown**
**80. Deal-096750** - Tag: "MIA"; Text: "No meaningful contact after intro"
- Category: **no decision**
- Side: **unknown**
**81. Deal-F325A5** - Tag: "Lost DM"; Text: "Layoffs and Change in Leadership - no longer a priority"
- Category: **champion left** (leadership change)
- Side: **buyer** (organizational change)
**82. Deal-ABD14C** - Tag: "Doing nothing/Not a priority/Cost"; Text: "Not interested in signing up"
- Category: **no decision** (rejection but no specific reason)
- Side: **unknown**
**83. Deal-79E61A** - Tag: "MIA"; Text: "Unresponsive"
- Category: **no decision**
- Side: **unknown**
**84. Deal-8A119B** - Tag: "Lost- Budget/Price"; Text: "Didn't get approval"
- Category: **pricing**
- Side: **buyer**
**85. Deal-AE7C4E** - Tag: "MIA"; Text: "Unresponsive"
- Category: **no decision**
- Side: **unknown**
**86. Deal-DAB4F1** - Tag: "MIA"; Text: "Unresponsive"
- Category: **no decision**
- Side: **unknown**
**87. Deal-B4B50F** - Tag: "MIA"; Text: "Unresponsive"
- Category: **no decision**
- Side: **unknown**
**88. Deal-981AD4** - Tag: "Feature Request"; Text: "Doesn't fit UI and not UK focused"
- Category: **product gap** (text explicitly states fit issues)
- Side: **Bonusly** (doesn't meet requirements)
**89. Deal-DC77FE** - Tag: "Competitor"; Text: "found a system that offered a bit more in terms of customization"
- Category: **competitor**
- Side: **buyer** (feature preference)
**90. Deal-5885B9** - Tag: "MIA"; Text: "MIA"
- Category: **no decision**
- Side: **unknown**
## Summary Statistics
Counting categories:
- **timing**: 15
- **competitor**: 27
- **no decision**: 25
- **pricing**: 5
- **product gap**: 5
- **other**: 1 (build vs buy)
- **champion left**: 2
Total: 80 deals
Side distribution:
- **buyer**: 39
- **unknown**: 30
- **Bonusly**: 11
## Tag vs Text Disagreements
Where structured `closed_lost_tag` clearly disagrees with free-text reason:
1. **Deal-5DB9B0**: Tag says "Does not fit ICP" but text just says "Spam." → Category disagreement (product gap vs other)
2. **Deal-52E64CE** (actually 5E64CE): Tag says "Doing nothing/Not a priority/Cost" but text reveals "fee for getting out of Nectar agreement" → pricing tag, but real issue is competitor lock-in
3. **Deal-9048EB**: Tag says "MIA" but text says "bad fit based on desired setup and multiple feature gaps" → hiding product gap under MIA
4. **Deal-242273**: Tag says "Competitor" but text focuses on their feature need we couldn't meet → product gap more than competitor choice
5. **Deal-52E64CE** again shows tagging mismatch
6. **Deal-70F704**: Tag "Lost DM" but text shows narrow use case mismatch → product gap
7. **Deal-3618CC**: Tag "Lost DM" but text "Wanted Surveys" → product gap
8. **Deal-3F86A0**: Tag "MIA" but likely ongoing disengagement
9. **Deal-2BBA21**: Tag "MIA" but explicitly "No contact since intro" - proper MIA though
10. **Deal-52D1A623**: tag says timing, text just "timing" - agreement
Most clear disagreements:
- MIA tags that actually reveal **product gaps** (Deal-9048EB) or specific reasons
- "Lost DM" tags masking **product gaps** (Deal-70F704, Deal-3618CC)
- "Doing nothing/Not a priority/Cost" tags that contain **pricing lock-in** info (Deal-5E64CE)
Counting clear disagreements: ~8 deals where tag obscures real reason.
## Patterns Worth Acting On
1. **Product gaps buried in wrong tags**: Multiple deals tagged as "MIA" or "Lost DM" actually contain explicit feature mismatch feedback. This suggests inconsistent tagging discipline, hiding critical product gaps that should be fed back to product team.
2. **Competitor losses due to feature differentiation**: Several competitor losses aren't about price but specific capabilities competitors offer (customization, points-as-currency, integrations, geographic focus). These reveal concrete feature/ positioning gaps.
3. **"Timing" tag overuse**: 15 deals tagged as timing, but many have vague text ("timing", "on hold") that could mask other issues. Tag seems to be default catch-all when real reason unknown.
Most actionable: **product gaps mis-tagged** (fix tagging to surface real issues) and **feature-based competitive losses** (specific differentiation gaps we can address).
```json
{
"tier_counts": {
"LOCK": 2,
"ACTION": 2,
"BUILD": 12,
"REVIVE": 95,
"WATCH": 37,
"RISKY": 8
},
"tier_examples": {
"LOCK": [
"Deal-C26D20",
"Deal-D348E1"
],
"ACTION": [
"Deal-25F752",
"Deal-403845"
],
"BUILD": [
"Deal-1CCE5C",
"Deal-1FC049",
"Deal-3974EB"
],
"REVIVE": [
"Deal-034D49",
"Deal-036E80",
"Deal-0660B4"
],
"WATCH": [
"Deal-012CB1",
"Deal-01E193",
"Deal-03BA69"
],
"RISKY": [
"Deal-2465CE",
"Deal-499BF6",
"Deal-547B2B"
]
},
"risky_deals": [
"Deal-2465CE",
"Deal-499BF6",
"Deal-547B2B",
"Deal-584EE5",
"Deal-A2B47C",
"Deal-A5E80A",
"Deal-B7EBD1",
"Deal-FD9F4E"
],
"lock_violations": 0,
"pipeline_shape": "The open pipeline contains 156 deals across all stages. The tier distribution shows that 24% are WATCH and 61% are REVIVE, indicating a significant portion with low engagement requiring re-engagement. LOCK deals represent only 1% of the pipeline, highlighting limited near-term closing confidence. Additionally, 5% of deals are RISKY due to misalignment between forecast category and engagement signals, warranting immediate review to improve forecast accuracy."
}
```
{
"transcript_id": "TX-001",
"deal_alias": "Deal-CFE7F4",
"why_buys": ["automating anniversary and birthday awards"],
"pain_points": [
"track everything in a spreadsheet, and people slip through the cracks",
"HR team of three cannot keep up manually"
],
"stakeholders": ["VP People", "HR Admin"],
"budget_signal": "$40k",
"timeline_signal": "before November (open enrollment)",
"competitor_mentioned": "Achievers",
"next_step": "Security review on September 12",
"objections": ["Need SSO and audit logs for IT sign-off"],
"confidence": "high"
}
{
"transcript_id": "TX-002",
"deal_alias": "Deal-70BB30",
"why_buys": ["tie recognition to retention for hourly workforce; reduce regretted turnover (over 30%)"],
"pain_points": ["regretted turnover over 30% among hourly workforce"],
"stakeholders": ["Head of Total Rewards", "CFO"],
"budget_signal": "$25k",
"timeline_signal": "end of September",
"competitor_mentioned": null,
"next_step": "Send pilot agreement; legal review this week",
"objections": [],
"confidence": "high"
}
{
"transcript_id": "TX-003",
"deal_alias": "Deal-530B50",
"why_buys": ["make recognition visible across 12 retail locations"],
"pain_points": ["store managers have zero budget autonomy for on-the-spot recognition"],
"stakeholders": ["People Ops Manager"],
"budget_signal": null,
"timeline_signal": "Q1",
"competitor_mentioned": "Bucketlist",
"next_step": "Schedule CEO call (times to be sent)",
"objections": [],
"confidence": "low"
}
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": ["consolidate three separate recognition tools into one"],
"pain_points": [
"paying for three tools and none talk to HRIS",
"security review took three months for last vendor"
],
"stakeholders": ["VP People", "IT Security Lead"],
"budget_signal": "under $15k annually",
"timeline_signal": null,
"competitor_mentioned": null,
"next_step": null,
"objections": ["Security review process lengthy (took 3 months for previous vendor)"],
"confidence": "low"
}
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": [
"automate service milestones",
"give analytics on recognition equity across departments"
],
"pain_points": [
"night-shift teams feel invisible; engagement scores 20 points lower",
"exec team skeptical after failed rollout two years ago"
],
"stakeholders": ["HR Director", "People Ops Coordinator"],
"budget_signal": "$12k",
"timeline_signal": "before January all-hands",
"competitor_mentioned": "Nectar",
"next_step": "Present to exec team on October 2",
"objections": [
"mid-pilot with Nectar; must beat that experience"
],
"confidence": "medium"
}
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": ["cut admin time on service awards"],
"pain_points": ["spend five hours a month ordering and shipping plaques"],
"stakeholders": ["HR Manager"],
"budget_signal": null,
"timeline_signal": "Q1 start",
"competitor_mentioned": null,
"next_step": "Send one-page overview for COO this week",
"objections": ["COO prefers in-house builds"],
"confidence": "low"
}
Based on CRM and Slack thread, the three deals closest to signature are: 1. Deal-547B2B ($11,200) – Alex Franklin Why close: Alex reported redlines clean, signing page out, and VP People confirmed signing tomorrow (signature-imminent). What's left: Only final signature execution. 2. Deal-403845 ($9,000) – Alex Franklin Why close: Order form is with their finance team (Dana Mercer, Slack). What's left: Finance approval and signature. 3. Deal-A2B47C ($6,360) – Alex Franklin Why close: In legal review, normal pace (Alex). What's left: Legal clearance and signature. All three target close dates of 2026-09-11, per CRM.
Based on the provided transcripts and product docs, here are the true product gaps raised by prospects (excluding rep language and rollout/enablement issues):
**Real Gaps:**
1. **Deal-EC3025** (amount not provided)
* Prospect (IT Security Lead): "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management."
* Classification: Real gap (product docs explicitly state SCIM is NOT currently supported)
2. **Deal-D0D6B5** (amount not provided)
* Prospect (HRIS Manager): "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us."
* Classification: Real gap (product docs explicitly state ADP Workforce Now integration is NOT currently supported)
**Not included in summary:**
* Deal-CFE7F4: Custom report builder issue is a **plan gate** (feature exists on Enterprise tier, prospect likely on lower tier).
* Deal-84DBA6: Slack adoption problem is a **rollout/enablement issue** (feature exists, training lacking).
* Deal-36C33F: Mobile app gap was raised by the rep, not the prospect (per instructions, rep language does not count).
Bryce Harmon Alias Stage Amount Days Since Last ------------------------------------------------------------ Deal-2D1F1B DS1 $240,000.00 81 Deal-66D1FC DS1 $ 99,000.00 16 Deal-950043 DS1 $ 70,000.00 19 Deal-B23205 DS1 $ 45,000.00 16 Deal-7BBDFA DS3 $ 37,440.00 46 Deal-332637 DS2 $ 36,000.00 9 Deal-1BEEBF DS1 $ 31,500.00 19 Deal-C5658B DS1 $ 23,400.00 16 Deal-40522D DS3 $ 21,000.00 19 Deal-F0EBBB DS3 $ 11,400.00 24 Deal-E25A09 DS1 $ 6,000.00 9 Deal-C9C286 DS2 $ 5,502.00 9 Deal-012CB1 DS1 $ 1.00 23 Stale deals: 13 | Total stale amount: $626,243.00 Dana Mercer Alias Stage Amount Days Since Last ------------------------------------------------------------ Deal-44EA29 DS2 $ 60,000.00 10 Deal-E51FB7 DS2 $ 43,875.00 12 Deal-B42F46 DS1 $ 27,000.00 19 Deal-BA3DDC DS3 $ 23,400.00 15 Deal-9DDE86 DS2 $ 20,000.00 15 Deal-215CCA DS3 $ 18,900.00 17 Deal-5EED42 DS3 $ 16,250.00 11 Deal-57887A DS2 $ 15,000.00 8 Deal-B7EBD1 DS5 $ 9,000.00 16 Deal-3974EB DS4 $ 9,000.00 8 Deal-F40F04 DS2 $ 8,100.00 15 Deal-87DDD1 DS1 $ 5,000.00 19 Deal-F336B6 DS3 $ 4,200.00 15 Deal-0660B4 DS4 $ 1,920.00 16 Stale deals: 14 | Total stale amount: $261,645.00 Alex Franklin Alias Stage Amount Days Since Last ------------------------------------------------------------ Deal-CC08D1 DS1 $ 24,000.00 16 Deal-E73427 DS3 $ 18,000.00 10 Deal-885F45 DS2 $ 9,300.00 12 Deal-C2FF3C DS1 $ 8,316.00 10 Deal-3EED2C DS2 $ 7,200.00 No eng Deal-0D2F7A DS3 $ 5,100.00 12 Deal-6C60D4 DS3 $ 4,800.00 12 Deal-13FEBD DS2 $ 4,680.00 12 Deal-9D0060 DS3 $ 3,840.00 12 Deal-690476 DS2 $ 3,600.00 18 Deal-C6D97A DS4 $ 3,240.00 8 Deal-EE195F DS3 $ 3,120.00 8 Deal-278DEC DS3 $ 2,700.00 8 Deal-635B8E DS3 $ 2,600.00 18 Deal-6883F3 DS1 $ 2,400.00 16 Deal-4A13AD DS3 $ 2,160.00 26 Deal-F67D31 DS2 $ 1,800.00 8 Deal-5FDCE4 DS3 $ 1,600.00 12 Deal-BA571A DS4 $ 1,080.00 18 Stale deals: 19 | Total stale amount: $109,536.00 Cole Ingram Alias Stage Amount Days Since Last ------------------------------------------------------------ Deal-D04904 DS2 $ 58,529.25 11 Deal-B25F40 DS3 $ 40,000.00 8 Deal-813836 DS2 $ 32,175.00 11 Deal-1BA595 DS2 $ 31,750.00 11 Deal-CFE1E8 DS3 $ 18,000.00 11 Deal-CD47A6 DS2 $ 12,168.00 11 Deal-627646 DS3 $ 11,193.00 11 Deal-FF809F DS2 $ 7,781.20 11 Deal-AF932D DS2 $ 7,225.40 11 Deal-A71728 DS2 $ 6,947.50 11 Deal-8BC9F5 DS2 $ 5,616.00 10 Deal-175395 DS3 $ 4,779.88 11 Deal-481E24 DS3 $ 4,140.00 10 Deal-C7F9BF DS2 $ 3,360.00 11 Deal-2F3A66 DS3 $ 3,334.80 11 Deal-342E96 DS2 $ 2,700.00 24 Deal-E568D5 DS3 $ 1,875.00 11 Deal-FD9F4E DS5 $ 1,330.00 10 Stale deals: 18 | Total stale amount: $252,905.03 Elena Sinclair Alias Stage Amount Days Since Last ------------------------------------------------------------ Deal-57FF13 DS1 $ 2,100.00 No eng Stale deals: 1 | Total stale amount: $2,100.00
Based on the provided data for the last 30 days (2026-08-06 to 2026-09-05), here are the results: **Sales Rep Performance Analysis** | Rank | Rep Name | Emails | Calls | Mtgs | Total | DS2 | Email% | Call% | Mtg% | Act/DS2 | |------|---------------------|--------|-------|------|-------|-----|--------|--------|------|---------| | 1 | Alex Franklin | 307 | 36 | 41 | 384 | 18 | 79.9% | 9.4% | 10.7%| 21.33 | | 2 | Bryce Harmon | 162 | 0 | 43 | 205 | 4 | 79.0% | 0.0% | 21.0%| 51.25 | | 3 | Cole Ingram | 96 | 14 | 1 | 111 | 2 | 86.5% | 12.6% | 0.9% | 55.50 | | 4 | Farid Osman | 38 | 0 | 34 | 72 | 1 | 52.8% | 0.0% | 47.2%| 72.00 | | 5 | Dana Mercer | 84 | 18 | 11 | 113 | 1 | 74.3% | 15.9% | 9.7% | 113.00 | **Summary:** - Most efficient rep (lowest activities per DS2 entry): **Alex Franklin** (21.33 activities/DS2) - Highest-volume rep (most DS2 entries): **Alex Franklin** (18 DS2 entries) - Note: Most efficient rep and highest-volume rep are the same person. **Arithmetic verification:** - Alex Franklin: 384 total activities ÷ 18 DS2 = 21.33 - Bryce Harmon: 205 ÷ 4 = 51.25 - Cole Ingram: 111 ÷ 2 = 55.50 - Farid Osman: 72 ÷ 1 = 72.00 - Dana Mercer: 113 ÷ 1 = 113.00
Now I'll generate three coaching observations based on the data: --- **QTD Scorecard — Alex Franklin as of 2026-09-05** **Bookings vs Quota:** $150,000 / $200,000 = 75.0% attainment **New vs Expansion:** $113,500 (5 deals) new; $36,500 (3 deals) expansion **Active Pipeline by Stage:** - DS1: 20 deals, $284,621 - DS2: 28 deals, $353,760 - DS3: 67 deals, $552,705 - DS4: 5 deals, $23,574 - DS5: 5 deals, $45,730 **Total pipeline:** $1,260,390 **Rolling 90-day DS2-to-won rate:** 7.2% (8 won / 111 entered DS2) **Q3 Wins/Losses:** 8 wins; 27 losses **Top loss reason:** "Lost- Timing (1 year or more)" — 13 losses (48% of losses) **Activity last 30 days:** 807 emails; 112 calls; 128 meetings; 50 notes --- **Coaching Observations:** 1. **Pipeline quality is suspect.** Despite a healthy $1.26M pipeline (6.3x quota), your DS2-to-won conversion is just 7.2% over 90 days and your Q3 win rate is only 23% (8/35). The pipeline is wide but not translating into wins. 2. **Timing losses suggest over-qualification or poor forecast discipline.** Nearly half of losses (13 of 27) cite "Timing (1 year or more)." This indicates deals are entering your pipeline too early in the buyer's journey or you're chasing unqualified opportunities that won't close this quarter. 3. **High activity without corresponding conversion.** You're generating strong activity volume (128 meetings, 807 emails), but that effort yields only 8 wins. Consider redirecting time toward better-qualified opportunities or improving discovery to identify decision-making authority earlier (5 MIA losses indicate decision-maker access issues).
Deal-EC3025 (61032318100) Amount: missing Stage: missing Active Contact Count: 1 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-6827DB - Chief People Officer (economic buyer) Deal-92D97D (59728118877) Amount: missing Stage: missing Active Contact Count: 1 Active Personas: HR admin Missing Personas: economic buyer, champion, IT security, finance Most Valuable Persona to Add (stage unknown): champion Unengaged Contact: none on file Deal-50D386 (61055128146) Amount: missing Stage: missing Active Contact Count: 2 Active Personas: champion, HR admin Missing Personas: economic buyer, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-A1C4B3 - Chief People Officer (economic buyer) Deal-D0D6B5 (60081655042) Amount: missing Stage: missing Active Contact Count: 3 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-1FA4DB - Chief People Officer (economic buyer) Deal-5BFE3B (51674270311) Amount: missing Stage: missing Active Contact Count: 2 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: none on file Deal-36C33F (63739413805) Amount: missing Stage: missing Active Contact Count: 1 Active Personas: IT security Missing Personas: economic buyer, champion, HR admin, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-1DB73E - Chief People Officer (economic buyer) Deal-885F45 (60686135564) Amount: missing Stage: missing Active Contact Count: 2 Active Personas: economic buyer, champion Missing Personas: HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): IT security Unengaged Contact: CT-B3F25D - IT Security Lead (IT security) Deal-FCBE5B (62639586615) Amount: missing Stage: missing Active Contact Count: 1 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: none on file Deal-5408B0 (60182332309) Amount: missing Stage: missing Active Contact Count: 2 Active Personas: champion, HR admin Missing Personas: economic buyer, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-07FA76 - Chief People Officer (economic buyer) Deal-C6D97A (62121783047) Amount: missing Stage: missing Active Contact Count: 3 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: none on file Deal-F9A08A (49757401138) Amount: missing Stage: missing Active Contact Count: 1 Active Personas: champion Missing Personas: economic buyer, HR admin, IT security, finance Most Valuable Persona to Add (stage unknown): economic buyer Unengaged Contact: CT-697541 - Chief People Officer (economic buyer)
From this rep's last 10 calls: ### What they lead with in the first five minutes - "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." (Used in TT-001, TT-002, TT-003, TT-006, TT-007, TT-008, TT-010) - "I put together a short agenda — security review first, then pricing." (TT-004) - "You asked for straight pricing last time, so let's start there." (TT-009) ### How they handle the three most common objections **Budget/Committee (6 times):** - "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." (TT-001, TT-003, TT-006) **Timing/Next quarter (3 times):** - "Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?" (TT-002, TT-005, TT-008) **Current solution/Spreadsheet (3 times):** - "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." (TT-004, TT-007, TT-009) ### Next step agreement rate 7 out of 10 calls (70%) ended with a concrete next step agreed. Example agreement: - Alex: "Should we lock the next step — a working session with your team this week?" - Prospect: "Yes, Thursday at 2pm works — send the invite and I'll bring our HRIS manager." (TT-001, TT-002, TT-003, TT-005, TT-006, TT-008, TT-009) ### Every competitor a prospect raised - **Awardco** (TT-003): "We're also in late talks with Awardco — their rewards catalog looks bigger than yours." - **Kudos** (TT-007): "How are you different from Kudos? Our CEO used them at her last company." ### Two coaching notes 1. **Next-step consistency is the biggest lever.** The 70% agreement rate comes from a single, repeated formula: "Should we lock the next step — a working session with your team this week?" followed by scheduling a specific time. The three failures (TT-004, TT-007, TT-010) result from weak closes like "I'll leave it with you" or "Fair enough." Double down on the working-session ask in every call; never leave the door open-ended. 2. **Objection handling is strong on budget/timing/current-solution, weak on urgency/decision-maker.** The turnover-savings, 90-day pilot, and automation arguments are used repeatedly and yield agreement. But when faced with "no urgency" (TT-007) or "wait for committee" (TT-010), Alex defaults to acknowledgment without pushing to escalate or attach to a business event. Train: for urgency objections, link to a near-term milestone (open enrollment, all-hands); for committee delays, immediately ask "Who else on the committee needs to be in the room?"
I'll analyze the deals data to build the Q3 2026 forecast. ## Q3 2026 Forecast (2026-07-01 to 2026-09-30) First, filtering deals to Q3 close dates and applying the weighting rule: **Inside Quarter (Q3):** - COMMIT deals: 9 deals totaling $85,218 - $13,770 + $11,200 + $9,000 + $9,000 + $9,000 + $6,360 + $5,400 + $2,520 + $1,249 - BEST_CASE deals: 28 deals totaling $327,053 - Weighted at 35% = $114,468.35 **Weighted forecast calculation:** - COMMIT total: $85,218 × 100% = $85,218.00 - BEST_CASE weighted: $327,053 × 35% = $114,468.35 - **Total weighted forecast: $199,686.35** **Deal counts:** - COMMIT inside quarter: 9 deals - BEST_CASE inside quarter: 28 deals - PIPELINE inside quarter: 35 deals (weighted 0%) **Excluded deals (outside Q3):** - Count: 19 deals - Total amount: $214,333 - Close dates in October 2026 (2026-10-01 through 2026-10-15) **Top 5 BEST_CASE deals inside Q3 by amount:** 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 field is blank for 75% of deals (42 of 56), preventing accountability and Commission calculations. 2. The `why_buys_chars` field contains many zeroes but also unrelated numbers (e.g., 1378, 1207) with no definition, indicating possible ETL corruption or mis-mapped data. 3. Close dates outside Q3 are clustered on 2026-10-15 (6 deals), suggesting Quarter rollover may be mis-assigned in CRM or extraction filtered incorrectly for reporting boundaries. 4. 5 deals have stage DS1 or DS2 but forecast_category COMMIT/BEST_CASE, violating typical sales stage-to-forecast alignment rules. These issues would cause significant forecast drift if run unattended.
## Activation Hypothesis Test Results ### Full 2x2 Cohort Analysis (n=220 companies, 25+ months old) | Segment | Cohort Size | 24-Month Retention | Retained / Total | |---------|-------------|-------------------|------------------| | **Both signals** (m1_users≥5 AND m1_redemptions≥1) | 47 | 65.96% | 31 / 47 | | **Givers-only** (m1_users≥5 AND m1_redemptions=0) | 49 | 46.94% | 23 / 49 | | **Redemption-only** (m1_users<5 AND m1_redemptions≥1) | 29 | 31.03% | 9 / 29 | | **Neither** (m1_users<5 AND m1_redemptions=0) | 95 | 40.00% | 38 / 95 | **Exclusions from denominator:** None. All 220 companies are included in the segmentation. **Single signal with largest retention lift:** Givers-only (6.94 percentage points higher than neither baseline: 46.94% vs 40.00%). ### What this does prove: - Companies with 5+ unique givers in month 1 retain better than those with only redemption signals or neither signal. - Having both signals yields the highest retention (65.96%), suggesting additive effects. - Givers-only outperforms the baseline by 6.94pp; redemption-only underperforms the baseline by 8.97pp. ### What this does NOT prove: - Causation: This is observational correlation, not a randomized experiment. The giver signal may be correlated with other retention drivers (company size, engagement, product fit). - Long-term durability beyond 24 months. - Whether driving more redemptions would improve giver-only cohorts (could be selection bias). - Generalizability outside this 2023 signup cohort or to companies <25 months old.
Total Billing ARR (active subscriptions): $604,739.28 Total CRM ARR: $603,581.76 Variance (CRM - Billing): -$1,157.52 Decomposition: - Status mismatch: $13,158.48 - Missing records: -$11,952.00 - Rounding: $36.00 - Other: -$2,400.00 Sum: -$1,157.52 Mismatched Accounts: C-0C8323BF: diff +$4,905.24, status mismatch, owner: Customer Success, subscription SUB-000E C-0DC4FB8C: diff +$8,253.24, status mismatch, owner: Customer Success, subscription SUB-000F C-21629AA4: diff -$28,449.24, missing from CRM, owner: CRM Admin, subscription SUB-0004 C-0D5BBE3A: diff +$16,497.24, missing from billing, owner: Billing Ops, subscription N/A C-0D66DF9E: diff +$16.00, rounding, owner: Finance, subscription SUB-0005 C-14D70CE0: diff +$20.00, rounding, owner: Finance, subscription SUB-0008 C-0F7269D7: diff -$2,400.00, other, owner: Billing Ops, subscription SUB-0006 Business Rule Violations (term != 12 months without cf_agreement_end_date): SUB-0002 (C-1794A52C): term_months=24, cf_agreement_end_date= SUB-0019 (C-22170CA1): term_months=36, cf_agreement_end_date=
Based on kvm_monthly.csv, here are August 2026 vs July 2026 changes for the four core KVMs, averaged across the 30 companies (equal weight). Relative change = (Aug – Jul) / Jul. | KVM | July | August | Abs Δ | Rel Δ | Dir | |-------------------------|---------|---------|---------|----------|-----| | Giving Rate | 0.6023 | 0.6027 | +0.0004 | +0.07% | ↑ | | Redemptions per User | 1.7300 | 1.7302 | +0.0002 | +0.01% | ↑ | | 1:1 Meetings Engagement| 0.4469 | 0.4472 | +0.0003 | +0.06% | ↑ | | Pulse Engagement | 0.6006 | 0.5086 | -0.0920 | -15.31% | ↓ | Pulse Engagement has the largest relative move (-15.31%). The decline is driven by the enterprise size_band segment, which fell 50.1% (July mean 0.5500 → August 0.2743). All companies are tier_three, so plan_tier shows no variation.
Last completed month: 2026-08 Redemption count: 48 Spend: $3,536.00 Unique redeemers: 46 Redemptions per redeemer: 1.04 Provider mix (% of spend): - Tremendous: 32.4% - custom: 29.9% - Snappy: 23.6% - TangoCard: 14.1% Top 5 countries by redemptions: 1. US: 31 2. CA: 7 3. GB: 2 4. SG: 2 5. AU: 2
**ELIGIBLE ACCOUNTS (8)** 1. C-0F6C0F34 — $49,707.00 — Executive Touch — Signal: champion_active=false (no active champion) 2. C-0B827671 — $25,365.00 — Usage Revival — Signal: usage_trend_3m=declining 3. C-0B360C78 — $35,748.00 — Commercial Concession — Signal: champion_active=true with non-declining usage (growing) 4. C-0B0F1BAB — $5,494.00 — Executive Touch — Signal: champion_active=false with flat usage 5. C-0CA21961 — $16,829.00 — Commercial Concession — Signal: champion_active=true with flat usage 6. C-0E9C27D1 — $41,235.00 — Commercial Concession — Signal: champion_active=true with flat usage 7. C-0CEF69FD — $32,621.00 — Executive Touch — Signal: champion_active=false (no active champion) 8. C-0D3278C7 — $17,602.00 — Usage Revival — Signal: usage_trend_3m=declining **TOTAL AMOUNT AT STAKE: $224,601.00** **AT-RISK ACCOUNTS THAT DO NOT QUALIFY (7)** - C-0BC71BDD — churn_save_eligible_amount=0 (fails R2) - C-0BA71F12 — renewal_date beyond 120 days (2027-04-11 > 2027-01-03) (fails R3) - C-0F6694C3 — churn_save_eligible_amount=0 (fails R2) - C-0BE96399 — churn_save_eligible_amount=0 (fails R2) - C-0F876796 — renewal_date beyond 120 days (2027-02-06 > 2027-01-03) (fails R3) - C-0FCCD2DF — churn_save_eligible_amount=0 (fails R2) - C-10A56B0F — churn_save_eligible_amount=0 (fails R2)
**Expansion Kit** **Seat Coverage:** 150 licensed seats / 400 headcount = 37.5% coverage. Significant room to expand. **Usage Health (2 lines):** 1. Monthly active users grew from 88 (Mar) to 126 (Aug) — a 43% increase over 5 months. 2. Current seat utilization is 84% (126 active of 150 licensed), showing healthy engagement but also 24 unused licenses ($1,440 waste at $60/seat). **Headroom & ARR:** - Unlicensed employees: 250 seats possible at current $60/seat rate. - Additional ARR potential: 250 × $60 = $15,000. - Alternatively, reallocating the 24 unused seats could optimize current spend. **Who Replied & Buyer Ability:** Maria S. (People Operations Coordinator) replied; she cannot buy but is a champion offering introduction. **Right Buyer:** Dana R., VP People — controls budget, last engaged 2026-05-18, and has asked about usage numbers. **Reply Email (<150 words):** ``` Subject: Re: Growing your team's recognition program Hi Maria, Thanks for the quick reply and for your kind words about Bonusly — thrilled the team loves it and the recognition feed stays busy! That's great news about Dana asking about usage numbers. As you can see, monthly active users have grown steadily from 88 in March to 126 in August. That's strong adoption, and with 400 employees on the team, there's clear potential to expand coverage. I'd love to connect with Dana when she's ready to discuss seat expansion and how we can support your growing usage. Would you be comfortable making that introduction? Best, Cole Ingram ```
Based on the data provided: **Complete:** - integrations connected: slack (2026-08-12) ✓ - allowance set: 2026-08-13 ✓ - admins added: 2 ✓ - first recognition given: 2026-08-15 14:22 ✓ **Not Complete:** - integrations connected: hris (blank field) ✗ - first redemption: (blank field) ✗ **Early Engagement Signals:** - Active givers increased from 3 at signup (2026-08-11) to 15 by 2026-09-04 - 25-day period shows consistent daily activity with upward trend (15 current) - First recognition occurred 4 days post-signup (2026-08-15) **Three Things to Cover on the Call:** 1. HRIS integration status (not connected) — confirm timeline/blockers 2. Redemption activity (none recorded) — verify if credits are being used 3. Growth path — discuss driving next phase of engagement beyond 15 active givers
=== 90-DAY RENEWAL RISK BRIEF === Company CSM ARR Renewal Date Seat Util 3m Trend Risk Evidence ---------------------------------------------------------------------------------------------------------------------------------- C-0B7D2C30 Dana Mercer $65,901 2026-09-10 57.6% down MEDIUM 3-month usage declining C-0D2AB865 Elena Sinclair $38,022 2026-09-10 61.4% down MEDIUM 3-month usage declining C-0F5D2323 Cole Ingram $90,647 2026-09-10 28.5% down HIGH Very low seat utilization (28.5%); 3-month usage declining C-0BCDB8C2 Cole Ingram $54,427 2026-09-18 54.7% down MEDIUM 3-month usage declining C-0EC6999D Elena Sinclair $79,419 2026-10-03 27.7% down HIGH Very low seat utilization (27.7%); 3-month usage declining C-0B20DB64 Dana Mercer $21,770 2026-10-07 56.6% flat LOW No risk indicators C-0BBC4E7A Cole Ingram $56,374 2026-10-10 67.7% down MEDIUM 3-month usage declining C-0FD551AB Elena Sinclair $48,815 2026-10-14 55.9% up LOW No risk indicators C-0F9F8F13 Dana Mercer $46,230 2026-10-18 56.5% down MEDIUM 3-month usage declining C-0BC34584 Cole Ingram $16,740 2026-10-22 66.2% up LOW No risk indicators C-0B7A7546 Elena Sinclair $35,062 2026-10-25 88.8% down MEDIUM 3-month usage declining C-0B369871 Dana Mercer $85,128 2026-10-29 75.1% up LOW No risk indicators C-0B144C78 Cole Ingram $30,899 2026-11-02 75.4% up LOW No risk indicators C-0FC4DBB8 Elena Sinclair $94,732 2026-11-05 76.7% up LOW No risk indicators C-0D5BBE3A Dana Mercer $39,740 2026-11-09 83.3% up LOW No risk indicators C-0FB9D5AF Cole Ingram $63,158 2026-11-13 72.4% up LOW No risk indicators C-0B344485 Elena Sinclair $64,384 2026-11-16 78.0% up LOW No risk indicators C-0CB2C1B4 Dana Mercer $40,628 2026-11-20 81.6% up LOW No risk indicators C-22170CA1 Cole Ingram $45,646 2026-11-24 85.4% up LOW No risk indicators Total ARR renewing (through 2026-12-05): $1,017,722 ARR at risk: $466,082 === DISAGREEMENTS (date mismatches) === C-0B7D2C30: CZ=2026-09-10, CB=2026-09-15, multi_year=True → used 2026-09-15 C-0D2AB865: CZ=2026-09-10, CB=2026-09-22, multi_year=True → used 2026-09-22 C-0F5D2323: CZ=2026-09-10, CB=2026-09-29, multi_year=True → used 2026-09-29 C-0BBE3E60: CZ=2027-09-26, CB=2026-09-26, multi_year=True → used 2026-09-26 Total disagreements: 4
Based on the support ticket data, here are the 5 themes (excluding single-account noise), ranked by ARR exposure: **1. Billing & Invoicing** - Count: 15 tickets (20.5%) - Distinct accounts: 1 (C-0E9C27D1) - ARR affected: $780,000 - Earliest ticket IDs: IC-460071, IC-460069 - Recommendation: Fix seat-count calculation and tier billing logic; audit recurring invoices. **2. HRIS Provisioning** - Count: 10 tickets (13.7%) - Distinct accounts: 3 (C-0B2213A9, C-0DDFC9A7, C-0F6C0F34) - ARR affected: $384,000 - Earliest ticket IDs: IC-460059, IC-460055 - Recommendation: Stabilize HRIS sync; add retry/alerting for new hire provisioning failures. **3. Redemption Failures** - Count: 18 tickets (24.7%) - Distinct accounts: 7 - ARR affected: $177,300 - Earliest ticket IDs: IC-460025, IC-460030 - Recommendation: Repair checkout/gift card fulfillment pipeline; add idempotency. **4. Slack Integration** - Count: 14 tickets (19.2%) - Distinct accounts: 4 - ARR affected: $63,400 - Earliest ticket IDs: IC-460041, IC-460047 - Recommendation: Persist Slack auth and sync state; investigate toggle reset bug. **5. Points Delivery** - Count: 16 tickets (21.9%) - Distinct accounts: 8 - ARR affected: $56,100 - Earliest ticket IDs: IC-460004, IC-460016 - Recommendation: Identify bottlenecks in points posting; implement deduplication/replay. Note: 2 tickets were skipped due to malformed timestamps; analysis covered 77 of 79 total tickets. Tags were ignored; themes derived solely from body text.
**Prospect**: C-82AF3719 (Technology, Mid-Market, employee_recognition, NA-West) **Top 3 similar customers with case studies**: 1. C-64171065 Matches: industry (Technology), size_band (Mid-Market), use_case (employee_recognition) Mismatches: region (NA-East vs NA-West) Similarity: 3/4 exact; exact industry and use_case alignment, region difference is minor within NA. 2. C-A13C193D Matches: industry (Technology), size_band (Mid-Market), region (NA-West) Mismatches: use_case (retention vs employee_recognition) Similarity: 3/4 exact; retention is adjacent to employee_recognition, region exact. 3. C-11C31562 Matches: size_band (Mid-Market), use_case (employee_recognition), region (NA-West) Mismatches: industry (Manufacturing vs Technology) Similarity: 3/4 exact; exact use_case and region, but industry difference makes context less transferable.
Flagged Rows (SQO date precedes 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) Channel Performance (Trailing 6 months: Mar 2026 – Aug 2026) Paid Channels | Channel | Spend | SQMs | SQOs | Cost/SQM | Cost/SQO | SQM→SQO Rate | Pipeline | Pipeline/$ | |--------------|---------|------|------|----------|----------|--------------|------------|------------| | paid_search | $36,000 | 40 | 18 | $900 | $2,000 | 45% | $720,000 | $20.00 | | linkedin_ads | $24,000 | 25 | 8 | $960 | $3,000 | 32% | $96,000 | $4.00 | | webinars | $9,000 | 12 | 5 | $750 | $1,800 | 41.7% | $60,000 | $6.67 | | paid_social | $18,000 | 0 | 0 | undefined| undefined| undefined | $0 | undefined | • Paid_social has spend but zero SQMs; all ratio metrics are undefined by rule. Pipeline is $0. Organic Channels | Channel | Volume | SQOs | SQO Rate | Pipeline | |---------------|--------|------|----------|------------| | organic_search| 30 | 10 | 33.3% | $90,000 | | referral | 15 | 5 | 33.3% | $40,000 | Arithmetic Examples - paid_search Cost/SQM = $36,000 ÷ 40 = $900 - paid_search Cost/SQO = $36,000 ÷ 18 = $2,000 - paid_search SQM→SQO Rate = 18 ÷ 40 = 45% - paid_search Pipeline/$ = $720,000 ÷ $36,000 = $20.00 - linkedin_ads Cost/SQM = $24,000 ÷ 25 = $960 - webinars Cost/SQO = $9,000 ÷ 5 = $1,800 - organic_search SQO Rate = 10 ÷ 30 = 33.3% Reallocation Recommendation - Primary reallocation: shift budget from linkedin_ads (lowest pipeline per dollar, highest cost per SQO) to paid_search and webinars. Example: reduce linkedin_ads by $6,000 (25%) and increase paid_search by $4,000 and webinars by $2,000. - Pause paid_social until proper attribution yields SQMs; current spend generates no measurable pipeline. - Investigate data-quality issue in linkedin_ads (2 flagged rows where SQO date precedes SQM date) to ensure accurate reporting. Confidence Assessment (based on sample sizes) - paid_search: high confidence (40 SQMs, 18 SQOs) - webinars: moderate confidence (12 SQMs, 5 SQOs) – small but positive metrics - linkedin_ads: moderate confidence (25 SQMs, 8 SQOs) – underperformance likely real - paid_social: low confidence – no conversion data available - organic_search: moderate confidence (30 contacts) - referral: lower confidence (15 contacts)
Based on the provided data files, here is the updated Rivally battlecard: --- # Battlecard: Rivally **One-line positioning** Points-based recognition platform focused on mid-market customers (S02). **Pricing** - $7 per user/month for Recognition Starter tier, annual billing required (S17, 2026-08-12). - Previously $5 per user/month (S03, 2026-01-20; S08, 2026-04-01). - Quote seen: $7 list with 15% discount offered for 3-year term (S18, 2026-08-14). *Source conflict: pricing page (S17) vs deal quote (S18) — both show $7 as current list.* **Where Rivally wins** - EU data residency generally available + Dublin office presence (S15, 2026-07-01). - Multi-language support for distributed EU teams (S12, 2026-05-21). - Slack integration works out of the box (S04, 2026-02-02). - Fast mid-market setup (under a week) (S04, 2026-02-02). - Customer support response time praised (under 4 hours) (S22, 2026-08-30). - Recognition feed is engaging (S02, 2025-12-15; S16, 2026-07-19). - Microsoft Teams app v2 in public preview (S19, 2026-08-20). - Series C funding ($40M) indicates market traction (S01, 2025-11-04). **Where we win** - Analytics depth: Rivally’s reporting dashboards are basic (S07, 2026-03-22) and exports are CSV-only making migrations hard (S20, 2026-08-25). - Admin tooling: lacks bulk recognition editing (S24, 2026-09-02) and SCIM provisioning (S10, 2026-04-28). - Rewards catalog in EMEA is thinner than US catalog (S14, 2026-06-14). - Pulse engagement surveys sold as separate add-on, not bundled (S23, 2026-09-01). - Enterprise readiness: admin tooling lags peers (S16, 2026-07-19). - Recent deal: 800-seat prospect chose us over Rivally citing analytics depth (S25, 2026-09-03). **Objections and responses** - *“Rivally has EU data residency.”* True — but we also support EU customers with compliant deployments; our analytics and admin capabilities are superior for global scale. - *“Rivally setup is fast and Slack integrates easily.”* Valid for basic use cases; however, scaling requires robust admin tooling and analytics that we provide out of the box. - *“Rivally’s support is responsive.”* Support quality is important; we match or exceed response times while reducing your operational burden through automation and better tooling. - *“Rivally is cheaper.”* Current pricing is $7/user/mo; our value includes deeper analytics, SCIM, bulk operations, and richer rewards — total cost of ownership is lower when considering admin efficiency and employee engagement ROI. **Recent changes** - Price increased from $5 to $7/user/mo (S17, 2026-08-12). - Pulse engagement survey add-on exited beta and is priced separately (S23, 2026-09-01). - EU data residency generally available; Dublin office opened (S15, 2026-07-01). - Ex-Workday VP EMEA hired to lead European expansion (S11, 2026-05-09). - Microsoft Teams app v2 in public preview (S19, 2026-08-20). **Our 12-month win/loss record against Rivally** - From deals_with_competitor.csv: 20 deals total, 13 wins, 7 losses (65% win rate). - Monthly breakdown: strong wins in 2025-10 (2W), 2026-01 (2W), 2026-02 (2W); losses clustered in 2026-04/05 and 2026-03/04. - Most recent loss: 2025-09; most recent win: 2026-08. --- **Unverified claims from old battlecard (not re-sourced)** - “Rivally was acquired by WorkHuman in 2025.” — No evidence in provided snippets. - “Rivally lacks a Slack integration.” — False per S04; Slack integration exists. **Notes** - Rep opinions (S09, S21) are not treated as verifiable competitor facts; S09 contradicts S04, so Slack integration claim is resolved by S04 (objective review).
Tracking error: Expansion Nurture Step 2 shows opened (340) > sent (300). Attribution bug. Audience overlap: 1 duplicate contact across sequences (CT-000034 appears twice in New Logo Nurture). Negligible overlap. Weakest step per sequence (all Step 3): - New Logo Nurture: 4.21% reply - Expansion Nurture: 4.36% reply - Cold Outbound - HR Leaders: 0.17% reply - Cold Outbound - People Ops: 1.59% reply Failure modes (reply < 2%): - HR Leaders Step 3: 0.17% — virtually no engagement; last touch is clearly failing with this audience. Likely wrong CTA/content for HR leaders at this stage. - People Ops Step 3: 1.59% — severe attrition; third touch is ineffective for People Ops. One change per weak sequence: 1) HR Leaders Step 3: Replace current third message with a short, high-value social proof snippet (e.g., “Other HR leaders at [similar companies] saved 10 hours/week using our tool”) and a low-friction ask (e.g., reply “YES” for a case study). Consider dropping the third step entirely if no improvement. 2) People Ops Step 3: A/B test a personalized video thumbnail or a referral-focused ask (“Can you refer the right person?”) instead of the current reply-to-meeting CTA. Fix first: HR Leaders Step 3 — it has the worst reply rate (0.17%) and likely damages sender reputation with zero return.
SQMs: - QTD actual: 230 - Target: 300 - Delta: 230 - 300 = -70 - Pace: Ahead (expected = 300 * (66/92) ≈ 215.22; actual > expected) SQOs: - QTD actual: 84 - Target: 120 - Delta: 84 - 120 = -36 - Pace: Behind (expected = 120 * (66/92) ≈ 86.09; actual < expected) DS2s: - QTD actual: 40 - Target: 75 - Delta: 40 - 75 = -35 - Pace: Behind (expected = 75 * (66/92) ≈ 53.80; actual < expected) closed-lost MIA rate: - QTD actual: 5/25 = 0.2 (20%) - Target: 0.1 (10%) - Delta: 0.2 - 0.1 = +0.1 - Pace: Behind (actual > target; lower is better) same-quarter close count: - QTD actual: 10 - Target: 20 - Delta: 10 - 20 = -10 - Pace: Behind (expected = 20 * (66/92) ≈ 14.35; actual < expected) active pipeline coverage: - QTD actual: 3,000,000 - Target: 4,000,000 - Delta: 3,000,000 - 4,000,000 = -1,000,000 - Pace: Ahead (expected = 4,000,000 * (66/92) ≈ 2,869,565; actual > expected) This week, active pipeline coverage and SQMs are ahead of time-apportioned targets, indicating strong top-of-funnel activity and pipeline building. However, SQOs, DS2s, and same-quarter closes are behind pace, revealing conversion bottlenecks from qualified leads to opportunities and closed deals. The closed-lost MIA rate remains at 20%, double the 10% target, highlighting persistent qualification or forecasting accuracy issues that need urgent attention to improve deal quality.
Q3 forecast is $115,977 from 54 deals, but caveat: data quality poor (85/86 missing owners, 71/86 missing why-buys, many pushed close dates). 32 deals ($227,575) are excluded as post-quarter, including one commit pushed to Oct 15. Recommend requiring owner and why-buys completion to make forecast reliable.
Here is the follow-up email: Subject: Following up on Deal-0D2F7A Hi Alex, Following up on the July 28 demo where the People team had a strong reaction to automated milestone awards and the points catalog, and requested pricing. As a reminder, I sent the pricing recap on August 5. Given the November close date, I wanted to check on their timeline for a decision. What are the next steps from their side? Best, [Your Name]
Marketing delivered 46 SQMs this week, falling short of the 52-target goal. The webinar channel proved instrumental, generating 18 of those qualified leads. Meanwhile, paid search continued its efficiency run, holding cost per SQM steady at $150—keeping acquisition costs within optimal range. Sales converted 14 SQOs and booked 9 DS2 meetings while generating $310K in new pipeline. The team closed 3 same-quarter deals, maintaining consistent progress against revenue objectives. Customer Success improved NPS to 61 and saved 2 at-risk renewals this week. With 3 open red-flag accounts carrying into next week, retention focus remains sharp. PLG welcomed 412 new signups with a 31% activation rate. Notably, 38 companies have now hit the “aha moment” threshold of 10 recognition gives—a strong signal of product engagement and potential expansion.
Partner Digest: 2026-08-24 to 2026-09-04 Active Partners: - Apex Rewards Co: 2 sourced deals, $275,000. Co-webinar locked for 09-15; both deals in DS1. - HRCloud Partners: 1 sourced deal, $140,000. Integration referral closed security review; deal moved to DS2. - CultureBridge: 2 sourced deals, $135,000. Lunch-and-learn produced two early-stage opportunities. - WorkWell Group: 0 deals, $0. Joint playbook restart planned for Q4; planning call booked 09-09. Quiet Partners: - Recogniq: no activity. - KudosWave: no activity. - PeopleFirst Advisors: no activity. - TotalPerk: no activity. Pipeline Summary: - Total partner-sourced deals: 5 - Total partner-sourced pipeline: $550,000
1. Q1: Yes. Customer data is encrypted at rest using AES-256. [P1] 2. Q2: Yes. Data in transit is encrypted with TLS 1.2 or higher. [P1] 3. Q3: Yes. Bonusly maintains a SOC 2 Type II report, renewed annually. The report is available to prospects under NDA. [P2] 4. Q4: Customer data is retained for the duration of the contract plus 90 days, after which it is deleted from production systems. [P3] 5. Q5: The subprocessor list is published at trust.bonusly.com. Customers receive 30 days notice before a new subprocessor is added. [P4] 6. Q6: Yes. SAML 2.0 single sign-on is available on the Enterprise plan. [P5] 7. Q7: Production databases are backed up daily. Backups are encrypted and retained for 35 days. [P6] 8. Q8: Unanswerable from provided excerpts. Would require a security compliance document or certification list. 9. Q9: Unanswerable from provided excerpts. Would require the service level agreement (SLA) document. 10. Q10: Unanswerable from provided excerpts. Would require the legal agreements or BAA policy document.
**1. Trigger Overlaps** - [CRITICAL] comms-drafter ↔ email-drafter Both list identical email‑drafting triggers (“write me an email,” “draft a follow‑up,” “bump email,” “contract nudge”). Action: **UPDATE_BODY** on both to separate domains: email-drafter handles only pure email composition; comms-drafter handles non‑email external communications (Intercom, support tickets, partner outreach, etc.). Remove overlapping phrases from comms-drafter. - [CRITICAL] pipeline-intelligence-report ↔ weekly-pipeline-report Both respond to generic “pipeline report/update” queries. Action: **UPDATE_BODY** to restrict PIR to full scored‑pipeline analysis (trigger phrase “scored pipeline” or “pipeline intelligence”) and WPR to explicit “weekly pipeline update” or scheduled runs only. - [WARNING] deal-strategy-coach ↔ comms-drafter DSC includes “draft a manager email,” which also falls under comms‑drafter’s remit. Action: **UPDATE_BODY** on DSC to remove “draft a manager email” from its trigger examples and refer to comms‑drafter/email‑drafter for drafting. - [WARNING] sales-forecast ↔ pipeline-intelligence-report SF triggers “how are we tracking this quarter”; PIR also fires for “pipeline health or forecast context.” Action: **UPDATE_BODY** on PIR to exclude pure revenue‑forecast questions; focus on deal‑scoring and pipeline health. - [WARNING] next-to-close ↔ pipeline-intelligence-report NTC triggers “which deals are most likely to close”; PIR’s tiered view could match. Action: **UPDATE_BODY** on PIR to exclude immediate‑close candidate queries; leave to NTC. **2. Circular Delegation Chains** None detected. **3. Dangling Delegation Targets** - [CRITICAL] Missing skill *prospect‑research‑multithreading* referenced by comms‑drafter, email‑drafter, deal‑strategy‑coach. Action: **REVIEW** — must be added to the manifest and implemented; until then, dependent skills fail when invoking it. - [CRITICAL] Missing skill *bonusly‑brand* referenced by comms‑drafter, email‑drafter, pipeline‑intelligence‑report, weekly‑pipeline‑report. Action: **REVIEW** — add brand skill or inline brand guidelines. **4. Version Conflicts** None. **5. Manifest Descriptions > 1,024 Characters** None (maximum description length = 1006). **6. Hardcoded IDs, Dates, Person Names** Widespread; environment‑specific IDs are especially problematic. - **Confluence page/space/cloud IDs**: partner‑digest (Cloud/Space/Folder/Page IDs), pipeline‑intelligence‑report (Space/Parent IDs), signalforge‑feedback (page/space/cloud/Build Log IDs), deal‑strategy‑coach (AE Playbook URL). Severity: **CRITICAL** for IDs. - **Slack channel ID**: stale‑pipeline‑report (`C0561C1JCPJ`). Severity: **CRITICAL**. - **Google Spreadsheet IDs**: sales‑forecast & weekly‑pipeline‑report (two hard‑coded IDs). Severity: **CRITICAL**. - **Person names**: analysis‑validator (Alaina Loori, Shealagh Coughlin, Ben Castelli, Amani Phipps), closed‑lost‑analysis (Manish, Amani), partner‑digest (Amani Phipps), pipeline‑intelligence‑report (Alaina), sales‑forecast & weekly‑pipeline‑report (Ben Lavin). Severity: **WARNING**. - **Dates**: analysis‑validator (“May 9, 2026”), model‑selection (“last_checked: 2026‑05‑19”). Severity: **WARNING**. - **HubSpot org/owner numeric IDs**: analysis‑validator (owner IDs), closed‑lost‑analysis (org ID 1973303). These are data; if static they are brittle. Severity: **WARNING**. Action: **UPDATE_BODY** for each affected skill to replace hard‑coded values with dynamic resolution (e.g., search Confluence by title/path, use HubSpot connector for owner/org IDs, store external IDs in configuration, compute current date via tooling). **7. Manifest Drift** None; all 14 skill files listed in the manifest exist, and no extra files are present in the provided set.
# Incident Runbook: #incident-2026-08-29-reward-queue ## Step 1: Acknowledge alert and take Incident Commander - **Action**: Acknowledge PagerDuty alert for reward-worker queue depth > 10k; assume IC role - **Run by**: Bryce Harmon - **Message reference**: M01 - **Success verification**: Alert acknowledged; IC assumed - **Rollback**: None (triage step) ## Step 2: Check Sidekiq queue depth - **Action**: Run `bundle exec rake sidekiq:queue_depth` - **Run by**: Farid Osman - **Message reference**: M02 - **Success verification**: Output shows reward queue at 48,213 pending jobs (normal < 500) - **Rollback**: None (diagnostic only) ## Step 3: Inspect dead set for failed jobs - **Action**: Check dead set for failures; identified Redis::TimeoutError from ~13:58 - **Run by**: Farid Osman - **Message reference**: M03 - **Success verification**: Found 112 dead jobs, all Redis::TimeoutError - **Rollback**: None (diagnostic only) - **Needs confirmation**: Exact command not specified in thread ## Step 4: Pause enqueue to stop new jobs - **Action**: Disable feature flag `auto_recognition_enqueue` - **Command**: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` - **Run by**: Farid Osman - **Message reference**: M04 - **Success verification**: Enqueue stopped (implied by subsequent stabilization) - **Rollback**: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` ## Step 5: Clear dead set - **Action**: Remove all jobs from dead set via console - **Run by**: Elena Sinclair - **Message reference**: M05 - **Success verification**: Not explicitly stated; assumed cleared - **Rollback**: Not specified in thread - **Needs confirmation**: Exact command not provided ## Step 6: Scale up workers - **Action**: Increase reward-worker replicas from 3 to 6 - **Command**: `kubectl scale deployment/reward-worker --replicas=6` - **Run by**: Bryce Harmon - **Message reference**: M06 - **Success verification**: Scaling applied (implied) - **Rollback**: `kubectl scale deployment/reward-worker --replicas=3` ## Step 7: Monitor queue depth reduction - **Action**: Re-run queue depth command - **Run by**: Farid Osman - **Message reference**: M07 - **Success verification**: Queue at 9,400 and falling ~1,200/min - **Rollback**: None (monitoring only) ## Step 8: Verify queue drained to zero - **Action**: Run `bundle exec rake sidekiq:queue_depth` - **Run by**: Cole Ingram - **Message reference**: M08 - **Success verification**: Queue depth returns 0; Datadog error rate back to baseline - **Rollback**: None (verification only) ## Step 9: Re-enable enqueue - **Action**: Enable feature flag `auto_recognition_enqueue` - **Command**: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` - **Run by**: Bryce Harmon - **Message reference**: M09 - **Success verification**: 40 new jobs processed cleanly within 3 minutes - **Rollback**: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` ## Step 10: Scale workers back to normal - **Action**: Reduce reward-worker replicas from 6 to 3 - **Command**: `kubectl scale deployment/reward-worker --replicas=3` - **Run by**: Bryce Harmon - **Message reference**: M10 - **Success verification**: Queue stable at 0; incident resolved - **Rollback**: `kubectl scale deployment/reward-worker --replicas=6`
Based on the provided log data, here is the sequenced failure analysis: ## First Error - **Timestamp**: 2026-09-03T14:01:12Z - **Service**: reward-service - **Error**: Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s ## Failure Cascade (in chronological order) 1. **2026-09-03T14:01:12Z** - `reward-service`: Initial Redis connection timeout 2. **2026-09-03T14:01:20Z** - `reward-service`: Redis::TimeoutError: retry exhausted for RewardGiveJob 3. **2026-09-03T14:01:30Z** - `reward-service`: Redis::TimeoutError: retry exhausted for RewardGiveJob 4. **2026-09-03T14:01:40Z** - `reward-service`: Redis::TimeoutError: retry exhausted for RewardGiveJob 5. **2026-09-03T14:01:40Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying in 60s 6. **2026-09-03T14:02:28Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying 7. **2026-09-03T14:02:30Z** - `sidekiq`: WARN - Queue reward depth above 10,000 8. **2026-09-03T14:03:05Z** - `api-gateway`: ERROR - 502 upstream timeout calling reward-service /gives 9. **2026-09-03T14:03:30Z** - `web-app`: ERROR - Give form submission failed: upstream 502 from api-gateway 10. **2026-09-03T14:03:31Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying 11. **2026-09-03T14:03:48Z** - `api-gateway`: ERROR - 502 upstream timeout calling reward-service 12. **2026-09-03T14:04:13Z** - `api-gateway`: ERROR - 502 upstream timeout calling reward-service 13. **2026-09-03T14:04:22Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying 14. **2026-09-03T14:04:45Z** - `web-app`: ERROR - Give form submission failed: upstream 502 15. **2026-09-03T14:05:16Z** - `api-gateway`: ERROR - 502 upstream timeout calling reward-service 16. **2026-09-03T14:05:26Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying 17. **2026-09-03T14:05:42Z** - `web-app`: ERROR - Give form submission failed: upstream 502 18. **2026-09-03T14:06:47Z** - `sidekiq`: RewardGiveJob failed: Redis::TimeoutError; retrying 19. **2026-09-03T14:06:49Z** - `web-app`: ERROR - Give form submission failed: upstream 502 20. **2026-09-03T14:06:52Z** - `api-gateway`: ERROR - 502 upstream timeout calling reward-service 21. **2026-09-03T14:22:10Z** - `reward-service`: INFO - Redis connection restored; resuming job processing ## Services and Jobs Involved - **Services**: reward-service, api-gateway, web-app, sidekiq, postgres (checkpoint logs, unrelated) - **Jobs**: RewardGiveJob, RecognitionDigestJob (from sidekiq_jobs.csv) ## Datadog Query to Confirm First Error `service:reward-service @error:Redis::TimeoutError` or more specifically: `@timestamp:2026-09-03T14:01:12Z service:reward-service "Redis::TimeoutError"` ## What the Logs Do Not Show - Root cause of the Redis connection timeout (network issue, Redis server overload, firewall, etc.) - Whether redis-primary was down, slow, or experiencing network latency - Resource metrics (CPU, memory, network I/O) on reward-service or Redis during the incident - Whether the `web-app` and `api-gateway` errors directly correlate with the reward-service outage or have other contributing factors - Any circuit breaker or timeout configuration details - The actual health check results from reward-service during the outage (health checks logged as INFO were before and after, but none during the critical window) - The complete timeline of when Redis connectivity was fully restored vs when logs resumed - Whether any other dependent services beyond those shown were affected
Based strictly on the provided CSV export and code excerpt: **recognition_streaks_v2** (on) - Controls: StreakTracker.record(give) when enabled - Targeting: segment:beta_companies (42 companies) **points_budget_guardrails** (on) - Controls: BudgetService.new(company).enforce!(giver, points) when enabled - Targeting: all_companies (220 companies) **slack_dm_nudges** (on) - Controls: SlackDm.send_nudge(user) when enabled (early return if disabled) - Targeting: segment:region_na (87 companies) **redeem_flow_redesign** (off) - Controls: RedeemV2Component vs RedeemV1Component rendering - Targeting: targeted_list (12 companies) **analytics_dashboard_v3** (on) - Controls: @dashboard = AnalyticsV3.new(company) when enabled - Targeting: segment:tier_three (65 companies) **ms_teams_app_v2** (off) - Controls: TeamsAppV2.install(company) when enabled - Targeting: targeted_list (9 companies) **legacy_give_modal** (off) - No code reference in provided excerpt - Targeting: segment:legacy_plan (14 companies) **survey_boosters_q3** (on) - No code reference in provided excerpt - Targeting: segment:legacy_plan (7 companies) **paused_offboard_cleanup** (off) - No code reference in provided excerpt - No targeting rules specified (0 companies) All company counts match the export exactly.
## NDA Classification **NDA-1 — GREEN** Standard mutual NDA with comprehensive carve-outs, reasonable term (2 years), and Delaware governing law. No restrictive covenants. **NDA-2 — YELLOW** Standard terms but contains a non-solicitation 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."* Requires counsel review for enforceability and scope. **NDA-3 — RED** Critical issues: (1) Non-compete clause — *"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."* (unprecedented in NDA, overly broad); (2) Missing all standard confidentiality carve-outs; (3) Foreign governing law (Ireland) adds complexity. Full legal review required.