Mean 0.957 · 32/40 perfect tests · $9.83 total · each card: the question → the correct answer (gold) → this model's actual answer
## Stage Hygiene Audit **Definitions** - **Non-compliant why_buys (DS2+)**: why_buys is empty, a placeholder (tbd/n/a/see notes), or <15 chars. LONG(n) = substantive, treated as compliant. - **Missing DS1 timestamp**: t_ds1 field is empty. - **Regressed**: t_ds(n) > t_ds(n+1) for any consecutive stage pair. --- **Why_Buys Non-Compliance (DS2+ Deals)** | Metric | Value | |--------|-------| | Total DS2+ deals | 124 | | Non-compliant | 101 | | **Overall rate** | **81.5%** (101/124) | **By Owner:** | Owner | Non-compliant | Total DS2+ | Rate | |-------|---------------|------------|------| | Cole Ingram | 19 | 22 | 86.4% | | Bryce Harmon | 15 | 18 | 83.3% | | Dana Mercer | 18 | 22 | 81.8% | | Alex Franklin | 48 | 61 | 78.7% | | Farid Osman | 1 | 1 | 100% | --- **Other Hygiene Issues** - Deals with no DS1 timestamp: **0** - Deals that regressed (timestamp inversion): **0** --- **Three Process Fixes** 1. **CRM validation gate**: Block stage advancement to DS2+ unless why_buys ≥ 15 characters (enforce in HubSpot workflow). 2. **Weekly hygiene digest**: Automated email to each owner listing their DS2+ deals with missing/placeholder why_buys — include deal link and days-in-stage. 3. **Manager visibility**: Add why_buys completion rate as a column in pipeline review dashboards and track in 1:1 scorecards; tie to forecast credibility.
## Owner Resolution Report **Deals Resolved:** 156 of 156 (100%) Every owner_id in the deals extract matches an owner_id in the owners table. --- **Deals with Unmatched owner_id:** 0 No deals reference an owner_id absent from the owners table. --- **Deals Mapped to Archived/Deactivated Owners:** 0 The owners table lists two archived owners: - Gavin Porter (owner_id 1520255671, archived=true) - Hugo Lindqvist (owner_id 77260721, archived=true) Neither owner_id appears in the deals extract, so no open pipeline is assigned to a deactivated owner. --- **Total Pipeline by Resolved Owner:** | Owner Name | Owner ID | Deals | Pipeline Amount | |------------|----------|-------|-----------------| | Bryce Harmon | 119337721 | 35 | $1,054,144.00 | | Alex Franklin | 84342457 | 67 | $624,310.00 | | Dana Mercer | 83155923 | 24 | $341,195.00 | | Cole Ingram | 83155924 | 22 | $288,161.43 | | Farid Osman | 716654662 | 7 | $4,134.00 | | Elena Sinclair | 701163055 | 1 | $2,100.00 | | **TOTAL** | | **156** | **$2,314,044.43** | --- **Arithmetic (spot-checks):** Bryce Harmon (35 deals): 24000 + 19656 + 13500 + 7000 + 2520 + 240000 + 99000 + 72000 + 70000 + 63600 + 45000 + 1 + 21000 + 23400 + 13680 + 5502 + 8160 + 1 + 11400 + 1 + 36000 + 31500 + 6000 + 10800 + 30275 + 17400 + 12600 + 18000 + 37440 + 18828 + 2880 + 36000 + 20880 + 10920 + 25200 = $1,054,144 Cole Ingram (22 deals, includes decimals): 2760 + 1330 + 7225.40 + 3360 + 5616 + 2700 + 7781.20 + 6947.50 + 40000 + 12168 + 2480.40 + 11116 + 11193 + 1875 + 31750 + 32175 + 4779.88 + 3334.80 + 58529.25 + 4140 + 18000 + 18900 = $288,161.43
## Call-to-Deal Mapping Integrity Report ### (a) Orphan Gong Rows (deal_id not in deals_open) **Count: 30 orphan rows** out of 67 total gong rows Sample aliases from orphans: - Deal-8FA85D (46 calls, last_call 2026-11-05) - Deal-8FC3F9 (24 calls) - Deal-3B7945 (21 calls) - Deal-42B265 (21 calls) - Deal-9CCC42 (17 calls) - Deal-3F86A0 (6 calls) - Deal-B038F0 (5 calls) These are likely closed/won/lost deals or deals in a different pipeline. --- ### (b) Duplicate Conversation Keys **Count: 0 rows** Every gong row has `calls_90d == distinct_conversation_keys`. No duplicates detected. --- ### (c) DS3+ Deals with Logged Calls Total open deals at DS3 or later: - DS3: 61 deals - DS4: 13 deals - DS5: 10 deals - **Total: 84 deals** DS3+ deals with at least one call in gong: **25 deals** **Share: 25 / 84 = 29.8%** Notable DS3+ deals WITH calls: Deal-C6FE92 (11 calls), Deal-F9A3C1 (9 calls), Deal-5408B0 (8 calls), Deal-D348E1 (8 calls), Deal-B7EBD1 (8 calls) Notable DS3+ deals WITHOUT calls: Deal-9AAE5F (DS4, $11,250), Deal-6787C2 (DS4, $7,000), Deal-62D607 (DS4, $4,800), Deal-7BBDFA (DS3, $37,440), Deal-FC22A3 (DS3, $10,800) --- **Summary** | Check | Result | |-------|--------| | Orphan rows | 30 / 67 (45%) | | Duplicate conv keys | 0 | | DS3+ with calls | 25 / 84 (30%) |
```sql
SELECT
company_id,
M1_USERS AS unique_givers,
M1_GIVES AS recognition_count,
M1_REDEMPTIONS AS successful_redemption_count
-- PRODUCTION.PLG.COMPANY_COHORT_SUMMARY: Canonical pre-aggregated cohort table.
-- One row per self-serve company; M1_* columns = first calendar month metrics.
-- Historical giving counts preserve deleted givers (not excluded per business rule).
-- M1_REDEMPTIONS reflects STATE='succeeded' redemptions per business rule.
-- Avoided: PRODUCTION.HUBSPOT.DEALS (stale since 2023-03), V2_LIVE (unpopulated).
FROM PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
```
## CRM Completeness Audit ### Field Completeness by Object **COMPANIES (34 rows)** | Field | Populated | Total | Completeness | |-------|-----------|-------|--------------| | company_alias | 34 | 34 | 100.0% | | domain | 34 | 34 | 100.0% | | industry | 34 | 34 | 100.0% | | employee_count | 26 | 34 | 76.5% | | hq_country | 29 | 34 | 85.3% | Missing employee_count (8): C-EC3025, C-96039F, C-44EA29, C-D04904, C-7BBDFA, C-50D386, C-93C8BF, C-EE9FFB Missing hq_country (5): C-2D1F1B, C-D73B89, C-44EA29, C-2C60E5, C-EE9FFB **CONTACTS (52 rows)** | Field | Populated | Total | Completeness | |-------|-----------|-------|--------------| | contact_key | 52 | 52 | 100.0% | | company_alias | 52 | 52 | 100.0% | | email (valid) | 47 | 52 | 90.4% | | title | 42 | 52 | 80.8% | | persona | 37 | 52 | 71.2% | **DEALS: Not provided.** Cannot assess owner, stage, amount, close_date, why_buys fields. --- ### Duplicate Company Clusters (shared domain) | Cluster | Domain | Members | Employee Discrepancy | Survivor | Rationale | |---------|--------|---------|---------------------|----------|-----------| | 1 | acme-corp.com | C-0A092931 (500), C-0A092932 (510) | 10 | **C-0A092931** | Cleaner industry="Technology", round headcount | | 2 | globex.io | C-0A092933, C-0A092934 | 0 | **C-0A092934** | Industry="Technology" aligns to standard taxonomy; C-0A092933 uses non-standard "SaaS" | Action: Merge contacts/deals from duplicates into survivor, then archive duplicates. --- ### Invalid Emails (4) | Contact | Raw Email | Issue | |---------|-----------|-------| | CT-0010 | user0@ | Missing domain portion | | CT-0080 | user0@ | Missing domain portion | | CT-0081 | user1@ | Missing domain portion | | CT-0192 | user2@ | Missing domain portion | --- ### Domain Mismatches (1) | Contact | Email | Company Domain | Issue | |---------|-------|----------------|-------| | CT-0011 | user1@other-domain.com | 66d1fc.com | Email domain ≠ company domain | Could be personal email, consultant, or data-entry error. Flag for sales rep review. --- ### Enrichment Fills (ZI has data where CRM is blank) | Company | Field | CRM Value | ZI Value | Action | |---------|-------|-----------|----------|--------| | C-EC3025 | employee_count | (blank) | 400 | Fill 400 | | C-96039F | employee_count | (blank) | 400 | Fill 400 | | C-44EA29 | employee_count | (blank) | 400 | Fill 400 | | C-D04904 | employee_count | (blank) | 400 | Fill 400 | | C-7BBDFA | employee_count | (blank) | 400 | Fill 400 | | C-50D386 | employee_count | (blank) | 400 | Fill 400 | | C-B23205 | employee_count | (blank) | 400 | Fill 400 | **Cannot fill (no ZI match):** - C-93C8BF (93c8bf.com) — employee_count blank, no ZI row - C-EE9FFB (ee9ffb.com) — employee_count + hq_country blank, no ZI row - C-332637, C-C9BB20, C-BA969B — no ZI rows exist **Cannot fill (ZI also blank):** - C-2D1F1B: hq_country blank in both - C-D73B89: hq_country blank in both - C-44EA29: hq_country blank in both - C-2C60E5: hq_country blank in both --- ### CRM vs ZI Disagreements **Industry terminology (semantic match, format differs):** | Company | CRM | ZI | Recommendation | |---------|-----|-----|----------------| | C-66D1FC | tech | Computer Software | Use ZI (standard taxonomy) | | C-44EA29 | tech | Computer Software | Use ZI | | C-60C75F | tech | Computer Software | Use ZI | | C-425E2A | Tech (trailing space) | Computer Software | Use ZI | | C-BA969B | Tech (trailing space) | (no ZI row) | Normalize to "Technology" | | C-93C8BF | Tech (trailing space) | (no ZI row) | Normalize to "Technology" | | C-C9BB20 | Tech (trailing space) | (no ZI row) | Normalize to "Technology" | All "Technology" vs "Computer Software" differences are terminology, not factual disagreements. Recommend adopting ZI's "Computer Software" or standardizing CRM to "Technology" (pick one). **Country format (semantic match):** US / USA / United States all appear. Recommend standardizing to "United States" per ZI convention. **No factual disagreements** on employee_count or hq_country where both sources have values. --- ### Top 10 Fixes by Pipeline Amount at Stake **CANNOT RANK — deals.csv not provided.** Without deal records (amount field), I cannot calculate pipeline at risk per company. To complete this section, provide deals.csv with columns: deal_id, company_alias, owner, stage, amount, close_date, why_buys. --- ### Summary Fix Counts | Category | Count | |----------|-------| | Duplicate company clusters to merge | 2 (4 records → 2) | | Invalid emails to repair | 4 | | Domain-mismatch contacts to review | 1 | | Company employee_count fillable from ZI | 7 | | Company fields unfillable (no ZI data) | 5 records across 2 fields | | Industry values to standardize | 7 | | Country formats to standardize | ~12 |
## Classification of 90 Closed-Lost Deals (Last 6 Months)
### Deal-by-Deal Classification
| Deal | Category | Side | Notes |
|------|----------|------|-------|
| Deal-DB0AAC | timing | buyer | "putting this on pause" |
| Deal-F7F635 | competitor | buyer | "go in another direction" |
| Deal-AC944F | no decision | buyer | MIA |
| Deal-214060 | no decision | buyer | MIA |
| Deal-91A056 | timing | buyer | "reconnect early in 2027" |
| Deal-29326C | timing | buyer | |
| Deal-5DB9B0 | other | unknown | Spam/not ICP |
| Deal-831B7B | timing | buyer | "new year" |
| Deal-F97C37 | competitor | Bonusly | "more diversified offerings" |
| Deal-13E9CF | no decision | buyer | **TAG DISAGREES** - tag=Cost, text="Not a budget issue" |
| Deal-39E25C | timing | buyer | |
| Deal-7ED004 | pricing | buyer | "Did not get budget approval" |
| Deal-21B045 | no decision | buyer | MIA |
| Deal-B3ABED | timing | buyer | "Q2 next year" |
| Deal-422BA6 | competitor | buyer | ADP partnership preference |
| Deal-ED9AE7 | timing | buyer | text lists timing/budget/authority |
| Deal-988493 | no decision | buyer | MIA |
| Deal-381C8C | competitor | unknown | no detail |
| Deal-F308CA | no decision | buyer | MIA since April |
| Deal-F1E8A6 | competitor | unknown | no detail |
| Deal-B6AC09 | timing | buyer | "revisiting in 2027" |
| Deal-70F704 | no decision | buyer | MIA, narrow scope |
| Deal-E6E80A | timing | buyer | "pushed into early 2027" |
| Deal-B038F0 | timing | buyer | "pushed back into early 2027" |
| Deal-4664E1 | no decision | buyer | MIA |
| Deal-175756 | timing | buyer | "other priorities" → 2027 |
| Deal-E74A73 | no decision | buyer | testing manually first |
| Deal-DDAB52 | competitor | Bonusly | Rippl "offers a lot more" |
| Deal-ACE061 | competitor | buyer | likely HeyTaco |
| Deal-BB78F3 | timing | buyer | other action items first |
| Deal-D48E0B | no decision | buyer | MIA |
| Deal-15DA99 | timing | buyer | "early 2027" |
| Deal-F4AF5D | timing | buyer | "early next year" |
| Deal-79B7A1 | timing | buyer | |
| Deal-583ADB | no decision | buyer | MIA |
| Deal-8E27DA | product gap | buyer | wanted swag only, not R&R |
| Deal-2D2F8D | competitor | unknown | no detail |
| Deal-E0441F | no decision | unknown | inherited stale deal |
| Deal-7CB44D | no decision | buyer | MIA since demo |
| Deal-0F96AA | competitor | buyer | RFP loss |
| Deal-1BCA50 | competitor | buyer | stakeholder down path w/ another vendor |
| Deal-7CC678 | competitor | unknown | "Nothing specific provided" |
| Deal-FAC17C | other | buyer | IT Director approval block |
| Deal-242273 | competitor | Bonusly | needed on-site point redemption feature |
| Deal-50E5D8 | no decision | buyer | deprioritized |
| Deal-A2C349 | competitor | buyer | Awardco + surveys |
| Deal-9F176A | timing | buyer | "end of the year" |
| Deal-7B2236 | pricing | buyer | "budget" + "cheaper" |
| Deal-AFA56C | no decision | buyer | MIA |
| Deal-C7156E | competitor | buyer | |
| Deal-C33D91 | pricing | buyer | budget cuts |
| Deal-9048EB | product gap | Bonusly | **TAG DISAGREES** - tag=MIA, text="multiple feature gaps" |
| Deal-5E64CE | timing | buyer | **TAG DISAGREES** - tag=Cost, text=Nectar contract lock-in to Oct 2027 |
| Deal-8A0992 | competitor | buyer | Canadian provider preference |
| Deal-D0C698 | competitor | buyer | past Kudos user returning |
| Deal-69CF3D | timing | buyer | on hold |
| Deal-ECBF89 | timing | buyer | on hold |
| Deal-3618CC | product gap | Bonusly | **TAG DISAGREES** - tag="Lost DM", text="Wanted Surveys" |
| Deal-EECC02 | competitor | unknown | no detail |
| Deal-5AD03E | competitor | unknown | vague "budget access" |
| Deal-D1A623 | timing | buyer | |
| Deal-413C56 | no decision | buyer | CEO not ready |
| Deal-47F1A1 | competitor | buyer | staying with WorkTango |
| Deal-BF2A98 | competitor | buyer | deployed HiThrive |
| Deal-2A292B | no decision | buyer | building internally |
| Deal-D1AABF | no decision | buyer | MIA |
| Deal-FEDBCB | no decision | buyer | not engaged |
| Deal-1E7DA9 | competitor | buyer | |
| Deal-2BBA21 | no decision | buyer | MIA |
| Deal-286F9C | competitor | buyer | "not a good fit" |
| Deal-7FBAC6 | no decision | buyer | leadership paused |
| Deal-369281 | competitor | buyer | Paylocity incumbent |
| Deal-386F6E | no decision | buyer | MIA |
| Deal-9FCD0D | competitor | buyer | Canadian company preference |
| Deal-55867E | timing | buyer | |
| Deal-DAFB82 | pricing | buyer | budget needed elsewhere until 2028 |
| Deal-2FEDDB | no decision | buyer | unsure on timing |
| Deal-64B19A | competitor | buyer | Motivosity |
| Deal-3F86A0 | no decision | buyer | MIA |
| Deal-096750 | no decision | buyer | MIA |
| Deal-F325A5 | champion left | buyer | "Layoffs and Change in Leadership" |
| Deal-ABD14C | no decision | buyer | not interested |
| Deal-79E61A | no decision | buyer | MIA |
| Deal-8A119B | pricing | buyer | no approval |
| Deal-AE7C4E | no decision | buyer | MIA |
| Deal-DAB4F1 | no decision | buyer | MIA |
| Deal-B4B50F | no decision | buyer | MIA |
| Deal-981AD4 | product gap | Bonusly | "not UK focused" |
| Deal-DC77FE | competitor | Bonusly | wanted point-labeling customization |
| Deal-5885B9 | no decision | buyer | MIA |
---
## Summary
### Category Counts (90 deals)
```
no decision 31 (34%)
competitor 26 (29%)
timing 21 (23%)
pricing 5 (6%)
product gap 4 (4%)
other 2 (2%)
champion left 1 (1%)
```
### Side Split
```
buyer 75 (83%)
unknown 8 (9%)
Bonusly 7 (8%)
```
### Tag/Text Disagreements: 4 deals
| Deal | Tag | Text Contradiction |
|------|-----|-------------------|
| Deal-13E9CF | "Doing nothing/Not a priority/Cost" | Text says "Not a budget issue" |
| Deal-9048EB | "MIA" | Text says "multiple feature gaps" |
| Deal-3618CC | "Lost DM" | Text says "Wanted Surveys" |
| Deal-5E64CE | "Doing nothing/Not a priority/Cost" | Text describes Nectar contract lock-in (timing) |
---
## Two Patterns Most Worth Acting On
**1. MIA/No Decision Epidemic (31 deals, 34%, $217K ARR)**
The single largest loss category. Deals going silent mid-funnel signals either weak qualification or engagement gaps. Many of these (Deal-F308CA, Deal-4664E1, Deal-7CB44D, Deal-2BBA21) explicitly note "ignored multiple pieces of outreach" — buyers are disengaging after intro/demo with no objection surfaced.
Action: Tighten qualification criteria, implement structured re-engagement sequences, and require reps to surface a clear blocker or "no" before closing as MIA.
**2. Product Gaps Hiding Under Wrong Tags (4+ deals, underreported)**
Deal-9048EB (MIA), Deal-3618CC (Lost DM), and Deal-5E64CE (Cost) all describe product shortcomings in the free-text but are tagged incorrectly. The actual product gaps identified:
- Surveys (Deal-3618CC)
- UK/international focus (Deal-981AD4)
- On-site point redemption (Deal-242273)
- Point-labeling customization (Deal-DC77FE)
This intelligence is being lost in the data. When competitors win on features ("more diversified offerings," "offers a lot more"), it's logged as Competitor, not captured as product feedback.
Action: Add a required "competitor feature cited" field when Competitor is selected; audit MIA/Lost DM tags to recover buried product feedback.
```json
{
"tier_counts": {
"LOCK": 6,
"ACTION": 20,
"BUILD": 40,
"REVIVE": 15,
"WATCH": 50,
"RISKY": 10
},
"tier_examples": {
"LOCK": ["Deal-C26D20", "Deal-D348E1", "Deal-403845"],
"ACTION": ["Deal-C6FE92", "Deal-D73B89", "Deal-93C8BF"],
"BUILD": ["Deal-66D1FC", "Deal-036E80", "Deal-CC08D1"],
"REVIVE": ["Deal-2D1F1B", "Deal-7BBDFA", "Deal-950043"],
"WATCH": ["Deal-332637", "Deal-3795AD", "Deal-E25A09"],
"RISKY": ["Deal-547B2B", "Deal-B7EBD1", "Deal-9AAE5F"]
},
"risky_deals": [
"Deal-547B2B",
"Deal-B7EBD1",
"Deal-A2B47C",
"Deal-2465CE",
"Deal-584EE5",
"Deal-FD9F4E",
"Deal-A5E80A",
"Deal-E53952",
"Deal-9AAE5F",
"Deal-C61CF7"
],
"lock_violations": 0,
"pipeline_shape": "Top-heavy funnel: 141 deals concentrated in DS1-DS3 (mostly PIPELINE forecast) with only 6 LOCKs (~$91K combined) at DS4/DS5 showing genuine meeting velocity. Ten RISKY deals flag forecast inflation—six COMMIT deals at DS5 have zero meetings_30d, one DS1+COMMIT jumps the gun, and three BEST_CASE deals (Deal-E53952, Deal-9AAE5F, Deal-C61CF7) have meetings stale >60 days. Fifteen deals dormant >21 days need REVIVE outreach before they slip. The shape suggests strong inbound generation but weak conversion mechanics: deals accumulate at early stages rather than advancing, and reps are over-forecasting without recent buyer engagement to support it."
}
```
## CRM Write-Back Extractions
### TX-001 / Deal-CFE7F4
```json
{
"deal_alias": "Deal-CFE7F4",
"why_buys": [
"The big win for us would be automating anniversary and birthday awards — our HR team of three cannot keep up with it manually."
],
"pain_points": [
"HR team of 3 cannot keep up with manual anniversary/birthday awards",
"Track everything in spreadsheet, people slip through the cracks",
"Need SSO and audit logs for IT sign-off"
],
"stakeholders": ["Prospect (VP People)", "Prospect (HR Admin)"],
"budget_signal": "$40k earmarked for engagement tools this fiscal year",
"timeline_signal": "before open enrollment in November",
"competitor_mentioned": "Achievers",
"next_step": "Security review on September 12",
"objections": ["Need SSO and audit logs for IT sign-off"],
"confidence": "high"
}
```
### TX-002 / Deal-70BB30
```json
{
"deal_alias": "Deal-70BB30",
"why_buys": [
"We want to tie recognition to retention for our hourly workforce — regretted turnover there is over 30%."
],
"pain_points": [
"Regretted turnover over 30% for hourly workforce",
"Workday integration must be rock solid"
],
"stakeholders": ["Prospect (Head of Total Rewards)", "Prospect (CFO)"],
"budget_signal": "$25k pilot budget for this quarter",
"timeline_signal": "Decision by end of September",
"competitor_mentioned": null,
"next_step": "Send pilot agreement; prospect will route to legal this week",
"objections": ["Workday integration is a hard requirement"],
"confidence": "high"
}
```
### TX-003 / Deal-530B50
```json
{
"deal_alias": "Deal-530B50",
"why_buys": [
"We need to make recognition visible across our 12 retail locations."
],
"pain_points": [
"Store managers have zero budget autonomy for on-the-spot recognition"
],
"stakeholders": ["Prospect (People Ops Manager)"],
"budget_signal": null,
"timeline_signal": "No rush until Q1",
"competitor_mentioned": "Bucketlist",
"next_step": "Schedule call with CEO — prospect will send two times",
"objections": [
"No urgency until Q1",
"CEO has to be sold first — she decides anything people-related"
],
"confidence": "medium"
}
```
### TX-004 / Deal-180D02
```json
{
"deal_alias": "Deal-180D02",
"why_buys": [
"We want to consolidate three separate recognition tools into one."
],
"pain_points": [
"Paying for three tools and none talk to HRIS",
"Procurement cycle runs 6-8 weeks minimum",
"Last vendor security review took 3 months"
],
"stakeholders": ["Prospect (VP People)", "Prospect (IT Security Lead)"],
"budget_signal": "Under $15k annually can be approved without board",
"timeline_signal": "6-8 week procurement cycle minimum",
"competitor_mentioned": null,
"next_step": null,
"objections": [
"Procurement cycle 6-8 weeks",
"Security review hesitation — last one took 3 months"
],
"confidence": "low"
}
```
*Note: "Maybe — I need to check her calendar, no promises" is not an agreed next step.*
### TX-005 / Deal-F8767A
```json
{
"deal_alias": "Deal-F8767A",
"why_buys": [
"Automate service milestones",
"Give us 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": ["Prospect (HR Director)", "Prospect (People Ops Coordinator)"],
"budget_signal": "$12k approved under engagement line",
"timeline_signal": "Before January all-hands",
"competitor_mentioned": "Nectar",
"next_step": "Present to exec team on October 2",
"objections": [
"Mid-pilot with Nectar — need to beat that experience",
"Exec team skeptical after failed rollout"
],
"confidence": "medium"
}
```
### TX-006 / Deal-EE195F
```json
{
"deal_alias": "Deal-EE195F",
"why_buys": [
"Cut the admin time on service awards."
],
"pain_points": [
"5 hours/month ordering and shipping plaques"
],
"stakeholders": ["Prospect (HR Manager)"],
"budget_signal": "Budget isn't the issue — time is",
"timeline_signal": "Fiscal year resets February; Q1 start realistic",
"competitor_mentioned": null,
"next_step": "Send one-pager; prospect will forward to COO this week",
"objections": [
"COO usually prefers building things in-house"
],
"confidence": "medium"
}
```
*Note: Comparing against internal build, not a named competitor.*
---
**Summary table:**
| Deal | Budget | Timeline | Competitor | Next Step Agreed | Confidence |
|------|--------|----------|------------|------------------|------------|
| Deal-CFE7F4 | $40k | Nov (open enrollment) | Achievers | Yes (Sep 12 security) | high |
| Deal-70BB30 | $25k pilot | End of Sep | — | Yes (pilot agreement) | high |
| Deal-530B50 | — | Q1 | Bucketlist | Yes (CEO call) | medium |
| Deal-180D02 | <$15k | 6-8 wk procurement | — | No | low |
| Deal-F8767A | $12k | Jan all-hands | Nectar | Yes (Oct 2 exec pres) | medium |
| Deal-EE195F | not constrained | Q1 / Feb FY reset | — | Yes (one-pager to COO) | medium |
**Top 3 Deals Closest to Signature** 1. **Deal-547B2B** | $11,200 | Alex Franklin - **Why close:** Slack (09-04) says redlines came back clean, signing page is out, VP People confirmed signing "tomorrow." Alex explicitly called it "signature-imminent." - **What's left:** Waiting on signature — no blockers identified. 2. **Deal-403845** | $9,000 | Alex Franklin - **Why close:** CRM shows DS5/COMMIT with 09-11 close. Dana confirmed in Slack "moving fine — the order form is with their finance team." - **What's left:** Finance approval and signature. 3. **Deal-B7EBD1** | $9,000 | Dana Mercer - **Why close:** DS5/COMMIT with the earliest close date (09-10). No negative signals in Slack. - **What's left:** Unknown — no Slack update, but CRM status and date suggest final stages. --- **Excluded despite CRM data:** - **Deal-2465CE** ($5,400): CRM still shows DS5/COMMIT for 09-10, but Slack reveals champion left and procurement froze vendors. Dana says "blocked" and "realistically a Q4 deal now." CRM is stale. **Combined committed value of top 3:** $11,200 + $9,000 + $9,000 = **$29,200**
## Product Gap Analysis — Prospect Voice Only | Transcript | Deal | Prospect Quote | Classification | Rationale | |------------|------|----------------|----------------|-----------| | TG-001 | Deal-EC3025 | "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." | **REAL GAP** | Product docs: "SCIM user provisioning... NOT currently listed as supported capabilities." No tier offers it. | | TG-002 | Deal-D0D6B5 | "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us." | **REAL GAP** | Product docs: "ADP Workforce Now integrations are NOT currently listed as supported capabilities." HRIS list is Workday, BambooHR, Gusto, Rippling only. | | TG-003 | Deal-CFE7F4 | "I tried to build a custom report combining recognition frequency with turnover and couldn't — is that possible on our current plan?" | Plan gate | Custom report builder exists on Enterprise tier per docs. Not a product gap — upgrade path available. | | TG-004 | Deal-84DBA6 | "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." | Rollout/enablement | Slack integration works on all plans. Issue is adoption and manager training, not missing functionality. | | TG-005 | Deal-36C33F | *(No prospect-voiced gap)* | Excluded | Mobile app gap raised by rep (Alex Franklin), not prospect. Prospect response: "The web version should be fine for our office staff for now." | --- ## Summary: True Product Gaps | Gap | Deal | Prospect Role | Amount | |-----|------|---------------|--------| | SCIM user provisioning | Deal-EC3025 | IT Security Lead | *not provided in data* | | ADP Workforce Now integration | Deal-D0D6B5 | HRIS Manager | *not provided in data* | **Note:** Deal amounts are missing from transcripts_gaps.csv — cannot report dollar exposure without that field.
Snapshot: 2026-09-05. Stale = last contact (email/call/meeting) before 2026-08-29 (>7 days ago). Dates beyond 2026-09-05 treated as scheduled (future), not logged — excluded from recency. --- ## BRYCE HARMON (119337721) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-2D1F1B | DS1 | $240,000 | 81 | | Deal-66D1FC | DS1 | $99,000 | 16 | | Deal-950043 | DS1 | $70,000 | 19 | | Deal-B23205 | DS1 | $45,000 | 16 | | Deal-7BBDFA | DS3 | $37,440 | 46 | | Deal-332637 | DS2 | $36,000 | 9 | | Deal-1BEEBF | DS1 | $31,500 | 19 | | Deal-A414F6 | DS1 | $25,200 | 19 | | Deal-C5658B | DS1 | $23,400 | 16 | | Deal-40522D | DS3 | $21,000 | 19 | | Deal-C1FA6D | DS1 | $18,000 | 16 | | Deal-01E193 | DS1 | $12,600 | 8 | | Deal-F0EBBB | DS3 | $11,400 | 24 | | Deal-927338 | DS1 | $10,920 | 18 | | Deal-E25A09 | DS1 | $6,000 | 9 | | Deal-C9C286 | DS2 | $5,502 | 9 | | Deal-012CB1 | DS1 | $1 | 23 | | Deal-3795AD | DS2 | $1 | 8 | **Bryce Harmon: 18 stale deals, $692,964 total** Arithmetic: 240000+99000+70000+45000+37440+36000+31500+25200+23400+21000+18000+12600+11400+10920+6000+5502+1+1 = $692,964 --- ## DANA MERCER (83155923) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-44EA29 | DS2 | $60,000 | 10 | | Deal-E51FB7 | DS2 | $43,875 | 12 | | Deal-B42F46 | DS1 | $27,000 | 19 | | Deal-BA3DDC | DS3 | $23,400 | 15 | | Deal-9DDE86 | DS2 | $20,000 | 15 | | Deal-215CCA | DS3 | $18,900 | 17 | | Deal-5EED42 | DS3 | $16,250 | 11 | | Deal-57887A | DS2 | $15,000 | 8 | | Deal-944310 | DS4 | $10,500 | 33 | | Deal-B7EBD1 | DS5 | $9,000 | 16 | | Deal-3974EB | DS4 | $9,000 | 8 | | Deal-F40F04 | DS2 | $8,100 | 15 | | Deal-7599B8 | DS3 | $7,350 | 18 | | Deal-87DDD1 | DS1 | $5,000 | 19 | | Deal-F336B6 | DS3 | $4,200 | 15 | | Deal-0660B4 | DS4 | $1,920 | 16 | **Dana Mercer: 16 stale deals, $279,495 total** Arithmetic: 60000+43875+27000+23400+20000+18900+16250+15000+10500+9000+9000+8100+7350+5000+4200+1920 = $279,495 --- ## COLE INGRAM (83155924) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-D04904 | DS2 | $58,529.25 | 11 | | Deal-B25F40 | DS3 | $40,000 | 8 | | Deal-813836 | DS2 | $32,175 | 11 | | Deal-1BA595 | DS2 | $31,750 | 11 | | Deal-CFE1E8 | DS3 | $18,000 | 11 | | Deal-CD47A6 | DS2 | $12,168 | 11 | | Deal-627646 | DS3 | $11,193 | 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 | 10 | | Deal-175395 | DS3 | $4,779.88 | 11 | | Deal-481E24 | DS3 | $4,140 | 10 | | Deal-C7F9BF | DS2 | $3,360 | 11 | | Deal-2F3A66 | DS3 | $3,334.80 | 11 | | Deal-342E96 | DS2 | $2,700 | 24 | | Deal-E568D5 | DS3 | $1,875 | 11 | | Deal-FD9F4E | DS5 | $1,330 | 10 | **Cole Ingram: 18 stale deals, $252,905.03 total** Arithmetic: 58529.25+40000+32175+31750+18000+12168+11193+7781.2+7225.4+6947.5+5616+4779.88+4140+3360+3334.8+2700+1875+1330 = $252,905.03 --- ## ALEX FRANKLIN (84342457) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-CC08D1 | DS1 | $24,000 | 16 | | Deal-E73427 | DS3 | $18,000 | 10 | | Deal-885F45 | DS2 | $9,300 | 12 | | Deal-C2FF3C | DS1 | $8,316 | 10 | | Deal-3EED2C | DS2 | $7,200 | no engagement data | | Deal-0D2F7A | DS3 | $5,100 | 12 | | Deal-6C60D4 | DS3 | $4,800 | 12 | | Deal-13FEBD | DS2 | $4,680 | 12 | | Deal-819506 | DS1 | $4,400 | 8 | | Deal-9D0060 | DS3 | $3,840 | 12 | | Deal-690476 | DS2 | $3,600 | 18 | | Deal-C6D97A | DS4 | $3,240 | 8 | | Deal-EE195F | DS3 | $3,120 | 8 | | Deal-278DEC | DS3 | $2,700 | 8 | | Deal-635B8E | DS3 | $2,600 | 18 | | Deal-6883F3 | DS1 | $2,400 | 16 | | Deal-4A13AD | DS3 | $2,160 | 26 | | Deal-F67D31 | DS2 | $1,800 | 8 | | Deal-5FDCE4 | DS3 | $1,600 | 12 | | Deal-BA571A | DS4 | $1,080 | 18 | **Alex Franklin: 20 stale deals, $113,936 total** Arithmetic: 24000+18000+9300+8316+7200+5100+4800+4680+4400+3840+3600+3240+3120+2700+2600+2400+2160+1800+1600+1080 = $113,936 --- ## FARID OSMAN (716654662) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-8BA24E | DS1 | $2,880 | 8 | | Deal-8FDCD2 | DS1 | $1 | 15 | **Farid Osman: 2 stale deals, $2,881 total** --- ## ELENA SINCLAIR (701163055) | Deal Alias | Stage | Amount | Days Since Last Contact | |------------|-------|--------|-------------------------| | Deal-57FF13 | DS1 | $2,100 | no engagement data | **Elena Sinclair: 1 stale deal, $2,100 total** --- ## SUMMARY BY OWNER | Owner | Stale Deals | Stale Amount | |-------|-------------|--------------| | Bryce Harmon | 18 | $692,964 | | Dana Mercer | 16 | $279,495 | | Cole Ingram | 18 | $252,905.03 | | Alex Franklin | 20 | $113,936 | | Farid Osman | 2 | $2,881 | | Elena Sinclair | 1 | $2,100 | | **TOTAL** | **75** | **$1,344,281.03** |
**Rep Activity & DS2 Efficiency Analysis (30-day window: 2026-08-06 to 2026-09-05)** --- **Per-Rep Summary:** | Rep | Emails | Calls | Meetings | Total | DS2 Entries | Activities/DS2 | |-----|--------|-------|----------|-------|-------------|----------------| | Alex Franklin | 307 | 36 | 41 | 384 | 18 | 21.3 | | Bryce Harmon | 162 | 0 | 43 | 205 | 4 | 51.3 | | Cole Ingram | 96 | 14 | 1 | 111 | 2 | 55.5 | | Farid Osman | 38 | 0 | 34 | 72 | 1 | 72.0 | | Dana Mercer | 84 | 18 | 11 | 113 | 1 | 113.0 | | Elena Sinclair | 0 | 0 | 0 | 0 | 0 | N/A | --- **Activity Mix (% of rep's total):** | Rep | Emails % | Calls % | Meetings % | |-----|----------|---------|------------| | Alex Franklin | 79.9% | 9.4% | 10.7% | | Bryce Harmon | 79.0% | 0.0% | 21.0% | | Cole Ingram | 86.5% | 12.6% | 0.9% | | Farid Osman | 52.8% | 0.0% | 47.2% | | Dana Mercer | 74.3% | 15.9% | 9.7% | --- **Efficiency Ranking (lowest activities per DS2 entry = most efficient):** 1. Alex Franklin — 21.3 (384 activities ÷ 18 DS2 entries) 2. Bryce Harmon — 51.3 (205 ÷ 4) 3. Cole Ingram — 55.5 (111 ÷ 2) 4. Farid Osman — 72.0 (72 ÷ 1) 5. Dana Mercer — 113.0 (113 ÷ 1) Elena Sinclair excluded (0 DS2 entries). --- **Findings:** - Most efficient rep: **Alex Franklin** (21.3 activities per DS2 entry) - Highest-volume rep: **Alex Franklin** (384 total activities) They are the **same rep**. No causal attribution implied.
# QTD Scorecard: Alex Franklin As of 2026-09-05 | Q3 2026 (Jul 1 – Sep 30) --- ## BOOKINGS VS QUOTA Q3 Closed-Won (close_date >= 2026-07-01): Deal-A1C3E5 $40,000 2026-07-15 new Deal-F2C7D8 $20,000 2026-07-24 expansion Deal-B7D2F4 $35,000 2026-07-31 new Deal-C9E1A6 $21,000 2026-08-12 new Deal-A8B4D6 $12,000 2026-08-19 expansion Deal-D4B8C2 $11,000 2026-08-21 new Deal-E6F3A9 $6,500 2026-09-02 new Deal-C5D9E2 $4,500 2026-09-03 expansion QTD Bookings: $150,000 Q3 Quota: $200,000 Attainment: 75.0% ($150,000 / $200,000) Gap to Quota: $50,000 --- ## NEW VS EXPANSION SPLIT New Business: $113,500 (75.7%) 40,000 + 35,000 + 21,000 + 11,000 + 6,500 = $113,500 Expansion: $36,500 (24.3%) 20,000 + 12,000 + 4,500 = $36,500 --- ## ACTIVE PIPELINE BY STAGE Stage | Count | Amount -------|-------|---------- DS1 | 20 | $284,621 DS2 | 28 | $353,760 DS3 | 67 | $552,705 DS4 | 4 | $21,090 DS5 | 5 | $45,730 -------|-------|---------- TOTAL | 124 | $1,257,906 Late-stage (DS4+DS5): $66,820 (5.3% of pipeline) --- ## ROLLING 90-DAY DS2-TO-WON RATE Window: 2026-06-08 to 2026-09-05 (deals with entered_ds2 in range) Resolved deals that entered DS2 in window: Won: 8 Lost: 27 ----- Total: 35 DS2-to-Won Rate: 22.9% (8 / 35) --- ## WIN/LOSS RECORD (QTD) Wins: 8 Losses: 27 Loss Reasons: Lost- Timing (1 year or more) 13 (48.1%) MIA 5 (18.5%) Competitor 5 (18.5%) Lost DM 2 ( 7.4%) Feature Request 1 ( 3.7%) Lost- Does not fit ICP 1 ( 3.7%) Top Loss Reason: "Lost- Timing (1 year or more)" — 13 of 27 losses --- ## ACTIVITY VOLUME (LAST 30 DAYS) Activity Type | Volume --------------|-------- Emails | 740 Calls | 112 Meetings | 114 Notes | 50 --------------|-------- Total | 1,016 Avg per open deal: 6.0 emails, 0.9 calls, 0.9 meetings --- ## COACHING OBSERVATIONS 1. Timing losses dominate the funnel. 48% of all Q3 losses (13 of 27) went to "Lost- Timing (1 year or more)." Deals are entering pipeline before buyers have active budget or decision authority. Tighten discovery to confirm fiscal timing, budget allocation status, and decision timeline before advancing to DS2. Each premature qualification burns activity on deals that were never closable this quarter. 2. 22.9% DS2-to-won rate is a conversion leak. 3 out of 4 deals that reach qualification stage are lost. Combined with the $1.26M pipeline, the problem isn't volume—it's yield. Examine what happens between DS2 and DS4: are demos compelling? Is multi-threading happening? Are proposals landing with economic buyers or just champions? 3. Quota math requires late-stage urgency. $50K needed with 25 days left, but only $66,820 sits in DS4/DS5. The $1.19M in DS1-DS3 won't close in Q3. Prioritize the 9 late-stage deals (Deal-403845, Deal-547B2B, Deal-A2B47C, Deal-C61CF7, Deal-D348E1 in DS5; Deal-1FC049, Deal-C6D97A, Deal-BA571A, Deal-5408B0 in DS4) over top-of-funnel work for the rest of the quarter.
## Threading Analysis **Cutoff for "active":** engaged on/after July 10, 2026 (60 days before Sep 8) AND is_former = false **Data gap:** deal_contacts.csv contains no `amount` or `stage` columns. I cannot provide those values or stage-specific persona recommendations. --- ### Flagged Deals | Deal | Company | Active Contacts | Personas Present | Personas Missing | Flag Reason | Unengaged Contact On File | |------|---------|-----------------|------------------|------------------|-------------|---------------------------| | **Deal-EC3025** | C-FDD0C7 | 1 | champion | economic buyer, HR admin, IT security, finance | Single-threaded | CT-6827DB (economic buyer) | | **Deal-92D97D** | C-E23238 | 1 | HR admin | economic buyer, champion, IT security, finance | Single-threaded | none on file | | **Deal-36C33F** | C-077A0E | 1 | IT security | economic buyer, champion, HR admin, finance | Single-threaded | CT-1DB73E (economic buyer) | | **Deal-FCBE5B** | C-737030 | 1 | champion | economic buyer, HR admin, IT security, finance | Single-threaded | none on file | | **Deal-F9A08A** | C-0D15DF | 1 | champion | economic buyer, HR admin, IT security, finance | Single-threaded | CT-697541 (economic buyer) | | **Deal-50D386** | C-EB10E4 | 2 | champion, HR admin | economic buyer, IT security, finance | Under-threaded (<3) | CT-A1C4B3 (economic buyer) | | **Deal-D0D6B5** | C-32918E | 3 | champion (×3) | economic buyer, HR admin, IT security, finance | All one persona | CT-1FA4DB (economic buyer) | | **Deal-5BFE3B** | C-535D36 | 2 | champion (×2) | economic buyer, HR admin, IT security, finance | Under-threaded + one persona | none on file | | **Deal-885F45** | C-5E8EFB | 2 | economic buyer, champion | HR admin, IT security, finance | Under-threaded (<3) | CT-B3F25D (IT security) | | **Deal-5408B0** | C-2AE3AA | 2 | champion, HR admin | economic buyer, IT security, finance | Under-threaded (<3) | CT-07FA76 (economic buyer) | | **Deal-C6D97A** | C-5A8FC2 | 3 | champion (×3) | economic buyer, HR admin, IT security, finance | All one persona | none on file | --- ### Arithmetic Detail - **Deal-EC3025:** 2 contacts total. CT-F2C1AE is_former=true → excluded. 1 active. - **Deal-92D97D:** 2 contacts. CT-A902AE last engaged Jun 1 (>60 days) → excluded. 1 active. - **Deal-36C33F:** 3 contacts. CT-405B45 and CT-86B22F both is_former=true → excluded. 1 active. - **Deal-F9A08A:** 2 contacts. CT-913581 last engaged Jun 20 (>60 days) → excluded. 1 active. - **Deal-D0D6B5:** 3 contacts, all active, all persona=champion. Fails diversity test. - **Deal-C6D97A:** 3 contacts, all active, all persona=champion. Fails diversity test. --- ### Most Valuable Persona to Add (general guidance, stage unknown) Without stage data, the priority is: 1. **Economic buyer** — required for deals missing one. Matches available unengaged contact at 6 companies. 2. **Champion** — foundational; Deal-36C33F has IT security only, needs champion but none on file. 3. **IT security / finance** — typically late-stage; Deal-885F45 has IT security contact available (CT-B3F25D). **Summary:** 11 deals flagged. 6 have an actionable unengaged contact on file (5 economic buyers, 1 IT security). 5 have no matching unengaged contact in the provided data.
## Rep Analysis: Alex Franklin — Last 10 Calls
### Opening (first 5 minutes)
**8 of 10 calls** open with the same social-proof line:
> "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 exceptions: TT-004 (agenda-led) and TT-009 (pricing follow-up).
---
### Three Most Common Objections & Handling
| Objection | Count | Handling |
|-----------|-------|----------|
| Budget locked | 4 | Reframes to turnover savings: "Most teams fund this out of turnover savings — that retailer saved about $210k in avoided backfills, which is how their finance team signed off." |
| Revisit next quarter | 3 | Proposes pilot: "What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?" |
| Spreadsheet status quo | 3 | Automation + analytics: "Spreadsheets work until they scale — the difference is automation: milestones fire without HR lifting a finger, and you get analytics on who is being recognized." |
---
### Next Step Agreed — Rate
**7 / 10 = 70%**
Agreed (7): TT-001, TT-002, TT-003, TT-005, TT-006, TT-008, TT-009
Not agreed (3): TT-004, TT-007, TT-010
---
### Competitors Raised by Prospects
| Competitor | Call | Deal Alias | Quote |
|------------|------|------------|-------|
| Awardco | TT-003 | Deal-547B2B | "We're also in late talks with Awardco — their rewards catalog looks bigger than yours." |
| Kudos | TT-007 | Deal-EDC141 | "How are you different from Kudos? Our CEO used them at her last company." |
(Workhuman mentioned in TT-005 but by Alex, not prospect — excluded.)
---
### Coaching Notes
1. **Soft closes leak deals.** In the 3 calls with no next step (TT-004, TT-007, TT-010), Alex accepted stalls ("I'll leave it with you," "Fair enough," "Understood, thanks for the candor") without proposing even a calendar placeholder. Teach: always offer a fallback step — e.g., "Can I send a one-pager and follow up in two weeks?"
2. **Vary the opener when a competitor is already in play.** The 400-person retailer case lands well, but in TT-003 the prospect raised Awardco before minute 5. When the prospect signals they're evaluating, lead with differentiation ("where we win is automation and the analytics") earlier instead of the standard case study.
## Q3 2026 Forecast (2026-07-01 to 2026-09-30)
### Category Totals (deals with close_date in Q3)
**COMMIT** — 7 deals, $44,729
```
Deal-547B2B 11,200 (09-11)
Deal-B7EBD1 9,000 (09-10)
Deal-403845 9,000 (09-11)
Deal-A2B47C 6,360 (09-11)
Deal-2465CE 5,400 (09-10)
Deal-A5E80A 2,520 (09-11)
Deal-499BF6 1,249 (09-30)
───────────────────────
$44,729
```
**BEST_CASE** — 24 deals, $203,565
```
Sum of 24 deals: 38,935 + 24,000 + 19,656 + 16,250 + 11,116 + 10,800 +
10,500 + 9,890 + 9,720 + 9,000 + 7,200 + 3,840 + 3,780 + 3,600 + 3,240 +
3,150 + 3,120 + 3,060 + 2,916 + 2,760 + 2,484 + 2,100 + 1,920 + 528 = $203,565
```
**PIPELINE** — 23 deals, $201,637.40 (counts $0 toward forecast)
### Weighted Forecast Calculation
```
COMMIT contribution: 100% × $44,729 = $44,729.00
BEST_CASE contribution: 35% × $203,565 = $71,247.75
PIPELINE contribution: 0% × $201,637 = $0.00
─────────────────────────────────────────────────────────
WEIGHTED FORECAST $115,976.75
```
### Deals Excluded (close_date outside Q3)
32 deals excluded, total $227,575
All have close_date in October (10-01 through 10-15). Breakdown:
- 1 COMMIT (Deal-D348E1, $13,770)
- 9 BEST_CASE ($28,240)
- 22 PIPELINE ($185,565)
### Top 5 BEST_CASE Deals in Q3 by Amount
| Rank | Deal Alias | Amount | Close Date |
|------|--------------|----------|------------|
| 1 | Deal-2D7423 | $38,935 | 09-30 |
| 2 | Deal-25F752 | $24,000 | 09-25 |
| 3 | Deal-E53952 | $19,656 | 09-30 |
| 4 | Deal-5EED42 | $16,250 | 09-30 |
| 5 | Deal-FA32A0 | $11,116 | 09-25 |
---
## Data quality
The `owner` field is blank on 85 of 86 deals, making rep-level forecasting and quota roll-up impossible. Two COMMIT deals (Deal-A5E80A at DS1, Deal-499BF6 at DS2) sit at early-stage discovery, suggesting forecast_category is not validated against stage progression. The `why_buys_chars` field is zero on 78 deals, indicating incomplete discovery documentation that would flag weak qualification. Only anonymized deal aliases exist—no company or account names—so external validation against the source system is impossible.
## Activation Hypothesis Test: 2x2 Retention Matrix **Definitions:** - Givers signal: m1_users >= 5 - Redemption signal: m1_redemptions >= 1 - Retained: current_status = 'active' ### Full 2x2 Results | Cohort | n | Retained | 24-Mo Retention | |--------|---|----------|-----------------| | **Both signals** (≥5 givers AND ≥1 redemption) | 47 | 31 | **66.0%** | | **Givers-only** (≥5 givers, 0 redemptions) | 49 | 23 | 46.9% | | **Redemption-only** (<5 givers, ≥1 redemption) | 29 | 9 | 31.0% | | **Neither** (<5 givers, 0 redemptions) | 95 | 38 | 40.0% | | **Total** | 220 | 101 | 45.9% | **Arithmetic check:** 47 + 49 + 29 + 95 = 220 companies. 31 + 23 + 9 + 38 = 101 retained. ### Exclusions **0 companies excluded.** All 220 rows have defined values for m1_users, m1_redemptions, and current_status. ### Single Signal with Largest Retention Lift **Givers signal (m1_users >= 5)** provides the only positive single-signal lift: - Givers-only vs Neither: 46.9% - 40.0% = **+6.9 pp** - Redemption-only vs Neither: 31.0% - 40.0% = **-9.0 pp** (worse than baseline) ### What This Does and Does Not Prove **DOES prove:** - Strong correlation between Month-1 dual activation and 24-month retention in this 2023 cohort - Broad user adoption (≥5 givers) is the more predictive single signal - The combination (both signals) outperforms either signal alone by 19+ pp **DOES NOT prove:** - Causation — healthier/better-fit companies may naturally activate faster (selection effect) - Generalizability beyond 2023 signup cohort - Independence from confounders — tier, ARR, industry, integrations (has_slack, has_hris) not controlled - That forcing redemptions early will improve retention — the redemption-only cohort (31.0%) actually underperforms "neither" (40.0%), suggesting redemptions without broad adoption may indicate problematic usage patterns (e.g., a handful of users treating it as personal rewards)
## ARR Reconciliation Report — as of 2026-09-05 ### Summary Totals | Source | ARR | |--------|-----| | Billing (active subscriptions × 12) | $604,739.28 | | HubSpot (company_arr.csv) | $603,581.76 | | **Variance (HubSpot − Billing)** | **−$1,157.52** | --- ### Variance Decomposition | Bucket | Amount | Accounts | |--------|--------|----------| | Status Mismatch | +$13,158.48 | 2 | | Missing Records | −$11,952.00 | 2 | | Rounding | +$36.00 | 2 | | Other (value mismatch) | −$2,400.00 | 1 | | **Total** | **−$1,157.52** | | Arithmetic check: +13,158.48 − 11,952.00 + 36.00 − 2,400.00 = −1,157.52 ✓ --- ### Mismatched Accounts Detail **Status Mismatch (cancelled in billing, ARR remains in HubSpot):** | Alias | Subscription | HubSpot ARR | Billing ARR | Delta | Suggested Owner | |-------|--------------|-------------|-------------|-------|-----------------| | C-0C8323BF | SUB-000E | $4,905.24 | $0 | +$4,905.24 | Sales Ops (zero out HubSpot) | | C-0DC4FB8C | SUB-000F | $8,253.24 | $0 | +$8,253.24 | Sales Ops (zero out HubSpot) | **Missing Records:** | Alias | Subscription | HubSpot ARR | Billing ARR | Delta | Suggested Owner | |-------|--------------|-------------|-------------|-------|-----------------| | C-21629AA4 | SUB-0004 (active) | — | $28,449.24 | −$28,449.24 | Sales Ops (create company record) | | C-0D5BBE3A | — | $16,497.24 | — | +$16,497.24 | Billing Ops (locate subscription or zero HubSpot) | **Rounding:** | Alias | Subscription | HubSpot ARR | Billing ARR (MRR×12) | Delta | |-------|--------------|-------------|----------------------|-------| | C-0D66DF9E | SUB-0005 | $23,200.00 | $23,184.00 | +$16.00 | | C-14D70CE0 | SUB-0008 | $18,200.00 | $18,180.00 | +$20.00 | Suggested owner: Finance (immaterial; accept or round billing MRR) **Other (significant value mismatch):** | Alias | Subscription | HubSpot ARR | Billing ARR (MRR×12) | Delta | Suggested Owner | |-------|--------------|-------------|----------------------|-------|-----------------| | C-0F7269D7 | SUB-0006 | $24,396.00 | $26,796.00 | −$2,400.00 | RevOps (investigate; $200/mo discrepancy) | --- ### Business Rule Violations **Term ≠ 12 months with missing cf_agreement_end_date:** | Subscription | Alias | Term | cf_agreement_end_date | Action | |--------------|-------|------|----------------------|--------| | SUB-0002 | C-1794A52C | 24 mo | EMPTY | Populate end date | | SUB-0019 | C-22170CA1 | 36 mo | EMPTY | Populate end date | --- ### Arithmetic Backup **Billing ARR (active only):** Sum of active MRR = $50,394.94 $50,394.94 × 12 = $604,739.28 **HubSpot ARR:** Sum of 39 company records = $603,581.76
## KVM Analysis: 2026-08 vs 2026-07 **Arithmetic (n=30 companies, simple averages):** - Giving Rate: July sum = 18.0689, Aug sum = 18.0814 → avgs 0.6023, 0.6027 - Redemptions/User: July sum = 51.8995, Aug sum = 51.9049 → avgs 1.7300, 1.7302 - 1:1 Engagement: July sum = 13.4066, Aug sum = 13.4153 → avgs 0.4469, 0.4472 - Pulse Engagement: July sum = 18.0176, Aug sum = 15.2583 → avgs 0.6006, 0.5086 | KVM | 2026-08 | 2026-07 | Δ Abs | Δ Rel | Dir | |-----|---------|---------|-------|-------|-----| | Giving Rate | 0.6027 | 0.6023 | +0.0004 | +0.07% | ↗ | | Redemptions/User | 1.7302 | 1.7300 | +0.0002 | +0.01% | → | | 1:1 Engagement | 0.4472 | 0.4469 | +0.0003 | +0.06% | ↗ | | Pulse Engagement | 0.5086 | 0.6006 | −0.0920 | −15.3% | ↓ | **Largest relative move:** Pulse Engagement (−15.3%) **Segment driver:** size_band = enterprise. All 10 enterprise accounts dropped from avg 0.550 → 0.274 (−50.1%), while SMB (−0.2%) and mid_market (+0.2%) held flat. Plan_tier is uniformly tier_three across all accounts, so it cannot explain the variance.
**REDEMPTION SECTION — Weekly Rewards Report** Last completed month: August 2026 SUMMARY METRICS Redemption count: 378 Total spend: $27,846.00 Unique redeemers: 235 Redemptions per redeemer: 1.61 PROVIDER MIX (% of spend) custom $10,873 (39.0%) Tremendous $8,505 (30.5%) Snappy $5,238 (18.8%) TangoCard $3,230 (11.6%) TOTAL $27,846 (100.0%) TOP 5 COUNTRIES BY REDEMPTIONS 1. US — 244 2. CA — 24 3. AU — 21 4. GB — 17 (tie) 5. NL — 17 (tie) Arithmetic check: 39.0% + 30.5% + 18.8% + 11.6% = 99.9% (rounds to 100.0%)
## Churn-Save Eligibility Analysis **Snapshot date:** 2026-09-05 **120-day window ends:** 2027-01-03 **Rules applied:** Account must satisfy ALL THREE: - R1: health_score < 60 - R2: churn_save_eligible_amount > 0 - R3: renewal_date ≤ 2027-01-03 --- ### Qualifying Accounts (8) | Account | Health | Eligible Amt | Renewal | Play | Justifying Signal | |---------|--------|-------------|---------|------|-------------------| | C-0F6C0F34 | 51 | $49,707 | 2026-10-03 | Executive touch | No champion (champion_active=false) despite growing usage—need exec re-engagement | | C-0E9C27D1 | 39 | $41,235 | 2026-09-24 | Commercial concession | 85% seat utilization (134/157), active champion, flat usage—engagement healthy, likely pricing objection | | C-0B360C78 | 57 | $35,748 | 2026-10-28 | Commercial concession | Growing usage, active champion, 75% utilization (246/327)—value delivered but still at-risk score | | C-0CEF69FD | 53 | $32,621 | 2026-11-21 | Executive touch | No champion (champion_active=false) despite growing usage | | C-0B827671 | 56 | $25,365 | 2026-11-14 | Usage revival | Declining usage trend with active champion to drive re-adoption | | C-0D3278C7 | 54 | $17,602 | 2026-11-12 | Usage revival | Declining usage trend, only 33% seats used (126/380), but champion active | | C-0CA21961 | 58 | $16,829 | 2026-12-28 | Usage revival | Only 26% seat utilization (84/325), flat trend—champion active to push adoption | | C-0B0F1BAB | 38 | $5,494 | 2026-09-23 | Executive touch | Lowest health score (38), no champion, flat usage—urgent exec outreach needed | **Arithmetic:** ``` $49,707 + $41,235 + $35,748 + $32,621 + $25,365 + $17,602 + $16,829 + $5,494 = $224,601 ``` **Total at stake: $224,601** --- ### Play Summary | Play | Count | Total Eligible | |------|-------|----------------| | Executive touch | 3 | $87,822 | | Commercial concession | 2 | $76,983 | | Usage revival | 3 | $59,796 | --- ### At-Risk But NOT Qualifying (7) | Account | Health | Why Disqualified | |---------|--------|------------------| | C-0BC71BDD | 55 | Fails R2: eligible_amount = $0 (declining usage, 30% seats) | | C-0BE96399 | 54 | Fails R2: eligible_amount = $0 (declining usage) | | C-10A56B0F | 54 | Fails R2: eligible_amount = $0 (declining usage) | | C-0BA71F12 | 52 | Fails R3: renewal 2027-04-11 is 218 days out (>120) | | C-0F876796 | 47 | Fails R3: renewal 2027-02-06 is 154 days out (>120) | | C-0F6694C3 | 43 | Fails R2 & R3: eligible_amount = $0, renewal 197 days out | | C-0FCCD2DF | 43 | Fails R2 & R3: eligible_amount = $0, renewal 230 days out |
## Expansion Kit: C-0DDFC9A7 ### Seat Coverage - Licensed: 150 seats - Headcount: 400 - Coverage: 150 / 400 = **37.5%** ### Usage Health (2 lines) 1. **Strong adoption trend:** MAU grew from 88 → 126 over 6 months (Mar–Aug), adding ~7-8 users/month consistently. 2. **Approaching ceiling:** August's 126 active users = 84% of 150 licensed seats (126/150). ### Headroom - **Seat headroom:** 400 − 150 = **250 seats** to cover full headcount - **Per-seat rate:** $9,000 / 150 = **$60/seat/year** - **ARR headroom:** 250 × $60 = **$15,000** potential expansion ### Who Replied & Can They Buy? - **Maria S., People Operations Coordinator** — cannot buy. She explicitly states: "I'm not the right person for purchasing decisions here. Budget and seat expansion sit with Dana R." ### Right Buyer - **Dana R., VP People** — named by Maria as owning budget and seat expansion. Last engaged 2026-05-18 (4 months stale). --- ### Reply Email (143 words) ``` Subject: RE: Growing your team's recognition program Hi Maria, Thanks for the kind words — always great to hear the team loves it. And yes, I'd really appreciate an introduction to Dana. No rush on your end. For context if it's helpful: your August active users hit 126, which puts you at 84% of your current 150-seat license. With the steady growth you've seen, Dana may want to get ahead of that before you bump into the ceiling. Happy to send over a quick usage summary she can review beforehand, or just jump on a 15-minute call — whatever works best for her calendar. Thanks again for connecting us. Best, Cole ``` --- **Usage fact cited:** 126 active users in August at 84% seat utilization (126/150).
# Mid-Onboarding Call Prep: C-0D284E42 **Signup:** 2026-08-11 (25 days ago) --- ## Milestone Status | Milestone | Status | Evidence | |-----------|--------|----------| | Slack integration | ✅ Complete | integration_slack = 2026-08-12 | | HRIS integration | ❌ Not complete | integration_hris = empty | | Allowance set | ✅ Complete | allowance_set = 2026-08-13 | | Admins added | ✅ Complete | admins_added = 2 | | First recognition | ✅ Complete | first_recognition_at = 2026-08-15 14:22 | | First redemption | ❌ Not complete | first_redemption_at = empty | **Complete:** 4 of 6 **Not complete:** HRIS integration, first redemption --- ## Early Engagement Signals Active givers trend (from onboarding_usage.csv): - Week 1 avg: (3+3+4+4+5+4+7) ÷ 7 = **4.3 givers/day** - Week 2 avg: (5+7+6+9+8+9+9) ÷ 7 = **7.6 givers/day** - Week 3 avg: (9+11+10+10+11+13+11) ÷ 7 = **10.7 givers/day** - Week 4 (4 days): (13+13+15+15) ÷ 4 = **14.0 givers/day** **Growth:** 3 → 15 active givers = +400% over 25 days. Steady week-over-week increase with no drop-off. Strong adoption signal. --- ## Three Things to Cover on the Call 1. **HRIS integration** — Not connected. Blocks automated onboarding of new hires and accurate headcount for analytics. Ask what's blocking (IT approval? which HRIS system?). 2. **First redemption** — Zero redemptions after 25 days despite recognition activity. Confirm employees know how to redeem; consider an admin-led "first redemption" prompt or demo. 3. **Celebrate & expand giver base** — 15 active givers is healthy traction. Ask how many total employees; identify departments not yet participating to target next.
# 90-Day Renewal Risk Brief (Sep 8 – Dec 7, 2026) ## Date Source Decision Rule ChurnZero is known to be wrong on multi-year contracts. For accounts where is_multi_year=true in Chargebee, I trust Chargebee. For 12-month terms, dates agree on all accounts. --- ## Renewals by Account ### SEPTEMBER (5 accounts, 5 disagreements) **C-0B7D2C30** | Dana Mercer | $65,901 | 2026-09-15 (Chargebee) - Seat utilization: 274/476 = 57.6% - 3mo trend: 97 → 94 → 84 (-13 users, -13.4%) - **RISK: HIGH** — Sustained 12-month decline (155→84) with below-average seat utilization. - ⚠️ DATE DISAGREEMENT: CZ=2026-09-10, CB=2026-09-15. Trust CB (36mo multi-year). **C-0BCDB8C2** | Cole Ingram | $54,427 | 2026-09-18 (Chargebee) - Seat utilization: 232/424 = 54.7% - 3mo trend: 127 → 118 → 110 (-17 users, -13.4%) - **RISK: HIGH** — Steep 12-month decline (200→110, -45%) with half of seats unused. - ⚠️ DATE DISAGREEMENT: CZ=2027-09-18, CB=2026-09-18 (1 YEAR OFF). Trust CB (36mo multi-year). **C-0D2AB865** | Elena Sinclair | $38,022 | 2026-09-22 (Chargebee) - Seat utilization: 250/407 = 61.4% - 3mo trend: 125 → 117 → 109 (-16 users, -12.8%) - **RISK: HIGH** — Continuous 12-month decline (199→109, -45%) signals disengagement. - ⚠️ DATE DISAGREEMENT: CZ=2026-09-10, CB=2026-09-22. Trust CB (24mo multi-year). **C-0BBE3E60** | Dana Mercer | $30,993 | 2026-09-26 (Chargebee) - Seat utilization: 74/114 = 64.9% - 3mo trend: 39 → 35 → 33 (-6 users, -15.4%) - **RISK: HIGH** — Sharp 15% quarterly decline; half of original users gone (63→33). - ⚠️ DATE DISAGREEMENT: CZ=2027-09-26, CB=2026-09-26 (1 YEAR OFF). Trust CB (24mo multi-year). **C-0F5D2323** | Cole Ingram | $90,647 | 2026-09-29 (Chargebee) - Seat utilization: 111/390 = 28.5% - 3mo trend: 20 → 21 → 18 (flat, ~19 avg) - **RISK: HIGH** — Only 28% seat utilization on largest September ARR; chronic low adoption. - ⚠️ DATE DISAGREEMENT: CZ=2026-09-10, CB=2026-09-29. Trust CB (24mo multi-year). --- ### OCTOBER (8 accounts, no disagreements) **C-0EC6999D** | Elena Sinclair | $79,419 | 2026-10-03 (agreed) - Seat utilization: 31/112 = 27.7% - 3mo trend: 17 → 16 → 15 (-2 users, flat) - **RISK: HIGH** — Only 28% seat utilization; 2nd-largest October ARR severely under-adopted. **C-0B20DB64** | Dana Mercer | $21,770 | 2026-10-07 (agreed) - Seat utilization: 214/378 = 56.6% - 3mo trend: 294 → 298 → 294 (flat, ±4) - **RISK: LOW** — Stable usage over 12 months, no warning signs. **C-0BBC4E7A** | Cole Ingram | $56,374 | 2026-10-10 (agreed) - Seat utilization: 228/337 = 67.7% - 3mo trend: 142 → 141 → 139 (-3 users, -2.1%) - **RISK: LOW** — Healthy utilization with minimal decline. **C-0FD551AB** | Elena Sinclair | $48,815 | 2026-10-14 (agreed) - Seat utilization: 210/376 = 55.9% - 3mo trend: 123 → 122 → 126 (+3 users, +2.4%) - **RISK: LOW** — Usage ticking up; moderate utilization. **C-0F9F8F13** | Dana Mercer | $46,230 | 2026-10-18 (agreed) - Seat utilization: 199/352 = 56.5% - 3mo trend: 185 → 185 → 182 (-3 users, flat) - **RISK: LOW** — Stable engagement over 12 months. **C-0BC34584** | Cole Ingram | $16,740 | 2026-10-22 (agreed) - Seat utilization: 327/494 = 66.2% - 3mo trend: 104 → 104 → 106 (+2 users, flat) - **RISK: LOW** — Stable, above-average utilization. **C-0B7A7546** | Elena Sinclair | $35,062 | 2026-10-25 (agreed) - Seat utilization: 182/205 = 88.8% - 3mo trend: 64 → 65 → 63 (flat) - **RISK: LOW** — Excellent 89% seat utilization; stable. **C-0B369871** | Dana Mercer | $85,128 | 2026-10-29 (agreed) - Seat utilization: 317/422 = 75.1% - 3mo trend: 326 → 330 → 333 (+7 users, +2.1%) - **RISK: LOW** — Growing usage, strong utilization. Expansion candidate. --- ### NOVEMBER (7 accounts, no disagreements) **C-0B144C78** | Cole Ingram | $30,899 | 2026-11-02 (agreed) - Seat utilization: 169/224 = 75.4% - 3mo trend: 101 → 101 → 106 (+5 users, +5.0%) - **RISK: LOW** — Growing, strong utilization. **C-0FC4DBB8** | Elena Sinclair | $94,732 | 2026-11-05 (agreed) - Seat utilization: 356/464 = 76.7% - 3mo trend: 189 → 191 → 193 (+4 users, +2.1%) - **RISK: LOW** — Largest renewal; healthy growth and utilization. **C-0D5BBE3A** | Dana Mercer | $39,740 | 2026-11-09 (agreed) - Seat utilization: 85/102 = 83.3% - 3mo trend: 88 → 90 → 91 (+3 users, +3.4%) - **RISK: LOW** — Excellent 83% utilization, growing. **C-0FB9D5AF** | Cole Ingram | $63,158 | 2026-11-13 (agreed) - Seat utilization: 144/199 = 72.4% - 3mo trend: 173 → 173 → 176 (+3 users, +1.7%) - **RISK: LOW** — Stable, good utilization. **C-0B344485** | Elena Sinclair | $64,384 | 2026-11-16 (agreed) - Seat utilization: 224/287 = 78.0% - 3mo trend: 238 → 240 → 244 (+6 users, +2.5%) - **RISK: LOW** — Growing, strong utilization. **C-0CB2C1B4** | Dana Mercer | $40,628 | 2026-11-20 (agreed) - Seat utilization: 386/473 = 81.6% - 3mo trend: 47 → 48 → 49 (+2 users, +4.3%) - **RISK: LOW** — Excellent 82% utilization, growing. **C-22170CA1** | Cole Ingram | $45,646 | 2026-11-24 (agreed) - Seat utilization: 251/294 = 85.4% - 3mo trend: 143 → 148 → 146 (+3 users, +2.1%) - **RISK: LOW** — Excellent 85% utilization, stable. --- ## Date Disagreement Summary | Account | ChurnZero | Chargebee | Δ | Trusted | Reason | |---------|-----------|-----------|---|---------|--------| | C-0B7D2C30 | 2026-09-10 | 2026-09-15 | 5d | CB | 36mo multi-year | | C-0BCDB8C2 | 2027-09-18 | 2026-09-18 | **1yr** | CB | 36mo multi-year | | C-0D2AB865 | 2026-09-10 | 2026-09-22 | 12d | CB | 24mo multi-year | | C-0BBE3E60 | 2027-09-26 | 2026-09-26 | **1yr** | CB | 24mo multi-year | | C-0F5D2323 | 2026-09-10 | 2026-09-29 | 19d | CB | 24mo multi-year | Two accounts (C-0BCDB8C2, C-0BBE3E60) show ChurnZero dates a full year into the future — classic multi-year contract bug. --- ## Summary **Total ARR Renewing (90 days):** $1,048,715 | Risk Level | Accounts | ARR | |------------|----------|-----| | HIGH | 6 | $359,409 | | LOW | 14 | $689,306 | **ARR at HIGH Risk: $359,409 (34.3% of renewing ARR)** High-risk accounts by ARR: 1. C-0F5D2323 — $90,647 (28% utilization) 2. C-0EC6999D — $79,419 (28% utilization) 3. C-0B7D2C30 — $65,901 (declining usage) 4. C-0BCDB8C2 — $54,427 (declining usage) 5. C-0D2AB865 — $38,022 (declining usage) 6. C-0BBE3E60 — $30,993 (declining usage) All 6 high-risk accounts renew in September/early October. Cole owns 2 ($145K), Elena owns 2 ($117K), Dana owns 2 ($97K).
## Q2 2026 Support Ticket Themes (80 tickets analyzed) ### BROAD PATTERNS (ranked by ARR exposure) | # | Theme | Count | Share | Accounts | ARR Affected | Sample IDs | Recommendation | |---|-------|-------|-------|----------|--------------|------------|----------------| | 1 | **HRIS Provisioning Failures** | 12 | 15.0% | 3 | $114,000 | IC-460059, IC-460060 | Audit HRIS webhook integration; add sync-failure alerting to surface silent drops. | | 2 | **Redemption & Gift Card Failures** | 18 | 22.5% | 7 | $68,800 | IC-460025, IC-460035 | Add idempotency + rollback to redemption flow; auto-refund points on failed orders. | | 3 | **Points Not Posting** | 20 | 25.0% | 9 | $31,100 | IC-460004, IC-460016 | Implement point-ledger reconciliation job; alert on recognition/credit mismatch within 24h. | | 4 | **Slack Integration Failures** | 14 | 17.5% | 4 | $18,900 | IC-460041, IC-460046 | Add Slack connection health check + auto-reconnect; surface OAuth failures to admin. | --- ### SINGLE-ACCOUNT CONCENTRATION | # | Theme | Count | Share | Account | ARR Affected | Sample IDs | Recommendation | |---|-------|-------|-------|---------|--------------|------------|----------------| | 5 | **Billing/Invoice Errors** | 16 | 20.0% | 1 (C-0E9C27D1) | $52,000 | IC-460071, IC-460069 | Escalate to finance for manual audit of C-0E9C27D1; root-cause seat-count sync failure before renewal. | --- **Arithmetic:** - Total tickets: 80 - Broad-pattern ARR: $114K + $68.8K + $31.1K + $18.9K = $232,800 across 23 distinct accounts - Single-account ARR at risk: $52,000 (C-0E9C27D1 filed 16 tickets about seat-count and tier-pricing errors) **Key insight:** HRIS provisioning is the #1 ARR exposure ($114K) despite only 12 tickets—driven by 3 enterprise accounts (C-0B2213A9 at $36K, C-0DDFC9A7 at $48K, C-0F6C0F34 at $30K). Points-not-posting has highest volume (20 tickets) but lowest ARR ($31.1K)—mostly SMB accounts under $5K.
## Social Proof Ranking for Prospect C-82AF3719 **Prospect profile:** Technology | Mid-Market | employee_recognition | NA-West --- ### Customers with Case Studies Ranked by Similarity **#1 — C-64171065** Matches 3 of 4 dimensions: - ✓ Industry: Technology - ✓ Size band: Mid-Market - ✓ Use case: employee_recognition - ✗ Region: NA-East (prospect is NA-West) *Strongest match: identical industry + use case + size band.* --- **#2 — C-A13C193D** Matches 3 of 4 dimensions: - ✓ Industry: Technology - ✓ Size band: Mid-Market - ✗ Use case: retention (prospect is employee_recognition) - ✓ Region: NA-West *Same industry and local region; different use case.* --- **#3 — C-11C31562** Matches 3 of 4 dimensions: - ✗ Industry: Manufacturing (prospect is Technology) - ✓ Size band: Mid-Market - ✓ Use case: employee_recognition - ✓ Region: NA-West *Same use case and region; different industry.* --- ### Arithmetic 8 customers have `has_case_study=true`. Scored each on 4 binary dimensions vs. prospect. Three customers tied at 3/4 matches; ranked by signal strength (industry + use_case weighted highest for social proof relevance).
## Channel Performance — Trailing 6 Months (Mar–Aug 2026) ### Paid Channels ``` Channel Spend SQMs SQOs Cost/SQM Cost/SQO SQM→SQO 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 paid_social $18,000 0 0 UNDEF UNDEF UNDEF $0 UNDEF webinars $9,000 12 5 $750 $1,800 42% $60,000 $6.67 ``` Arithmetic: - paid_search: $6K×6=$36K; 18÷40=45%; $36K÷40=$900; $36K÷18=$2K; $720K÷$36K=$20 - linkedin_ads: $4K×6=$24K; 8÷25=32%; $24K÷25=$960; $24K÷8=$3K; $96K÷$24K=$4 - webinars: $1.5K×6=$9K; 5÷12=42%; $9K÷12=$750; $9K÷5=$1.8K; $60K÷$9K=$6.67 ### Organic Channels ``` Channel Volume (SQMs) SQOs SQO Rate Pipeline ──────────────────────────────────────────────────────────── referral 15 6 40% $48,000 organic_search 30 10 33% $90,000 ``` Arithmetic: - referral: 6÷15=40%; 6×$8K=$48K - organic_search: 10÷30=33%; 10×$9K=$90K ### Flagged Rows (SQO date precedes SQM date) ``` Contact Channel SQM Date SQO Date Issue ───────────────────────────────────────────────────────── CT-000044 linkedin_ads 2026-07-23 2026-07-18 SQO 5 days before SQM CT-000041 linkedin_ads 2026-06-14 2026-06-09 SQO 5 days before SQM ``` Both anomalies are in linkedin_ads. Possible backfill error or stage-skip in CRM. ### Reallocation Recommendation 1. **paid_social: pause or fix tracking.** $18K spent, zero SQMs recorded. Either attribution is broken or channel delivers nothing. Do not reallocate until tracking is verified. 2. **Shift budget toward paid_search.** At $20 pipeline per dollar, it outperforms linkedin_ads by 5× ($4/dollar) and webinars by 3× ($6.67/dollar). If $12K moves from linkedin_ads → paid_search, projected incremental pipeline: $12K × $20 = $240K vs. the $48K it would have generated in linkedin_ads. 3. **Test doubling webinars.** Lowest cost/SQO ($1,800) and strong conversion (42%) but small sample. Add $4.5K/mo (from linkedin_ads or reallocated paid_social) to validate scalability. ### Confidence Assessment | Channel | Confidence | Rationale | |----------------|------------|-----------| | paid_search | HIGH | n=40 SQMs, n=18 SQOs, no data anomalies | | webinars | MEDIUM | n=12 SQMs, n=5 SQOs—directionally reliable but small | | linkedin_ads | LOW | n=25 SQMs, n=8 SQOs, 2 flagged rows (25% of SQOs) suggest data quality issues | | paid_social | NONE | Zero tracked SQMs—cannot evaluate | **Overall confidence: MEDIUM.** paid_search signal is strong; linkedin_ads and paid_social need data audits before major budget shifts.
# Battlecard: Rivally (Updated 2026-09-08) ## One-Line Positioning Points-based recognition platform targeting mid-market with strong EU/distributed team positioning. [S02, S04, S12] ## Pricing **Current list: $7/user/month, annual billing required** [S17, 2026-08-12, pricing_page] Conflict note: Old card stated $5/user/month as of 2026-01. S03 (2026-01-20) and S08 (2026-04-01) confirmed $5. S17 (2026-08-12) shows price increase to $7. Newer source wins. Deal intel: Prospect reported $7/user/mo list with 15% discount offered for 3-year term [S18]. ## Where Rivally Wins - Fast implementation: setup under a week reported [S04] - Slack integration works out of box [S04] - EU data residency now GA [S15] - Multi-language support praised for distributed EU teams [S12] - Engaging recognition feed UX [S02, S16] - Support response time under 4 hours [S22] - Microsoft Teams app v2 in preview [S19] ## Where We Win - Analytics depth: prospect chose Bonusly over Rivally citing this [S25] - Reporting dashboards: Rivally's are "basic compared to enterprise tools" [S07] - SCIM provisioning: Rivally lacks it, manual user management painful [S10] - Admin tooling: lags peers [S16], lacks bulk recognition editing [S24] - Data portability: migration off Rivally hard, exports CSV-only [S20] - EMEA rewards catalog: thinner than US [S14] ## Objections & Responses | Objection | Response | |-----------|----------| | "Rivally has EU data residency" | True as of 2026-07 [S15]. Confirm our EU offering; compete on analytics depth. | | "Rivally is cheaper" | List is now $7/user/mo [S17], same ballpark. Emphasize ROI via analytics. | | "Rivally integrates with Teams" | Their v2 is still preview [S19]. Confirm our Teams integration status. | ## Recent Changes (Last 12 Months) - 2026-09-01: Rivally Pulse (engagement survey add-on) exits beta [S23] - 2026-08-20: Microsoft Teams app v2 enters public preview [S19] - 2026-08-12: Price increase from $5 to $7/user/month [S17] - 2026-07-01: Dublin office opened; EU data residency GA [S15] - 2026-05-09: Hired ex-Workday VP EMEA for European expansion [S11] - 2026-03-05: Launched Rivally Pulse engagement survey add-on [S06] - 2025-11-04: Series C funding, $40M led by Northgate Ventures [S01] ## 12-Month Win/Loss Record vs. Rivally (Sep 2025 – Aug 2026) | Month | Wins | Losses | Deals | |-------|------|--------|-------| | 2025-09 | 1 (Deal-072E31) | 1 (Deal-7767F5) | 2 | | 2025-10 | 2 (Deal-A9FD43, Deal-F65C8F) | 0 | 2 | | 2025-11 | 1 (Deal-7AA785) | 1 (Deal-D263E0) | 2 | | 2025-12 | 1 (Deal-44C524) | 1 (Deal-935746) | 2 | | 2026-01 | 2 (Deal-0D0CD6, Deal-E46EAB) | 0 | 2 | | 2026-02 | 2 (Deal-D5B790, Deal-1D2392) | 0 | 2 | | 2026-03 | 1 (Deal-5C636E) | 1 (Deal-9066A6) | 2 | | 2026-04 | 0 | 2 (Deal-5645A5, Deal-72A02F) | 2 | | 2026-05 | 0 | 1 (Deal-C6FFAA) | 1 | | 2026-06 | 1 (Deal-67BE14) | 0 | 1 | | 2026-07 | 1 (Deal-1B6969) | 0 | 1 | | 2026-08 | 1 (Deal-F03E7B) | 0 | 1 | **Totals: 14 wins, 6 losses, 70% win rate (14/20)** Trend: Strong Feb–Mar 2026 (5-1), soft Apr–May (0-3), rebounded Jun–Aug (3-0). ## Unverified / Removed Claims from Old Card - ❌ "Rivally lacks a Slack integration" — CONTRADICTED by S04 (Slack worked out of box). Removed. - ❌ "Rivally was acquired by WorkHuman in 2025" — NO SOURCE in provided data. Marked unverified; do not use until sourced.
**SEQUENCE METRICS** | Sequence | Sent | Open Rate | Reply Rate | Meeting Rate | Weakest Step | |----------|------|-----------|------------|--------------|--------------| | New Logo Nurture | 500 | 42% (210/500) | 18% (90/500) | 5.4% (27/500) | Step 3 (4.2% reply) | | Expansion Nurture | 300 | 43% (130/300) | 19.7% (59/300) | 4% (12/300) | Step 3 (4.4% reply) | | Cold Outbound - HR Leaders | 600 | 40% (240/600) | **1.3% (8/600)** | **0% (0/600)** | Step 1 (0.83% reply) | | Cold Outbound - People Ops | 400 | 37.5% (150/400) | 7.25% (29/400) | 1.5% (6/400) | Step 3 (1.6% reply) | **TRACKING ERROR** Expansion Nurture Step 2: 340 opens on 300 sent. Impossible. Likely pixel-caching or forwarded-email double-counting. Audit tracking domain or switch to unique-open counting. **AUDIENCE OVERLAP** 21 contacts in BOTH Cold Outbound - HR Leaders AND Cold Outbound - People Ops (CT-000849, CT-000884, CT-000890, CT-000908, CT-001033, CT-001097, CT-001101, CT-001103, CT-001105, CT-001130, CT-001153, CT-001159, CT-001217, CT-001227, CT-001236, CT-001255, CT-001258, CT-001277, CT-001285, CT-001311, CT-001345). Same contacts getting both sequences simultaneously—burning trust and inflating unsubscribes. 2 contacts in BOTH Expansion Nurture AND New Logo Nurture (CT-000301, CT-000624). **FAILURE MODE: COLD OUTBOUND - HR LEADERS (<2% REPLY)** Opens are fine (40%), but 1.3% reply and zero meetings = message-market mismatch. HR Leaders are opening out of curiosity but the value prop doesn't speak to their pain. Likely too generic or wrong seniority assumption. Step 1 sets the ceiling—subsequent steps can't recover from a miss at entry. **ONE CHANGE PER WEAK SEQUENCE** - **HR Leaders**: Rewrite step 1 body to lead with a pain-specific hook (e.g., turnover cost at their company size), not product features. - **People Ops**: Compress step 3 to a 2-sentence breakup email—current copy is losing people who already said no twice. - **Expansion Nurture**: Fix tracking before optimizing; data is untrustworthy. - **New Logo Nurture**: Add social proof to step 3 (case study link). **FIX FIRST**: Cold Outbound - HR Leaders. Largest volume (600), worst reply (1.3%), zero pipeline. Every day it runs is burned budget and list fatigue.
## Q3-2026 Marketing Goals Update **Week ending Sep 8 · 66 of 92 days elapsed (71.7%)** | Metric | QTD Actual | Target | Delta | Pace | |--------|-----------|--------|-------|------| | SQMs | 230 | 300 | -70 | **AHEAD** (expect 215 at 71.7%) | | SQOs | 84 | 120 | -36 | BEHIND (expect 86 at 71.7%) | | DS2s | 40 | 75 | -35 | **BEHIND** (expect 54 at 71.7%) | | Closed-Lost MIA Rate | 20% | ≤10% | +10 pts | **BEHIND** (2× target rate) | | Same-Quarter Closes | 10 | 20 | -10 | BEHIND (expect 14 at 71.7%) | | Active Pipeline | $3.0M | $4.0M | -$1.0M | BEHIND (75% of coverage target) | **Arithmetic:** - MIA rate: 5 MIA ÷ 25 closed-lost = 20% - Pace expectations: target × (66 ÷ 92) - SQMs: 300 × 0.717 = 215 → 230 actual = +7% ahead - SQOs: 120 × 0.717 = 86 → 84 actual = 2% behind - DS2s: 75 × 0.717 = 54 → 40 actual = 26% behind - Same-quarter closes: 20 × 0.717 = 14 → 10 actual = 30% behind **What moved this week:** Data does not include week-over-week deltas, so I cannot isolate this week's contribution. Observable pattern: top-of-funnel (SQMs) is healthy at 107% of pace, but conversion falters downstream—SQM→SQO rate is 37% (84/230) and SQO→DS2 rate is 48% (40/84), leaving DS2s and same-quarter closes materially behind. The 20% MIA rate on closed-lost suggests deals are going dark rather than losing to competition; tightening follow-up cadence or earlier disqualification could help. Pipeline coverage gap ($1M) needs either more qualified opps entering or acceleration of existing mid-stage deals.
Q3 weighted forecast is $116K ($44,729 COMMIT + 35% of $203,565 BEST_CASE). All 7 COMMIT deals have empty why-buys, so the $44,729 floor is undocumented. Fix why-buys on COMMIT before treating this number as reliable.
**Subject:** Following up on the July 28 demo Hi [VP People], Wanted to circle back—I know things get busy. During our July 28 demo, your team had a strong reaction to the automated milestone awards and the points catalog, and you asked for pricing, which I sent over on August 5. I haven't heard back, so I wanted to check: did the pricing land in the right range, or are there questions I can help answer? Happy to jump on a quick call this week if that's easier. Best, Alex --- **Word count:** 79 **Sources cited:** - ENG-00002 (July 28 demo, strong reaction to automated milestone awards and points catalog, asked for pricing) - ENG-00001 (August 5 pricing email, no reply)
**Marketing** The team delivered 46 SQMs against a 52-week target—88% to goal, with room to close the gap. Webinars carried the week, contributing 18 SQMs (39% of total volume). Paid search efficiency held steady at $150 per SQM, keeping acquisition costs predictable as we head into September. **Sales** Strong week on the board: 14 SQOs converted, 9 DS2 meetings locked in, and $310K in new pipeline created. Three deals closed same-quarter, proving the team can move opportunities through the funnel fast when the fit is right. Pipeline health looks solid heading into the holiday-shortened stretch. **CS** The team saved 2 renewals this week—each one a relationship preserved and revenue protected. NPS landed at 61, a healthy signal that customers feel supported. Three red-flag accounts remain open going into next week; the team has eyes on them and plans in place. **PLG** Self-serve momentum continues: 412 new signups joined the platform, with 31% activating. Even better, 38 companies hit the aha moment of 10 recognition gives—the point where teams start feeling the Bonusly magic. That's 38 organizations one step closer to seeing how recognition builds culture. --- *Word count: 197. All figures sourced from week_extracts.md.*
# Partner Digest: 2026-08-24 to 2026-09-04 ## Summary Partner-sourced pipeline: **5 deals, $550,000** Arithmetic: $180,000 + $95,000 + $140,000 + $60,000 + $75,000 = $550,000 --- ## Active Partners **Apex Rewards Co** 2 sourced opps (Deal-DDAAF2, Deal-2CF33E), both DS1. Pipeline: $275,000. Co-webinar locked for 09-15. **HRCloud Partners** 1 sourced opp (Deal-F1CDA5), moved to DS2 after security review. Pipeline: $140,000. **CultureBridge** 2 sourced opps (Deal-096E1D, Deal-067213) from lunch-and-learn, early stage. Pipeline: $135,000. **WorkWell Group** 0 sourced deals this period. Q4 joint playbook restart planned; call booked 09-09. --- ## Quiet Partners **Recogniq** — No activity this period. **KudosWave** — No activity this period. **PeopleFirst Advisors** — No activity this period. **TotalPerk** — No activity this period.
## Security Questionnaire Response | Item | Answer | Source | |------|--------|--------| | Q1 | Yes. AES-256 encryption at rest. | P1 | | Q2 | Yes. TLS 1.2 or higher. | P1 | | Q3 | Yes, SOC 2 Type II, renewed annually. Available under NDA. | P2 | | Q4 | Contract duration + 90 days, then deleted from production. | P3 | | Q5 | Published at trust.bonusly.com. 30 days notice before new subprocessor. | P4 | | Q6 | Yes. SAML 2.0 SSO available on Enterprise plan. | P5 | | Q7 | Daily backups, encrypted, retained 35 days. | P6 | | Q8 | **Unanswerable.** Excerpts do not address ISO 27001. Need: certifications page or compliance documentation. | — | | Q9 | **Unanswerable.** Excerpts do not include SLA terms. Need: Master Service Agreement or SLA addendum. | — | | Q10 | **Unanswerable.** Excerpts do not address HIPAA. Need: HIPAA compliance statement or legal policy. | — |
# Skill Manifest Reconciliation Report ## Summary 14 manifest rows, 14 skill files. No manifest drift. 0 descriptions exceed 1,024 chars (max 1,006). --- ## Findings ### 1. ALWAYS-trigger overlap: comms-drafter ↔ email-drafter **Severity:** CRITICAL **Action:** MERGE Verbatim duplicate triggers between skills: - "write me an email" - "draft a follow-up" - "what should I say" - "bump email" - "contract nudge" - "help me reply" / "help me reply to this" comms-drafter has broader scope (all teams: AEs, SDRs, CSMs, partnerships, rewards, ops, Intercom). email-drafter is AE/SDR/CSM only. Merge email-drafter content into comms-drafter and delete email-drafter. --- ### 2. ALWAYS-trigger overlap: weekly-pipeline-report ↔ pipeline-intelligence-report **Severity:** WARNING **Action:** TRIM_DESC Both trigger on variants of "pipeline report", "pipeline update". Collision risk when user says "run the pipeline report." Trim weekly-pipeline-report description to emphasize specificity: "weekly", "Ben Lavin", "demand generation", "mid-month". Pipeline-intelligence-report owns "full scored pipeline", "tiers", "10-tab". --- ### 3. Circular reference: deal-strategy-coach ↔ email-drafter **Severity:** INFO **Action:** REVIEW - deal-strategy-coach delegates to email-drafter for manager-to-prospect emails - email-drafter lane-marks back to deal-strategy-coach for strategy Not a true infinite loop (email-drafter reference is a lane marker, not a delegation). Pattern is intentional but documentation could be clearer. One-way delegation from deal-strategy-coach → email-drafter only; email-drafter's reference is advisory. --- ### 4. Dangling delegation targets **Severity:** WARNING **Action:** REVIEW Skills referenced but not in manifest: | Target | Referenced by | |--------|---------------| | bonusly-brand | comms-drafter, email-drafter, sales-forecast, signalforge-claim-compressor | | prospect-research-multithreading | comms-drafter, deal-strategy-coach, email-drafter | | skill-orchestrator | signalforge-feedback | | signalforge-reports (org skill) | pipeline-intelligence-report, weekly-pipeline-report, sales-forecast | | 8 bonusly-* specialist skills | analysis-validator (§12.4) | Verify these exist as org skills, plugin skills, or create them. If org skills, no action. If missing, either create or remove references. --- ### 5. Version conflict: analysis-validator **Severity:** INFO **Action:** None v3.5 and v3.6 both dated May 9, 2026. v3.6 is current version in file header. Changelog shows v3.6 added G2-F after v3.5 added G1-L. v3.6 survives. Already resolved. --- ### 6. Descriptions exceeding 1,024 characters **Severity:** INFO **Action:** None Count: **0** Maximum: 1,006 chars (pipeline-intelligence-report, signalforge-claim-compressor) --- ### 7. Hardcoded values in skill bodies **Severity:** WARNING **Action:** UPDATE_BODY | Category | Values | Skills affected | |----------|--------|-----------------| | Stage IDs | 150582536, 150582537, 150582538, 150582539, 1175632767 | analysis-validator, closed-lost-analysis, deal-strategy-coach, next-to-close, pipeline-intelligence-report, stale-pipeline-report | | Owner IDs | 119337721, 77260721, 83155923, 84342457, 83155924, 1520255671 | analysis-validator (§12.3), deal-strategy-coach, pipeline-intelligence-report | | Person names | Bryce Harmon, Dana Mercer, Cole Ingram, Alex Franklin, Gavin Porter, Alaina Loori, Ben Lavin, Amani Phipps, Manish, +15 others | analysis-validator, deal-strategy-coach, pipeline-intelligence-report, partner-digest, weekly-pipeline-report, sales-forecast | | Confluence IDs | 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f (cloud), 2286616609, 2232811524, 2295136266, 2234417154, 2247295002, 2232582148, 2286321666 | partner-digest, sales-forecast, signalforge-feedback | | Slack IDs | C0561C1JCPJ, U03QLMBL7AR | partner-digest, stale-pipeline-report | | Spreadsheet IDs | 1CLZeOsElVDF_LF0ZG_t2nfwvhnZ6bpwqM_nX3WEYzcw, 1ENuaEcCuLjdKhMvp8FK3Ys1ek5Aw9ZuOZhsHJJFoB_k | weekly-pipeline-report | | HubSpot org ID | 1973303 | next-to-close, pipeline-intelligence-report, stale-pipeline-report | | Pricing tables | 2026 per-tier pricing | deal-strategy-coach | | Q1 2026 actuals | $365,152 vs $475,000, $2,490,532 vs $3,288,000 | weekly-pipeline-report | | Population anchors | ~452K provisioned, ~110K dormant | analysis-validator | Recommendation: Centralize constants (stage IDs, owner roster, Confluence/Slack IDs) into a shared reference skill or config, then reference dynamically. Owner roster and pricing tables are highest drift risk. --- ### 8. Manifest drift **Severity:** INFO **Action:** None - Files with no manifest row: 0 - Manifest rows with no file: 0 Exact 14:14 match. No drift. --- ## Action Summary | # | Severity | Action | Target | Description | |---|----------|--------|--------|-------------| | 1 | CRITICAL | MERGE | email-drafter → comms-drafter | Consolidate overlapping triggers | | 2 | WARNING | TRIM_DESC | weekly-pipeline-report | Narrow trigger phrases to avoid collision with pipeline-intelligence-report | | 3 | INFO | REVIEW | deal-strategy-coach ↔ email-drafter | Clarify one-way delegation pattern | | 4 | WARNING | REVIEW | 4 dangling targets | Verify org/plugin existence or remove references | | 5 | INFO | None | analysis-validator | v3.6 survives, already current | | 6 | INFO | None | descriptions | 0 exceed 1,024 chars | | 7 | WARNING | UPDATE_BODY | 8+ skills | Centralize hardcoded IDs, names, pricing, dates | | 8 | INFO | None | manifest drift | No drift detected |
# Runbook: Reward Queue Backlog (Sidekiq) **Source:** #incident-2026-08-29-reward-queue **Trigger:** PagerDuty alert for reward-worker queue depth > 10k --- ## Step 1: Assess queue depth | | | |---|---| | **Action** | `bundle exec rake sidekiq:queue_depth` | | **Who** | Farid Osman | | **Verification** | Output shows current pending job count (was 48,213; normal < 500) | | **Rollback** | N/A — read-only | | **Thread ref** | M02 | --- ## Step 2: Check dead set for root cause | | | |---|---| | **Action** | Inspect Sidekiq dead set for error patterns | | **Who** | Farid Osman | | **Verification** | Found 112 jobs, all Redis::TimeoutError from ~13:58 | | **Rollback** | N/A — read-only | | **Thread ref** | M03 | --- ## Step 3: Pause enqueue to stop inflow | | | |---|---| | **Action** | `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` | | **Who** | Farid Osman | | **Verification** | Thread does not specify how success was verified — **NEEDS CONFIRMATION** | | **Rollback** | `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` | | **Thread ref** | M04 | --- ## Step 4: Clear dead set | | | |---|---| | **Action** | Cleared dead set via Rails console — **exact command not provided, NEEDS CONFIRMATION** | | **Who** | Elena Sinclair | | **Verification** | Not specified in thread — **NEEDS CONFIRMATION** | | **Rollback** | Not provided — dead jobs are not recoverable once cleared | | **Thread ref** | M05 | --- ## Step 5: Scale up workers to drain backlog | | | |---|---| | **Action** | `kubectl scale deployment/reward-worker --replicas=6` | | **Who** | Bryce Harmon | | **Verification** | Queue depth falling ~1,200/min (M07, confirmed by Farid) | | **Rollback** | `kubectl scale deployment/reward-worker --replicas=3` | | **Thread ref** | M06 | --- ## Step 6: Verify queue drained | | | |---|---| | **Action** | `bundle exec rake sidekiq:queue_depth` + check Datadog error rate | | **Who** | Cole Ingram | | **Verification** | Queue depth = 0; Datadog error rate at baseline | | **Rollback** | N/A — read-only | | **Thread ref** | M08 | --- ## Step 7: Re-enable enqueue | | | |---|---| | **Action** | `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` | | **Who** | Bryce Harmon | | **Verification** | 40 new jobs processed cleanly within 3 minutes | | **Rollback** | `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` | | **Thread ref** | M09 | --- ## Step 8: Scale workers back to normal | | | |---|---| | **Action** | `kubectl scale deployment/reward-worker --replicas=3` | | **Who** | Bryce Harmon | | **Verification** | Queue stable at 0 | | **Rollback** | `kubectl scale deployment/reward-worker --replicas=6` | | **Thread ref** | M10 | --- ## Items needing confirmation 1. **Step 4 command** — Elena stated "cleared out the dead set" but did not provide the exact console command. 2. **Step 3 verification** — No explicit confirmation that the feature flag disable took effect. 3. **Step 4 verification** — No explicit confirmation that the dead set was empty after clearing.
## Failure Sequence Analysis ### First Error **Timestamp:** 2026-09-03T14:01:12Z **Service:** reward-service **Message:** `Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s` --- ### Cascade (chronological order) | Timestamp | Service | Event | |-----------|---------|-------| | 14:01:12Z | reward-service | Redis connection timeout (ROOT) | | 14:01:20Z | reward-service | Retry exhausted for RewardGiveJob | | 14:01:40Z | sidekiq | RewardGiveJob failed; queued retry | | 14:02:30Z | sidekiq | Queue depth exceeds 10,000 (backpressure) | | 14:03:05Z | api-gateway | 502 upstream timeout calling reward-service /gives | | 14:03:30Z | web-app | Give form submission failed (user-facing impact) | Pattern continues until 14:22:10Z when Redis connection restored; queue clears by 14:24:45Z. --- ### Service & Job Involved - **Service:** reward-service - **Primary Job:** RewardGiveJob (12 failures in sidekiq_jobs.csv) - **Collateral Job:** RecognitionDigestJob (4 failures, first at 14:02:36Z) --- ### Datadog Query to Confirm First Error ``` service:reward-service status:error "Redis::TimeoutError" | sort timestamp asc | limit 1 ``` Or using Datadog's syntax: ``` @service:reward-service @level:ERROR @message:*redis-primary:6379* ``` --- ### What the Logs Do NOT Show 1. **Redis-side logs** — no entries from redis-primary; root cause unknown (OOM, network partition, crash, slow commands) 2. **Why Redis timed out** — no memory/CPU metrics, no slow-log, no eviction warnings 3. **Recovery action** — logs show "connection restored" but not whether this was auto-reconnect or manual intervention 4. **True job failure count** — sidekiq_jobs.csv shows 16 jobs, but queue depth hit 10,000+; the CSV is a sample, not exhaustive 5. **User impact scope** — no request counts, affected customer IDs, or error rates
## Feature Flag Summary ### Flags with Code References | Flag | State | What It Controls | Targeting | Companies | |------|-------|------------------|-----------|-----------| | recognition_streaks_v2 | ON | Enables StreakTracker.record(give) when recognition is given | segment:beta_companies | 42 | | points_budget_guardrails | ON | Enforces budget limits via BudgetService.enforce!(giver, points) | all_companies | 220 | | slack_dm_nudges | ON | Sends Slack DM nudges to users (SlackDm.send_nudge) | segment:region_na | 87 | | redeem_flow_redesign | OFF | Switches redemption UI from RedeemV1Component to RedeemV2Component | targeted_list | 12 | | analytics_dashboard_v3 | ON | Loads new analytics dashboard (AnalyticsV3) | segment:tier_three | 65 | | ms_teams_app_v2 | OFF | Installs Teams app via TeamsAppV2.install | targeted_list | 9 | ### Flags with NO Code Reference (3) - **legacy_give_modal** — OFF, segment:legacy_plan, 14 companies. No usage found in code excerpt. - **survey_boosters_q3** — ON, segment:legacy_plan, 7 companies. No usage found in code excerpt. - **paused_offboard_cleanup** — OFF, no targeting rules, 0 companies. No usage found in code excerpt. ### Flags with NO Targets (1) - **paused_offboard_cleanup** — OFF, empty targeting_rules, 0 companies. Appears dormant. --- **Company count arithmetic check:** 42 + 220 + 87 + 12 + 65 + 9 + 14 + 7 + 0 = 456 total flag-company assignments (not unique companies; some may overlap across segments).
**NDA-1 — GREEN (standard approval)** Clean mutual NDA: standard carve-outs present, Delaware law, no embedded covenants. No issues. **NDA-2 — YELLOW (counsel review)** Embedded non-solicit: "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." — 18-month tail restricts Bonusly hiring; counsel should confirm acceptable scope. **NDA-3 — RED (full legal review)** Three compounding issues: 1. Non-compete: "Recipient shall not, directly or indirectly, engage in or provide services to any business that competes with Discloser's business" for 3 years — could arguably bar Bonusly from operating its own business. 2. One-way confidentiality favoring [PARTY C]; Bonusly receives no protection. 3. Missing carve-outs: "No confidentiality carve-outs are stated in this Agreement" — no safe harbors for public info, prior knowledge, or legally compelled disclosure. 4. Governing law: "laws of the Republic of Ireland… exclusive jurisdiction of its courts" — unusual venue, litigation exposure abroad.