Mean 0.941 · 31/40 perfect tests · $9.06 total · each card: the question → the correct answer (gold) → this model's actual answer
Definitions: - DS2+ deals = deals with stage DS2, DS3, DS4, or DS5. - Why-buys compliant = why_buys has 15+ substantive characters, is not blank, and is not a placeholder such as tbd, n/a, or see notes. LONG(n) counts as present and substantive. - No DS1 timestamp = t_ds1 is blank. - Regressed = any earlier-stage timestamp is later than a later-stage timestamp. Results: - Overall DS2+ why-buys non-compliance: - 101 non-compliant / 124 DS2+ deals = 81.5% By owner: - Bryce Harmon: - 16 / 19 = 84.2% - Dana Mercer: - 18 / 22 = 81.8% - Alex Franklin: - 47 / 60 = 78.3% - Cole Ingram: - 19 / 22 = 86.4% - Farid Osman: - 1 / 1 = 100.0% DS1 timestamp hygiene: - Deals with no DS1 timestamp: - 0 Stage-order hygiene: - Deals that regressed: - 0 Three process fixes: 1. Make why_buys required before a deal can enter DS2 or later. 2. Add validation to reject blank or placeholder why_buys values, while allowing LONG(n) as compliant. 3. Add a daily pipeline hygiene report by owner showing DS2+ deals missing substantive why_buys before forecast review.
Number of deals resolved: 156 Deals whose owner id has no match in owners table: none Owner ids that map to archived/deactivated owners: none Total pipeline amount per resolved owner: Bryce Harmon (owner_id 119337721): 35 deals, total = 1,054,144 Arithmetic: 24,000 + 19,656 + 13,500 + 7,000 + 2,520 + 240,000 + 99,000 + 72,000 + 70,000 + 63,600 + 45,000 + 1 + 21,000 + 23,400 + 13,680 + 5,502 + 8,160 + 1 + 11,400 + 1 + 36,000 + 31,500 + 6,000 + 10,800 + 30,275 + 17,400 + 12,600 + 18,000 + 37,440 + 18,828 + 2,880 + 36,000 + 20,880 + 10,920 + 25,200 = 1,054,144 Dana Mercer (owner_id 83155923): 24 deals, total = 341,195 Arithmetic: 11,250 + 10,500 + 9,000 + 9,000 + 5,400 + 4,800 + 4,600 + 1,920 + 15,000 + 4,200 + 18,900 + 27,000 + 43,875 + 20,000 + 60,000 + 8,100 + 16,250 + 3,150 + 5,000 + 2,100 + 23,400 + 5,400 + 7,350 + 25,000 = 341,195 Alex Franklin (owner_id 84342457): 67 deals, total = 624,310 Arithmetic: 14,850 + 13,770 + 11,200 + 9,000 + 6,360 + 5,400 + 3,240 + 2,484 + 1,920 + 1,080 + 7,200 + 19,000 + 2,880 + 1,400 + 4,800 + 1,632 + 10,000 + 9,300 + 2,700 + 2,160 + 1,800 + 3,600 + 3,840 + 15,000 + 1,968 + 4,000 + 3,600 + 4,800 + 3,120 + 2,520 + 9,000 + 2,400 + 62,000 + 5,400 + 5,100 + 16,700 + 4,400 + 1,620 + 2,600 + 7,200 + 18,000 + 17,000 + 8,316 + 8,100 + 18,000 + 12,600 + 24,000 + 15,000 + 9,000 + 7,200 + 3,780 + 16,200 + 7,200 + 4,680 + 1,800 + 18,000 + 2,730 + 2,400 + 3,060 + 18,000 + 12,000 + 1,800 + 4,400 + 31,200 + 7,200 + 1,600 + 60,000 = 624,310 Cole Ingram (owner_id 83155924): 22 deals, total = 288,161.43 Arithmetic: 2,760 + 1,330 + 7,225.4 + 3,360 + 5,616 + 2,700 + 7,781.2 + 6,947.5 + 40,000 + 12,168 + 2,480.4 + 11,116 + 11,193 + 1,875 + 31,750 + 32,175 + 4,779.88 + 3,334.8 + 58,529.25 + 4,140 + 18,000 + 18,900 = 288,161.43 Farid Osman (owner_id 716654662): 7 deals, total = 4,134 Arithmetic: 1,249 + 1 + 1 + 1 + 2,880 + 1 + 1 = 4,134 Elena Sinclair (owner_id 701163055): 1 deal, total = 2,100 Arithmetic: 2,100 = 2,100
(a) Orphan gong rows with no matching deal_id in deals_open: 30 Arithmetic: 67 gong rows - 37 gong rows matched to deals_open = 30 orphan rows Sample orphan aliases from gong_calls_by_deal_90d.csv: Deal-8FA85D Deal-8FC3F9 Deal-3B7945 Deal-42B265 Deal-9CCC42 Deal-36EA09 Deal-9A43B4 Deal-605F3C Deal-E2D34B Deal-76821A (b) Duplicate conversation keys: 0 rows Arithmetic: Rows where calls_90d > distinct_conversation_keys = 0 All provided gong rows have calls_90d equal to distinct_conversation_keys. (c) Open deals at DS3 or later with at least one logged call: 25 of 85 = 29.4% Arithmetic: Open DS3+ deals = 85 Open DS3+ deals with deal_id present in gong_calls_by_deal_90d.csv = 25 Share = 25 / 85 = 0.294117647 = 29.4%
```sql -- Cannot produce the requested per-customer-company query using only this catalog: -- PRODUCTION.PLG.COMPANY_COHORT_SUMMARY is documented as one row per self-serve company -- and contains M1_USERS, M1_GIVES, and M1_REDEMPTIONS, but the catalog does not provide -- any customer company identifier/name column to return "per customer company". -- No documented recognition event table is provided for raw giver/recognition counts, -- and the redemption table's company/date columns are not documented here. SELECT 'MISSING DATA: catalog does not provide a customer company identifier column or raw recognition event table columns' AS error_message; ```
Deal data missing: No deals extract was provided. I cannot calculate completeness for owner, stage, amount, close date, or why-buys. I also cannot rank fixes by pipeline amount at stake because no deal amounts or deal-company mapping were provided. Completeness audit Companies: 34 rows - industry: 34 / 34 = 100.0% - employee_count: 25 / 34 = 73.5% - hq_country: 28 / 34 = 82.4% Contacts: 52 rows - email present: 52 / 52 = 100.0% - email valid: 48 / 52 = 92.3% - title: 39 / 52 = 75.0% - persona: 37 / 52 = 71.2% Deals: - owner: not calculable; deals file missing - stage: not calculable; deals file missing - amount: not calculable; deals file missing - close date: not calculable; deals file missing - why-buys: not calculable; deals file missing Duplicate company clusters 1. Shared domain: acme-corp.com - Cluster: C-0A092931, C-0A092932 - Survivor: C-0A092931 - Reason: same completeness as C-0A092932; first CRM row retained. - Conflicts: - C-0A092931: industry=Technology, employee_count=500, hq_country=US - C-0A092932: industry=tech, employee_count=510, hq_country=USA - Fix: merge C-0A092932 into C-0A092931; employee_count conflict cannot be resolved from enrichment because acme-corp.com has no matching enrichment row. 2. Shared domain: globex.io - Cluster: C-0A092933, C-0A092934 - Survivor: C-0A092933 - Reason: same completeness as C-0A092934; first CRM row retained. - Conflicts: - C-0A092933: industry=SaaS, employee_count=200, hq_country=US - C-0A092934: industry=Technology, employee_count=200, hq_country=US - Fix: merge C-0A092934 into C-0A092933; industry conflict cannot be resolved from enrichment because globex.io has no matching enrichment row. Invalid emails - CT-0010, C-66D1FC: email=user0@, expected domain=66d1fc.com - CT-0080, C-92D97D: email=user0@, expected domain=92d97d.com - CT-0081, C-92D97D: email=user1@, expected domain=92d97d.com - CT-0192, C-425E2A: email=user2@, expected domain=425e2a.com Domain mismatches - CT-0011, C-66D1FC: email=user1@other-domain.com, contact domain=66d1fc.com, email domain=other-domain.com Company fields that can be filled from matching enrichment rows - C-EC3025, ec3025.com: employee_count blank -> 400 - C-96039F, 96039f.com: employee_count blank -> 400 - C-44EA29, 44ea29.com: employee_count blank -> 400 - C-D04904, d04904.com: employee_count blank -> 400 - C-B23205, b23205.com: employee_count blank -> 400 - C-60C75F, 60c75f.com: employee_count blank -> 400 - C-7BBDFA, 7bbdfa.com: employee_count blank -> 400 - C-50D386, 50d386.com: employee_count blank -> 400 Company fields still missing after enrichment - C-2D1F1B, 2d1f1b.com: hq_country missing; enrichment also blank - C-D73B89, d73b89.com: hq_country missing; enrichment also blank - C-44EA29, 44ea29.com: hq_country missing; enrichment also blank - C-D04904, d04904.com: hq_country missing; enrichment also blank - C-2C60E5, 2c60e5.com: hq_country missing; enrichment also blank - C-93C8BF, 93c8bf.com: employee_count missing; no matching enrichment row - C-EE9FFB, ee9ffb.com: hq_country missing; no matching enrichment row CRM vs enrichment disagreements Recommend enrichment export as the standardization source where it supplies normalized country names or more specific software industry values. Do not overwrite employee_count where CRM and enrichment both have a value unless explicitly accepted; no employee_count disagreements appeared among matched rows. - C-66D1FC, 66d1fc.com, industry: CRM=tech, enrichment=Computer Software; recommend enrichment - C-66D1FC, 66d1fc.com, hq_country: CRM=US, enrichment=United States; recommend enrichment - C-950043, 950043.com, hq_country: CRM=US, enrichment=United States; recommend enrichment - C-EC3025, ec3025.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-EC3025, ec3025.com, hq_country: CRM=USA, enrichment=United States; recommend enrichment - C-96039F, 96039f.com, hq_country: CRM=USA, enrichment=United States; recommend enrichment - C-44EA29, 44ea29.com, industry: CRM=tech, enrichment=Computer Software; recommend enrichment - C-92D97D, 92d97d.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-D04904, d04904.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-77A95A, 77a95a.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-77A95A, 77a95a.com, hq_country: CRM=US, enrichment=United States; recommend enrichment - C-AA8DDA, aa8dda.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-B23205, b23205.com, hq_country: CRM=US, enrichment=United States; recommend enrichment - C-E51FB7, e51fb7.com, hq_country: CRM=USA, enrichment=United States; recommend enrichment - C-D0662E, d0662e.com, hq_country: CRM=US, enrichment=United States; recommend enrichment - C-B25F40, b25f40.com, industry: CRM=Technology, enrichment=Computer Software; recommend enrichment - C-60C75F, 60c75f.com, industry: CRM=tech, enrichment=Computer Software; recommend enrichment - C-425E2A, 425e2a.com, industry: CRM=Tech, enrichment=Computer Software; recommend enrichment - C-425E2A, 425e2a.com, hq_country: CRM=USA, enrichment=United States; recommend enrichment - C-2D7423, 2d7423.com, hq_country: CRM=USA, enrichment=United States; recommend enrichment Contact completeness fixes needed Missing title and persona: - CT-0000, C-2D1F1B - CT-0022, C-C6FE92 - CT-0081, C-92D97D - CT-0092, C-D04904 - CT-0132, C-B23205 - CT-0162, C-D0662E Missing title only: - CT-0072, C-44EA29 - CT-0080, C-92D97D - CT-0120, C-AA8DDA - CT-0121, C-AA8DDA - CT-0122, C-AA8DDA - CT-0141, C-E51FB7 - CT-0170, C-B25F40 Missing persona only: - CT-0041, C-D73B89 - CT-0060, C-96039F - CT-0070, C-44EA29 - CT-0082, C-92D97D - CT-0110, C-77A95A - CT-0171, C-B25F40 - CT-0172, C-B25F40 - CT-0180, C-60C75F - CT-0181, C-60C75F 10 fixes with the most pipeline amount at stake Cannot provide this ranking. The deals extract is missing, so pipeline amount at stake is unavailable. No deal amounts, deal owners, stages, close dates, why-buys, or deal-company mappings were provided.
Classification table: | Deal | Primary category | Side | |---|---:|---:| | Deal-DB0AAC | timing | buyer | | Deal-F7F635 | competitor | unknown | | Deal-AC944F | no decision | buyer | | Deal-214060 | no decision | buyer | | Deal-91A056 | timing | buyer | | Deal-29326C | timing | buyer | | Deal-5DB9B0 | other | unknown | | Deal-831B7B | timing | buyer | | Deal-F97C37 | competitor | Bonusly | | Deal-13E9CF | no decision | buyer | | Deal-39E25C | timing | buyer | | Deal-7ED004 | pricing | buyer | | Deal-21B045 | no decision | buyer | | Deal-B3ABED | timing | buyer | | Deal-422BA6 | competitor | Bonusly | | Deal-ED9AE7 | timing | buyer | | Deal-988493 | no decision | buyer | | Deal-381C8C | competitor | unknown | | Deal-F308CA | no decision | buyer | | Deal-F1E8A6 | competitor | unknown | | Deal-B6AC09 | timing | buyer | | Deal-70F704 | no decision | buyer | | Deal-E6E80A | timing | buyer | | Deal-B038F0 | timing | buyer | | Deal-4664E1 | no decision | buyer | | Deal-175756 | timing | buyer | | Deal-E74A73 | no decision | buyer | | Deal-DDAB52 | competitor | Bonusly | | Deal-ACE061 | competitor | unknown | | Deal-BB78F3 | timing | buyer | | Deal-D48E0B | no decision | buyer | | Deal-15DA99 | timing | buyer | | Deal-F4AF5D | timing | buyer | | Deal-79B7A1 | timing | buyer | | Deal-583ADB | no decision | buyer | | Deal-8E27DA | competitor | buyer | | Deal-2D2F8D | competitor | unknown | | Deal-E0441F | no decision | buyer | | Deal-7CB44D | no decision | buyer | | Deal-0F96AA | competitor | unknown | | Deal-1BCA50 | competitor | Bonusly | | Deal-7CC678 | competitor | unknown | | Deal-FAC17C | no decision | buyer | | Deal-242273 | product gap | Bonusly | | Deal-50E5D8 | no decision | buyer | | Deal-A2C349 | competitor | Bonusly | | Deal-9F176A | timing | buyer | | Deal-7B2236 | pricing | Bonusly | | Deal-AFA56C | no decision | buyer | | Deal-C7156E | competitor | unknown | | Deal-C33D91 | pricing | buyer | | Deal-9048EB | product gap | Bonusly | | Deal-5E64CE | timing | buyer | | Deal-8A0992 | competitor | Bonusly | | Deal-D0C698 | competitor | buyer | | Deal-69CF3D | timing | buyer | | Deal-ECBF89 | timing | buyer | | Deal-3618CC | product gap | Bonusly | | Deal-EECC02 | competitor | unknown | | Deal-5AD03E | product gap | Bonusly | | Deal-D1A623 | timing | buyer | | Deal-413C56 | no decision | buyer | | Deal-47F1A1 | competitor | buyer | | Deal-BF2A98 | competitor | buyer | | Deal-2A292B | no decision | buyer | | Deal-D1AABF | no decision | buyer | | Deal-FEDBCB | timing | buyer | | Deal-1E7DA9 | competitor | unknown | | Deal-2BBA21 | no decision | buyer | | Deal-286F9C | competitor | Bonusly | | Deal-7FBAC6 | no decision | buyer | | Deal-369281 | competitor | buyer | | Deal-386F6E | no decision | buyer | | Deal-9FCD0D | competitor | Bonusly | | Deal-55867E | other | unknown | | Deal-DAFB82 | pricing | buyer | | Deal-2FEDDB | timing | buyer | | Deal-64B19A | competitor | unknown | | Deal-3F86A0 | no decision | buyer | | Deal-096750 | no decision | buyer | | Deal-F325A5 | champion left | buyer | | Deal-ABD14C | no decision | buyer | | Deal-79E61A | no decision | buyer | | Deal-8A119B | pricing | buyer | | Deal-AE7C4E | no decision | buyer | | Deal-DAB4F1 | no decision | buyer | | Deal-B4B50F | no decision | buyer | | Deal-981AD4 | product gap | Bonusly | | Deal-DC77FE | product gap | Bonusly | | Deal-5885B9 | no decision | buyer | Category counts: | Category | Count | |---|---:| | no decision | 30 | | competitor | 24 | | timing | 22 | | product gap | 6 | | pricing | 5 | | other | 2 | | champion left | 1 | | Total | 90 | Arithmetic: 30 + 24 + 22 + 6 + 5 + 2 + 1 = 90. Side split: | Side | Count | |---|---:| | buyer | 62 | | Bonusly | 15 | | unknown | 13 | | Total | 90 | Arithmetic: 62 + 15 + 13 = 90. Structured tag clearly disagrees with free-text reason: 5 deals. Deals: Deal-70F704, Deal-8E27DA, Deal-3618CC, Deal-5AD03E, Deal-55867E Arithmetic: 5 / 90 deals. Two patterns most worth acting on: 1. “No decision” and “timing” dominate the losses. Arithmetic: no decision 30 + timing 22 = 52 of 90 deals. This is mostly buyer-side: pauses, deprioritization, MIA/unresponsive, reconnect next year, budget approval not secured, or internal priorities. 2. Competitive/product gaps are concentrated around alternatives with broader fit, integrations, customization, surveys, budget access, local/Canadian alignment, or existing HR/payroll/vendor ecosystems. Arithmetic: competitor 24 + product gap 6 = 30 of 90 deals. Bonusly-side examples include Deal-F97C37, Deal-422BA6, Deal-DDAB52, Deal-242273, Deal-9048EB, Deal-3618CC, Deal-5AD03E, Deal-981AD4, and Deal-DC77FE.
{"tier_counts":{"LOCK":3,"ACTION":26,"BUILD":34,"REVIVE":14,"WATCH":58,"RISKY":21},"tier_examples":{"LOCK":["Deal-D348E1","Deal-C26D20","Deal-403845"],"ACTION":["Deal-25F752","Deal-E53952","Deal-5408B0"],"BUILD":["Deal-D73B89","Deal-012CB1","Deal-523604"],"REVIVE":["Deal-2D1F1B","Deal-66D1FC","Deal-950043"],"WATCH":["Deal-6787C2","Deal-C6D97A","Deal-C9C286"],"RISKY":["Deal-547B2B","Deal-B7EBD1","Deal-A2B47C"]},"risky_deals":["Deal-547B2B","Deal-B7EBD1","Deal-A2B47C","Deal-2465CE","Deal-584EE5","Deal-A5E80A","Deal-0660B4","Deal-FD9F4E","Deal-499BF6","Deal-BA571A","Deal-7BBDFA","Deal-1CCE5C","Deal-FA053A","Deal-E531A6","Deal-5296C9","Deal-4A13AD","Deal-690476","Deal-635B8E","Deal-898FC5","Deal-F336B6","Deal-BA3DDC"],"lock_violations":0,"pipeline_shape":"Arithmetic: 3 LOCK + 26 ACTION + 34 BUILD + 14 REVIVE + 58 WATCH + 21 RISKY = 156 total deals; 55 deals have meetings_30d > 0 and 101 have zero meetings_30d, so the pipe is engagement-thin despite 24 late-stage DS4/DS5 deals and 51 forecasted COMMIT/BEST_CASE deals. Engagement rows are missing for Deal-3EED2C and Deal-57FF13, so their meetings_30d evidence is missing from the provided data."}
[
{
"transcript_id": "TX-001",
"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 three cannot keep up with anniversary and birthday awards manually.",
"Right now we track everything in a spreadsheet, and people slip through the cracks."
],
"stakeholders_from_speaker_list": [
"Prospect (VP People)",
"Prospect (HR Admin)"
],
"budget_signal": "We have about $40k earmarked for engagement tools this fiscal year.",
"timeline_signal": "Ideally we would have this live before open enrollment in November.",
"competitor_mentioned": "Achievers",
"next_step": "Security review on September 12.",
"objections": [
"We looked at Achievers last year, but it was too heavy for a team our size.",
"One concern: we need SSO and audit logs for IT to sign off."
],
"confidence": "high"
},
{
"transcript_id": "TX-002",
"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 for hourly workforce is over 30%."
],
"stakeholders_from_speaker_list": [
"Prospect (Head of Total Rewards)",
"Prospect (CFO)"
],
"budget_signal": "Finance has approved a $25k pilot budget for this quarter.",
"timeline_signal": "We want a decision by end of September.",
"competitor_mentioned": null,
"next_step": "Send the pilot agreement; prospect will route it to legal this week.",
"objections": [
"Integration with Workday has to be rock solid — that's my one condition."
],
"confidence": "high"
},
{
"transcript_id": "TX-003",
"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 today."
],
"stakeholders_from_speaker_list": [
"Prospect (People Ops Manager)"
],
"budget_signal": null,
"timeline_signal": "Honestly there's no rush on our side until Q1.",
"competitor_mentioned": "Bucketlist",
"next_step": "Schedule a call with CEO; prospect will send two times.",
"objections": [
"The CEO has to be sold first — she decides anything people-related."
],
"confidence": "high"
},
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": [
"We want to consolidate three separate recognition tools into one."
],
"pain_points": [
"We're paying for three tools and none of them talk to our HRIS."
],
"stakeholders_from_speaker_list": [
"Prospect (VP People)",
"Prospect (IT Security Lead)"
],
"budget_signal": "If it's under $15k annually, I can approve it without going to the board.",
"timeline_signal": "Our procurement cycle runs six to eight weeks minimum.",
"competitor_mentioned": null,
"next_step": null,
"objections": [
"The security review took three months for our last vendor — that's my hesitation.",
"Maybe — I need to check her calendar, no promises."
],
"confidence": "high"
},
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": [
"Two things: automate service milestones, and give us analytics on recognition equity across departments."
],
"pain_points": [
"Night-shift teams feel invisible.",
"Night-shift engagement scores run 20 points lower.",
"Exec team is skeptical after a failed rollout two years ago."
],
"stakeholders_from_speaker_list": [
"Prospect (HR Director)",
"Prospect (People Ops Coordinator)"
],
"budget_signal": "We have $12k approved under our engagement line.",
"timeline_signal": "We need this running before our January all-hands.",
"competitor_mentioned": "Nectar",
"next_step": "Present to exec team on October 2.",
"objections": [
"We're mid-pilot with Nectar right now, so you'd need to beat that experience.",
"Our exec team is skeptical after a failed rollout two years ago."
],
"confidence": "high"
},
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": [
"I'd love to cut the admin time on service awards."
],
"pain_points": [
"I personally spend five hours a month ordering and shipping plaques.",
"Budget isn't the issue — time is."
],
"stakeholders_from_speaker_list": [
"Prospect (HR Manager)"
],
"budget_signal": "Budget isn't the issue — time is.",
"timeline_signal": "Our fiscal year resets in February, so a Q1 start is realistic.",
"competitor_mentioned": "doing it internally",
"next_step": "Send the one-page overview; prospect will forward it to COO this week.",
"objections": [
"Nobody else — we're comparing this against just doing it internally.",
"Fair warning, our COO usually prefers building things in-house."
],
"confidence": "high"
}
]
1. Deal-547B2B — $11,200 Why close: CRM says DS5/COMMIT, close date 2026-09-11. Arithmetic: 2026-09-11 - Slack date 2026-09-04 = 7 days. Slack is strongest: “redlines came back clean,” signing page is out, VP People said they are “signing tomorrow,” and it is “signature-imminent.” What is left: signature. 2. Deal-403845 — $9,000 Why close: CRM says DS5/COMMIT, close date 2026-09-11. Arithmetic: 2026-09-11 - 2026-09-04 = 7 days. Slack says it is “moving fine” and “the order form is with their finance team.” What is left: finance approval / signed order form. 3. Deal-B7EBD1 — $9,000 Why close: CRM says DS5/COMMIT, close date 2026-09-10. Arithmetic: 2026-09-10 - 2026-09-04 = 6 days. No Slack update provided, so closeness is based only on CRM: latest stage among near-term deals, commit forecast, earliest close date. What is left: not stated in provided data. Excluded: Deal-2465CE is DS5/COMMIT in CRM, but Slack says it “went sideways,” procurement froze new vendors, and it is “blocked.”
Data limitations: no deal amounts or active/inactive deal status were provided. Amount is therefore missing for every deal below. Candidates: 1. Deal-EC3025 Amount: missing Prospect quote: “We need SCIM user provisioning — our security team will not approve any tool that requires manual account management.” Classification: real gap Reason: product docs state “SCIM user provisioning” is “NOT currently listed as supported capabilities.” 2. Deal-D0D6B5 Amount: missing Prospect quote: “Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us.” Classification: real gap Reason: product docs list HRIS integrations as Workday, BambooHR, Gusto, Rippling, and state “ADP Workforce Now integrations are NOT currently listed as supported capabilities.” 3. Deal-CFE7F4 Amount: missing Prospect quote: “I tried to build a custom report combining recognition frequency with turnover and couldn't — is that possible on our current plan?” Classification: plan gate Reason: product docs show “Custom report builder” is available on Enterprise only. The prospect’s current plan is not provided. 4. Deal-84DBA6 Amount: missing Prospect quote: “We turned on the Slack integration in July, but half our managers still haven't given a single recognition — nobody ever trained them on it.” Classification: rollout/enablement issue Reason: product docs show Slack integration is supported on all plans; the stated issue is lack of manager training. Excluded: Deal-36C33F Reason: native mobile app limitation was stated by Alex Franklin, not the prospect. Rep language does not count as prospect voice. Prospect said: “Good to know. The web version should be fine for our office staff for now.” Summary — real gaps only: Real gaps = 1 SCIM gap + 1 ADP Workforce Now gap = 2 real gaps. Real-gap deals: - Deal-EC3025: SCIM user provisioning gap; amount missing. - Deal-D0D6B5: ADP Workforce Now integration gap; amount missing. Total real-gap amount: not computable because deal amounts were not provided.
Rule used: stale = no last_email, last_call, or last_meeting from 2026-08-29 through 2026-09-05. Days since last contact = 2026-09-05 minus the most recent provided contact date on or before 2026-09-05. Data missing: Deal-3EED2C and Deal-57FF13 have no engagements_by_deal_90d row, so stale status and days since last contact cannot be computed from the provided engagement fields. Bryce Harmon Deal-2D1F1B | Bryce Harmon | DS1 | 240000 | 2026-09-05 - 2026-06-16 = 81 days Deal-66D1FC | Bryce Harmon | DS1 | 99000 | 2026-09-05 - 2026-08-20 = 16 days Deal-950043 | Bryce Harmon | DS1 | 70000 | 2026-09-05 - 2026-08-17 = 19 days Deal-B23205 | Bryce Harmon | DS1 | 45000 | 2026-09-05 - 2026-08-20 = 16 days Deal-7BBDFA | Bryce Harmon | DS3 | 37440 | 2026-09-05 - 2026-07-21 = 46 days Deal-332637 | Bryce Harmon | DS2 | 36000 | 2026-09-05 - 2026-08-27 = 9 days Deal-1BEEBF | Bryce Harmon | DS1 | 31500 | 2026-09-05 - 2026-08-17 = 19 days Deal-A414F6 | Bryce Harmon | DS1 | 25200 | 2026-09-05 - 2026-08-17 = 19 days Deal-C5658B | Bryce Harmon | DS1 | 23400 | 2026-09-05 - 2026-08-20 = 16 days Deal-40522D | Bryce Harmon | DS3 | 21000 | 2026-09-05 - 2026-08-17 = 19 days Deal-C1FA6D | Bryce Harmon | DS1 | 18000 | 2026-09-05 - 2026-08-20 = 16 days Deal-01E193 | Bryce Harmon | DS1 | 12600 | 2026-09-05 - 2026-08-28 = 8 days Deal-F0EBBB | Bryce Harmon | DS3 | 11400 | 2026-09-05 - 2026-08-12 = 24 days Deal-927338 | Bryce Harmon | DS1 | 10920 | 2026-09-05 - 2026-08-18 = 18 days Deal-E25A09 | Bryce Harmon | DS1 | 6000 | 2026-09-05 - 2026-08-27 = 9 days Deal-C9C286 | Bryce Harmon | DS2 | 5502 | 2026-09-05 - 2026-08-27 = 9 days Deal-012CB1 | Bryce Harmon | DS1 | 1 | 2026-09-05 - 2026-08-13 = 23 days Deal-3795AD | Bryce Harmon | DS2 | 1 | 2026-09-05 - 2026-08-28 = 8 days Bryce Harmon total: 18 stale deals; stale amount = 240000 + 99000 + 70000 + 45000 + 37440 + 36000 + 31500 + 25200 + 23400 + 21000 + 18000 + 12600 + 11400 + 10920 + 6000 + 5502 + 1 + 1 = 692964 Dana Mercer Deal-44EA29 | Dana Mercer | DS2 | 60000 | 2026-09-05 - 2026-08-26 = 10 days Deal-E51FB7 | Dana Mercer | DS2 | 43875 | 2026-09-05 - 2026-08-24 = 12 days Deal-B42F46 | Dana Mercer | DS1 | 27000 | 2026-09-05 - 2026-08-17 = 19 days Deal-BA3DDC | Dana Mercer | DS3 | 23400 | 2026-09-05 - 2026-08-21 = 15 days Deal-9DDE86 | Dana Mercer | DS2 | 20000 | 2026-09-05 - 2026-08-21 = 15 days Deal-215CCA | Dana Mercer | DS3 | 18900 | 2026-09-05 - 2026-08-19 = 17 days Deal-5EED42 | Dana Mercer | DS3 | 16250 | 2026-09-05 - 2026-08-25 = 11 days Deal-57887A | Dana Mercer | DS2 | 15000 | 2026-09-05 - 2026-08-28 = 8 days Deal-944310 | Dana Mercer | DS4 | 10500 | 2026-09-05 - 2026-08-03 = 33 days Deal-B7EBD1 | Dana Mercer | DS5 | 9000 | 2026-09-05 - 2026-08-20 = 16 days Deal-3974EB | Dana Mercer | DS4 | 9000 | 2026-09-05 - 2026-08-28 = 8 days Deal-F40F04 | Dana Mercer | DS2 | 8100 | 2026-09-05 - 2026-08-21 = 15 days Deal-7599B8 | Dana Mercer | DS3 | 7350 | 2026-09-05 - 2026-08-18 = 18 days Deal-87DDD1 | Dana Mercer | DS1 | 5000 | 2026-09-05 - 2026-08-17 = 19 days Deal-F336B6 | Dana Mercer | DS3 | 4200 | 2026-09-05 - 2026-08-21 = 15 days Deal-0660B4 | Dana Mercer | DS4 | 1920 | 2026-09-05 - 2026-08-20 = 16 days Dana Mercer total: 16 stale deals; stale amount = 60000 + 43875 + 27000 + 23400 + 20000 + 18900 + 16250 + 15000 + 10500 + 9000 + 9000 + 8100 + 7350 + 5000 + 4200 + 1920 = 279495 Alex Franklin Deal-CC08D1 | Alex Franklin | DS1 | 24000 | 2026-09-05 - 2026-08-20 = 16 days Deal-E73427 | Alex Franklin | DS3 | 18000 | 2026-09-05 - 2026-08-26 = 10 days Deal-885F45 | Alex Franklin | DS2 | 9300 | 2026-09-05 - 2026-08-24 = 12 days Deal-C2FF3C | Alex Franklin | DS1 | 8316 | 2026-09-05 - 2026-08-26 = 10 days Deal-0D2F7A | Alex Franklin | DS3 | 5100 | 2026-09-05 - 2026-08-24 = 12 days Deal-6C60D4 | Alex Franklin | DS3 | 4800 | 2026-09-05 - 2026-08-24 = 12 days Deal-13FEBD | Alex Franklin | DS2 | 4680 | 2026-09-05 - 2026-08-24 = 12 days Deal-819506 | Alex Franklin | DS1 | 4400 | 2026-09-05 - 2026-08-28 = 8 days Deal-9D0060 | Alex Franklin | DS3 | 3840 | 2026-09-05 - 2026-08-24 = 12 days Deal-690476 | Alex Franklin | DS2 | 3600 | 2026-09-05 - 2026-08-18 = 18 days Deal-C6D97A | Alex Franklin | DS4 | 3240 | 2026-09-05 - 2026-08-28 = 8 days Deal-EE195F | Alex Franklin | DS3 | 3120 | 2026-09-05 - 2026-08-28 = 8 days Deal-278DEC | Alex Franklin | DS3 | 2700 | 2026-09-05 - 2026-08-28 = 8 days Deal-635B8E | Alex Franklin | DS3 | 2600 | 2026-09-05 - 2026-08-18 = 18 days Deal-6883F3 | Alex Franklin | DS1 | 2400 | 2026-09-05 - 2026-08-20 = 16 days Deal-4A13AD | Alex Franklin | DS3 | 2160 | 2026-09-05 - 2026-08-10 = 26 days Deal-F67D31 | Alex Franklin | DS2 | 1800 | 2026-09-05 - 2026-08-28 = 8 days Deal-5FDCE4 | Alex Franklin | DS3 | 1600 | 2026-09-05 - 2026-08-24 = 12 days Deal-BA571A | Alex Franklin | DS4 | 1080 | 2026-09-05 - 2026-08-18 = 18 days Alex Franklin total: 19 stale deals; stale amount = 24000 + 18000 + 9300 + 8316 + 5100 + 4800 + 4680 + 4400 + 3840 + 3600 + 3240 + 3120 + 2700 + 2600 + 2400 + 2160 + 1800 + 1600 + 1080 = 106736 Cole Ingram Deal-D04904 | Cole Ingram | DS2 | 58529.25 | 2026-09-05 - 2026-08-25 = 11 days Deal-B25F40 | Cole Ingram | DS3 | 40000 | 2026-09-05 - 2026-08-28 = 8 days Deal-813836 | Cole Ingram | DS2 | 32175 | 2026-09-05 - 2026-08-25 = 11 days Deal-1BA595 | Cole Ingram | DS2 | 31750 | 2026-09-05 - 2026-08-25 = 11 days Deal-CFE1E8 | Cole Ingram | DS3 | 18000 | 2026-09-05 - 2026-08-25 = 11 days Deal-CD47A6 | Cole Ingram | DS2 | 12168 | 2026-09-05 - 2026-08-25 = 11 days Deal-627646 | Cole Ingram | DS3 | 11193 | 2026-09-05 - 2026-08-25 = 11 days Deal-FF809F | Cole Ingram | DS2 | 7781.2 | 2026-09-05 - 2026-08-25 = 11 days Deal-AF932D | Cole Ingram | DS2 | 7225.4 | 2026-09-05 - 2026-08-25 = 11 days Deal-A71728 | Cole Ingram | DS2 | 6947.5 | 2026-09-05 - 2026-08-25 = 11 days Deal-8BC9F5 | Cole Ingram | DS2 | 5616 | 2026-09-05 - 2026-08-26 = 10 days Deal-175395 | Cole Ingram | DS3 | 4779.88 | 2026-09-05 - 2026-08-25 = 11 days Deal-481E24 | Cole Ingram | DS3 | 4140 | 2026-09-05 - 2026-08-26 = 10 days Deal-C7F9BF | Cole Ingram | DS2 | 3360 | 2026-09-05 - 2026-08-25 = 11 days Deal-2F3A66 | Cole Ingram | DS3 | 3334.8 | 2026-09-05 - 2026-08-25 = 11 days Deal-342E96 | Cole Ingram | DS2 | 2700 | 2026-09-05 - 2026-08-12 = 24 days Deal-E568D5 | Cole Ingram | DS3 | 1875 | 2026-09-05 - 2026-08-25 = 11 days Deal-FD9F4E | Cole Ingram | DS5 | 1330 | 2026-09-05 - 2026-08-26 = 10 days Cole Ingram total: 18 stale deals; stale amount = 58529.25 + 40000 + 32175 + 31750 + 18000 + 12168 + 11193 + 7781.2 + 7225.4 + 6947.5 + 5616 + 4779.88 + 4140 + 3360 + 3334.8 + 2700 + 1875 + 1330 = 252905.03 Farid Osman Deal-8BA24E | Farid Osman | DS1 | 2880 | 2026-09-05 - 2026-08-28 = 8 days Deal-8FDCD2 | Farid Osman | DS1 | 1 | 2026-09-05 - 2026-08-21 = 15 days Farid Osman total: 2 stale deals; stale amount = 2880 + 1 = 2881
Window used: 2026-08-06 through 2026-09-05 inclusive. Per-rep results, ranked by efficiency ratio: lowest activities per DS2 entry = most efficient. | Rank | Owner | Emails | Calls | Meetings | Total activities | DS2 entries | DS2 deal aliases | Activity mix | Activities / DS2 entry | |---:|---|---:|---:|---:|---:|---:|---|---|---:| | 1 | Alex Franklin | 307 | 36 | 41 | 384 | 18 | Deal-403845, Deal-1FC049, Deal-3EED2C, Deal-7FA0C3, Deal-E531A6, Deal-5296C9, Deal-36C33F, Deal-EE195F, Deal-F436DA, Deal-317E6F, Deal-D1E6C2, Deal-D9A72E, Deal-CA5E44, Deal-4F775F, Deal-898FC5, Deal-46988D, Deal-E73427, Deal-92D97D | Emails 307/384 = 79.9%; Calls 36/384 = 9.4%; Meetings 41/384 = 10.7% | 384/18 = 21.33 | | 2 | Bryce Harmon | 162 | 0 | 43 | 205 | 4 | Deal-25F752, Deal-D73B89, Deal-CA7DC0, Deal-1CCE5C | Emails 162/205 = 79.0%; Calls 0/205 = 0.0%; Meetings 43/205 = 21.0% | 205/4 = 51.25 | | 3 | Cole Ingram | 96 | 14 | 1 | 111 | 2 | Deal-42326B, Deal-1BA595 | Emails 96/111 = 86.5%; Calls 14/111 = 12.6%; Meetings 1/111 = 0.9% | 111/2 = 55.50 | | 4 | Farid Osman | 38 | 0 | 34 | 72 | 1 | Deal-499BF6 | Emails 38/72 = 52.8%; Calls 0/72 = 0.0%; Meetings 34/72 = 47.2% | 72/1 = 72.00 | | 5 | Dana Mercer | 84 | 18 | 11 | 113 | 1 | Deal-57887A | Emails 84/113 = 74.3%; Calls 18/113 = 15.9%; Meetings 11/113 = 9.7% | 113/1 = 113.00 | | Not ranked | Elena Sinclair | 0 | 0 | 0 | 0 | 0 | None | No activity mix: 0 total activities | Undefined: 0 DS2 entries | Most efficient rep: Alex Franklin, with 384 total activities / 18 DS2 entries = 21.33 activities per DS2 entry. Highest-volume rep: Alex Franklin, with 384 total activities. They do not differ. Data note: Deal-3EED2C and Deal-57FF13 appear in deals_open.csv but have no matching row in engagements_by_deal_90d.csv, so engagement activity for those deals is missing from the provided engagements table.
QTD scorecard for Alex Franklin as of 2026-09-05 1. Bookings vs quota Closed-won deals included QTD only, excluding pre-quarter closed-won Deal-B3E6F1 dated 2026-06-20. Bookings arithmetic: Deal-A1C3E5 $40,000 + Deal-F2C7D8 $20,000 + Deal-B7D2F4 $35,000 + Deal-C9E1A6 $21,000 + Deal-A8B4D6 $12,000 + Deal-D4B8C2 $11,000 + Deal-E6F3A9 $6,500 + Deal-C5D9E2 $4,500 = $150,000 QTD bookings Quota: $200,000 Attainment arithmetic: $150,000 / $200,000 = 75.0% Result: $150,000 booked vs $200,000 quota = 75.0% attainment 2. New vs expansion split New bookings: Deal-A1C3E5 $40,000 + Deal-B7D2F4 $35,000 + Deal-C9E1A6 $21,000 + Deal-D4B8C2 $11,000 + Deal-E6F3A9 $6,500 = $113,500 new Expansion bookings: Deal-F2C7D8 $20,000 + Deal-A8B4D6 $12,000 + Deal-C5D9E2 $4,500 = $36,500 expansion Split: New: $113,500 / $150,000 = 75.7% Expansion: $36,500 / $150,000 = 24.3% 3. Active pipeline by stage Active pipeline includes open deals only. DS1: $284,621 across 20 deals DS2: $353,760 across 28 deals DS3: $552,705 across 67 deals DS4: $23,574 across 5 deals DS5: $45,730 across 5 deals Total active pipeline arithmetic: $284,621 + $353,760 + $552,705 + $23,574 + $45,730 = $1,260,390 4. Rolling 90-day DS2-to-won rate Rolling 90-day window as of 2026-09-05: deals with entered_ds2 from 2026-06-07 through 2026-09-05. Deals entered DS2 in window: 111 Won deals from that DS2 cohort: 8 Won aliases: Deal-A1C3E5, Deal-F2C7D8, Deal-B7D2F4, Deal-C9E1A6, Deal-A8B4D6, Deal-D4B8C2, Deal-E6F3A9, Deal-C5D9E2 Arithmetic: 8 / 111 = 7.2% Rolling 90-day DS2-to-won rate: 7.2% 5. Win and loss counts with top loss reason QTD wins: 8 QTD losses: 27 Top loss reason: Lost- Timing (1 year or more): 13 losses Loss reason arithmetic: Lost- Timing (1 year or more): 13 MIA: 5 Competitor: 5 Lost DM: 2 Feature Request: 1 Lost- Does not fit ICP (write in notes): 1 6. Activity volume by type in the last 30 days Using ae_engagements.csv columns as provided. Emails: 807 Calls: 112 Meetings: 128 Notes: 50 Total activity arithmetic: 807 + 112 + 128 + 50 = 1,097 total activities 7. Coaching observations grounded in the numbers 1. Alex Franklin is at 75.0% QTD quota attainment with $150,000 booked against a $200,000 quota, leaving $50,000 needed to reach quota. 2. Active pipeline is large at $1,260,390, but it is concentrated in DS3: $552,705 of $1,260,390, or 43.9%. DS5 is only $45,730, which is below the $50,000 remaining quota gap. 3. Loss volume is high relative to wins: 27 losses vs 8 wins QTD. The top loss reason is Lost- Timing (1 year or more) with 13 losses, which is 48.1% of QTD losses.
Data missing: deal amount, stage, and open/closed status are not provided. Therefore, amount = not provided, stage = not provided, and I cannot verify which deals are open. I evaluated all deal aliases present in deal_contacts.csv. Arithmetic used: Active contact = last_engaged_date within last 60 days and is_former = false. Flag if active contact count < 2 OR active contact count < 3 OR all active contacts are in one persona. Personas checked: economic buyer, champion, HR admin, IT security, finance. Flagged deals: 1. Deal-EC3025 - Amount: not provided - Stage: not provided - Active contact arithmetic: 1 active contact = CT-047C54; CT-F2C1AE excluded because is_former = true - Active contact count: 1 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: single-threaded because 1 < 2; under-threaded because 1 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-6827DB, Chief People Officer, economic buyer 2. Deal-92D97D - Amount: not provided - Stage: not provided - Active contact arithmetic: 1 active contact = CT-01F5B4; CT-A902AE excluded because last_engaged_date = 2026-06-01 is outside last 60 days - Active contact count: 1 - Personas present: HR admin - Personas missing: economic buyer, champion, IT security, finance - Flag reason: single-threaded because 1 < 2; under-threaded because 1 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: none on file 3. Deal-50D386 - Amount: not provided - Stage: not provided - Active contact arithmetic: 2 active contacts = CT-AA41B2 + CT-B9C35B - Active contact count: 2 - Personas present: champion, HR admin - Personas missing: economic buyer, IT security, finance - Flag reason: under-threaded because 2 < 3 - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-A1C4B3, Chief People Officer, economic buyer 4. Deal-D0D6B5 - Amount: not provided - Stage: not provided - Active contact arithmetic: 3 active contacts = CT-87CED4 + CT-DE6D7C + CT-FD70B2 - Active contact count: 3 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: under-threaded because all 3 active contacts are in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-1FA4DB, Chief People Officer, economic buyer 5. Deal-5BFE3B - Amount: not provided - Stage: not provided - Active contact arithmetic: 2 active contacts = CT-57123B + CT-5CE757 - Active contact count: 2 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: under-threaded because 2 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: none on file 6. Deal-36C33F - Amount: not provided - Stage: not provided - Active contact arithmetic: 1 active contact = CT-4FE556; CT-405B45 and CT-86B22F excluded because is_former = true - Active contact count: 1 - Personas present: IT security - Personas missing: economic buyer, champion, HR admin, finance - Flag reason: single-threaded because 1 < 2; under-threaded because 1 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-1DB73E, Chief People Officer, economic buyer 7. Deal-885F45 - Amount: not provided - Stage: not provided - Active contact arithmetic: 2 active contacts = CT-51C81E + CT-D9A0E8 - Active contact count: 2 - Personas present: economic buyer, champion - Personas missing: HR admin, IT security, finance - Flag reason: under-threaded because 2 < 3 - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-B3F25D, IT Security Lead, IT security 8. Deal-FCBE5B - Amount: not provided - Stage: not provided - Active contact arithmetic: 1 active contact = CT-4A5317 - Active contact count: 1 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: single-threaded because 1 < 2; under-threaded because 1 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: none on file 9. Deal-5408B0 - Amount: not provided - Stage: not provided - Active contact arithmetic: 2 active contacts = CT-D33AE4 + CT-8742FD - Active contact count: 2 - Personas present: champion, HR admin - Personas missing: economic buyer, IT security, finance - Flag reason: under-threaded because 2 < 3 - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-07FA76, Chief People Officer, economic buyer 10. Deal-C6D97A - Amount: not provided - Stage: not provided - Active contact arithmetic: 3 active contacts = CT-223DDC + CT-B03555 + CT-4E8A2B - Active contact count: 3 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: under-threaded because all 3 active contacts are in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: none on file 11. Deal-F9A08A - Amount: not provided - Stage: not provided - Active contact arithmetic: 1 active contact = CT-931B10; CT-913581 excluded because last_engaged_date = 2026-06-20 is outside last 60 days - Active contact count: 1 - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Flag reason: single-threaded because 1 < 2; under-threaded because 1 < 3; all contacts in one persona - Most valuable persona to add given the stage: cannot determine because stage is not provided - On-file unengaged contact who fits: CT-697541, Chief People Officer, economic buyer
First five minutes: what Alex Franklin leads with - 8 of 10 calls lead with the same customer-outcome story: a 400-person retailer, 18% regretted-turnover reduction, two quarters, automated milestone awards. Quote: “Quick one to kick off: a 400-person retailer we work with cut regretted turnover 18% in two quarters after automating milestone awards, and I wanted to walk you through exactly how they did it.” Deals: Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-EDC141, Deal-D9A12F, Deal-84DBA6 - 1 of 10 calls leads with agenda/security/pricing. Quote: “I put together a short agenda — security review first, then pricing.” Deal: Deal-403845 - 1 of 10 calls leads with straight pricing. Quote: “You asked for straight pricing last time, so let's start there.” Deal: Deal-1E2498 Arithmetic: 8 + 1 + 1 = 10 calls. Three most common objections and how he handles them 1. Budget locked until next fiscal year - Frequency: 4 of 10 calls - Deals: Deal-D348E1, Deal-547B2B, Deal-60C2C2, Deal-84DBA6 - Handling: reframes funding around turnover savings and avoided backfills. - Quote: “Totally fair. Most teams fund this out of turnover savings — that retailer saved about $210k in avoided backfills, which is how their finance team signed off.” 2. Revisit next quarter / timing conflict - Frequency: 3 of 10 calls - Deals: Deal-5408B0, Deal-C61CF7, Deal-D9A12F - Handling: proposes a 90-day pilot with one department to create internal data before planning. - Quote: “Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?” 3. Existing spreadsheet and quarterly gift cards - Frequency: 3 of 10 calls - Deals: Deal-403845, Deal-EDC141, Deal-1E2498 - Handling: contrasts manual recognition with automation, milestone triggers, and recognition analytics. - Quote: “Spreadsheets work until they scale — the difference is automation: milestones fire without HR lifting a finger, and you get analytics on who is being recognized.” Concrete next-step agreement rate - Agreed next step: 7 calls Deals: Deal-D348E1, Deal-5408B0, Deal-547B2B, Deal-C61CF7, Deal-60C2C2, Deal-D9A12F, Deal-1E2498 - No concrete next step agreed: 3 calls Deals: Deal-403845, Deal-EDC141, Deal-84DBA6 Arithmetic: 7 agreed / 10 total calls = 70%. Every competitor a prospect raised - Awardco Deal: Deal-547B2B Quote: “We're also in late talks with Awardco — their rewards catalog looks bigger than yours.” - Kudos Deal: Deal-EDC141 Quote: “How are you different from Kudos? Our CEO used them at her last company.” No prospect raised Workhuman. Workhuman appears only in a Alex Franklin line in Deal-C61CF7. Coaching notes 1. The customer-outcome opener is consistent and appears tied to many of the calls with next-step agreement, but the data provided is not enough to prove causation. 2. When the call reaches the standard next-step ask, prospects often agree; in the stalled calls, Alex Franklin does not consistently re-anchor to a concrete next step after committee/no-urgency responses.
## Q3 2026 forecast Quarter filter: close_date from 2026-07-01 through 2026-09-30. COMMIT total: 44,729 Arithmetic: 11,200 + 9,000 + 9,000 + 6,360 + 5,400 + 2,520 + 1,249 = 44,729 BEST_CASE total: 203,565 Arithmetic: sum of 24 BEST_CASE deals inside Q3 = 203,565 Weighted forecast: 115,976.75 Arithmetic: 100% of COMMIT + 35% of BEST_CASE = 44,729 + (203,565 × 0.35) = 44,729 + 71,247.75 = 115,976.75 ## Deal counts inside Q3 COMMIT: 7 deals BEST_CASE: 24 deals PIPELINE: 23 deals ## Excluded for being outside Q3 Excluded deal count: 32 Excluded amount total: 227,575 Arithmetic: sum of all deals with close_date after 2026-09-30 = 227,575 Excluded deals: - Deal-E51FB7: 43,875, close_date 2026-10-01 - Deal-B936FE: 18,000, close_date 2026-10-09 - Deal-D9A12F: 17,000, close_date 2026-10-15 - Deal-D348E1: 13,770, close_date 2026-10-15 - Deal-4062CF: 10,800, close_date 2026-10-15 - Deal-293AF3: 9,000, close_date 2026-10-09 - Deal-034D49: 9,000, close_date 2026-10-15 - Deal-E0ADD8: 7,920, close_date 2026-10-15 - Deal-9F2E43: 7,690, close_date 2026-10-08 - Deal-FCBE5B: 7,500, close_date 2026-10-07 - Deal-712010: 7,200, close_date 2026-10-15 - Deal-6691E0: 5,700, close_date 2026-10-15 - Deal-C61CF7: 5,400, close_date 2026-10-09 - Deal-600CD9: 5,400, close_date 2026-10-02 - Deal-A92065: 5,400, close_date 2026-10-15 - Deal-1D532E: 5,400, close_date 2026-10-15 - Deal-48B656: 5,160, close_date 2026-10-15 - Deal-E531A6: 4,800, close_date 2026-10-15 - Deal-D1E6C2: 4,400, close_date 2026-10-09 - Deal-D9E112: 4,300, close_date 2026-10-09 - Deal-5AD94B: 4,000, close_date 2026-10-15 - Deal-901332: 3,600, close_date 2026-10-15 - Deal-47AE31: 3,600, close_date 2026-10-09 - Deal-15D24F: 3,600, close_date 2026-10-09 - Deal-766C74: 3,300, close_date 2026-10-14 - Deal-ED725A: 2,400, close_date 2026-10-08 - Deal-8AD4A5: 1,800, close_date 2026-10-07 - Deal-D7E999: 1,800, close_date 2026-10-15 - Deal-ED13B0: 1,680, close_date 2026-10-09 - Deal-5FDCE4: 1,600, close_date 2026-10-01 - Deal-7FA0C3: 1,400, close_date 2026-10-01 - Deal-F5A622: 1,080, close_date 2026-10-08 ## Top 5 BEST_CASE deals inside Q3 1. Deal-2D7423: 38,935, DS3, close_date 2026-09-30 2. Deal-25F752: 24,000, DS4, close_date 2026-09-25 3. Deal-E53952: 19,656, DS4, close_date 2026-09-30 4. Deal-5EED42: 16,250, DS3, close_date 2026-09-30 5. Deal-FA32A0: 11,116, DS3, close_date 2026-09-25 ## Data quality Owner is missing on 85 of 86 deals. why_buys_chars is 0 on 71 of 86 deals, so most deals lack buyer rationale in this extract. Forecast category and stage are inconsistent for some Q3 deals: Deal-A5E80A is COMMIT at DS1 and Deal-499BF6 is COMMIT at DS2. Amount format is inconsistent because Deal-42326B has a decimal amount of 2480.4 while the other amounts are whole numbers.
2x2 activation cohort: | m1_users >= 5 | m1_redemptions >= 1 | Cohort | Retained at 24 months | 24-month retention | |---|---:|---:|---:|---:| | Yes | Yes | both signals | 47 | 31 / 47 = 65.96% | | Yes | No | givers-only | 49 | 23 / 49 = 46.94% | | No | Yes | redemption-only | 29 | 9 / 29 = 31.03% | | No | No | neither | 95 | 38 / 95 = 40.00% | Excluded from denominator: 0 companies. No exclusions were needed because all 220 companies had usable `current_status`, `m1_users`, and `m1_redemptions` values. Single-signal retention lift: - Giver signal: `m1_users >= 5` - With signal: both signals + givers-only = 47 + 49 = 96 companies - Retained: 31 + 23 = 54 - Retention: 54 / 96 = 56.25% - Without signal: redemption-only + neither = 29 + 95 = 124 companies - Retained: 9 + 38 = 47 - Retention: 47 / 124 = 37.90% - Lift: 56.25% - 37.90% = 18.35 percentage points - Redemption signal: `m1_redemptions >= 1` - With signal: both signals + redemption-only = 47 + 29 = 76 companies - Retained: 31 + 9 = 40 - Retention: 40 / 76 = 52.63% - Without signal: givers-only + neither = 49 + 95 = 144 companies - Retained: 23 + 38 = 61 - Retention: 61 / 144 = 42.36% - Lift: 52.63% - 42.36% = 10.27 percentage points Largest single-signal lift: `m1_users >= 5`, with +18.35 percentage points. What this proves: in this extract, companies with both activation signals retained better at 24 months than givers-only, redemption-only, or neither: 65.96% vs 46.94%, 31.03%, and 40.00%. What this does not prove: it does not prove the signals caused retention. The extract does not control for company size, tier, industry, geography, integrations, sales motion, customer quality, or other confounders, and no statistical significance test was requested or performed.
Billing ARR total (active subscriptions only): $604,739.28 CRM company ARR total: $603,581.76 Variance (CRM - Billing): -$1,157.52 Arithmetic: Billing ARR = sum(active MRR x 12) = $604,739.28 CRM ARR = sum(hubspot_arr) = $603,581.76 Variance = $603,581.76 - $604,739.28 = -$1,157.52 Variance decomposition, CRM - Billing: Status mismatch: +$13,158.48 C-0C8323BF: CRM $4,905.24 - Billing $0.00 because SUB-000E is cancelled = +$4,905.24 C-0DC4FB8C: CRM $8,253.24 - Billing $0.00 because SUB-000F is cancelled = +$8,253.24 Rounding: +$36.00 C-0D66DF9E: CRM $23,200.00 - Billing $23,184.00 = +$16.00 C-14D70CE0: CRM $18,200.00 - Billing $18,180.00 = +$20.00 Missing records: -$11,952.00 C-21629AA4: CRM $0.00 - Billing $28,449.24 = -$28,449.24 C-0D5BBE3A: CRM $16,497.24 - Billing $0.00 = +$16,497.24 Net missing records = -$28,449.24 + $16,497.24 = -$11,952.00 Other: -$2,400.00 C-0F7269D7: CRM $24,396.00 - Billing $26,796.00 = -$2,400.00 Check: +$13,158.48 + $36.00 - $11,952.00 - $2,400.00 = -$1,157.52 Mismatched accounts and suggested owner: C-0C8323BF: status mismatch; suggested owner: RevOps / Billing Ops C-0DC4FB8C: status mismatch; suggested owner: RevOps / Billing Ops C-0D66DF9E: rounding; suggested owner: RevOps C-14D70CE0: rounding; suggested owner: RevOps C-21629AA4: missing CRM company record; suggested owner: RevOps / CRM Admin C-0D5BBE3A: missing billing subscription record; suggested owner: Billing Ops C-0F7269D7: other ARR mismatch; suggested owner: RevOps / Billing Ops Agreement end date violations: SUB-0002 / C-1794A52C: term_months = 24, cf_agreement_end_date is missing SUB-0019 / C-22170CA1: term_months = 36, cf_agreement_end_date is missing
Arithmetic: unweighted company average by month; absolute change = 2026-08 value - 2026-07 value; relative change = absolute change / 2026-07 value. | KVM | 2026-08 value | 2026-07 prior | Absolute change | Relative change | Direction | |---|---:|---:|---:|---:|---| | giving rate | 0.6027 | 0.6023 | 0.6027 - 0.6023 = +0.0004 | +0.0004 / 0.6023 = +0.07% | Up | | redemptions per user | 1.7302 | 1.7300 | 1.7302 - 1.7300 = +0.0002 | +0.0002 / 1.7300 = +0.01% | Up | | 1:1 meetings engagement | 0.4472 | 0.4469 | 0.4472 - 0.4469 = +0.0003 | +0.0003 / 0.4469 = +0.06% | Up | | pulse check engagement | 0.5086 | 0.6006 | 0.5086 - 0.6006 = -0.0920 | -0.0920 / 0.6006 = -15.31% | Down | Largest relative move: pulse check engagement, down 15.31%. The data supports size_band as the driver: enterprise pulse engagement fell from 0.5500 to 0.2743, or -0.2757 / 0.5500 = -50.13%. plan_tier does not support segmentation because all rows are tier_three.
Redemption section — through last completed month: 2026-08 Arithmetic: - Redemption count = 378 redemptions - Spend = sum(amount_usd) = $27,846.00 - Unique redeemers = distinct user_key count = 235 - Redemptions per redeemer = 378 / 235 = 1.61 Provider mix by spend: - TangoCard: $3,230.00 / $27,846.00 = 11.6% - Tremendous: $8,505.00 / $27,846.00 = 30.5% - custom: $10,873.00 / $27,846.00 = 39.0% - Snappy: $5,238.00 / $27,846.00 = 18.9% Provider share total = 11.6% + 30.5% + 39.0% + 18.9% = 100.0% Top 5 countries by redemptions: 1. US: 244 2. CA: 24 3. AU: 21 4. GB: 17 5. NL: 17
Eligibility rules applied: R1 health_score < 60 R2 churn_save_eligible_amount > 0 R3 renewal_date within 120 days of 2026-09-05, so through 2027-01-03 Qualifying at-risk churn-save accounts: | account_alias | Amount at stake | Renewal timing | Play | Signal justifying play | |---|---:|---|---|---| | C-0F6C0F34 | $49,707.00 | 2026-10-03 = 28 days | executive touch | champion_active = false | | C-0B827671 | $25,365.00 | 2026-11-14 = 70 days | usage revival | usage_trend_3m = declining; seats_used/seats = 113/202 = 55.9% | | C-0B360C78 | $35,748.00 | 2026-10-28 = 53 days | commercial concession | churn_save_eligible_amount = $35,748.00; usage_trend_3m = growing; champion_active = true | | C-0B0F1BAB | $5,494.00 | 2026-09-23 = 18 days | executive touch | champion_active = false | | C-0CA21961 | $16,829.00 | 2026-12-28 = 114 days | usage revival | usage_trend_3m = flat; seats_used/seats = 84/325 = 25.8% | | C-0E9C27D1 | $41,235.00 | 2026-09-24 = 19 days | commercial concession | churn_save_eligible_amount = $41,235.00; seats_used/seats = 134/157 = 85.4%; champion_active = true | | C-0CEF69FD | $32,621.00 | 2026-11-21 = 77 days | executive touch | champion_active = false | | C-0D3278C7 | $17,602.00 | 2026-11-12 = 68 days | usage revival | usage_trend_3m = declining; seats_used/seats = 126/380 = 33.2% | Arithmetic for total amount at stake: $49,707.00 + $25,365.00 + $35,748.00 + $5,494.00 + $16,829.00 + $41,235.00 + $32,621.00 + $17,602.00 = $224,601.00 Total qualified churn-save amount at stake: $224,601.00 At-risk accounts that do not qualify: | account_alias | Why it looks at risk | Why it does not qualify | |---|---|---| | C-0BC71BDD | health_score = 55, below 60 | churn_save_eligible_amount = $0.00, fails R2 | | C-0BA71F12 | health_score = 52, below 60 | renewal_date = 2027-04-11, 218 days from snapshot, fails R3 | | C-0F6694C3 | health_score = 43, below 60 | churn_save_eligible_amount = $0.00, fails R2; renewal_date = 2027-03-21, 197 days from snapshot, fails R3 | | C-0BE96399 | health_score = 54, below 60 | churn_save_eligible_amount = $0.00, fails R2 | | C-0F876796 | health_score = 47, below 60 | renewal_date = 2027-02-06, 154 days from snapshot, fails R3 | | C-0FCCD2DF | health_score = 43, below 60 | churn_save_eligible_amount = $0.00, fails R2; renewal_date = 2027-04-23, 230 days from snapshot, fails R3 | | C-10A56B0F | health_score = 54, below 60 | churn_save_eligible_amount = $0.00, fails R2 |
Seat coverage: 150 licensed seats / 400 headcount = 37.5% coverage. Usage health: Monthly active users rose every month from 88 in 2026_03 to 126 in 2026_08. 2026_08 usage is 126 / 150 licensed seats = 84.0% of licensed capacity. Headroom: Seat headroom to full headcount = 400 headcount - 150 licensed seats = 250 seats. Current per-seat ARR = $9,000.00 / 150 seats = $60.00 per seat. ARR headroom at current rate = 250 seats * $60.00 = $15,000.00. Who replied / can they buy: Maria S., People Operations Coordinator, replied. She explicitly said she is not the right person for purchasing decisions. Right buyer: Dana R., VP People. Reply email: Hi Maria, Thanks — really glad to hear the team is loving Bonusly, and I appreciate you pointing me in the right direction. One useful data point: monthly active users have climbed every month, from 88 in March to 126 in August, which puts the team at 84% of current licensed seats. Since Dana R. owns budget and seat expansion, would you be open to introducing us? I can keep it lightweight and share the usage snapshot so she has the context she’s already been asking about. Best, Cole
CSM mid-onboarding prep for C-0D284E42 Complete — only where a data field shows it: - Slack integration connected: complete. - integration_slack = 2026-08-12 - Arithmetic: 2026-08-12 - signup_date 2026-08-11 = 1 day after signup - Allowance set: complete. - allowance_set = 2026-08-13 - Arithmetic: 2026-08-13 - signup_date 2026-08-11 = 2 days after signup - Admins added: complete. - admins_added = 2 - First recognition given: complete. - first_recognition_at = 2026-08-15 14:22 - Arithmetic: 2026-08-15 14:22 - signup_date 2026-08-11 = 4 days, 14:22 after signup Not complete / not shown complete: - HRIS integration connected: not complete / missing. - integration_hris is blank - First redemption: not complete / missing. - first_redemption_at is blank Early engagement signals: - Active givers increased from 3 on 2026-08-11 to 15 on 2026-09-04. - Arithmetic: 15 - 3 = +12 active givers - Percentage increase: 12 / 3 = 400% - 25 days of usage data are provided. - Total active-giver daily count across the period = 214. - Arithmetic: sum of daily active_givers = 214 - Average daily active givers across the full period = 8.56. - Arithmetic: 214 / 25 = 8.56 - First 7-day average active givers = 4.29. - Arithmetic: (3+3+4+4+5+4+7) / 7 = 30 / 7 = 4.29 - Last 7-day average active givers = 13.00. - Arithmetic: (11+13+11+13+13+15+15) / 7 = 91 / 7 = 13.00 - Last 7-day average vs. first 7-day average increased by 8.71 active givers. - Arithmetic: 13.00 - 4.29 = 8.71 - Percentage increase: 8.71 / 4.29 = 203.33% - Peak active givers = 15 on 2026-09-03 and 2026-09-04. - Engagement trend is upward, but with some day-to-day variability: - Increases: 11 day-over-day changes - Decreases: 6 day-over-day changes - Flat: 7 day-over-day changes Three things to cover on the call: 1. HRIS integration: confirm why integration_hris is blank and agree on the next step to connect it. 2. First redemption: first_redemption_at is blank, so confirm whether users understand how to redeem and whether enablement or nudges are needed. 3. Expansion of early engagement: active givers grew from 3 to 15, so review what drove adoption and how to broaden participation beyond the current active givers.
90-day renewal risk brief
Risk rubric used from provided data only: High = seat utilization <50% OR 3-month usage decline >=10%; Medium = seat utilization <70% OR any usage decline; Low = otherwise.
3-month trend = 2026-06 -> 2026-07 -> 2026-08.
Disagreements flagged:
- C-0B7D2C30: ChurnZero 2026-09-10 vs Chargebee 2026-09-15; used Chargebee because is_multi_year=true and multi-year contracts are known wrong in ChurnZero.
- C-0BCDB8C2: ChurnZero 2027-09-18 vs Chargebee 2026-09-18; used Chargebee because is_multi_year=true and multi-year contracts are known wrong in ChurnZero.
- C-0D2AB865: ChurnZero 2026-09-10 vs Chargebee 2026-09-22; used Chargebee because is_multi_year=true and multi-year contracts are known wrong in ChurnZero.
- C-0BBE3E60: ChurnZero 2027-09-26 vs Chargebee 2026-09-26; used Chargebee because is_multi_year=true and multi-year contracts are known wrong in ChurnZero.
- C-0F5D2323: ChurnZero 2026-09-10 vs Chargebee 2026-09-29; used Chargebee because is_multi_year=true and multi-year contracts are known wrong in ChurnZero.
Renewals
1. C-0B7D2C30 | CSM: Dana Mercer | ARR: $65,901 | Date used: 2026-09-15
Seat utilization: 274 / 476 = 57.6%
3-month usage trend: 97 -> 94 -> 84; 84 - 97 = -13 (-13 / 97 = -13.4%)
Risk: High — Usage declined 13.4% over the last 3 months and utilization is only 57.6%.
2. C-0BCDB8C2 | CSM: Cole Ingram | ARR: $54,427 | Date used: 2026-09-18
Seat utilization: 232 / 424 = 54.7%
3-month usage trend: 127 -> 118 -> 110; 110 - 127 = -17 (-17 / 127 = -13.4%)
Risk: High — Usage declined 13.4% over the last 3 months and utilization is only 54.7%.
3. C-0D2AB865 | CSM: Elena Sinclair | ARR: $38,022 | Date used: 2026-09-22
Seat utilization: 250 / 407 = 61.4%
3-month usage trend: 125 -> 117 -> 109; 109 - 125 = -16 (-16 / 125 = -12.8%)
Risk: High — Usage declined 12.8% over the last 3 months despite 61.4% seat utilization.
4. C-0BBE3E60 | CSM: Dana Mercer | ARR: $30,993 | Date used: 2026-09-26
Seat utilization: 74 / 114 = 64.9%
3-month usage trend: 39 -> 35 -> 33; 33 - 39 = -6 (-6 / 39 = -15.4%)
Risk: High — Usage declined 15.4% over the last 3 months despite 64.9% seat utilization.
5. C-0F5D2323 | CSM: Cole Ingram | ARR: $90,647 | Date used: 2026-09-29
Seat utilization: 111 / 390 = 28.5%
3-month usage trend: 20 -> 21 -> 18; 18 - 20 = -2 (-2 / 20 = -10.0%)
Risk: High — Utilization is very low at 28.5% and usage declined 10.0% over the last 3 months.
6. C-0EC6999D | CSM: Elena Sinclair | ARR: $79,419 | Date used: 2026-10-03
Seat utilization: 31 / 112 = 27.7%
3-month usage trend: 17 -> 16 -> 15; 15 - 17 = -2 (-2 / 17 = -11.8%)
Risk: High — Utilization is very low at 27.7% and usage declined 11.8% over the last 3 months.
7. C-0B20DB64 | CSM: Dana Mercer | ARR: $21,770 | Date used: 2026-10-07
Seat utilization: 214 / 378 = 56.6%
3-month usage trend: 294 -> 298 -> 294; 294 - 294 = 0 (0 / 294 = 0.0%)
Risk: Medium — Usage is flat, but seat utilization is only 56.6%.
8. C-0BBC4E7A | CSM: Cole Ingram | ARR: $56,374 | Date used: 2026-10-10
Seat utilization: 228 / 337 = 67.7%
3-month usage trend: 142 -> 141 -> 139; 139 - 142 = -3 (-3 / 142 = -2.1%)
Risk: Medium — Usage declined 2.1% and utilization is below 70% at 67.7%.
9. C-0FD551AB | CSM: Elena Sinclair | ARR: $48,815 | Date used: 2026-10-14
Seat utilization: 210 / 376 = 55.9%
3-month usage trend: 123 -> 122 -> 126; 126 - 123 = +3 (+3 / 123 = +2.4%)
Risk: Medium — Usage increased 2.4%, but seat utilization is only 55.9%.
10. C-0F9F8F13 | CSM: Dana Mercer | ARR: $46,230 | Date used: 2026-10-18
Seat utilization: 199 / 352 = 56.5%
3-month usage trend: 185 -> 185 -> 182; 182 - 185 = -3 (-3 / 185 = -1.6%)
Risk: Medium — Usage declined 1.6% and utilization is only 56.5%.
11. C-0BC34584 | CSM: Cole Ingram | ARR: $16,740 | Date used: 2026-10-22
Seat utilization: 327 / 494 = 66.2%
3-month usage trend: 104 -> 104 -> 106; 106 - 104 = +2 (+2 / 104 = +1.9%)
Risk: Medium — Usage increased 1.9%, but utilization remains below 70% at 66.2%.
12. C-0B7A7546 | CSM: Elena Sinclair | ARR: $35,062 | Date used: 2026-10-25
Seat utilization: 182 / 205 = 88.8%
3-month usage trend: 64 -> 65 -> 63; 63 - 64 = -1 (-1 / 64 = -1.6%)
Risk: Medium — Seat utilization is strong at 88.8%, but usage declined 1.6%.
13. C-0B369871 | CSM: Dana Mercer | ARR: $85,128 | Date used: 2026-10-29
Seat utilization: 317 / 422 = 75.1%
3-month usage trend: 326 -> 330 -> 333; 333 - 326 = +7 (+7 / 326 = +2.1%)
Risk: Low — Utilization is 75.1% and usage increased 2.1%.
14. C-0B144C78 | CSM: Cole Ingram | ARR: $30,899 | Date used: 2026-11-02
Seat utilization: 169 / 224 = 75.4%
3-month usage trend: 101 -> 101 -> 106; 106 - 101 = +5 (+5 / 101 = +5.0%)
Risk: Low — Utilization is 75.4% and usage increased 5.0%.
15. C-0FC4DBB8 | CSM: Elena Sinclair | ARR: $94,732 | Date used: 2026-11-05
Seat utilization: 356 / 464 = 76.7%
3-month usage trend: 189 -> 191 -> 193; 193 - 189 = +4 (+4 / 189 = +2.1%)
Risk: Low — Utilization is 76.7% and usage increased 2.1%.
16. C-0D5BBE3A | CSM: Dana Mercer | ARR: $39,740 | Date used: 2026-11-09
Seat utilization: 85 / 102 = 83.3%
3-month usage trend: 88 -> 90 -> 91; 91 - 88 = +3 (+3 / 88 = +3.4%)
Risk: Low — Utilization is 83.3% and usage increased 3.4%.
17. C-0FB9D5AF | CSM: Cole Ingram | ARR: $63,158 | Date used: 2026-11-13
Seat utilization: 144 / 199 = 72.4%
3-month usage trend: 173 -> 173 -> 176; 176 - 173 = +3 (+3 / 173 = +1.7%)
Risk: Low — Utilization is 72.4% and usage increased 1.7%.
18. C-0B344485 | CSM: Elena Sinclair | ARR: $64,384 | Date used: 2026-11-16
Seat utilization: 224 / 287 = 78.0%
3-month usage trend: 238 -> 240 -> 244; 244 - 238 = +6 (+6 / 238 = +2.5%)
Risk: Low — Utilization is 78.0% and usage increased 2.5%.
19. C-0CB2C1B4 | CSM: Dana Mercer | ARR: $40,628 | Date used: 2026-11-20
Seat utilization: 386 / 473 = 81.6%
3-month usage trend: 47 -> 48 -> 49; 49 - 47 = +2 (+2 / 47 = +4.3%)
Risk: Low — Utilization is 81.6% and usage increased 4.3%.
20. C-22170CA1 | CSM: Cole Ingram | ARR: $45,646 | Date used: 2026-11-24
Seat utilization: 251 / 294 = 85.4%
3-month usage trend: 143 -> 148 -> 146; 146 - 143 = +3 (+3 / 143 = +2.1%)
Risk: Low — Utilization is 85.4% and usage increased 2.1%.
Total ARR renewing:
$65,901 + $54,427 + $38,022 + $30,993 + $90,647 + $79,419 + $21,770 + $56,374 + $48,815 + $46,230 + $16,740 + $35,062 + $85,128 + $30,899 + $94,732 + $39,740 + $63,158 + $64,384 + $40,628 + $45,646 = $1,048,715
ARR at risk:
High-risk ARR only = $65,901 + $54,427 + $38,022 + $30,993 + $90,647 + $79,419 = $359,409
Total tickets: 80 1. HRIS provisioning/sync failures Count: 12 Share: 15.0% = 12 / 80 Distinct accounts: 3 ARR affected: $114,000 = C-0B2213A9 $36,000 + C-0DDFC9A7 $48,000 + C-0F6C0F34 $30,000 Ticket ids: IC-460059, IC-460055 Recommendation: Treat as the top broad-pattern risk; prioritize HRIS sync/provisioning reliability and error visibility for high-ARR accounts. 2. Redemption/gift card checkout failures Count: 18 Share: 22.5% = 18 / 80 Distinct accounts: 7 ARR affected: $68,800 = C-0CEF69FD $8,900 + C-0B827671 $10,700 + C-0FCCD2DF $9,600 + C-0F876796 $8,700 + C-0D9CA315 $9,600 + C-14264ABD $11,000 + C-0B0F1BAB $10,300 Ticket ids: IC-460025, IC-460030 Recommendation: Fix checkout/redemption completion and points deduction failure paths; this is a broad pattern across 7 accounts. 3. Invoice/seat-count/tier-price errors Count: 16 Share: 20.0% = 16 / 80 Distinct accounts: 1 ARR affected: $52,000 = C-0E9C27D1 $52,000 Ticket ids: IC-460071, IC-460069 Recommendation: Separate as single-account noise despite high ARR; assign C-0E9C27D1 an owner to resolve billing, seat-count, and renewal tier errors. 4. Recognition points not posting/missing balances Count: 20 Share: 25.0% = 20 / 80 Distinct accounts: 9 ARR affected: $31,100 = C-0D3278C7 $3,500 + C-0BF20542 $4,500 + C-0D0B047C $4,500 + C-0BE96399 $2,700 + C-0D284E42 $3,400 + C-0D6CC8E3 $4,200 + C-21FEBCBB $2,900 + C-0DD0626C $2,500 + C-0B2895EF $2,900 Ticket ids: IC-460004, IC-460016 Recommendation: Investigate recognition-to-points posting pipeline; broadest account spread but lower ARR exposure than HRIS/redemption. 5. Slack recognition integration failures Count: 14 Share: 17.5% = 14 / 80 Distinct accounts: 4 ARR affected: $18,900 = C-0B843542 $4,400 + C-10A56B0F $5,400 + C-0BA71F12 $3,900 + C-8C2E8F00 $5,200 Ticket ids: IC-460041, IC-460047 Recommendation: Stabilize Slack sync, re-auth persistence, and slash command errors; broad pattern, but lowest ARR exposure.
Prospect: C-82AF3719 Fields: Technology, Mid-Market, employee_recognition, NA-West Ranked social proof matches, only customers with has_case_study=true: 1. C-11C31562 — 3/4 match Arithmetic: industry 0 + size_band 1 + use_case 1 + region 1 = 3 Matching fields: - size_band: Mid-Market - use_case: employee_recognition - region: NA-West Non-match: - industry: Manufacturing vs Technology 2. C-64171065 — 3/4 match Arithmetic: industry 1 + size_band 1 + use_case 1 + region 0 = 3 Matching fields: - industry: Technology - size_band: Mid-Market - use_case: employee_recognition Non-match: - region: NA-East vs NA-West 3. C-A13C193D — 3/4 match Arithmetic: industry 1 + size_band 1 + use_case 0 + region 1 = 3 Matching fields: - industry: Technology - size_band: Mid-Market - region: NA-West Non-match: - use_case: retention vs employee_recognition
Trailing 6 months: 2026-03 through 2026-08. Paid channel performance | channel | spend | SQMs | SQOs | cost per SQM | cost per SQO | SQM-to-SQO rate | pipeline amount | pipeline per dollar | |---|---:|---:|---:|---:|---:|---:|---:|---:| | paid_search | $36,000 | 40 | 18 | $900.00 | $2,000.00 | 45.0% | $720,000 | $20.00 | | linkedin_ads | $24,000 | 25 | 8 | $960.00 | $3,000.00 | 32.0% | $96,000 | $4.00 | | paid_social | $18,000 | 0 | 0 | undefined | undefined | undefined | $0 | undefined | | webinars | $9,000 | 12 | 5 | $750.00 | $1,800.00 | 41.7% | $60,000 | $6.67 | Arithmetic: - paid_search spend = $6,000 × 6 = $36,000 - cost per SQM = $36,000 / 40 = $900.00 - cost per SQO = $36,000 / 18 = $2,000.00 - SQM-to-SQO rate = 18 / 40 = 45.0% - pipeline per dollar = $720,000 / $36,000 = $20.00 - linkedin_ads spend = $4,000 × 6 = $24,000 - cost per SQM = $24,000 / 25 = $960.00 - cost per SQO = $24,000 / 8 = $3,000.00 - SQM-to-SQO rate = 8 / 25 = 32.0% - pipeline per dollar = $96,000 / $24,000 = $4.00 - paid_social spend = $3,000 × 6 = $18,000 - SQMs = 0, so cost per SQM, cost per SQO, SQM-to-SQO rate, and pipeline per dollar are undefined - webinars spend = $1,500 × 6 = $9,000 - cost per SQM = $9,000 / 12 = $750.00 - cost per SQO = $9,000 / 5 = $1,800.00 - SQM-to-SQO rate = 5 / 12 = 41.7% - pipeline per dollar = $60,000 / $9,000 = $6.67 Organic channel performance | channel | volume | SQOs | SQO rate | pipeline | |---|---:|---:|---:|---:| | organic_search | 30 | 10 | 33.3% | $90,000 | | referral | 15 | 6 | 40.0% | $48,000 | Arithmetic: - organic_search SQO rate = 10 / 30 = 33.3%; pipeline = $90,000 - referral SQO rate = 6 / 15 = 40.0%; pipeline = $48,000 Rows where SQO date precedes SQM date: - CT-000044, linkedin_ads: SQM date 2026-07-23, SQO date 2026-07-18, pipeline_amount $12,000 - CT-000041, linkedin_ads: SQM date 2026-06-14, SQO date 2026-06-09, pipeline_amount $12,000 Reallocation recommendation: - Reallocate paid_social spend away from paid_social because it spent $18,000 and produced 0 SQMs. - Prioritize reallocating that budget to paid_search first: paid_search has the strongest paid performance with $20.00 pipeline per dollar, 18 SQOs, and 40 SQMs. - Consider a smaller test increase to webinars: webinars has the lowest cost per SQO at $1,800 and $6.67 pipeline per dollar, but the sample is smaller at 12 SQMs and 5 SQOs. - Do not increase linkedin_ads until the two date-quality issues are resolved; linkedin_ads also trails paid_search and webinars on pipeline per dollar. Confidence: moderate. paid_search has the strongest sample size among paid channels at 40 SQMs and 18 SQOs. webinars is promising but lower-confidence due to only 12 SQMs and 5 SQOs. paid_social has no SQM sample, so performance is undefined rather than confidently zero-converting.
# Battlecard: Rivally ## One-line positioning Rivally is a points-based recognition platform with an engaging recognition feed, plus Rivally Pulse as a lightweight engagement-survey add-on that is priced separately from Recognition. [S02, S06, S23] ## Pricing with source and date - Newer source wins: Recognition Starter is $7 per user/month, annual billing required, per Rivally pricing page dated 2026-08-12. [S17] - Conflict noted: older Rivally pricing pages showed $5 per user/month: - 2026-01-20: “$5 per user/month, annual billing required.” [S03] - 2026-04-01: pricing page “still shows $5 per user/month.” [S08] - Deal-price mentions also show movement/conflict: - 2026-06-02: Rivally quoted $6.50/user/mo to a 500-seat prospect, annual term. [S13] - 2026-08-14: prospect said Rivally quoted $7/user/mo list and offered 15% discount for a 3-year term. [S18] - Rivally Pulse is an add-on, not bundled; no numeric Pulse price was provided. [S23] ## Where they win - Engaging points-based recognition feed. [S02, S16] - Fast setup: one mid-market reviewer said setup took under a week. [S04] - Slack integration: one reviewer said Slack integration worked out of the box. [S04] - EU story: Rivally pitched EU data residency; EU data residency later became generally available. [S05, S15] - EU enterprise fit: reviewer praised Rivally for distributed EU teams and multi-language support. [S12] - Support responsiveness: reviewer praised support response time under 4 hours. [S22] ## Where we win - Analytics depth: one 800-seat prospect picked Bonusly over Rivally citing analytics depth. [S25] - Rivally analytics/reporting weaknesses: - Reviewer noted limited analytics. [S02] - Capterra review said reporting dashboards are basic compared to enterprise tools. [S07] - Reviewer said migration off Rivally was hard because analytics exports are CSV-only. [S20] - Enterprise admin/provisioning gaps: - Enterprise reviewer said Rivally lacks SCIM provisioning and manual user management is painful. [S10] - Reviewer said admin tooling lags peers. [S16] - Reviewer said admin console still lacks bulk recognition editing. [S24] - EMEA rewards catalog gap: TrustRadius review said Rivally’s rewards catalog in EMEA is thinner than its US catalog. [S14] ## Objections and responses - Objection: “Rivally is cheaper at $5/user/month.” - Response: That price is from older pricing pages dated 2026-01-20 and 2026-04-01; the newer Rivally pricing page dated 2026-08-12 says Recognition Starter is now $7/user/month, annual billing required. Newer source wins. [S03, S08, S17] - Objection: “Rivally is strong for EU teams.” - Response: Concede EU strength where relevant: EU data residency became generally available, and an EU enterprise reviewer praised distributed EU-team fit and multi-language support. Then probe gaps: EMEA rewards catalog was reviewed as thinner than the US catalog, and enterprise provisioning/admin issues were reported. [S12, S14, S15, S10, S24] - Objection: “Rivally is easy to roll out.” - Response: Concede setup evidence: one mid-market reviewer said setup took under a week and Slack worked out of the box. Then shift to scale/admin: enterprise reviewer said Rivally lacks SCIM provisioning, manual user management is painful, admin tooling lags peers, and bulk recognition editing is still missing. [S04, S10, S16, S24] - Objection: “Rivally’s recognition feed is engaging.” - Response: Concede: reviewers praised the points-based recognition feed and called it engaging. Then differentiate on analytics/reporting depth, where reviewers cited limited analytics, basic dashboards, and CSV-only analytics exports. [S02, S16, S07, S20] ## Recent changes - 2025-11-04: Rivally announced a $40M Series C led by Northgate Ventures. [S01] - 2026-03-05: Rivally launched Rivally Pulse, a lightweight engagement survey add-on. [S06] - 2026-05-09: Rivally hired an ex-Workday VP EMEA to lead European expansion. [S11] - 2026-07-01: Rivally opened a Dublin office and announced EU data residency generally available. [S15] - 2026-08-12: Rivally pricing page updated Recognition Starter to $7 per user/month, annual billing required. [S17] - 2026-08-19/20: Rivally announced Microsoft Teams app v2 in public preview. [S19] - 2026-09-01: Rivally Pulse exited beta and is priced as an add-on, not bundled. [S23] ## Our 12-month win/loss record against Rivally Data provided covers 2025-09 through 2026-08. Arithmetic: - Total deals = 20 - Wins = 13 - Losses = 7 - Win rate = 13 / 20 = 65% - Loss rate = 7 / 20 = 35% Wins: Deal-A9FD43, Deal-7AA785, Deal-44C524, Deal-0D0CD6, Deal-D5B790, Deal-5C636E, Deal-67BE14, Deal-1B6969, Deal-F03E7B, Deal-072E31, Deal-F65C8F, Deal-E46EAB, Deal-1D2392 Losses: Deal-7767F5, Deal-5645A5, Deal-C6FFAA, Deal-D263E0, Deal-935746, Deal-9066A6, Deal-72A02F Monthly record: - 2025-09: 1 win, 1 loss - 2025-10: 2 wins, 0 losses - 2025-11: 1 win, 1 loss - 2025-12: 1 win, 1 loss - 2026-01: 2 wins, 0 losses - 2026-02: 2 wins, 0 losses - 2026-03: 1 win, 1 loss - 2026-04: 0 wins, 2 losses - 2026-05: 0 wins, 1 loss - 2026-06: 1 win, 0 losses - 2026-07: 1 win, 0 losses - 2026-08: 1 win, 0 losses ## Old-card claims that are unverified or corrected - “Positioning: points-based recognition for mid-market.” Partially resourced: points-based recognition/feed is supported; “mid-market” appears only as a reviewer segment, not as company positioning. [S02, S04] - “Pricing: starts at $5 per user/month, annual billing.” Correct historically, but superseded by newer $7/user/month pricing page. [S03, S08, S17] - “Rivally lacks a Slack integration.” Corrected: a reviewer said Slack integration worked out of the box. [S04] - “Rivally was acquired by WorkHuman in 2025.” Unverified: no provided snippet supports this. - “Strong in EU enterprise with multi-language support.” Resourced: EU enterprise reviewer praised distributed EU teams and multi-language support. [S12]
New Logo Nurture: sent 1,386; open rate 490/1,386=35.4%; reply rate 90/1,386=6.5%; meeting rate 27/1,386=1.9%. Weakest step: step 3, replies 18/428=4.2%, meetings 6/428=1.4%. Change: rewrite step 3 with a stronger reason-to-reply/CTA. Expansion Nurture: sent 875; open rate 565/875=64.6%, but unreliable due tracking error; reply rate 59/875=6.7%; meeting rate 12/875=1.4%. Weakest step: step 3, replies 12/275=4.4%, meetings 3/275=1.1%. Change: fix tracking first, then tighten step 3 around expansion trigger/value. Cold Outbound - HR Leaders: sent 1,785; open rate 545/1,785=30.5%; reply rate 8/1,785=0.4%; meeting rate 0/1,785=0.0%. Weakest step: step 3, replies 1/590=0.2%, meetings 0/590=0.0%. Failure mode under 2% reply: opens exist but replies/meetings do not, so the issue is likely offer/message fit, not just deliverability. Change: replace the sequence with a new HR-specific pain/trigger and clearer CTA. Cold Outbound - People Ops: sent 1,163; open rate 340/1,163=29.2%; reply rate 29/1,163=2.5%; meeting rate 6/1,163=0.5%. Weakest step: step 3, replies 6/377=1.6%, meetings 1/377=0.3%. Failure mode under 2% at step 3: late-step fatigue/weak follow-up. Change: cut or rewrite step 3 with a new angle. Tracking errors: Expansion Nurture step 2 has opened 340 above sent 300; open rate 340/300=113.3%. Audience overlap: New Logo Nurture overlaps Expansion Nurture on CT-000301, CT-000624. Cold Outbound - HR Leaders overlaps Cold Outbound - People Ops on 21 contacts including CT-000849, CT-001255, CT-001105, CT-000884, CT-001103, CT-001217, CT-001345, CT-001153, CT-001258, CT-001033, CT-001130, CT-000890, CT-001097, CT-000908, CT-001311, CT-001277, CT-001227, CT-001101, CT-001236, CT-001285, CT-001159. Fix first: Cold Outbound - HR Leaders, because reply rate is 0.4% and meetings are 0.
Active quarter: Q3-2026. Days elapsed: 66 / 92 = 71.7% of quarter. | Goal | QTD actual | Target | Delta | Pace | |---|---:|---:|---:|---| | SQMs | 230 | 300 | 230 - 300 = -70 | Ahead: paced target = 300 × 66 / 92 = 215.2; actual 230 is +14.8 ahead of pace | | SQOs | 84 | 120 | 84 - 120 = -36 | Behind: paced target = 120 × 66 / 92 = 86.1; actual 84 is -2.1 behind pace | | DS2s | 40 | 75 | 40 - 75 = -35 | Behind: paced target = 75 × 66 / 92 = 53.8; actual 40 is -13.8 behind pace | | Closed-lost MIA rate | 5 / 25 = 20.0% | 10.0% | 20.0% - 10.0% = +10.0 pp | Behind: lower is better, and 20.0% is above the 10.0% target | | Same-quarter closes | 10 | 20 | 10 - 20 = -10 | Behind: paced target = 20 × 66 / 92 = 14.3; actual 10 is -4.3 behind pace | | Active pipeline coverage against target | $3,000,000 / $4,000,000 = 75.0% | $4,000,000 / $4,000,000 = 100.0% | $3,000,000 - $4,000,000 = -$1,000,000, or -25.0 pp coverage | Ahead: paced target = $4,000,000 × 66 / 92 = $2,869,565; actual $3,000,000 is +$130,435 ahead of pace | What moved this week: Weekly movement cannot be determined from the provided data because only QTD actuals, targets, and quarter timing were provided; no prior-week or weekly-change data is included. Current QTD position shows SQMs and active pipeline ahead of elapsed-quarter pace, while SQOs, DS2s, same-quarter closes, and closed-lost MIA rate are behind target/pacing.
Use $115,976.75 as the Q3 forecast: $44,729 COMMIT + 35% x $203,565 BEST_CASE = $115,976.75, with PIPELINE at $0. Caveat: 32 deals worth $227,575 are excluded after 2026-09-30, including COMMIT Deal-D348E1 at $13,770 and 9 BEST_CASE totaling $28,240. Do not roll up by rep because owner is blank on 85 of 86 deals.
Subject: Following up on Deal-0D2F7A Hi, Following up on my Aug. 5 recap of the July 28 demo with pricing for 150 seats. Is the People team still evaluating this, or should we close the loop for now? Best, Alex
Marketing: SQMs landed at 46 against a 52 target, which is 6 short (52 - 46 = 6) and 88.5% of goal (46 / 52 = 88.5%). Webinar contributed 18 SQMs, or 39.1% of the week’s SQMs (18 / 46 = 39.1%). Paid search cost per SQM held at $150. Sales: Sales converted 14 SQOs and set 9 DS2 meetings. New pipeline created was $310,000, which averages $22,142.86 per SQO ($310,000 / 14 = $22,142.86). Same-quarter close count for the week was 3. CS: CS saved 2 renewals this week. Team NPS moved to 61. There are 3 open red-flag accounts heading into next week, so the team is carrying more red-flag accounts than saved renewals by 1 (3 - 2 = 1). PLG: PLG added 412 new signups with activation at 31%, which equals 127.72 activated signups (412 × 31% = 127.72). 38 companies reached the aha moment of 10 recognition gives, equal to 9.2% of new signups if compared directionally to signup volume (38 / 412 = 9.2%).
Partner digest: 2026-08-24 to 2026-09-04 Partner-sourced pipeline total: 5 deals, $550,000 Arithmetic: $180,000 + $95,000 + $140,000 + $60,000 + $75,000 = $550,000 Apex Rewards Co — active. Co-webinar locked for 09-15. Sourced 2 DS1 opps: Deal-DDAAF2 ($180,000) and Deal-2CF33E ($95,000). Pipeline arithmetic: 2 deals; $180,000 + $95,000 = $275,000. HRCloud Partners — active. Integration referral closed security review and moved to DS2. Sourced 1 opp: Deal-F1CDA5 ($140,000). Pipeline arithmetic: 1 deal; $140,000. CultureBridge — active. Lunch-and-learn produced 2 early-stage sourced opps: Deal-096E1D ($60,000) and Deal-067213 ($75,000). Pipeline arithmetic: 2 deals; $60,000 + $75,000 = $135,000. WorkWell Group — active. Wants to restart the joint playbook in Q4; no sourced deals this period; planning call booked for 09-09. Pipeline arithmetic: 0 deals; $0. Recogniq — quiet. No Slack activity or partner-sourced deals provided for this period. Pipeline arithmetic: 0 deals; $0. KudosWave — quiet. No Slack activity or partner-sourced deals provided for this period. Pipeline arithmetic: 0 deals; $0. PeopleFirst Advisors — quiet. No Slack activity or partner-sourced deals provided for this period. Pipeline arithmetic: 0 deals; $0. TotalPerk — quiet. No Slack activity or partner-sourced deals provided for this period. Pipeline arithmetic: 0 deals; $0.
Q1. Yes. Customer data is encrypted at rest using AES-256. [P1] Q2. Yes. Data in transit is encrypted with TLS 1.2 or higher. [P1] Q3. Yes. Bonusly maintains a SOC 2 Type II report, renewed annually. The report is available to prospects under NDA. [P2] Q4. Customer data is retained for the duration of the contract plus 90 days after contract termination, then deleted from production systems. Arithmetic: contract duration + 90 days. [P3] Q5. The current subprocessor list is published at trust.bonusly.com. Customers receive 30 days’ notice before a new subprocessor is added. [P4] Q6. Yes. SAML 2.0 single sign-on is available on the Enterprise plan. [P5] Q7. Production databases are backed up daily. Backups are encrypted and retained for 35 days. Arithmetic: 1 backup per day; backup retention = 35 days. [P6] Q8. Unanswerable from the provided excerpts. The excerpts do not state whether Bonusly holds ISO 27001 certification. This would be answered by an ISO 27001 certificate, compliance certifications page, or security/compliance documentation. Q9. Unanswerable from the provided excerpts. The excerpts do not state a contractual uptime SLA percentage. This would be answered by the service level agreement, master services agreement, or uptime SLA documentation. Q10. Unanswerable from the provided excerpts. The excerpts do not state whether Bonusly will sign a HIPAA Business Associate Agreement. This would be answered by a HIPAA/BAA policy, legal terms, or healthcare compliance documentation.
Findings | # | Severity | Action type | Finding | Evidence / arithmetic | Proposal | |---|---|---|---|---|---| | 1 | CRITICAL | MERGE | ALWAYS-trigger overlap: `comms-drafter` and `email-drafter` duplicate email-writing triggers. | `comms-drafter`: "write me an email", "draft a follow-up", "help me reply", "what should I say", "bump email", "contract nudge". `email-drafter`: same phrases plus "review this email", "rewrite this". | Merge or clearly route: make `comms-drafter` the broad external-communications umbrella and preserve `email-drafter` only as the email-specific execution/signature module. | | 2 | WARNING | REVIEW | ALWAYS-trigger overlap: `pipeline-intelligence-report` and `weekly-pipeline-report` both claim generic pipeline-report/update asks. | `pipeline-intelligence-report`: "run the pipeline report", "pipeline review", "pipeline update", "what's the pipeline look like". `weekly-pipeline-report`: "run the pipeline update", "weekly pipeline report", "pipeline summary", "generate the pipeline report", "update the pipeline", "what does pipeline look like". | Clarify trigger boundary: `pipeline-intelligence-report` = full scored/tiered active-deal intelligence; `weekly-pipeline-report` = weekly performance metrics/SQM/SQO/DS2/bookings HTML. | | 3 | WARNING | REVIEW | ALWAYS-trigger overlap: `sales-forecast` and `pipeline-intelligence-report` both claim forecast/pipeline-health asks. | `sales-forecast`: "pipeline forecast", "deal-level confidence", "quarter-close risk", "current quarter revenue outlook". `pipeline-intelligence-report`: "pipeline health or forecast context", "score the pipeline". | Route current-quarter revenue outlook to `sales-forecast`; route scored active-deal tiers to `pipeline-intelligence-report`. | | 4 | WARNING | REVIEW | ALWAYS-trigger overlap: `sales-forecast` and `next-to-close` can both trigger on close-likelihood questions. | `sales-forecast`: "what do we think we're going to close", "deal-level confidence". `next-to-close`: "next to close", "what's about to close", "which deals are most likely to close", "closest to signature". | Route shortlists of specific near-close deals to `next-to-close`; route quarter forecast totals and forecast-category analysis to `sales-forecast`. | | 5 | WARNING | REVIEW | Universal ALWAYS trigger in `model-selection` overlaps every skill. | `model-selection`: "ALWAYS run this skill at the start of every task, without exception". This conflicts by scope with all other ALWAYS-trigger skills, though it is positioned as a planning gate. | Keep only if intended as orchestration-level preflight; otherwise narrow to model-planning tasks. | | 6 | CRITICAL | UPDATE_BODY | Circular delegation chain exists: `deal-strategy-coach` → `email-drafter` → `deal-strategy-coach`. | `deal-strategy-coach`: "When drafting manager-to-prospect emails, use the `email-drafter` skill". `email-drafter`: "For deal strategy, diagnosis, or coaching... use deal-strategy-coach instead." | Break loop: make `deal-strategy-coach` own diagnosis and call `email-drafter` as terminal drafting only; make `email-drafter` not route back when invoked by `deal-strategy-coach`. | | 7 | CRITICAL | UPDATE_BODY | Larger circular delegation chain exists: `comms-drafter` → `deal-strategy-coach` → `email-drafter` → `deal-strategy-coach`. | `comms-drafter`: "For deep deal strategy, use deal-strategy-coach". `deal-strategy-coach`: "When drafting manager-to-prospect emails, use the `email-drafter` skill". `email-drafter`: "For deal strategy... use deal-strategy-coach instead." | Define a single owner by intent: strategy first = `deal-strategy-coach`; draft-only = `email-drafter` or `comms-drafter`; no recursive handoff. | | 8 | CRITICAL | UPDATE_BODY | Dangling delegation target: `bonusly-brand` does not exist in the manifest/files provided. | Referenced by `comms-drafter`, `email-drafter`, and `sales-forecast`. Manifest rows/files contain 14 skills and no `bonusly-brand`. | Add `bonusly-brand` to manifest/files or remove/replace the dependency. | | 9 | CRITICAL | UPDATE_BODY | Dangling delegation target: `prospect-research-multithreading` does not exist in the manifest/files provided. | Referenced by `comms-drafter`, `email-drafter`, and `deal-strategy-coach`. No manifest row/file exists. | Add `prospect-research-multithreading` or remove the handoff. | | 10 | CRITICAL | UPDATE_BODY | Dangling specialist-skill targets in `analysis-validator`. | `analysis-validator` references `bonusly-data-questions`, `bonusly-product-questions`, `bonusly-business-reporting-questions`, `bonusly-rewards-questions`, `bonusly-ppp-questions`, `bonusly-feature-flag-questions`, `bonusly-deal-desk-questions`, `bonusly-datadog-questions`. None appear in manifest/files. | Add these specialist skills to manifest/files or replace the delegation table with existing targets. | | 11 | WARNING | REVIEW | Possible dangling referenced skill/path: `signalforge-reports`. | `pipeline-intelligence-report` and `weekly-pipeline-report` instruct reading `/mnt/skills/organization/signalforge-reports/...`; no manifest row/file for `signalforge-reports` is provided. | Confirm whether `signalforge-reports` is intentionally external to this manifest. If it belongs to this set, add a manifest row/file. | | 12 | WARNING | REVIEW | Possible dangling registry target: `skill-orchestrator`. | `signalforge-feedback` says skill should be registered in `skill-orchestrator`; no manifest row/file exists. | Confirm whether `skill-orchestrator` is outside scope. If not, add it or remove the registration dependency. | | 13 | WARNING | UPDATE_BODY | Version conflict inside `analysis-validator`: current version is 3.6, but validation trail template still says v3.2. | Header: `Version: 3.6`. Footer: `Produced by SignalForge · analysis-validator v3.6`. Template: `Validator: analysis-validator v3.2`. | `analysis-validator` v3.6 should survive; update the stale v3.2 reference. | | 14 | WARNING | UPDATE_BODY | Version conflict inside `sales-forecast`: changelog says quarter-agnostic, but body still contains Q2-specific instructions. | Changelog v1.1: "Quarter-agnostic (Q2 → current quarter throughout)." Body: "Open Q2 Deals", "Q2 total", "Q2 QTD vs Q1 full quarter", "Q2 Narrative", examples around Q2. | `sales-forecast` v1.1 quarter-agnostic version should survive; update Q2-specific body references. | | 15 | INFO | REVIEW | Manifest descriptions exceeding 1,024 characters: none. | Arithmetic: 14 manifest rows checked. Values over 1,024 = 0. Max description_chars = 1,006 (`pipeline-intelligence-report`, `signalforge-claim-compressor`). 1,006 < 1,024. Count = 0 / 14. | No trim required. | | 16 | WARNING | UPDATE_BODY | Hardcoded page IDs and object IDs exist in skill bodies. | Examples: `partner-digest` has Cloud ID `73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f`, Space ID `1958248479`, folder ID `2286616609`, page IDs `2286321666`, `2265382925`, `2236940297`, `2237825028`, `2239365136`, `2238283777`. `signalforge-feedback` has Page ID `2295136266`, spaceId `2232811524`, Parent `2234417154`, Build Log page `2247295002`. `sales-forecast` has Parent page ID `2232582148`. `pipeline-intelligence-report` hardcodes HubSpot org ID `1973303`. | Move IDs to configurable references or manifest metadata; keep bodies free of environment-specific IDs where possible. | | 17 | WARNING | UPDATE_BODY | Hardcoded spreadsheet IDs exist in skill bodies. | `weekly-pipeline-report`: `1CLZeOsElVDF_LF0ZG_t2nfwvhnZ6bpwqM_nX3WEYzcw`, `1ENuaEcCuLjdKhMvp8FK3Ys1ek5Aw9ZuOZhsHJJFoB_k`. | Move spreadsheet IDs to config/reference metadata. | | 18 | WARNING | UPDATE_BODY | Hardcoded dates exist across skill bodies. | Examples: `analysis-validator`: `April 26, 2026`, `May 9, 2026`, `May 4, 2026`, `March 28, 2023`. `model-selection`: `2026-05-19`. `partner-digest`: `May 16, 2026`, `May 19, 2026`, `June 2, 2026`, `2026-05-17`. `sales-forecast`: `April 27, 2026`, Q2 references. `stale-pipeline-report`: `2026-06-10`, example dates `5/15`, `5/19`. `weekly-pipeline-report`: `April 1 – June 30, 2026`, `Q1 2026`. | Replace execution dates with dynamic date logic unless the date is truly historical changelog data. | | 19 | WARNING | REVIEW | Hardcoded person names exist across skill bodies. | Examples: `analysis-validator`: Manish, Amani, Alaina Loori, Shealagh Coughlin, Bryce Harmon, Hugo Lindqvist, Dana Mercer, Alex Franklin, Cole Ingram, Gavin Porter, Colleen Perry, Ellie Barton, Ashley Reyer, Megan Franz, Elena Sinclair, Youssef Elkhateeb, Amanda Czenkus, Ben Castelli, John Thomas, Yasmin Wahid. `partner-digest`: Amani Phipps, Kelli, Jen Lee, Hani, Bryce, Sara. `weekly-pipeline-report`: Ben Lavin, Ben. `sales-forecast`: Alaina, Elena. `deal-strategy-coach`: Alaina Loori, Farid. | Review whether names are stable reference data or should be dynamically resolved from HubSpot/roster sources. | | 20 | INFO | REVIEW | Manifest drift, files with no manifest row: none. | Arithmetic: files provided = 14. Manifest rows = 14. File set minus manifest set = 0. | No action needed. | | 21 | INFO | REVIEW | Manifest drift, manifest rows with no file: none. | Arithmetic: manifest rows = 14. Files provided = 14. Manifest set minus file set = 0. | No action needed. |
Runbook — reward-worker queue depth incident | Order | Trace | Who ran it | Exact command or action taken | State changed? | Success verification from thread | Rollback | |---:|---|---|---|---|---|---| | 1 | [M01] | Bryce Harmon | Acknowledged PagerDuty alert for `reward-worker` queue depth > 10k and took IC. | No | Alert condition stated: queue depth > 10k. No separate success verification stated. Needs confirmation if acknowledgement verification is required. | Not applicable. | | 2 | [M02] | Farid Osman | Ran `bundle exec rake sidekiq:queue_depth` | No | `reward` queue was 48,213 pending jobs. Normal is under 500. Arithmetic over normal threshold: 48,213 - 500 = 47,713 above stated normal upper bound. | Not applicable. | | 3 | [M03] | Farid Osman | Checked dead set. | No | Dead set had 112 jobs, all `Redis::TimeoutError` from around 13:58. | Not applicable. | | 4 | [M04] | Farid Osman | Paused enqueue to stop the bleed: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` | Yes | No direct verification stated immediately after this step. Later queue depth was down to 9,400 and falling ~1,200/min [M07]. Needs confirmation whether that was accepted as verification of this specific step. | `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` | | 5 | [M05] | Elena Sinclair | Cleared out the dead set while in the console. | Yes | No success verification stated. Needs confirmation. Exact command/action is unclear because the thread only says “cleared out the dead set.” | No rollback stated. Needs confirmation. | | 6 | [M06] | Bryce Harmon | Scaled workers up: `kubectl scale deployment/reward-worker --replicas=6` | Yes | Previous replica count was 3. Later queue depth was down to 9,400 and falling ~1,200/min [M07]. Arithmetic: 48,213 - 9,400 = 38,813 fewer pending jobs from [M02] to [M07]. Needs confirmation whether that was accepted as verification of the scale-up specifically. | `kubectl scale deployment/reward-worker --replicas=3` | | 7 | [M07] | Farid Osman | Checked queue progress. | No | Queue depth was down to 9,400 and falling ~1,200/min. Arithmetic from initial queue depth: 48,213 - 9,400 = 38,813 jobs reduced. | Not applicable. | | 8 | [M08] | Cole Ingram | Verified with `bundle exec rake sidekiq:queue_depth` | No | Command returned 0. Error rate in Datadog was back to baseline. Arithmetic from initial queue depth: 48,213 - 0 = 48,213 jobs reduced. | Not applicable. | | 9 | [M09] | Bryce Harmon | Re-enabled enqueue: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` | Yes | Verified 40 new jobs processed cleanly in the next 3 minutes. | Rollback would be the prior disable command from [M04]: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'`. Needs confirmation because [M09] does not explicitly state rollback. | | 10 | [M10] | Bryce Harmon | Scaled workers back down: `kubectl scale deployment/reward-worker --replicas=3` | Yes | Queue stable at 0. Incident resolved. Arithmetic from scaled-up replica count: 6 - 3 = 3 replicas removed. | Rollback would be the prior scale-up command from [M06]: `kubectl scale deployment/reward-worker --replicas=6`. Needs confirmation because [M10] does not explicitly state rollback. |
First error:
2026-09-03T14:01:12Z — reward-service — ERROR — “Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s”
Cascade in order:
1. 2026-09-03T14:01:12Z — reward-service hits Redis timeout to redis-primary:6379.
Arithmetic: baseline T0 = 14:01:12.
2. 2026-09-03T14:01:20Z — reward-service logs “Redis::TimeoutError: retry exhausted for RewardGiveJob”.
Arithmetic: 14:01:20 - 14:01:12 = 8 seconds after first error.
3. 2026-09-03T14:01:30Z — reward-service logs another “retry exhausted for RewardGiveJob”.
Arithmetic: 14:01:30 - 14:01:12 = 18 seconds after first error.
4. 2026-09-03T14:01:40Z — reward-service logs another “retry exhausted for RewardGiveJob”.
Arithmetic: 14:01:40 - 14:01:12 = 28 seconds after first error.
5. 2026-09-03T14:01:40Z — sidekiq logs “RewardGiveJob failed: Redis::TimeoutError; retrying in 60s”.
Arithmetic: 14:01:40 - 14:01:12 = 28 seconds after first error.
6. 2026-09-03T14:01:46Z — sidekiq_jobs.csv first recorded job failure: J-00005, RewardGiveJob, Redis::TimeoutError.
Arithmetic: 14:01:46 - 14:01:12 = 34 seconds after first error.
7. 2026-09-03T14:02:28Z — sidekiq logs more RewardGiveJob failures with Redis::TimeoutError.
Arithmetic: 14:02:28 - 14:01:12 = 76 seconds after first error.
8. 2026-09-03T14:02:30Z — sidekiq warns “Queue reward depth above 10,000”.
Arithmetic: 14:02:30 - 14:01:12 = 78 seconds after first error.
9. 2026-09-03T14:02:36Z — sidekiq_jobs.csv first RecognitionDigestJob failure: J-00013, Redis::TimeoutError.
Arithmetic: 14:02:36 - 14:01:12 = 84 seconds after first error.
10. 2026-09-03T14:03:05Z — api-gateway logs “502 upstream timeout calling reward-service /gives”.
Arithmetic: 14:03:05 - 14:01:12 = 113 seconds after first error.
11. 2026-09-03T14:03:30Z — web-app logs “Give form submission failed: upstream 502 from api-gateway”.
Arithmetic: 14:03:30 - 14:01:12 = 138 seconds after first error.
12. 2026-09-03T14:22:10Z — reward-service logs “Redis connection restored; resuming job processing”.
Arithmetic: 14:22:10 - 14:01:12 = 20 minutes 58 seconds after first error.
13. 2026-09-03T14:24:45Z — sidekiq logs “Queue reward depth below 500”.
Arithmetic: 14:24:45 - 14:01:12 = 23 minutes 33 seconds after first error.
Service and job involved:
service: reward-service
primary job shown in datadog_logs.csv: RewardGiveJob
worker/service emitting job failures: sidekiq
additional job shown only in sidekiq_jobs.csv: RecognitionDigestJob
upstream cascade services: api-gateway, web-app
Datadog query to confirm the first error:
service:reward-service level:error "Redis::TimeoutError" "redis-primary:6379"
What the logs do not show:
- They do not show the underlying cause of the Redis timeout at redis-primary:6379.
- They do not show Redis server logs, Redis metrics, host health, network status, or failover events.
- They do not show whether a deploy, config change, traffic spike, or infrastructure event caused the timeout.
- They do not show exact queue peak depth; only “above 10,000” and later “below 500”.
- They do not show total user impact or number of failed Give submissions.
- They do not show Postgres errors; postgres entries are only “checkpoint complete”.
- They do not prove there were no earlier errors outside this log slice.
Feature flag state summary from export only: | Flag | State | What it controls per code excerpt | Targeting / companies or segments | Company count | |---|---:|---|---|---:| | recognition_streaks_v2 | on | Enables `StreakTracker.record(give)` in `app/models/recognition.rb` | `segment:beta_companies` | 42 | | points_budget_guardrails | on | Enables `BudgetService.new(company).enforce!(giver, points)` in `app/services/budget_service.rb` | `all_companies` | 220 | | slack_dm_nudges | on | Allows `SlackDm.send_nudge(user)` in `app/jobs/nudge_job.rb` | `segment:region_na` | 87 | | redeem_flow_redesign | off | Controls redeem UI: when enabled renders `RedeemV2Component`; otherwise renders `RedeemV1Component` | `targeted_list` | 12 | | analytics_dashboard_v3 | on | Enables `@dashboard = AnalyticsV3.new(company)` in `app/controllers/analytics_controller.rb` | `segment:tier_three` | 65 | | ms_teams_app_v2 | off | Enables `TeamsAppV2.install(company)` in `app/services/teams_installer.rb` | `targeted_list` | 9 | | legacy_give_modal | off | No code reference provided | `segment:legacy_plan` | 14 | | survey_boosters_q3 | on | No code reference provided | `segment:legacy_plan` | 7 | | paused_offboard_cleanup | off | No code reference provided | No targeting rule provided | 0 | Flags that are on: - `recognition_streaks_v2`: `segment:beta_companies`, 42 companies - `points_budget_guardrails`: `all_companies`, 220 companies - `slack_dm_nudges`: `segment:region_na`, 87 companies - `analytics_dashboard_v3`: `segment:tier_three`, 65 companies - `survey_boosters_q3`: `segment:legacy_plan`, 7 companies Arithmetic: - On-flag company counts: 42 + 220 + 87 + 65 + 7 = 421 - Off-flag company counts: 12 + 9 + 14 + 0 = 35 - Total company-count entries across export: 421 + 35 = 456 - Total flags in export: 9 Flags with no code reference: - `legacy_give_modal`: off, `segment:legacy_plan`, 14 companies - `survey_boosters_q3`: on, `segment:legacy_plan`, 7 companies - `paused_offboard_cleanup`: off, no targeting rule, 0 companies Flags with no targets: - `paused_offboard_cleanup`: targeting rule is blank, company count is 0
NDA-1 — GREEN (standard approval) — Standard mutual NDA with normal term/survival and carve-outs: “Term: two (2) years from the Effective Date; obligations survive for three (3) years after termination” and “Carve-outs: information that (a) is or becomes publicly available through no breach, (b) was known prior to disclosure, (c) is received from a third party without duty of confidence, (d) is independently developed, or (e) must be disclosed by law or court order”; arithmetic: 2-year term + 3-year post-termination survival, with Delaware law and no non-solicit/non-compete/exclusivity. NDA-2 — YELLOW (counsel review) — Embedded non-solicit requires review despite otherwise standard terms: “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”; arithmetic: 3-year term + 18-month post-term restriction = up to 4.5 years of restricted hiring/solicitation exposure. NDA-3 — RED (full legal review) — Contains a broad non-compete, unusual governing law/forum, one-way structure, long term, and missing carve-outs: “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,” “This Agreement shall be governed by and construed in accordance with the laws of the Republic of Ireland, and the parties submit to the exclusive jurisdiction of its courts,” and “No confidentiality carve-outs are stated in this Agreement”; arithmetic: 5-year confidentiality term + 3-year non-compete restriction, with zero stated carve-outs.