Mean 0.863 · 23/40 perfect tests · $0.97 total · each card: the question → the correct answer (gold) → this model's actual answer
**Definitions** - **DS2 or later:** stages DS2, DS3, DS4, DS5. - **Substantive why‑buys:** ≥15 characters, not a placeholder (`tbd`, `n/a`, `see notes`). `LONG(n)` indicates substantive (truncated) text and is compliant. - **DS1 entry timestamp:** column `t_ds1` must be non‑empty. - **Stage regression:** any earlier‑stage timestamp is later than a later‑stage timestamp (e.g., `t_ds2` > `t_ds3`). **Audit results** - Total open deals: **156** - DS2+ deals: **124** **Why‑buys compliance** - Overall non‑compliant: **101/124 = 81.5%** - By owner (DS2+ deals only): | Owner | DS2+ deals | Non‑compliant | % | |-------|------------|---------------|-----| | Bryce Harmon | 18 | 15 | 83.3% | | Alex Franklin | 61 | 48 | 78.7% | | Dana Mercer | 22 | 18 | 81.8% | | Cole Ingram | 22 | 19 | 86.4% | | Farid Osman | 1 | 1 | 100.0% | **DS1 timestamp** - Deals missing `t_ds1`: **0** (all 156 have a value) **Stage regression** - Deals with out‑of‑order stage timestamps: **0** **Three process fixes** 1. **Mandatory why‑buys validation** – require ≥15 characters of substantive text before allowing stage advancement beyond DS1; block placeholder values (`tbd`, `n/a`, `see notes`). 2. **Auto‑populate DS1 timestamp** – set `t_ds1` to the deal creation date and lock the field to prevent deletion. 3. **Chronological stage enforcement** – when moving a deal to a later stage, validate that the new stage’s timestamp is not earlier than the previous stage’s timestamp.
**Report: Owner Name Resolution for Open Deals** **1. Number of deals resolved** All 156 open deals have an owner_id that exists in the owners table. → **Resolved deals: 156** **2. Deals whose owner_id has no match in the owners table** Every owner_id in `deals_open.csv` appears in `owners.csv`. → **Unmatched owner IDs: 0** → No deals listed. **3. Owner IDs that map to archived/deactivated owners** The owners table contains two archived owners (Gavin Porter, Hugo Lindqvist), but **none of those IDs appear in the open deals**. → **Archived owners referenced: 0** → No names listed. **4. Total pipeline amount per resolved owner** Pipeline amounts are summed from the `amount` field for each owner. | Owner Name | Deal Count | Pipeline Sum | |------------|------------|--------------| | Bryce Harmon | 35 | $1,054,144.00 | | Alex Franklin | 67 | $624,310.00 | | Dana Mercer | 24 | $341,195.00 | | Cole Ingram | 22 | $288,161.43 | | Farid Osman | 7 | $4,134.00 | | Elena Sinclair | 1 | $2,100.00 | **Arithmetic verification:** - Total deals: 35 + 67 +哪里有24 + 22 + 7 + 1 = 156 ✓ - Total pipeline: $1,054,144.00 + $624,310.00 + $341,195.00 + $288,161.43 + $4,134.00 + $2,100.00 = **$2,314,044.43** ✓ All owner names resolved; no missing or archived owners in the open deal set.
CALL‑TO‑DEAL MAPPING INTEGRITY REPORT
(a) ORPHAN GONG ROWS
Count: 30 rows (hs_deal_id has no match in deals_open.csv).
Sample aliases (from data):
Deal‑8FA85D
Deal‑8FC3F9
Deal‑3B7945
Deal‑42B265
Deal‑9CCC42
(b) DUPLICATE CONVERSATION KEYS
Rows where calls_90d > distinct_conversation_keys: 0 rows.
(All 67 Gong rows have calls_90d == distinct_conversation_keys.)
(c) COVERAGE OF DS3+ OPEN DEALS
Open deals at stage DS3 or later (DS3/DS4/DS5): 85 deals.
Among those, deals with at least one logged call (hs_deal_id appears in Gong table): 25 deals.
Share = 25 / 85 = 29.4% of DS3+ open deals have a logged call.
Note: gong_owner_id is a Gong user id, not a HubSpot owner id.
All counts derived from provided CSV data; no facts invented.
I will write a Snowflake SQL query based solely on the tables and business rules documented in the catalog. The catalog does not contain a dedicated recognition‑events table, so I cannot compute raw recognition counts without inventing a source. The only table that supplies pre‑aggregated first‑month giving metrics is `PRODUCTION.PLG.COMPANY_COHORT_SUMMARY` (self‑serve companies). Sales‑led customer giving data is missing from the catalog; the query below therefore covers self‑serve companies only.
I have avoided stale/unpopulated tables (`PRODUCTION.HUBSPOT.DEALS`, `HUBSPOT_HUB_1973303.V2_LIVE.OBJECTS_DEALS`, `PRODUCTION.HUBSPOT.GONG_HUBSPOT_MAP_FAST`) and have not applied the “excluding deleted givers” filter to historical giving counts (the `M1_GIVES` column is used as‑is).
```sql
-- Query to return per customer company, for its first calendar month as a customer:
-- unique givers, recognition count, successful redemption count.
-- Uses only tables documented in the catalog; avoids stale/unpopulated tables.
-- NOTE: Sales‑led customer giving data is missing from the catalog (no recognition table).
-- This query covers self‑serve companies only via PLG.COMPANY_COHORT_SUMMARY.
-- The “filter excluding deleted givers” is not applied to historical giving counts
-- (M1_GIVES is used as‑is).
-- Primary source: self‑serve company cohort summary (one row per self‑serve company).
-- Contains pre‑aggregated metrics for the first month (M1_USERS, M1_GIVES, M1_REDEMPTIONS).
-- SIGNUP_DATE defines the first calendar month as a customer.
SELECT
company_id,
DATE_TRUNC('month', SIGNUP_DATE) AS first_customer_month,
M1_USERS AS unique_givers,
M1_GIVES AS recognition_count,
M1_REDEMPTIONS AS successful_redemption_count
FROM PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
WHERE SIGNUP_DATE IS NOT NULL
ORDER BY first_customer_month, company_id;
```
*Missing data note*: The catalog does not include a table for raw recognition events, so recognition counts cannot be computed from granular giving logs. The query above uses the pre‑aggregated `M1_GIVES` column, which may already incorporate the “deleted givers” filter – but per the instructions, no additional filter is applied. Redemption counts are taken from `M1_REDEMPTIONS`; the catalog’s `DEPRECATED_RECOGNITION.REDEMPTION_RECORDS_V2` could be joined for `STATE='succeeded'` verification, but its column schema is not provided, so the join is omitted here.
CRM EXTRACT AUDIT REPORT ========================= COMPLETENESS PERCENTAGES (per field) ------------------------------------ Companies (34 total): - industry: 0% missing (all present) – 0/34 - employee_count: 26.5% missing – 9/34 - hq_country: 17.6% missing – 6/34 Contacts (52 total): - email: 0% missing (all present, but some invalid) – 0/52 - title: 25.0% missing – 13/52 - persona: 28.8% missing – 15/52 Deals: - NO DEALS FILE PROVIDED. Cannot audit owner, stage, amount, close date, why‑buys. DUPLICATE COMPANY CLUSTERS (by shared domain) ---------------------------------------------- 1. acme‑corp.com Aliases: C‑0A092931, C‑0A092932 Survivor: C‑0A092931 (industry ‘Technology’, employee_count 500, hq_country ‘US’) 2. globex.io Aliases: C‑0A092933, C‑0A092934 Survivor: C‑0A092933 (industry ‘SaaS’, employee_count 200, hq_country ‘US’) INVALID EMAILS (missing @ or no domain) ---------------------------------------- CT‑0010: user0@ (no domain) CT‑0080: user0@ (no domain) CT‑0081: user1@ (no domain) CT‑0192: user2@ (no domain) DOMAIN MISMATCHES (email domain ≠ company domain) -------------------------------------------------- CT‑0010: email domain ‘’ != company domain ‘66d1fc.com’ CT‑0011: email domain ‘other‑domain.com’ != company domain ‘66d1fc.com’ CT‑0080: email domain ‘’ != company domain ‘92d97d.com’ CT‑0081: email domain ‘’ != company domain ‘92d97d.com’ CT‑0192: email domain ‘’ != company domain ‘425e2a.com’ MISSING COMPANY FIELDS THAT CAN BE FILLED FROM ZOOMINFO -------------------------------------------------------- (Only where enrichment export has a matching row) C‑EC3025: employee_count missing, ZoomInfo has ‘400’ C‑96039F: employee_count missing, ZoomInfo has ‘400’ C‑44EA29: employee_count missing, ZoomInfo has ‘400’ C‑D04904: employee_count missing, ZoomInfo has ‘400’ C‑B23205: employee_count missing, ZoomInfo has ‘400’ C‑60C75F: employee_count missing, ZoomInfo has ‘400’ C‑7BBDFA: employee_count missing, ZoomInfo has ‘400’ C‑50D386: employee_count missing, ZoomInfo has ‘400’ CONFLICTS BETWEEN CRM AND ZOOMINFO (both present) -------------------------------------------------- Listed as (field, CRM value, ZoomInfo value): C‑66D1FC: industry (‘tech’ vs ‘Computer Software’), hq_country (‘US’ vs ‘United States’) C‑950043: hq_country (‘US’ vs ‘United States’) C‑EC3025: industry (‘Technology’ vs ‘Computer Software’), hq_country (‘USA’ vs ‘United States’) C‑96039F: hq_country (‘USA’ vs ‘United States’) C‑44EA29: industry (‘tech’ vs ‘Computer Software’) C‑92D97D: industry (‘Technology’ vs ‘Computer Software’) C‑D04904: industry (‘Technology’ vs ‘Computer Software’) C‑77A95A: industry (‘Technology’ vs ‘Computer Software’), hq_country (‘US’ vs ‘United States’) C‑AA8DDA: industry (‘Technology’ vs ‘Computer Software’) C‑B23205: hq_country (‘US’ vs ‘United States’) C‑E51FB7: hq_country (‘USA’ vs ‘United States’) C‑D0662E: hq_country (‘US’ vs ‘United States’) C‑B25F40: industry (‘Technology’ vs ‘Computer Software’) C‑60C75F: industry (‘tech’ vs ‘Computer Software’) C‑425E2A: industry (‘Tech’ vs ‘Computer Software’), hq_country (‘USA’ vs ‘United States’) C‑2D7423: hq_country (‘USA’ vs ‘United States’) RECOMMENDED SOURCE FOR CONFLICTS --------------------------------- ZoomInfo is more standardized (uses full country names, consistent industry categories). Recommend using ZoomInfo values for all conflicts. TOP 10 FIXES WITH MOST PIPELINE AMOUNT AT STAKE ------------------------------------------------ No deals file provided → pipeline amount cannot be calculated. Using employee count as proxy for potential deal size (larger companies → larger deals). Ranked by employee count (from ZoomInfo where missing): 1. C‑EE9FFB: missing hq_country (employee count ~1500) 2. C‑EC3025: missing employee_count (ZoomInfo 400) 3. C‑96039F: missing employee_count (ZoomInfo 400) 4. C‑44EA29: missing employee_count + hq_country (ZoomInfo 400) 5. C‑D04904: missing employee_count + hq_country (ZoomInfo 400) 6. C‑B23205: missing employee_count (ZoomInfo 400) 7. C‑60C75F: missing employee_count (ZoomInfo 400) 8. C‑7BBDFA: missing employee_count (ZoomInfo 400) 9. C‑50D386: missing employee_count (ZoomInfo 400) 10. C‑2C60E5: missing hq_country (employee count 340) FIXES DESCRIPTION (what to change): - Fill missing employee_count from ZoomInfo for the 8 companies listed. - Fill missing hq_country from ZoomInfo for C‑EE9FFB, C‑2C60E5, C‑44EA29, C‑D04904. - For all conflicts, replace CRM industry/hq_country values with ZoomInfo values. - Merge duplicate company clusters, keep survivor, reassign contacts. - Correct invalid emails: add missing domain for CT‑0010, CT‑0080, CT‑0081, CT‑0192. - Resolve domain mismatches: update email or company domain as appropriate. DATA LIMITATIONS: - No deals data → pipeline impact unknown. - Enrichment export does not cover all companies (e.g., C‑EE9FFB, C‑2C60E5 missing). Full report saved to /Users/amaniphipps/crm_audit_report.txt
**DEAL CLASSIFICATIONS (90 deals)** Primary categories: - competitor 26 deals - no decision 22 deals - timing 21 deals - pricing 13 deals - other 5 deals - product gap 2 deals - champion left 1 deal Side attribution: - buyer 54 deals (59%) - unknown 34 deals (39%) - Bonusly 2 deals (2%) Tag vs free‑text disagreement: 5 deals where the structured closed_lost_tag points to a different primary category than the free‑text reason indicates. **PATTERNS MOST WORTH ACTING ON** 1. **Timing deferrals (21 deals, $220K lost)** – buyers consistently postpone decisions to 2027/2028, citing internal priorities, budget cycles, or “pause for now.” Sample reasons: “revisiting in 2027”, “put on hold until 2027”, “pause for now.” 2. **Competitor losses (26 deals, $406K lost)** – specific competitors repeatedly mentioned: Rippl, HeyTaco, Awardco, WorkTango, Nectar, ADP TotalSource, Canadian providers. Common themes: more features, pre‑built integrations (ADP), regional alignment, cost parity with greater value. **NOTES** - Champion left appears only once (Deal‑F325A5, layoffs/leadership change). - No decision (MIA) represents 24% of lost deals—ghosting after initial engagement. - Pricing (budget/price) accounts for 14% of losses, often tied to budget cuts or approval hurdles. - Product gap only 2 deals (swag‑provider preference, UI/UK focus). - Side split: buyer‑side reasons dominate; only 2 deals were attributed to Bonusly‑side shortcomings (spam, unfit ICP). Full classification table (deal_alias, tag, reason, primary_category, side, amount) saved to `/Users/amaniphipps/closed_lost_classified_full.csv`.
```json
{"tier_counts":{"LOCK":3,"ACTION":11,"BUILD":122,"REVIVE":1,"WATCH":9,"RISKY":10},"tier_examples":{"LOCK":["Deal-D348E1","Deal-C26D20","Deal-403845"],"ACTION":["Deal-25F752","Deal-944310","Deal-3974EB"],"BUILD":["Deal-2D1F1B","Deal-66D1FC","Deal-950043"],"REVIVE":["Deal-57FF13"],"WATCH":["Deal-547B2B","Deal-B7EBD1","Deal-6787C2"],"RISKY":["Deal-E53952","Deal-5408B0","Deal-9AAE5F"]},"risky_deals":["Deal-E53952","Deal-5408B0","Deal-9AAE5F","Deal-C61CF7","Deal-62D607","Deal-C6D97A","Deal-7B3B0F","Deal-F9A08A","Deal-0660B4","Deal-BA571A"],"lock_violations":0,"pipeline_shape":"Total open pipeline of $2314K across 156 deals, heavily weighted toward BUILD tier (122 deals, $2006K) indicating early-stage nurturing needed. Only 3 LOCK deals ($36K) and 11 ACTION deals ($154K) show near-term closable revenue. 10 RISKY deals ($67K) flagged where forecast confidence mismatches engagement signals. Overall pipeline is early-stage with limited near-term certainty."}
```
[
{
"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": [
"our HR team of three cannot keep up with it manually.",
"Right now we track everything in a spreadsheet, and people slip through the cracks."
],
"stakeholders": [
"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": "Yes — let's do the security review on September 12.",
"objections": [
"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 there is over 30%."
],
"stakeholders": [
"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": "Yes — send the pilot agreement and we'll route it to legal this week.",
"objections": [
"Integration with Workday has to be rock solid — that's my one condition."
],
"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": [
"Prospect (People Ops Manager)"
],
"budget_signal": null,
"timeline_signal": "Honestly there's no rush on our side until Q1.",
"competitor_mentioned": "Bucketlist",
"next_step": "Yes, let's schedule a call with our CEO — I'll send two times.",
"objections": [
"The CEO has to be sold first — she decides anything people-related."
],
"confidence": "MEDIUM"
},
{
"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": [
"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": "LOW"
},
{
"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": [
"Our night-shift teams feel invisible — their engagement scores run 20 points lower."
],
"stakeholders": [
"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": "Yes — come present to our 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": "MEDIUM"
},
{
"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."
],
"stakeholders": [
"Prospect (HR Manager)"
],
"budget_signal": null,
"timeline_signal": "Our fiscal year resets in February, so a Q1 start is realistic.",
"competitor_mentioned": null,
"next_step": "Yes — send the one-page overview and I'll forward it to our COO this week.",
"objections": [
"Fair warning, our COO usually prefers building things in-house."
],
"confidence": "MEDIUM"
}
]
**Closest 3 deals to signature (as of 2026‑09‑04):** 1. **Deal‑547B2B** ($11,200) – **Why close:** Redlines clean, signing page out, VP People confirmed signing tomorrow. **Left:** Signature only. 2. **Deal‑403845** ($9,000) – **Why close:** Order form is with their finance team, moving fine. **Left:** Finance approval, then signature. 3. **Deal‑B7EBD1** ($9,000) – **Why close:** DS5/COMMIT, forecast‑committed, closes 2026‑09‑10 (4 days out). **Left:** Unknown from Slack; likely finalizing paperwork. **Excluded:** Deal‑2465CE is blocked (champion left, procurement freeze). Deal‑A2B47C is still in legal review (warm but not imminent). *(Data: next_close_deals.csv + #sales‑sparring Slack thread)*
Surface true product gaps raised by prospects in active deals. **Real product gaps (2):** 1. **Deal-EC3025** (Transcript TG‑001) - **Prospect line:** “We need SCIM user provisioning — our security team will not approve any tool that requires manual account management.” - **Classification:** Real gap - **Evidence:** Product docs explicitly state “SCIM user provisioning … NOT currently listed as supported capabilities.” - **Amount:** MISSING (data not provided) 2. **Deal‑D0D6B5** (Transcript TG.002) - **Prospect line:** “Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us.” - **Classification:** Real gap - **Evidence:** Product docs explicitly state “ADP Workforce Now integrations are NOT currently listed as supported capabilities.” - **Amount:** MISSING (data not provided) **Excluded candidates (not real gaps):** - **Deal‑CFE7F4** (Transcript TG‑003): Prospect asked about custom report builder. Feature exists but requires Enterprise tier → **plan gate**. - **Deal‑84DBA6** (Transcript TG‑004): Prospect cited low manager adoption of Slack integration → **rollout/enablement issue** (integration exists, training missing). - **Deal‑36C33F** (Transcript TG‑005): Rep disclosed missing native mobile app; prospect responded “Good to know…” → not a prospect‑raised gap, and rep language does not count. **Missing data:** Deal amounts not present in provided CSV.
**Snapshot date:** 2026‑09‑05 **Cutoff for recent contact:** 2026‑08‑29 (7 days before snapshot) **Stale deals** – no logged email, call, or meeting in the last 7 days: **65 deals** --- ### **Bryce Harmon** Deal-2D1F1B | Stage: DS1 | Amount: $240,000.00 | Days since last contact: 81 Deal-66D1FC | Stage: DS1 | Amount: $99,000.00 | Days since last contact: 16 Deal-950043 | Stage: DS1 | Amount: $70,000.00 | Days since last contact: 19 Deal-B23205 | Stage: DS1 | Amount: $45,000.00 | Days since last contact: 16 Deal-7BBDFA | Stage: DS3 | Amount: $37,440.00 | Days since last contact: 46 Deal-332637 | Stage: DS2 | Amount: $36,000.00 | Days since last contact: 9 Deal-1BEEBF | Stage: DS1 | Amount: $31,500.00 | Days since last contact: 19 Deal-C5658B | Stage: DS1 | Amount: $23,400.00 | Days since last contact: 16 Deal-40522D | Stage: DS3 | Amount: $21,000.00 | Days since last contact: 19 Deal-F0EBBB | Stage: DS3 | Amount: $11,400.00 | Days since last contact: 24 Deal-E25A09 | Stage: DS1 | Amount: $6,000.00 | Days since last contact: 9 Deal-C9C286 | Stage: DS2 | Amount: $5,502.00 | Days since last contact: 9 Deal-012CB1 | Stage: DS1 | Amount: $1.00 | Days since last contact: 23 **13 stale deals, total stale amount: $626,243.00** --- ### **Dana Mercer** Deal-44EA29 | Stage: DS2 | Amount: $60,000.00 | Days since last contact: 10 Deal-E51FB7 | Stage: DS2 | Amount: $43,875.00 | Days since last contact: 12 Deal-B42F46 | Stage: DS1 | Amount: $27,000.00 | Days since last contact: 19 Deal-BA3DDC | Stage: DS3 | Amount: $23,400.00 | Days since last contact: 15 Deal-9DDE86 | Stage: DS2 | Amount: $20,000.00 | Days since last contact: 15 Deal-215CCA | Stage: DS3 | Amount: $18,900.00 | Days since last contact: 17 Deal-5EED42 | Stage: DS3 | Amount: $16,250.00 | Days since last contact: 11 Deal-57887A | Stage: DS2 | Amount: $15,000.00 | Days since last contact: 8 Deal-B7EBD1 | Stage: DS5 | Amount: $9,000.00 | Days since last contact: 16 Deal,3974EB | Stage: DS4 | Amount: $9,000.00 | Days since last contact: 8 Deal-F40F04 | Stage: DS2 | Amount: $8,100.00 | Days since last contact: 15 Deal-87DDD1 | Stage: DS1 | Amount: $5,000.00 | Days since last contact: 19 Deal-F336B6 | Stage: DS3 | Amount: $4,200.00 | Days since last contact: 15 Deal-0660B4 | Stage: DS4 | Amount: $1,920.00 | Days since last contact: 16 **14 stale deals, total stale amount: $261,645.00** --- ### **Alex Franklin** Deal-CC08D1 | Stage: DS1 | Amount: $24,000.00 | Days since last contact: 16 Deal-E73427 | Stage: DS3 | Amount: $18,000.00 | Days since last contact: 10 Deal-885F45 | Stage: DS2 | Amount: $9,300.00 | Days since last contact: 12 Deal-C2FF3C | Stage: DS1 | Amount: $8,316.00 | Days since last contact: 10 Deal-3EED2C | Stage: DS2 | Amount: $7,200.00 | Days since last contact: No logged contact Deal-0D2F7A | Stage: DS3 | Amount: $5,100.00 | Days since last contact: 12 Deal-6C60D4 | Stage: DS3 | Amount: $4,800.00 | Days since last contact: 12 Deal-13FEBD | Stage: DS2 | Amount: $4,680.00 | Days since last contact: 12 Deal-9D0060 | Stage: DS3 | Amount: $3,840.00 | Days since last contact: 12 Deal-690476 | Stage: DS2 | Amount: $3,600.00 | Days since last contact: 18 Deal-C6D97A | Stage: DS4 | Amount: $3,240.00 | Days since last contact: 8 Deal-EE195F | Stage: DS3 | Amount: $3,120.00 | Days since last contact: 8 Deal-278DEC | Stage: DS3 | Amount: $2,700.00 | Days since last contact: 8 Deal-635B8E | Stage: DS3 | Amount: $2,600.00 | Days since last contact: 18 Deal-6883F3 | Stage: DS1 | Amount: $2,400.00 | Days since last contact: 16 Deal-4A13AD | Stage: DS3 | Amount: $2,160.00 | Days since last contact: 26 Deal-F67D31 | Stage: DS2 | Amount: $1,800.00 | Days since last contact: 8 Deal-5FDCE4 | Stage: DS3 | Amount: $1,600.00 | Days since last contact: 12 Deal-BA571A | Stage: DS4 | Amount: $1,080.00 | Days since last contact: 18 **19 stale deals, total stale amount: $109,536.00** --- ### **Cole Ingram** Deal-D04904 | Stage: DS2 | Amount: $58,529.25 | Days since last contact: 11 Deal-B25F40 | Stage: DS3 | Amount: $40,000.00 | Days since last contact: 8 Deal-813836 | Stage: DS2 | Amount: $32,175.00 | Days since last contact: 11 Deal-1BA595 | Stage: DS2 | Amount: $31,750.00 | Days since last contact: 11 Deal-CFE1E8 | Stage: DS3 | Amount: $18,000.00 | Days since last contact: 11 Deal-CD47A6 | Stage: DS2 | Amount: $12,168.00 | Days since last contact: 11 Deal-627646 | Stage: DS3 | Amount: $11,193.00 | Days since last contact: 11 Deal-FF809F | Stage: DS2 | Amount: $7,781.20 | Days since last contact: 11 Deal-AF932D | Stage: DS2 | Amount: $7,225.40 | Days since last contact: 11 Deal-A71728 | Stage: DS2 | Amount: $6,947.50 | Days since last contact: 11 Deal-8BC9F5 | Stage: DS2 | Amount: $5,616.00 | Days since last contact: 10 Deal-175395 | Stage: DS3 | Amount: $4,779.88 | Days since last contact: 11 Deal-481E24 | Stage: DS3 | Amount: $4,140.00 | Days since last contact: 10 Deal-C7F9BF | Stage: DS2 | Amount: $3,360.00 | Days since last contact: 11 Deal-2F3A66 | Stage: DS3 | Amount: $3,334.80 | Days since last contact: 11 Deal-342E96 | Stage: DS2 | Amount: $2,700.00 | Days since last contact: 24 Deal-E568D5 | Stage: DS3 | Amount: $1,875.00 | Days since last contact: 11 Deal-FD9F4E | Stage: DS5 | Amount: $1,330.00 | Days since last contact: 10 **18 stale deals, total stale amount: $252,905.03** --- ### **Elena Sinclair** Deal-57FF13 | Stage: DS1 | Amount: $2,100.00 | Days since last contact: No logged contact **1 stale deal, total stale amount: $2,100.00** --- ### **Per‑owner summary** Bryce Harmon: 13 stale deals, $626,243.00 total stale amount Dana Mercer: 14 stale deals, $261,645.00 total stale amount Alex Franklin: 19 stale deals, $109,536.00 total stale amount Cole Ingram: 18 stale deals, $252,905.03 total stale amount Elena Sinclair: 1 stale deal, $2,100.00 total stale amount **Total stale deals:** 65 **Total stale amount:** $1,252,429.03 *Note:* Archived owners (Gavin Porter, Hugo Lindqvist) were excluded. Staleness determined solely from `last_email`, `last_call`, `last_meeting` fields in the engagements table; the deal’s `last_contacted_field` was not used. “No logged contact” means the deal has no record in the engagements table or all three contact fields are empty.
**Snapshot date:** 2026‑09‑05 **Cutoff for DS2 entries:** 2026‑08‑06 to 2026‑09‑05 (last 30 days) | Rep (owner) | Emails | Calls | Meetings | **Total activities** | DS2 entries (30d) | **Activity mix** (emails/calls/meetings) | **Activities per DS2 entry** (efficiency) | **Rank** | |-------------|--------|-------|----------|----------------------|-------------------|-------------------------------------------|------------------------------------------|---------| | Alex Franklin (84342457) | 307 | 36 | 41 | **384** | 18 | 79.9% / 9.4% / 10.7% | **21.33** | 1 (most efficient) | | Bryce Harmon (119337721) | 162 | 0 | 43 | **205** | 4 | 79.0% / 0.0% / 21.0% | **51.25** | 2 | | Cole Ingram (83155924) | 96 | 14 | 1 | **111** | 2 | 86.5% / 12.6% / 0.9% | **55.50** | 3 | | Farid Osman (716654662) | 38 | 0 | 34 | **72** | 1 | 52.8% / 0.0% / 47.2% | **72.00** | 4 | | Dana Mercer (83155923) | 84 | 18 | 11 | **113** | 1 | 74.3% / 15.9% / 9.7% | **113.00** | 5 | | Elena Sinclair (701163055) | 0 | 0 | 0 | **0** | 0 | 0.0% / 0.0% / 0.0% | N/A (no DS2 entries) | 6 | **Efficiency ranking** (lowest activities per DS2 entry → most efficient): 1. **Alex Franklin** (21.33) 2. Bryce Harmon (51.25) 3. Cole Ingram (55.50) 4. Farid Osman (72.00) 5. Dana Mercer (113.00) 6. Elena Sinclair (N/A) **Most efficient rep:** **Alex Franklin** (21.33 activities per DS2 entry). **Highest‑volume rep:** **Alex Franklin** (384 total activities). **Result:** The most efficient rep and the highest‑volume rep are the same person (Alex Franklin).
**QTD SCORECARD FOR ALEX FRANKLIN AS OF 2026‑09‑05** **BOOKINGS VS QUOTA** Quota: $200,000 QTD Bookings: $150,000 Attainment: 75.0% **NEW VS EXPANSION SPLIT** New: $113,500 (75.7%) Expansion: $36,500 (24.3%) **ACTIVE PIPELINE BY STAGE (as of snapshot)** DS1: $284,621 (20 deals) DS2: $353,760 (28 deals) DS3: $552,705 (67 deals) DS4: $23,574 (5 deals) DS5: $45,730 (5 deals) Total Pipeline: $1,260,390 (125 deals) **ROLLING 90‑DAY DS2‑TO‑WON RATE** Deals entered DS2 in last 90 days: 111 Won among them: 8 Conversion rate: 7.2% **WIN AND LOSS COUNTS (QTD)** Wins: 8 Losses: 27 Win rate: 22.9% Top loss reason: “Lost‑ Timing (1 year or more)” (13 deals, 48% of losses) **ACTIVITY VOLUME (LAST 30 DAYS)** Emails: 807 Calls: 112 Meetings: 128 Notes: 50 Per‑deal averages: 5.0 emails, 0.7 calls, 0.8 meetings **ADDITIONAL METRICS** Average win size: $18,750 Average loss size: $12,195 Pipeline coverage (pipeline/quota): 6.3x QTD DS2‑to‑won conversion (entered DS2 in QTD): 6.8% (6 won / 88 entered) **COACHING OBSERVATIONS (grounded in the numbers)** 1. **POOR CONVERSION QUALITY** – The rolling 90‑day DS2‑to‑won rate of 7.2% and QTD win rate of 22.9% signal weak qualification or execution. Nearly half of losses (13/27) cite “Lost‑Timing (1 year or more),” indicating a pipeline filled with deals not aligned with near‑term buying cycles. The 6.3x pipeline coverage is healthy but conversion must improve. 2. **IMBALANCED ACTIVITY MIX** – Alex relies heavily on email (807 emails, 7.2× more than calls) while averaging only 0.7 calls and 0.8 meetings per deal in the last 30 days. High‑touch engagement is critical for moving deals through later stages; the current activity pattern may be limiting deal velocity and contributing to low conversion. 3. **OVER‑RELIANCE ON NEW BUSINESS** – 75.7% of QTD bookings came from new logos, with expansion contributing only 24.3%. While new business is essential, existing customers represent a lower‑friction revenue source. The expansion pipeline (DS4/DS5) totals only $69,304 (5.5% of total pipeline), suggesting untapped upsell/cross‑sell potential. Full scorecard saved to: /Users/amaniphipps/alex_franklin_qtd_scorecard.txt
**Flagged Deals – Single‑threaded or Under‑threaded** *Note: Amount and stage data are not provided in the input files.* *Active = engaged in last 60 days and not marked former.* *Personas: economic buyer, champion, HR admin, IT security, finance.* --- **Deal‑EC3025** (C‑FDD0C7) - Active contacts: **1** - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add (given missing stage): economic buyer - On‑file unengaged contact matching that persona: **CT‑6827DB** (Chief People Officer, economic buyer) **Deal‑92D97D** (C‑E23238) - Active contacts: **1** - Personas present: HR admin - Personas missing: economic buyer, champion, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: none on file **Deal‑50D386** (C‑EB10E4) - Active contacts: **2** - Personas present: champion, HR admin - Personas missing: economic buyer, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: **CT‑A1C4B3** (Chief People Officer, economic buyer) **Deal‑D0D6B5** (C‑32918E) - Active contacts: **3** (all champion) - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: **CT‑1FA4DB** (Chief People Officer, economic buyer) **Deal‑5BFE3B** (C‑535D36) - Active contacts: **2** (all champion) - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: none on file **Deal‑36C33F** (C‑077A0E) - Active contacts: **1** - Personas present: IT security - Personas missing: economic buyer, champion, HR admin, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: **CT‑1DB73E** (Chief People Officer, economic buyer) **Deal‑885F45** (C‑5E8EFB) - Active contacts: **2** - Personas present: champion, economic buyer - Personas missing: HR admin, IT security, finance - Most valuable persona to add: HR admin - On‑file unengaged contact: none on file **Deal‑FCBE5B** (C‑737030) - Active contacts: **1** - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: none on file **Deal‑5408B0** (C‑2AE3AA) - Active contacts: **2** - Personas present: champion, HR admin - Personas missing: economic buyer, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: **CT‑07FA76** (Chief People Officer, economic buyer) **Deal‑C6D97A** (C‑5A8FC2) - Active contacts: **3** (all champion) - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: none on file **Deal‑F9A08A** (C‑0D15DF) - Active contacts: **1** - Personas present: champion - Personas missing: economic buyer, HR admin, IT security, finance - Most valuable persona to add: economic buyer - On‑file unengaged contact: **CT‑697541** (Chief People Officer, economic buyer) --- **Summary** - Total open deals with active contacts: 14 - Flagged deals: **11** (79%) - Most common missing persona: economic buyer (10 deals) - Unengaged contacts available for 6 of the 11 flagged deals.
**Lead‑in (first five minutes)** 8 of 10 calls open with the same social‑proof line: “Quick one to kick off: a 400‑person retailer we work with cut regretted turnover 18% in two quarters after automating milestone awards, and I wanted to walk you through exactly how they did it.” Two calls deviate: one starts with an agenda, another with pricing. **Three most common objections** 1. **Budget locked** – 4 occurrences 2. **Revisit next quarter** – 3 occurrences 3. **Spreadsheet works** – 3 occurrences **How they handle each objection** - **Budget locked**: “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.” - **Revisit next quarter**: “Makes sense. What if we scope a 90‑day pilot with one department so you have internal data before next quarter’s planning?” - **Spreadsheet works**: “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** Alex asked “Should we lock the next step — a working session with your team this week?” in **7 calls**. Prospects agreed in **all 7** (100% agreement rate). **Every competitor a prospect raised** - Awardco - Kudos *(Workhuman is mentioned by Alex, not by a prospect.)* **Quotes (one line per finding)** - Lead‑in: “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.” - Objection handling (budget locked): “Totally fair. Most teams fund this out of turnover savings — that retailer saved about $210k in avoided backfills, which is how their finance team signed off.” - Objection handling (revisit next quarter): “Makes sense. What if we scope a 90‑day pilot with one department so you have internal data before next quarter’s planning?” - Objection handling (spreadsheet works): “Spreadsheets work until they scale — the difference is automation: milestones fire without HR lifting a finger, and you get analytics on who is being recognized.” - Next‑step agreement: “Yes, Thursday at 2pm works — send the invite and I'll bring our HRIS manager.” - Competitor raised: “We're also in late talks with Awardco — their rewards catalog looks bigger than yours.” **Two coaching notes** 1. Lead with the 400‑person retailer social‑proof case (18% turnover reduction) and tie objections directly to the $210k turnover savings or a 90‑day departmental pilot. 2. The next‑step ask (“Should we lock the next step — a working session with your team this week?”) has a 100% agreement rate when used; deploy it consistently after objection handling.
**Q3 2026 Forecast (2026‑07‑01 to 2026‑09‑30)** **Filter rule:** only deals with close_date inside the quarter. **Weighting:** 100 % of COMMIT + 35 % of BEST_CASE. PIPELINE deals count zero. --- ### Totals inside quarter * COMMIT total = 44,729 * BEST_CASE total = 203,565 * PIPELINE total = 201,637 (excluded) ### Weighted forecast 44,729 + (0.35 × 203,565) = 44,729 + 71,247.75 = **115,976.75** ### Deal counts inside quarter * COMMIT: 7 deals * BEST_CASE: 24 deals * PIPELINE: 23 deals ### Excluded deals (outside quarter) * Count: 32 deals * Total amount: 227,575 ### Top 5 BEST_CASE deals inside quarter (by amount) 1. Deal‑2D7423 – 38,935 2. Deal‑25F752 – 24,000 3. Deal‑E53952 – 19,656 4. Deal‑5EED42 – 16,250 5. Deal‑FA32A0 – 11,116 --- ### Arithmetic COMMIT sum = 44,729 BEST_CASE sum = 203,565 Weighted forecast = 44,729 + 0.35 × 203,565 = 44,729 + 71,247.75 = 115,976.75 --- ## Data quality **Missing owner:** 85 of 86 deals have no owner assigned, making accountability impossible. **Forecast‑category mismatch:** 10 COMMIT/BEST_CASE deals have close dates outside the quarter; the forecast rule would incorrectly exclude them. **Sparse why‑buys data:** The why_buys_chars column is zero for 75 deals, indicating missing qualification context. **Decimal amount:** One deal uses a fractional amount (2,480.4) which may reflect currency‑conversion noise but does not break arithmetic. Together, these gaps mean the forecast cannot be run unattended—missing owners prevent deal‑owner reconciliation, out‑of‑quarter COMMIT/BEST_CASE deals distort the pipeline, and absent why‑buys data hides qualification risk.
**ACTIVATION HYPOTHESIS TEST RESULTS** ### Cohort 2×2 (size and 24‑month retention rate) | Cohort | N companies | Active at 24 months | Retention rate | |-----------------------|-------------|---------------------|----------------| | **Both signals**<br>(m1_users ≥5 **and** m1_redemptions ≥1) | 47 | 31 | **65.96 %** (31÷47) | | **Givers‑only**<br>(m1_users ≥5, m1_redemptions =0) | 49 | 23 | **46.94 %** (23÷49) | | **Redemption‑only**<br>(m1_users <5, m1_redemptions ≥1) | 29 | 9 | **31.03 %** (9÷29) | | **Neither signal**<br>(m1_users <5, m1_redemptions =0) | 95 | 38 | **40.00 %** (38÷95) | **Denominator exclusions:** 0 companies were excluded from the denominator. Every row in `plg_company_cohort_2023.csv` contained numeric values for both `m1_users` and `m1_redemptions`; no missing data prevented classification. ### Single‑signal retention lift - **Givers‑only lift vs neither:** 46.94 % – 40.00 % = **+6.94 percentage‑points** - **Redemption‑only lift vs neither:** 31.03 % – 40.00 % = **‑8.97 percentage‑points** The **single signal with the largest retention lift** is **givers‑only** (+6.94 pp). ### What this proves and does not prove **Proves:** In this cohort of companies that signed up in 2023 (now 25+ months old), the presence of **both activation signals** (5+ unique givers **and** 1+ redemption in the first calendar month) is associated with higher 24‑month retention (65.96 %) than any single‑signal or no‑signal group. The hypothesis **holds** for this dataset: companies that exhibit both signals retain better than those with one signal or neither. **Does not prove:** - **Causality** – the correlation does not establish that triggering both signals *causes* better retention; other factors (company size, industry, product tier, etc.) could explain the difference. - **Generalizability** – the result is specific to the 220‑company extract and the 2023 sign‑up cohort; it may not hold for other time periods or populations. - **Optimal thresholds** – the thresholds (5 users, 1 redemption) are arbitrary; different cut‑offs could yield different patterns. - **Mechanism** – we cannot tell whether the redemption signal adds predictive power beyond giver count, because the “both” group’s retention is higher than the givers‑only group’s, but we have not controlled for confounding variables. **Arithmetic note:** all percentages are calculated directly from the counts shown; no rounding or estimation used.
**ARR Reconciliation as of 2026‑09‑05** **1. Totals** Billing ARR (active subscriptions) = $604,739.28 HubSpot ARR = $603,581.76 Variance (HubSpot – Billing) = –$1,157.52 **2. Variance Decomposition** - Status mismatch: $13,158.48 - Rounding: $0.00 - Missing records: –$11,952.00 - Other: –$2,364.00 **Sum of buckets** = –$1,157.52 ✓ **3. Details per bucket** **a) Status mismatch (cancelled subscriptions still in CRM)** C‑0C8323BF: HubSpot ARR $4,905.24, Billing ARR $0.00 → **variance $4,905.24** – Suggested owner: Finance C‑0DC4FB8C: HubSpot ARR $8,253.24, Billing ARR $0.00 → **variance $8,253.24** – Suggested owner: Finance **b) Rounding differences (variance ≤ $0.01)** All other 33 companies match exactly (variance $0.00). **c) Missing records** C‑21629AA4: Present only in billing (ARR $28,449.24) → **variance –$28,449.24** – Suggested owner: Sales Ops C‑0D5BBE3A: Present only in HubSpot (ARR $16,497.24) → **variance $16,497.24** – Suggested owner: Sales Ops **d) Other variances** C‑0F7269D7: HubSpot ARR $24,396.00, Billing ARR $26,796.00 → **variance –$2,400.00** – Suggested owner: Sales Ops C‑14D70CE0: HubSpot ARR $18,200.00, Billing ARR $18,180.00 → **variance $20.00** – Suggested owner: Sales Ops C‑0D66DF9E: HubSpot ARR $23,200.00, Billing ARR $23,184.00 → **variance $16.00** – Suggested owner: Sales Ops **4. Business‑rule violations** Any subscription with term ≠ 12 months must have `cf_agreement_end_date` populated. Violations: - SUB‑0002 (C‑1794A52C): term 24 months, end date empty - SUB‑0019 (C‑22170CA1): term 36 months, end date empty **Total violations:** 2 **5. Arithmetic verification** - Billing ARR = Σ(MRR_active × 12) = $604,739.28 - HubSpot ARR = Σ(hubspot_arr) = $603,581.76 - Variance = HubSpot ARR – Billing ARR = –$1,157.52 - Decomposition sum = $13,158.48 + $0.00 – $11,952.00 – $2,364.00 = –$1,157.52 ✓ **Result:** The total ARR variance is –$1,157.52, fully explained by the four buckets above.
Four core KVMs for 2026-08 vs 2026-07 show minimal changes in giving rate (+0.07%), redemptions per user (+0.01%), and 1:1 engagement (+0.06%). Pulse engagement dropped -15.31% (0.5086 from 0.6006). Largest relative move is pulse engagement (-15.31% drop), driven by enterprise segment where pulse fell -50.13% (0.2743 from 0.5500). KVM | Aug value | Jul value | Abs change | Rel change (%) | Direction -------------------|-----------|-----------|------------|----------------|---------- giving_rate | 0.6027 | 0.6023 | +0.0004 | +0.07% | increase redemptions_per_user | 1.7302 | 1.7300 | +0.0002 | +0.01% | increase one_to_one_engagement| 0.4472 | 0.4469 | +0.0003 | +0.06% | increase pulse_engagement | 0.5086 | 0.6006 | -0.0920 | -15.31% | decrease Largest relative move: pulse_engagement (15.31% drop). Segment driving: enterprise (pulse engagement fell -50.13% within that size_band).
**Redemption Section – Weekly Rewards Report** *(through last completed month 2026‑08)* | Metric | Value | Calculation | |--------|-------|-------------| | **Redemption count** | 378 | Count of all redemptions dated January–August 2026 | | **Total spend** | $27,846.00 | Sum of `amount_usd` across all redemptions | | **Unique redeemers** | 235 | Distinct `user_key` values | | **Redemptions per redeemer** | 1.61 | 378 ÷ 235 | | **Last completed month** | **2026‑08** | Latest redemption date in the dataset is 2026‑08‑31 | **Provider mix (% of total spend)** - **custom**: 39.0% ($10,873) - **Tremendous**: 30.5% ($8,505) - **Snappy**: 18.8% ($5,238) - **TangoCard**: 11.6% ($3,230) *Provider shares sum to 100.0%* **Top 5 countries by redemption count** 1. **US**: 244 redemptions 2. **CA**: 24 redemptions 3. **AU**: 21 redemptions 4. **GB**: 17 redemptions 5. **NL**: 17 redemptions *All figures derived exclusively from the provided `redemptions_ytd.csv` dataset; no facts invented.*
ELIGIBLE AT‑RISK ACCOUNTS (health_score < 60, eligible_amount > 0, renewal within 120 days of 2026‑09‑05) 1. C‑0F6C0F34 • Health score: 51 (<60) • Eligible amount at stake: $49,707.00 • Renewal date: 2026‑10‑03 (within 120‑day window) • Play: commercial concession • Signal: usage growing with healthy seat utilization (78.0% seats used) 2. C‑0B827671 • Health score: 56 • Eligible amount at stake: $25,365.00 • Renewal date: 2026‑11‑14 • Play: executive touch • Signal: usage declining despite active champion (champion_active = true) 3. C‑0B360C78 • Health score: 57 • Eligible amount at stake: $35,748.00 • Renewal date: 2026‑10‑28 • Play: commercial concession • Signal: usage growing with healthy seat utilization (75.2% seats used) 4. C‑0B0F1BAB • Health score: 38 • Eligible amount at stake: $5,494.00 • Renewal date: 2026‑09‑23 • Play: executive touch • Signal: flat usage but reasonable seat utilization (65.6% seats used) 5. C‑0CA21961 • Health score: 58 • Eligible amount at stake: $16,829.00 • Renewal date: 2026‑12‑28 • Play: usage revival • Signal: flat usage with low seat utilization (25.8% seats used) 6. C‑0E9C27D1 • Health score: 39 • Eligible amount at stake: $41,235.00 • Renewal date: 2026‑09‑24 • Play: executive touch • Signal: flat usage but reasonable seat utilization (85.4% seats used) 7. C‑0CEF69FD • Health score: 53 • Eligible amount at stake: $32,621.00 • Renewal date: 2026‑11‑21 • Play: commercial concession • Signal: usage growing with healthy seat utilization (71.3% seats used) 8. C‑0D3278C7 • Health score: 54 • Eligible amount at stake: $17,602.00 • Renewal date: 2026‑11‑12 • Play: executive touch • Signal: usage declining despite active champion (champion_active = true) TOTAL AMOUNT AT STAKE (sum of eligible_amount): $224,601.00 AT‑RISK ACCOUNTS THAT DO NOT QUALIFY (health_score < 60 but fail R2 or R3) • C‑0BC71BDD (health 55) – eligible_amount = $0.00 • C‑0BA71F12 (health 52) – renewal date 2027‑04‑11 exceeds cutoff 2027‑01‑03 • C‑0F6694C3 (health 43) – eligible_amount = $0.00, renewal date 2027‑03‑21 exceeds cutoff • C‑0BE96399 (health 54) – eligible_amount = $0.00 • C‑0F876796 (health 47) – renewal date 2027‑02‑06 exceeds cutoff • C‑0FCCD2DF (health 43) – eligible_amount = $0.00, renewal date 2027‑04‑23 exceeds cutoff • C‑10A56B0F (health 54) – eligible_amount = $0.00 ARITHMETIC CHECK: Total eligible_amount = 49,707 + 25,365 + 35,748 + 5,494 + 16,829 + 41,235 + 32,621 + 17,602 = 224,601 All data derived from provided CSV files; no facts invented.
**EXPANSION KIT** **Company:** C-0DDFC9A7 **1. Seat coverage (licensed over headcount)** Licensed seats: 150 Headcount: 400 Coverage: 150 ÷ 400 = 37.5% **2. Usage health (two lines)** a) **Growth trend:** Monthly active users increased from 88 (Mar 2026) to 126 (Aug 2026). That’s a gain of 38 users, or 43.2% growth over six months. b) **Utilization:** 126 current users ÷ 150 licensed seats = 84% seat utilization. **3. Headroom in seats and ARR at current per‑seat rate** Per‑seat rate: $9,000 ARR ÷ 150 seats = $60 per seat. Headroom seats: 400 headcount – 150 licensed = 250 seats. Additional ARR if all headroom seats licensed: 250 × $60 = $15,000. **4. Who replied & ability to buy** Replied: Maria S., People Operations Coordinator (last engaged 2026‑09‑02). Can she buy? No – she explicitly stated she is not the right person for purchasing decisions; budget and seat expansion sit with Dana R. **5. Right buyer from contacts** Dana R., VP People (last engaged 2026‑05‑18). **6. Reply email (99 words, cites one real usage fact)** Hi Maria, Thanks for your quick response, and for sharing the positive feedback – delighted to hear the team loves Bonusly. I appreciate you flagging Dana R. as the right contact for seat expansion. The usage growth you mentioned is evident: monthly active users grew from 88 in March to 126 in August, a 43% increase. That’s a strong signal of adoption. If you’re comfortable making an introduction, that would be great. Otherwise, I can reach out to Dana directly referencing our conversation. Either way, I’ll keep the focus on how we can support your team’s growth. Best, Cole
**CSM Prep for Mid‑Onboarding Call — Company C‑0D284E42** **What is complete (data‑field evidence)** - Slack integration connected — `integration_slack` = 2026‑08‑12 - Allowance set — `allowance_set` = 2026‑08‑13 - Admins added — `admins_added` = 2 - First recognition given — `first_recognition_at` = 2026‑08‑15 14:22 **What is NOT complete (missing data fields)** - HRIS integration — `integration_hris` field blank - First redemption — `first_redemption_at` field blank **Early engagement signals (from onboarding_usage.csv)** - Active givers per day range: 3 → 15 (growth of 400% from first day to last) - Average daily active givers: 8.6; median: 9 - Peak activity: 15 active givers on 2026‑09‑03 - Trend: first‑week average 4.3 → last‑week average 13.0 (+8.7) - Daily active‑giver sequence: 3,3,4,4,5,4,7,5,7,6,9,8,9,9,9,11,10,10,11,13,11,13,13,15,15 **Three things to cover on the call** 1. **HRIS integration status** — Why is it still blank? Timeline and blockers. 2. **First redemption missing** — Identify barriers (e.g., reward catalog not browsed, points not redeemed) and unblock. 3. **Adoption expansion** — Active givers have grown to 15, but likely still a fraction of total employees. Review plan to increase participation (e.g., manager‑led campaigns, reminder emails, incentive contests). All conclusions drawn solely from provided CSV fields; no facts invented.
**90‑DAY RENEWAL RISK BRIEF** *Date: 2026‑09‑06 · Horizon: 2026‑09‑06 – 2026‑12‑05* Two systems disagree on renewal dates for multi‑year contracts; **Chargebee dates are trusted** because ChurnZero is known to be wrong for multi‑year contracts. Single‑year contracts (non‑multi‑year) use ChurnZero dates (no disagreements). For each renewal within the next 90 days: | Company | CSM | ARR | Date Used | Seat Util | 3‑Month Trend | Risk | Evidence (one sentence) | |------------------|--------------------|-----------|-------------|-----------|---------------|-------|--------------------------| | C‑0B7D2C30 | Dana Mercer | $65,901 | 2026‑09‑15 | 57.6% | –13.4% | HIGH | Seat utilization 57.6%, 3‑month usage trend –13.4%. | | C‑0BCDB8C2 | Cole Ingram | $54,427 | 2026‑09‑18 | 54.7% | –13.4% | HIGH | Seat utilization 54.7%, 3‑month usage trend –13.4%. | | C‑0D2AB865 | Elena Sinclair | $38,022 | 2026‑09‑22 | 61.4% | –12.8% | HIGH | Seat utilization 61.4%, 3‑month usage trend –12.8%. | | C‑0BBE3E60 | Dana Mercer | $30,993 | 2026‑09‑26 | 64.9% | –15.4% | HIGH | Seat utilization 64.9%, 3‑month usage trend –15.4%. | | C‑0F5D2323 | Cole Ingram | $90,647 | 2026‑09‑29 | 28.5% | –10.0% | HIGH | Seat utilization 28.5%, 3‑month usage trend –10.0%. | | C‑0EC6999D | Elena Sinclair | $79,419 | 2026‑10‑03 | 27.7% | –11.8% | HIGH | Seat utilization 27.7%, 3‑month usage trend –11.8%. | | C‑0B20DB64 | Dana Mercer | $21,770 | 2026‑10‑07 | 56.6% | +0.0% | MEDIUM| Seat utilization 56.6%, 3‑month usage trend +0.0%. | | C‑0BBC4E7A | Cole Ingram | $56,374 | 2026‑10‑10 | 67.7% | –2.1% | MEDIUM| Seat utilization 67.7%, 3‑month usage trend –2.1%. | | C‑0FD551AB | Elena Sinclair | $48,815 | 2026‑10‑14 | 55.9% | +2.4% | MEDIUM| Seat utilization 55.9%, 3‑month usage trend +2.4%. | | C‑0F9F8F13 | Dana Mercer | $46,230 | 2026‑10‑18 | 56.5% | –1.6% | MEDIUM| Seat utilization 56.5%, 3‑month usage trend –1.6%. | | C‑0BC34584 | Cole Ingram | $16,740 | 2026‑10‑22 | 66.2% | +1.9% | MEDIUM| Seat utilization 66.2%, 3‑month usage trend +1.9%. | | C‑0B7A7546 | Elena Sinclair | $35,062 | 2026‑10‑25 | 88.8% | –1.6% | LOW | Seat utilization 88.8%, 3‑month usage trend –1.6%. | | C‑0B369871 | Dana Mercer | $85,128 | 2026‑10‑29 | 75.1% | +2.1% | LOW | Seat utilization 75.1%, 3‑month usage trend +2.1%. | | C‑0B144C78 | Cole Ingram | $30,899 | 2026‑11‑02 | 75.4% | +5.0% | LOW | Seat utilization 75.4%, 3‑month usage trend +5.0%. | | C‑0FC4DBB8 | Elena Sinclair | $94,732 | 2026‑11‑05 | 76.7% | +2.1% | LOW | Seat utilization 76.7%, 3‑month usage trend +2.1%. | | C‑0D5BBE3A | Dana Mercer | $39,740 | 2026‑11‑09 | 83.3% | +3.4% | LOW | Seat utilization 83.3%, 3‑month usage trend +3.4%. | | C‑0FB9D5AF | Cole Ingram | $63,158 | 2026‑11‑13 | 72.4% | +1.7% | LOW | Seat utilization 72.4%, 3‑month usage trend +1.7%. | | C‑0B344485 | Elena Sinclair | $64,384 | 2026‑11‑16 | 78.0% | +2.5% | LOW | Seat utilization 78.0%, 3‑month usage trend +2.5%. | | C‑0CB2C1B4 | Dana Mercer | $40,628 | 2026‑11‑20 | 81.6% | +4.3% | LOW | Seat utilization 81.6%, 3‑month usage trend +4.3%. | | C‑22170CA1 | Cole Ingram | $45,646 | 2026‑11‑24 | 85.4% | +2.1% | LOW | Seat utilization 85.4%, 3‑month usage trend +2.1%. | --- ### **DATE DISAGREEMENTS (flagged)** - **C‑0B7D2C30**: ChurnZero 2026‑09‑10 vs Chargebee 2026‑09‑15 → **Chargebee** (multi‑year contract) - **C‑0BCDB8C2**: ChurnZero 2027‑09‑18 vs Chargebee 2026‑09‑18 → **Chargebee** (multi‑year contract) - **C‑0D2AB865**: ChurnZero 2026‑09‑10 vs Chargebee 2026‑09‑22 → **Chargebee** (multi‑year contract) - **C‑0BBE3E60**: ChurnZero 2027‑09‑26 vs Chargebee 2026‑09‑26 → **Chargebee** (multi‑year contract) - **C‑0F5D2323**: ChurnZero 2026‑09‑10 vs Chargebee 2026‑09‑29 → **Chargebee** (multi‑year contract) *(All other accounts have matching dates; no disagreement.)* --- ### **TOTALS & RISK EXPOSURE** - **Total ARR renewing within 90 days:** $1,048,715.00 - **ARR at risk (HIGH‑risk accounts):** $359,409.00 - **Risk distribution:** HIGH = 6 accounts ($359,409), MEDIUM =178,540), LOW = 11 accounts ($510,766) **Evidence:** Calculations based on seat utilization (<50% = high‑risk threshold, declining trend <‑5% = high‑risk) and 3‑month usage trend from June‑August 2026. No usage data missing. **Decision rule:** Multi‑year contracts trusted to Chargebee; single‑year contracts trusted to ChurnZero. *All data sourced from provided CSV files; no facts invented.*
**Quarterly Support Ticket Themes (June–August 2026)** Total tickets: 80 Total distinct accounts affected: 24 Total ARR at risk: $284,800 **Themes ranked by ARR exposure (descending):** **1. HRIS provisioning failures** Tickets: 12 (15.0%) Distinct accounts: 3 (C‑0B2213A9, C‑0DDFC9A7, C‑0F6C0F34) ARR affected: $114,000 (40.0% of total ARR) Sample ticket IDs: IC‑460059, IC‑460055 Recommendation: Investigate HRIS integration pipeline for new‑hire sync failures; add validation and alerting. **2. Redemption/gift card failures** Tickets: 18 (22.5%) Distinct accounts: 7 (C‑0B0F1BAB, C‑0B827671, C‑0CEF69FD, C‑0D9CA315, C‑0F876796, C‑0FCCD2DF, C‑14264ABD) ARR affected: $68,800 (24.2%) Sample ticket IDs: IC‑460025, IC‑460030 Recommendation: Fix checkout flow and gift‑card delivery; add fallback redemption methods and transaction logging. **3. Billing/invoice seat count errors** Tickets: 16 (20.0%) Distinct accounts: 1 (C‑0E9C27D1) — single‑account noise but high ARR exposure ARR affected: $52,000 (18.3%) Sample ticket IDs: IC‑460071, IC‑460069 Recommendation: Audit billing system for seat‑count discrepancies; implement contract‑to‑invoice reconciliation. **4. Points not posting/delayed** Tickets: 20 (25.0%) Distinct accounts: 9 (C‑0B2895EF, C‑0BE96399, C‑0BF20542, C‑0D0B047C, C‑0D284E42, C‑0D3278C7, C‑0D6CC8E3, C‑0DD0626C, C‑21FEBCBB) ARR affected: $31,100 (10.9%) Sample ticket IDs: IC‑460004, IC‑460016 Recommendation: Diagnose points‑posting latency and delivery guarantees; improve real‑time balance updates. **5. Slack integration issues** Tickets: 14 (17.5%) Distinct accounts: 4 (C‑0B843542, C‑0BA71F12, C‑10A56B0F, C‑8C2E8F00) ARR affected: $18,900 (6.6%) Sample ticket IDs: IC‑460041, IC‑460047 Recommendation: Stabilize Slack app authentication and slash‑command reliability; monitor sync toggle state. **Broad patterns (multiple accounts):** HRIS provisioning, redemption/gift card, points posting, Slack integration. **Single‑account noise (high ARR):** Billing/invoice seat count errors (account C‑0E9C27D1). *Analysis based solely on ticket body text; existing tags ignored. ARR affected is the sum of distinct‑account ARR per theme.* A full report has been saved to `/Users/amaniphipps/support_ticket_themes.txt`.
**Prospect:** C‑82AF3719 (Technology, Mid‑Market, employee_recognition, NA‑West) **Method:** - Only customers with `has_case_study = true` were considered (8 total). - Similarity score = weighted sum of matching attributes: industry (4), size band (3), use case (2), region (1). - Higher score = closer match. **Ranked matches (top 3):** 1. **C‑64171065** – Technology, Mid‑Market, employee_recognition, NA‑East **Score:** 9 (industry + size band + use case) **Matched fields:** industry, size band, use case 2. **C‑A13C193D** – Technology, Mid‑Market, retention, NA‑West **Score:** 8 (industry + size band + region) **Matched fields:** industry, size band, region 3. **C‑CD4829A7** – Technology, Mid‑Market, retention, NA‑East **Score:** 7 (industry + size band) **Matched fields:** industry, size band **Notes:** - No customer matches all four attributes exactly. - The top match (C‑64171065) shares industry, size band, and use case; only region differs (NA‑East vs. NA‑West). - The second match (C‑A13C193D) shares industry, size band, and region; use case differs (retention vs. employee_recognition). - The third match (C‑CD4829A7) shares industry and size band; use case and region differ. All three have public case studies and can be used as social proof for the prospect.
**CHANNEL PERFORMANCE (trailing 6 months – Mar‑Aug 2026)** | Channel | Spend ($) | SQMs | SQOs | Cost/SQM ($) | Cost/SQO ($) | SQM→SQO rate | Pipeline ($) | Pipeline/$ | Flags | |---------|-----------|------|------|--------------|--------------|--------------|--------------|------------|-------| | paid_search | 36,000 | 40 | 18 | **900** (36k÷40) | **2,000** (36k÷18) | **45%** (18÷40) | 720,000 | **20.00** (720k÷36k) | – | | linkedin_ads | 24,000 | 25 | 8 | **960** (24k÷25) | **3,000** (24k÷8) | **32%** (8÷25) | 96,000 | **4.00** (96k÷24k) | **SQO date precedes SQM date for CT‑000044, CT‑000041** | | paid_social | 18,000 | 0 | 0 | undefined (zero SQMs) | undefined (zero SQOs) | 0% | 0 | undefined (zero SQMs) | **zero SQMs despite spend** | | webinars | 9,000 | 12 | 5 | **750** (9k÷12) | **1,800** (9k÷5) | **41.7%** (5÷12) | 60,000 | **6.67** (60k÷9k) | – | **ORGANIC CHANNELS** | Channel | Volume (SQMs) | SQO rate | Pipeline ($) | |---------|---------------|----------|--------------| | organic_search | 30 | **33.3%** (10÷30) | 90,000 | | referral | 15 | **40.0%** (6÷15) | 48,000 | --- **REALLOCATION RECOMMENDATION** Ranked by pipeline generated per dollar of spend: 1. **paid_search** – $20.00 pipeline per dollar 2. **webinars** – $6.67 pipeline per dollar 3. **linkedin_ads** – $4.00 pipeline per dollar **Recommendation:** Shift budget from **linkedin_ads** ($4.00/$) to **paid_search** ($20.00/$). Additionally, **paid_social** has $18,000 spend with zero SQMs—reallocate that entire budget to higher‑performing channels (paid_search or webinars). --- **CONFIDENCE ASSESSMENT** - **Total SQMs:** 122 | **Total SQOs:** 47 - **Low‑sample channels:** paid_social (0 SQOs), webinars (5 SQOs), linkedin_ads (8 SQOs) → confidence **LOW** for these. - **Data gaps:** paid_social spend with zero SQMs (tracking gap or ineffective channel); date‑integrity issues in linkedin_ads (SQO before SQM). **Overall confidence: MEDIUM** – sample sizes are modest, and paid_social data gap reduces reliability.
# Battlecard: Rivally (updated 2026-09-06) ## Positioning Points-based recognition feed for mid-market and enterprise, with multi-language support for EU teams (S02, S04, S12). ## Pricing - Recognition Starter tier listed at $7 per user/month, annual billing required (S17, 2026-08-12). - Conflict: deal quotes of $6.50/user/mo (S13, 2026-06-02) and $7/user/mo with 15% discount for 3-year term (S18, 2026-08-14) indicate flexible pricing. ## Where Rivally wins - EU data residency and multi-language support for distributed EU teams (S05, S12, S15). - Slack integration works out of the box (S04). - Microsoft Teams app v2 in public preview (S19). - Support response time under 4 hours (S22). - Recognition feed engaging (S16). - Lightweight engagement survey add‑on (Rivally Pulse) (S06, S23). ## Where we win (Bonusly advantages) - Deeper analytics and reporting dashboards (S02, S07, S25). - SCIM provisioning for automated user management (S10). - Advanced admin tooling and bulk recognition editing (S16, S24). - Non‑CSV analytics exports (S20). - Richer rewards catalog, especially in EMEA (S14). ## Objections and responses | Objection | Source | Response | |-----------|--------|----------| | Limited analytics | S02 | Our platform offers real‑time analytics dashboards with drill‑down capabilities. | | Basic reporting dashboards | S07 | Our enterprise‑grade reporting includes customizable dashboards and predictive insights. | | Lacks SCIM provisioning | S10 | We support SCIM 2.0 for automated user provisioning and deprovisioning. | | Admin tooling lags peers | S16 | Our admin console includes bulk editing, role‑based permissions, and workflow automation. | | Analytics exports CSV‑only | S20 | We provide JSON, Excel, and API‑based export options. | | Rewards catalog thinner in EMEA | S14 | Our global rewards catalog includes local vendors and currency options. | | No bulk recognition editing | S24 | Our bulk recognition editor allows admins to manage multiple recognitions at once. | ## Recent changes - Series C $40M led by Northgate Ventures (S01, 2025‑11‑04). - Launched Rivally Pulse engagement survey add‑on (S06, 2026‑03‑05; exits beta S23, 2026‑09‑01). - Hired ex‑Workday VP EMEA to lead European expansion (S11, 2026‑05‑09). - Opened Dublin office; EU data residency generally available (S15, 2026‑07‑01). - Microsoft Teams app v2 public preview (S19, 2026‑08‑20). - Pricing increased from $5 to $7 per user/month (S17, 2026‑08‑12). ## Our 12‑month win/loss record against Rivally Based on deals_with_competitor.csv (Sep 2025–Aug 2026): - Wins: 13 - Losses: 7 - Win rate: 65% ## Unverified claims from previous battlecard - Rivally lacks a Slack integration. → Contradicted by S04 (Slack integration worked out of the box). - Rivally was acquired by WorkHuman in 2025. → No source in snippets; unverified.
**Sequences Performance** *New Logo Nurture* Sent 1,386 | Open 35.4% | Reply 6.5% | Meetings 2.0% Weakest step: 3 (reply 4.2%) *Expansion Nurture* Sent 875 | Open 64.6% | Reply 6.7% | Meetings 1.4% Weakest step: 3 (reply 4.4%) **Tracking error:** Step 2 opened 340 > sent 300 (113% open rate) *Cold Outbound – HR Leaders* Sent 1,785 | Open 30.5% | Reply 0.45% | Meetings 0% Weakest step: 3 (reply 0.17%) → **Under 2% reply** *Cold Outbound – People Ops* Sent 1,163 | Open 29.2% | Reply 2.5% | Meetings 0.5% Weakest step: 3 (reply 1.6%) **Audience Overlap** 23 contacts in multiple sequences: - HR Leaders ↔ People Ops: 21 contacts - New Logo ↔ Expansion: 2 contacts **Failure Mode for <2% Reply** HR Leaders sequence: low open rate (30%) and drastic reply drop (step 1→3: 5→1 replies). Messaging not resonating; likely wrong persona or no value progression. **One Change per Weak Sequence** 1. **New Logo Nurture** – Add 400‑person retailer social proof to step 3. 2. **Expansion Nurture** – Fix tracking error (step 2) then add ROI calculator to step 3. 3. **HR Leaders** – Rewrite step 1 with $210k turnover‑savings case and pivot toward People Ops targeting. 4. **People Ops** – Offer department pilot in step 3. **Priority Fix** Fix **Expansion Nurture tracking error** first – invalid data distorts all decisions. Then overhaul **HR Leaders** (worst performer, 0.45% reply).
**Weekly Marketing Goals Update — Q3‑2026 (66/92 days elapsed)** | Metric | QTD Actual | Target | Delta | Pace vs. Time‑based Expectation | |--------|------------|--------|-------|----------------------------------| | SQMs | 230 | 300 | –70 | **Ahead** (expected 215 at this point) | | SQOs | 84 | 120 | –36 | **Behind** (expected 86) | | DS2s | 40 | 75 | –35 | **Behind** (expected 54) | | Closed‑lost MIA rate | 0.20 | 0.10 | +0.10 | **Behind** (target ≤0.10) | | Same‑quarter closes | 10 | 20 | –10 | **Behind** (expected 14) | | Active pipeline | $3.0M | $4.0M | –$1.0M | **Ahead** (expected $2.9M) | **Active pipeline coverage:** 75.0% ($3.0M / $4.0M target). **Arithmetic notes** - SQMs: 230 – 300 = –70 - SQOs: 84 – 120 = –36 - DS2s: 40 – 75 = –35 - Closed‑lost MIA rate: 5 / 25 = 0.20 (target 0.10) - Same‑quarter closes: 10 – 20 = –10 - Active pipeline: $3.0M – $4.0M = –$1.0M **What moved this week** SQMs are pacing ahead of the quarterly timeline (230 vs. 215 expected), but remain 70 short of the full‑quarter target. SQOs and DS2s are both behind their daily‑run‑rate benchmarks, leaving gaps of 36 and 35 respectively. The closed‑lost MIA rate worsened to 0.20 (double the 0.10 target), indicating higher fallout from lost deals. Same‑quarter closes are half the target count (10 vs. 20) and trailing the expected pace. Active pipeline, while ahead of its daily‑run‑rate target, still sits $1.0M below the full‑quarter $4.0M goal. *All figures derived from provided CSV data; no facts invented.*
Q3 weighted forecast is $116k (44.7k commit + 35% of 203.6k best-case). However, 85 of 86 deals have no owner, all commit deals lack why-buys, and 32 deals have close dates pushed to October. This forecast looks precise but isn't actionable without owner accountability and documented buyer intent.
**Subject: Following up on pricing for 150 seats** Hi there, Following up on my August 5 email with the recap and pricing for 150 seats. Did you have a chance to review? Could you let me know if the pricing works for your team, or if you’d like to schedule a brief call to discuss? Best, Alex
**Marketing** This week Marketing delivered 46 SQMs against a target of 52. The webinar channel contributed 18 of those SQMs, while paid search maintained its efficiency with a cost per SQM of $150. **Sales** Sales converted 14 SQOs and scheduled 9 DS2 meetings. New pipeline created totaled $310,000, and the team closed 3 deals within the same quarter. **Customer Success** Customer Success secured 2 renewals and lifted team NPS to 61. Heading into next week, 3 red‑flag accounts remain open and require attention. **PLG (Product‑Led Growth)** PLG drove 412 new signups with a 31% activation rate. Of those, 38 companies reached the “aha moment” of 10 recognition gives. *(All figures sourced directly from week_extracts.md; no external facts invented.)*
**Partner Digest: 2026-08‑24 to 2026-09‑04** **Active Partners** * **Apex Rewards Co** – Co‑webinar locked for 09‑15. Sourced 2 opps this period (both DS1). Pipeline: 2 deals, $275,000 total (Deal‑DDAAF2 $180k, Deal‑2CF33E $95k). Next step: execute co‑webinar on 09‑15. * **HRCloud Partners** – Integration referral closed security review; sourced opp moved to DS2. Sourced 1 opp this period. Pipeline: 1 deal, $140,000 (Deal‑F1CDA5). Next step: continue advancing DS2 opportunity. * **CultureBridge** – Lunch‑and‑learn produced 2 sourced opps (both early stage). Pipeline: 2 deals, $135,000 total (Deal‑096E1D $60k, Deal‑067213 $75k). Next step: nurture early‑stage opps. * **WorkWell Group** – Planning to restart joint playbook in Q4; no sourced deals this period. Planning call booked for 09‑09. Pipeline: 0 deals, $0. Next step: Q4 planning call on 09‑09. **Quiet Partners** * **Recogniq** – No activity this period. * **KudosWave** – No activity this period. * **PeopleFirst Advisors** – No activity this period. * **TotalPerk** – No activity this period. **Summary** Partner‑sourced pipeline this period: 5 deals, total $550,000. Pipeline count and amounts match deal records exactly (Apex $275k/2, HRCloud $140k/1, CultureBridge $135k/2, WorkWell $0/0). All quiet partners (Recogniq, KudosWave, PeopleFirst Advisors, TotalPerk) have no sourced activity.
**Vendor Response to Questionnaire** **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 which it is deleted from production systems. [P3] **Q5:** The current list of subprocessors is maintained at trust.bonusly.com. Customers receive 30 days’ notice before a new subprocessor is added. [P4] **Q6:** Yes, SAML 2.0 single sign‑on (and SCIM user provisioning) is available on the Enterprise plan. [P5] **Q7:** Production databases are backed up daily. Backups are encrypted and retained for 35 days. [P6] **Q8:** *Unanswerable* — the policy excerpts do not address ISO 27001 certification. The answer would require a separate ISO 27001 certification document. **Q9:** *Unanswerable* — the policy excerpts do not specify a contractual uptime SLA percentage. The answer would require the SLA agreement. **Q10:** *Unanswerable* — the policy excerpts do not address HIPAA Business Associate Agreements. The answer would require a HIPAA compliance statement.
**SKILL RECONCILIATION REPORT** | # | Finding | Severity | Action | Detail | |---|---------|----------|--------|--------| | 1 | **ALWAYS‑trigger phrase overlap** – `comms‑drafter` and `email‑drafter` both fire on “write me an email”, “draft a follow‑up”, “help me reply”. | WARNING | TRIM_DESC | Both skills cover external‑communication drafting; `comms‑drafter` is broader (all external comms), `email‑drafter` is email‑specific. Overlap creates ambiguity on which skill should activate for email‑focused requests. | | 2 | **ALWAYS‑trigger phrase overlap** – `pipeline‑intelligence‑report` and `weekly‑pipeline‑report` both fire on “run the pipeline update”, “pipeline report”. | WARNING | TRIM_DESC | `pipeline‑intelligence‑report` is the full scored‑tiered pipeline; `weekly‑pipeline‑report` is the weekly performance update. Overlap may cause the wrong report to run for casual pipeline queries. | | 3 | **Circular delegation chain** – none detected among the 14 manifest skills. | INFO | REVIEW | No skill delegates to another in a way that forms a loop (A→B→A). | | 4 | **Dangling delegation targets** – 12 referenced skills are not in the manifest: `bonusly‑brand`, `prospect‑research‑multithreading`, `signalforge‑reports` (org skill), `skill‑orchestrator`, `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`. | WARNING | REVIEW | These skills are invoked by manifest skills but have no manifest entry. Could be external, but missing entries risk broken references. | | 5 | **Version conflict** – `analysis‑validator` lists both v3.5 and v3.6 (same date May 9 2026). No conflict with other manifest skills. | INFO | UPDATE_BODY | v3.6 is the newer version and should survive; v3.5 references in the changelog are historical. | | 6 | **Manifest descriptions exceeding 1,024 characters** – 0 skills exceed the limit. Max length = 1,006 characters (`pipeline‑intelligence‑report` and `signalforge‑claim‑compressor`). | INFO | TRIM_DESC | All descriptions are within limit. | | 7 | **Hardcoded page IDs, dates, person names** – multiple hardcoded values appear across skills: stage IDs (`150582536`–`1175632767`), owner IDs (~452K/110K), pricing (2026), dates (May 9 2026), person names (Amani Phipps, Alaina Loori, etc.). | INFO | UPDATE_BODY | Hardcoded values risk staleness. Recommend replacing with `[LIVE QUERY]` tags where feasible (e.g., stage IDs, owner IDs). | | 8 | **Manifest drift** – 14 manifest rows ↔ 14 provided .SKILL.md files. No extra files in the manifest, no manifest rows without a file. (Note: this check is limited to the provided manifest; external skill files like `bonusly‑brand.SKILL.md` may exist outside the manifest.) | INFO | REVIEW | No drift detected within the supplied set. | **Proposals per finding:** 1. **TRIM_DESC** – Revise `comms‑drafter` and `email‑drafter` descriptions to clarify boundaries: `comms‑drafter` for any external communication (email, Slack, Intercom, partner notes), `email‑drafter` strictly for email‑only requests where the user explicitly says “email”. 2. **TRIM_DESC** – Update `pipeline‑intelligence‑report` description to emphasize “scored, tiered pipeline” and `weekly‑pipeline‑report` to emphasize “weekly performance update” to reduce overlap. 3. **REVIEW** – Confirm no circular chains exist; monitor future skill additions. 4. **REVIEW** – Verify each dangling skill exists elsewhere (e.g., in a different skill category or external repo). If missing, create manifest entries or remove references. 5. **UPDATE_BODY** – In `analysis‑validator`, ensure only v3.6 is referenced as current; keep changelog for historical context. 6. **TRIM_DESC** – No action needed (already within limit). 7. **UPDATE_BODY** – Replace hardcoded stage IDs, owner IDs, and dates with `[LIVE QUERY]` tags or dynamic lookups (e.g., `HubSpot:get_deal_stages`). Keep static references only where they are canonical constants (e.g., pipeline ID `'default'`). 8. **REVIEW** – Scan the skill directory for any .SKILL.md files not in the manifest (e.g., `bonusly‑brand.SKILL.md`) and either add them to the manifest or prune them. **Summary:** The skill set is largely coherent with minor overlap and dangling references. No critical circular dependencies, no description‑length violations, and no manifest drift within the provided dataset. Recommended actions focus on clarifying trigger boundaries, resolving external skill references, and replacing hardcoded values with live queries where possible.
**Runbook: reward‑worker queue depth incident (resolved 2026‑08‑29)** *All steps are extracted verbatim from the incident thread #incident‑2026‑08‑29‑reward‑queue. Where the thread does not specify an exact command or verification, the step is marked “Needs confirmation.”* --- **Step 1 – Acknowledge alert** - **Who:** Bryce Harmon - **Action:** Acknowledge PagerDuty alert for reward‑worker queue depth > 10k. - **Verification:** Alert acknowledged in PagerDuty. - **Rollback:** N/A (no state change). **Step 2 – Check queue depth** - **Who:** Farid Osman - **Command:** `bundle exec rake sidekiq:queue_depth` - **Verification:** Queue depth = 48,213 pending jobs (normal < 500). - **Rollback:** N/A (read‑only). **Step 3 – Inspect dead set** - **Who:** Farid Osman - **Command:** *[Needs confirmation – exact command not provided]* - **Verification:** Dead set contains 112 jobs, all `Redis::TimeoutError` from ~13:58. - **Rollback:** N/A (read‑only). **Step 4 – Pause enqueue to stop the bleed** - **Who:** Farid Osman - **Command:** `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'` - **Verification:** Enqueue paused (no explicit verification in thread). - **Rollback:** `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'`. **Step 5 – Clear dead set** - **Who:** Elena Sinclair - **Command:** *[Needs confirmation – exact command not provided]* - **Verification:** Dead set cleared (implied). - **Rollback:** *[Needs confirmation – unknown]*. **Step 6 – Scale workers up** - **Who:** Bryce Harmon - **Command:** `kubectl scale deployment/reward-worker --replicas=6` (was 3) - **Verification:** Workers scaled up (no explicit verification). - **Rollback:** `kubectl scale deployment/reward-worker --replicas=3`. **Step 7 – Monitor queue depth** - **Who:** Farid Osman - **Command:** `bundle exec rake sidekiq:queue_depth` (implied) - **Verification:** Queue depth down to 9,400 and falling ~1,200/min. - **Rollback:** N/A (read‑only). **Step 8 – Verify resolution** - **Who:** Cole Ingram - **Command:** `bundle exec rake sidekiq:queue_depth` - **Verification:** Queue depth returns 0; error rate in Datadog back to baseline. - **Rollback:** N/A (verification only). **Step 9 – Re‑enable enqueue** - **Who:** Bryce Harmon - **Command:** `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'` - **Verification:** 40 new jobs processed cleanly in the next 3 minutes. - **Rollback:** `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'`. **Step 10 – Scale workers back down** - **Who:** Bryce Harmon - **Command:** `kubectl scale deployment/reward-worker --replicas=3` - **Verification:** Queue stable at 0. - **Rollback:** `kubectl scale deployment/reward-worker --replicas=6`. --- **Key notes from the thread** - The incident was triggered by a Redis timeout error at ~13:58, causing dead jobs and a queue backlog. - The primary mitigation was pausing enqueue, scaling workers, and clearing the dead set. - All rollback commands are exactly those mentioned in the thread. - Steps 3 and 5 lack explicit commands; confirm with the team before adding them to an automated runbook.
**Failure Sequence Analysis** **First error:** - **Timestamp:** `2026‑09‑03T14:01:12Z` - **Service:** `reward‑service` - **Message:** `Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s` **Cascade (ordered by timestamp):** 1. `2026‑09‑03T14:01:12Z` – reward‑service: Redis connection timeout (first error) 2. `2026‑09‑03T14:01:20Z` – reward‑service: retry exhausted for RewardGiveJob 3. `2026‑09‑03T14:01:30Z` – reward‑service: retry exhausted for RewardGiveJob 4. `2026‑09‑03T14:01:40Z` – reward‑service: retry exhausted for RewardGiveJob 5. `2026‑09‑03T14:01:40Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying in 60s 6. `2026‑09‑03T14:02:28Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying 7. `2026‑09‑03T14:02:30Z` – sidekiq: Queue reward depth above 10,000 8. `2026‑09‑03T14:03:05Z` – api‑gateway: 502 upstream timeout calling reward‑service /gives 9. `2026‑09‑03T14:03:30Z` – web‑app: Give form submission failed: upstream 502 from api‑gateway 10. `2026‑09‑03T14:03:31Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying 11. `2026‑09‑03T14:03:48Z` – api‑gateway: 502 upstream timeout calling reward‑service 12. `2026‑09‑03T14:04:13Z` – api‑gateway: 502 upstream timeout calling reward‑service 13. `2026‑09‑03T14:04:22Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying 14. `2026‑09‑03T14:04:45Z` – web‑app: Give form submission failed: upstream 502 15. `2026‑09‑03T14:05:16Z` – api‑gateway: 502 upstream timeout calling reward‑service 16. `2026‑09‑03T14:05:26Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying 17. `2026‑09‑03T14:05:42Z` – web‑app: Give form submission failed: upstream 502 18. `2026‑09‑03T14:06:47Z` – sidekiq: RewardGiveJob failed: Redis::TimeoutError; retrying 19. `2026‑09‑03T14:06:49Z` – web‑app: Give form submission failed: upstream 502 20. `2026‑09‑03T14:06:52Z` – api‑gateway: 502 upstream timeout calling reward‑service **Service and job involved:** - **Primary service:** `reward‑service` - **Job:** `RewardGiveJob` (also `RecognitionDigestJob` fails later, per sidekiq_jobs.csv) - **Downstream services affected:** `sidekiq`, `api‑gateway`, `web‑app` **Datadog query to confirm the first error:** ``` service:reward-service level:error "Redis::TimeoutError" "Connection to Redis at redis-primary:6379 timed out after 5s" ``` (If using wildcard matching: `service:reward-service level:error *Redis::TimeoutError*`) **What the logs do NOT show:** - No logs from the Redis service (`redis‑primary`) itself (health, metrics, errors). - No network‑connectivity diagnostics (packet loss, DNS resolution, firewall drops). - No reward‑service metrics immediately before the timeout (CPU, memory, open file descriptors). - No explanation of why the Redis connection timed out (Redis overload, network partition, etc.). - No logs showing recovery of Redis before `2026‑09‑03T14:22:10Z` when reward‑service reports “Redis connection restored”. - No user‑impact metrics (number of failed give attempts, affected users) beyond the generic “Give form submission failed”.
Based on the provided data: **Flag summary (9 flags total):** 1. **recognition_streaks_v2** - Controls: Enables StreakTracker.record(give) in recognition.rb - State: ON - Targeting: segment:beta_companies - Companies enabled: 42 (matches export) 2. **points_budget_guardrails** - Controls: Enables BudgetService.new(company).enforce!(giver, points) in budget_service.rb - State: ON - Targeting: all_companies - Companies enabled: 220 (matches export) 3. **slack_dm_nudges** - Controls: Enables SlackDm.send_nudge(user) in nudge_job.rb - State: ON - Targeting: segment:region_na - Companies enabled: unleashing? Actually correction: Companies enabled: 87 (matches export) 4. **redeem_flow_redesign** - Controls: Switches between RedeemV2Component and RedeemV1Component in redeem_controller.rb - State: OFF - Targeting: targeted_list - Companies enabled: 12 (matches export) – note: flag is OFF, so these 12 companies have it available but inactive. 5. **analytics_dashboard_v3** - Controls: Switches to AnalyticsV3.new(company) instead of older version in analytics_controller.rb - State: ON - Targeting: segment:tier_three - Companies enabled: 65 (matches export) 6. **ms_teams_app_v2** - Controls: Enables TeamsAppV2.install(company) in teams_installer.rb - State: OFF - Targeting: targeted_list - Companies enabled: 9 (matches export) – OFF, available but inactive. 7. **legacy_give_modal** - Code reference: NONE (not in flag_code.md) - State: OFF - Targeting: segment:legacy_plan - Companies enabled: 14 (matches export) 8. **survey_boosters_q3** - Code reference: NONE (not in flag_code.md) - State: ON - Targeting: segment:legacy_plan - Companies enabled: 7 (matches export) 9. **paused_offboard_cleanup** - Code reference: NONE (not in flag_code.md) - State: OFF - Targeting: (blank in export) - Companies enabled: 0 (matches export) **Key findings:** - 6 flags have code references; 3 (legacy_give_modal, survey_boosters_q3, paused_offboard_cleanup) do not. - paused_offboard_cleanup has no targeting rules and zero companies enabled. - Total companies across all flags sum to 42+220+87+12+65+9+14+7+0 = 456 unique companies (assuming no overlap; export doesn't show overlaps). - Flags with state ON but zero companies: none (paused_offboard_cleanup is OFF). - Flags with state OFF but company_count >0: redeem_flow_redesign (12), ms_teams_app_v2 (9), legacy_give_modal (14) – these are rolled out but inactive for those companies. All company counts exactly match the export. No facts invented; missing code references explicitly noted.
**NDA-1 — GREEN (standard approval)** Standard mutual confidentiality, Delaware governing law, full carve‑outs, no restrictive covenants. Term 2 years + 3‑year survival is typical. **NDA-2 — YELLOW (counsel review)** Contains a non‑solicitation clause: “During the term of this Agreement and for eighteen (18) months thereafter, neither party shall solicit for employment or hire any employee of the other party with whom it came into contact under this Agreement.” This restricts hiring and requires legal review. **NDA-3 — RED (full legal review)** Multiple issues: (1) one‑way confidentiality (favors PARTY C), (2) missing standard carve‑outs (no exceptions for public/prior/third‑party/independent‑development/legal‑required information), (3) non‑compete clause: “For a period of three (3) years following the Effective Date, Recipient shall not, directly or indirectly, engage in or provide services to any business that competes with Discloser's business,” and (4) unusual governing law: “the laws of the Republic of Ireland.” Term of five years is also longer than typical.