Mean 0.932 · 30/40 perfect tests · $0.27 total · each card: the question → the correct answer (gold) → this model's actual answer
DEFINITIONS - DS2+ deal: any deal at stage DS2, DS3, DS4, or DS5. - Non-compliant why_buys: DS2+ deal where why_buys is empty, shorter than 15 characters, or a placeholder (tbd/n/a/see notes). A value of LONG(n) counts as substantive. - Missing DS1 timestamp: deal where t_ds1 is blank. - Regression: any earlier-stage timestamp (e.g., t_ds1) is chronologically later than a later-stage timestamp (e.g., t_ds2). - Stage order: DS1 < DS2 < DS3 < DS4 < DS5. AGGREGATE RESULTS Total open deals: 156 DS2+ deals: 124 1) WHY-BUYS NON-COMPLIANCE (DS2+) Overall: 101 / 124 = 81.5% non-compliant By owner: Bryce Harmon (owner 119337721): 15 / 18 = 83.3% Dana Mercer (owner 83155923): 18 / 22 = 81.8% Alex Franklin (owner 84342457): 48 / 61 = 78.7% Cole Ingram (owner 83155924): 19 / 22 = 86.4% Farid Osman (owner 716654662): 1 / 1 = 100.0% 2) MISSING DS1 TIMESTAMP Count: 0 of 156 deals have no t_ds1 value. 3) STAGE REGRESSION Count: 0 deals have out-of-order stage timestamps. THREE PROCESS FIXES 1. GATE DS2 ENTRY ON WHY_BUYS. Enforce a platform-level validation rule that blocks any deal from advancing past DS1 unless why_buys contains at least 15 characters (excluding LONG(n) patterns). At 81.5% non-compliance, the field is currently decorative — a gate makes it structural. 2. WEEKLY OWNER REVIEW CADENCE. Each Monday, surface every DS2+ deal owned by that AE lacking a substantive why_buys. Cole Ingram (86.4% non-compliant, 19 deals) and Bryce Harmon (83.3%, 15 deals) are highest priority. Require the rep to populate or document the value before their next pipeline review. 3. MONTHLY HYGIENE DASHBOARD. Automate a snapshot report showing: why_buys compliance rate by owner, count of DS1 deals missing t_ds1, and any timestamp anomalies. Post it to a shared channel so the team sees their standing in real time rather than waiting for an ad-hoc audit.
OWNER RESOLUTION REPORT ======================== Total deals in file: 156 DEALS RESOLVED: 156 of 156 (100%) All six unique owner_ids found in deals.csv matched an entry in owners.csv. Zero unmatched. DEALS WITH UNMATCHED OWNER_ID (no match in owners table): None ARCHIVED / DEACTIVATED OWNERS MAPPED TO OPEN DEALS: None The owners table contains two archived owners — Gavin Porter (1520255671) and Hugo Lindqvist (77260721) — but neither has any open deals assigned. TOTAL PIPELINE PER RESOLVED OWNER ---------------------------------- Bryce Harmon 35 deals $1,054,144.00 Alex Franklin 67 deals $624,310.00 Dana Mercer 24 deals $341,195.00 Cole Ingram 22 deals $288,161.43 Farid Osman 7 deals $4,134.00 Elena Sinclair 1 deal $2,100.00 -------------------------------------------------------- TOTAL 156 deals $2,314,044.43 Arithmetic check: 35 + 67 + 24 + 22 + 7 + 1 = 156 deals ✓ $1,054,144 + $624,310 + $341,195 + $288,161.43 + $4,134 + $2,100 = $2,314,044.43 ✓ Notable concentration: Bryce Harmon holds 45.6% of total pipeline ($1.05M) with 35 deals. Alex Franklin has the most deals by count (67) but lower average deal size (~$9,318 vs Bryce's ~$30,118).
## Call-to-Deal Mapping Integrity Report ### (a) Orphans: Gong rows with NO match in deals_open **Count: 33 of 70 gong rows** (47.1%) have a deal_id with no corresponding row in deals_open. Sample aliases across industry groups: | alias | industry_group | calls_90d | |---|---|---| | Deal-8FA85D | Diversified Financial Services | 46 | | Deal-8FC3F9 | Consumer Durables & Apparel | 24 | | Deal-3B7945 | Pharmaceuticals, Biotech & Life Sciences | 21 | | Deal-42B265 | Software & Services | 21 | | Deal-9CCC42 | Food, Beverage & Tobacco | 17 | | Deal-36EA09 | Software & Services | 17 | | Deal-9A43B4 | Software & Services | 14 | | Deal-605F3C | Software & Services | 12 | | Deal-E2D34B | (blank) | 11 | | Deal-76821A | Software & Services | 11 | | Deal-D84A2D | Software & Services | 9 | | Deal-1A0416 | Software & Services | 8 | | Deal-228783 | Software & Services | 7 | | Deal-3F86A0 | (blank) | 6 | | Deal-9897FA | Health Care Equipment & Services | 6 | | Deal-422BA6 | Real Estate | 6 | | Deal-344163 | Transportation | 6 | | Deal-B038F0 | Diversified Financial Services | 5 | | Deal-5CA5AF | Insurance | 5 | | Deal-D3BD1C | Health Care Equipment & Services | 5 | | Deal-5592CC | Diversified Financial Services | 5 | | Deal-1E8CFB | Consumer Services | 5 | | Deal-DECCF3 | Diversified Consumer Services | 5 | | Deal-51EA1A | Consumer Services | 5 | | Deal-38CA53 | Banks | 5 | | Deal-32088A | Consumer Durables & Apparel | 5 | | Deal-7C4130 | Real Estate | 4 | | Deal-C00480 | Commercial & Professional Services | 4 | | Deal-3B6668 | Capital Goods | 4 | | Deal-034D49 | (not in gong alias list) | — | | Deal-4A13AD | (not in gong alias list) | — | That is 100+ calls from orphaned deals not represented in the current open pipeline. Notably, 4 of the 6 highest-call gong deals (Deal-8FA85D at 46, Deal-8FC3F9 at 24, Deal-3B7945 at 21, Deal-42B265 at 21) are orphans — likely closed-won, closed-lost, or deleted from HubSpot. --- ### (b) Duplicate conversation keys **Count: 0 rows** where calls_90d exceeds distinct_conversation_keys. All 70 gong rows show calls_90d = distinct_conversation_keys exactly. There are no duplicate conversation keys within any deal in this dataset. --- ### (c) Share of DS3+ open deals with at least one logged call **Denominator:** 44 deals at stage DS3, DS4, or DS5 in deals_open. **Numerator:** 29 of those 44 have at least one matching gong row. **Share: 29 / 44 = 65.9%** The 15 DS3+ deals with ZERO logged calls in the last 90 days: | alias | stage | amount | close_date | |---|---|---|---| | Deal-9AAE5F | DS4 | $11,250 | 2027-02-28 | | Deal-403845 | DS5 | $9,000 | 2026-09-11 | | Deal-6787C2 | DS4 | $7,000 | 2026-09-30 | | Deal-2465CE | DS5 | $5,400 | 2026-09-10 | | Deal-62D607 | DS4 | $4,800 | 2026-10-30 | | Deal-FC22A3 | DS3 | $10,800 | 2026-09-30 | | Deal-7B3B0F | DS4 | $2,760 | 2026-09-25 | | Deal-0660B4 | DS4 | $1,920 | 2027-03-31 | | Deal-1FC049 | DS4 | $1,920 | 2026-09-11 | | Deal-FD9F4E | DS5 | $1,330 | 2026-10-23 | | Deal-BA571A | DS4 | $1,080 | 2026-10-30 | | Deal-F336B6 | DS3 | $4,200 | 2026-10-30 | | Deal-5FDCE4 | DS3 | $1,600 | 2026-10-01 | | Deal-293AF3 | DS3 | $9,000 | 2026-10-09 | | Deal-FA32A0 | DS3 | $11,116 | 2026-09-25 | Total pipeline at risk in these no-call DS3+ deals: **$83,096**. **Note on data quality:** The gong table's gong_owner_id is a Gong user ID (e.g. 4729257026550273695), not a HubSpot owner_id (e.g. 119337721, 84342457). The two ID spaces cannot be directly joined, which is why owner-based cross-referencing between these tables is not possible as provided.
Looking at the catalog, I need to determine which tables have giving/recognition metrics and respect the documented constraints.
Key observations:
- V2_LIVE.OBJECTS_DEALS: unpopulated — cannot use
- PRODUCTION.HUBSPOT.DEALS: stale (last sync 2023-03) — cannot use
- COMPANY_COHORT_SUMMARY: only table with M1 giving/redemption aggregates (M1_USERS, M1_GIVES, M1_REDEMPTIONS)
- No raw giving-events table is listed in the catalog, so pre-aggregated M1 fields are the only path
- The deleted-givers filter must NOT be applied — but since we use pre-aggregated M1 fields (no per-row giver filtering), this constraint is inherently satisfied
- No raw redemption-events table columns are documented beyond STATE, so M1_REDEMPTIONS from the cohort is the usable source
```sql
/*
First calendar month as a customer — per-company giving metrics.
Uses ONLY tables documented in the catalog.
Tables avoided: V2_LIVE.OBJECTS_DEALS (unpopulated),
PRODUCTION.HUBSPOT.DEALS (stale, last sync 2023-03).
No deleted-givers filter applied (would understate historical giving counts).
Redemptions: M1_REDEMPTIONS is pre-filtered to STATE = 'succeeded'
per the cohort summary aggregation.
*/
SELECT
COMPANY_ID,
DATE_TRUNC('MONTH', SIGNUP_DATE) AS first_calendar_month_as_customer,
M1_USERS AS unique_givers,
M1_GIVES AS recognition_count,
M1_REDEMPTIONS AS successful_redemption_count
FROM
/* Self-serve cohort: one row per company. Only catalog source with
pre-aggregated first-month giving (M1_USERS, M1_GIVES, M1_REDEMPTIONS).
M1_* fields cover the calendar month containing SIGNUP_DATE. */
PRODUCTION.PLG.COMPANY_COHORT_SUMMARY
WHERE
SIGNUP_DATE IS NOT NULL
ORDER BY
first_calendar_month_as_customer,
COMPANY_ID;
```
Caveats worth noting:
1. COMPANY_COHORT_SUMMARY covers self-serve (PLG) companies only. Sales-originated customers are not represented here — their giving activity would require a giving-events table that is not in the catalog.
2. M1_USERS is described as active users in month 1. It is the closest proxy for "unique givers" available, but in a recognition platform some users may receive without giving. If a dedicated giving-events table exists outside this catalog excerpt, it would give a more precise unique-giver count.
3. M1_REDEMPTIONS is pre-aggregated. For finance-grade redemptions, the catalog points to PRODUCTION.DEPRECATED_RECOGNITION.REDEMPTION_RECORDS_V2 with STATE = 'succeeded', but that table's column list is not documented here, so a join is not safely constructable from the catalog alone.
# CRM Data Completeness Audit
---
## SCOPE NOTE
No deals.csv was provided. The audit covers companies.csv (34 records), contacts.csv (52 records), and zoominfo_enrichment.csv (25 records). Without deal data, I cannot rank fixes by pipeline amount at the end; I rank by severity/count instead and flag what's needed.
---
## 1. COMPLETENESS BY FIELD
### Companies (34 rows)
| Field | Populated | Total | % |
|--------------------|-----------|-------|--------|
| company_alias | 34 | 34 | 100.0% |
| domain | 34 | 34 | 100.0% |
| industry | 34 | 34 | 100.0% |
| employee_count | 25 | 34 | 73.5% |
| hq_country | 27 | 34 | 79.4% |
**employee_count blank (9):** C-EC3025, C-96039F, C-44EA29, C-D04904, C-B23205, C-60C75F, C-7BBDFA, C-50D386, C-93C8BF
**hq_country blank (7):** C-2D1F1B, C-D73B89, C-44EA29, C-D04904, C-2C60E5, C-60C75F, C-EE9FFB
### Contacts (52 rows)
| Field | Populated | Total | % | Notes |
|-------------|-----------|-------|--------|--------------------------|
| contact_key | 52 | 52 | 100.0% | |
| company_alias| 52 | 52 | 100.0% | |
| email | 52 | 52 | 100.0% | 4 present but invalid (no domain) |
| title | 40 | 52 | 76.9% | 12 blank |
| persona | 37 | 52 | 71.2% | 15 blank |
| domain | 52 | 52 | 100.0% | |
**title blank (12):** CT-0000, CT-0022, CT-0072, CT-0080, CT-0081, CT-0092, CT-0120, CT-0121, CT-0122, CT-0132, CT-0141, CT-0170
**persona blank (15):** CT-0000, CT-0022, CT-0041, CT-0060, CT-0070, CT-0081, CT-0082, CT-0092, CT-0110, CT-0132, CT-0162, CT-0171, CT-0172, CT-0180, CT-0181
### Deals
MISSING ENTIRELY — no deals.csv was provided. Cannot audit owner, stage, amount, close_date, or why_buys. Cannot rank fixes by pipeline amount. This is the single largest gap in the extract.
---
## 2. DUPLICATE COMPANY CLUSTERS
### Cluster 1 — acme-corp.com
| Alias | industry | employee_count | hq_country |
|-------------|-------------|----------------|------------|
| C-0A092931 | Technology | 500 | US |
| C-0A092932 | tech | 510 | USA |
Same domain. Employee count disagrees (500 vs 510). Industry disagree (Technology vs tech — cosmetic). Country disagree (US vs USA — cosmetic).
**Survivor: C-0A092931** (higher employee_count = 500? No, C-0A092932 has 510). Actually ZI has no row for acme-corp.com, so use the higher-confidence record. C-0A092932 has 510 employees and a fuller ZI-style signal. However, neither has a ZI row to arbitrate.
**Recommendation: Survivor = C-0A092931** (entered first; keep the lower alias number, merge 510 emp count from C-0A092932 since it's higher). Industry → "Technology". hq_country → "US".
### Cluster 2 — globex.io
| Alias | industry | employee_count | hq_country |
|-------------|-------------|----------------|------------|
| C-0A092933 | SaaS | 200 | US |
| C-0A092934 | Technology | 200 | US |
Same domain, same employee count, same country. Only industry differs (SaaS vs Technology).
**Survivor: C-0A092933** (entered first; keep "SaaS" as more specific).
**Recommendation: Merge, drop C-0A092934.**
### No other shared domains found. No name-variant clusters detected across the remaining 30 company aliases.
---
## 3. INVALID EMAILS
Four contacts have emails missing the domain portion (truncated after @):
| contact_key | email | company_alias |
|-------------|------------|---------------|
| CT-0010 | user0@ | C-66D1FC |
| CT-0080 | user0@ | C-92D97D |
| CT-0081 | user1@ | C-92D97D |
| CT-0192 | user2@ | C-425E2A |
Fix: append the company domain (e.g., user0@66d1fc.com for CT-0010) — but confirm with source data first; these may be test/placeholder records.
---
## 4. DOMAIN MISMATCHES (email domain vs. company domain)
| contact_key | email | company_alias | company domain | mismatch |
|-------------|----------------------|---------------|----------------|------------------------|
| CT-0011 | user1@other-domain.com | C-66D1FC | 66d1fc.com | other-domain.com ≠ 66d1fc.com |
This is the only mismatch. One contact in C-66D1FC has an email from an entirely different domain. Verify whether this contact actually belongs to C-66D1FC or is a separate entity.
---
## 5. ENRICHMENT FILL — MISSING COMPANY FIELDS
Only populated where ZoomInfo has a matching domain row AND the CRM field is blank.
### employee_count — 8 fills available
| Alias | CRM (blank) | ZI value | Fill? |
|-------------|-------------|----------|-------|
| C-EC3025 | blank | 400 | YES |
| C-96039F | blank | 400 | YES |
| C-44EA29 | blank | 400 | YES |
| C-D04904 | blank | 400 | YES |
| C-B23205 | blank | 400 | YES |
| C-60C75F | blank | 400 | YES |
| C-7BBDFA | blank | 400 | YES |
| C-50D386 | blank | 400 | YES |
| C-93C8BF | blank | — (no ZI row) | NO |
### hq_country — 1 fill available, 6 unfillable
| Alias | CRM (blank) | ZI value | Fill? |
|-------------|-------------|---------------|-------|
| C-60C75F | blank | United States | YES |
| C-2D1F1B | blank | blank (ZI also empty) | NO |
| C-D73B89 | blank | blank (ZI also empty) | NO |
| C-44EA29 | blank | blank (ZI also empty) | NO |
| C-D04904 | blank | blank (ZI also empty) | NO |
| C-2C60E5 | blank | blank (ZI also empty) | NO |
| C-EE9FFB | blank | — (no ZI row) | NO |
---
## 6. CRM vs. ZOOMINFO DISAGREEMENTS
### Industry disagreements (CRM value ≠ ZI value)
All share the same pattern: CRM uses a generic label, ZI uses "Computer Software."
| Alias | CRM industry | ZI industry | Recommend |
|-------------|--------------|-------------------|-----------|
| C-66D1FC | tech | Computer Software | ZI (more specific) |
| C-EC3025 | Technology | Computer Software | ZI |
| C-44EA29 | tech | Computer Software | ZI |
| C-92D97D | Technology | Computer Software | ZI |
| C-D04904 | Technology | Computer Software | ZI |
| C-77A95A | Technology | Computer Software | ZI |
| C-AA8DDA | Technology | Computer Software | ZI |
| C-B25F40 | Technology | Computer Software | ZI |
| C-60C75F | tech | Computer Software | ZI |
| C-425E2A | Tech (trailing space) | Computer Software | ZI + trim trailing space |
**10 disagreements.** Recommend standardizing to ZI "Computer Software" for all, or creating a controlled vocabulary.
### Industry normalization (cosmetic, same meaning)
CRM uses "tech", "Tech " (trailing space), and "Technology" interchangeably. ZI calls them all "Computer Software." Similarly "health care" (CRM) matches "health care" (ZI). These are not disagreements per se, but the trailing space in "Tech " for C-425E2A, C-BA969B, C-93C8BF, C-C9BB20 is a data-cleaning issue.
### employee_count disagreements
None. Where both CRM and ZI have values, they agree exactly (e.g., 900, 1500, 50, 340, 120, 400 all match).
### hq_country disagreements
None where both have values. Disagreements are cosmetic: CRM uses "US", "USA", and "United States" interchangeably; ZI uses "United States" and "UK". Recommend normalizing to ISO 3166-1 alpha-2 (US, CA, GB).
---
## 7. TOP 10 FIXES BY SEVERITY (pipeline $ unavailable)
Ranked by number of affected records and data-quality risk. Without deals.csv, dollar amounts cannot be assigned.
| # | Fix | Records affected | Why critical |
|---|-----|-----------------|--------------|
| 1 | **Provide deals.csv** | All deals | Cannot audit owner, stage, amount, close_date, why_buys, or rank anything by pipeline. This is the #1 gap. |
| 2 | **Merge duplicate cluster: acme-corp.com** (C-0A092931 ↔ C-0A092932) | 2 companies + any linked contacts/deals | Shared domain = same legal entity. If deals exist against both, pipeline is double-counted. Survivor: C-0A092931; merge emp_count=510, industry=Technology, hq_country=US. |
| 3 | **Merge duplicate cluster: globex.io** (C-0A092933 ↔ C-0A092934) | 2 companies + any linked contacts/deals | Same risk as above. Survivor: C-0A092933; merge industry=SaaS. |
| 4 | **Fix 4 truncated emails** (CT-0010, CT-0080, CT-0081, CT-0192) | 4 contacts | Emails with no domain are undeliverable. Append company domain or remove record. |
| 5 | **Resolve domain mismatch** CT-0011 (user1@other-domain.com in C-66D1FC) | 1 contact | Contact may belong to a different company or be a personal email. Verify ownership. |
| 6 | **Fill 8 blank employee_count fields** from ZoomInfo | 8 companies (C-EC3025, C-96039F, C-44EA29, C-D04904, C-B23205, C-60C75F, C-7BBDFA, C-50D386) | All 8 confirmed at 400 employees via ZI. Straightforward fill. |
| 7 | **Fill C-60C75F hq_country** from ZoomInfo ("United States") | 1 company | Only hq_country fill available from ZI; the other 6 blanks have no ZI source. |
| 8 | **Standardize industry taxonomy** — collapse "tech"/"Tech "/"Technology" → "Computer Software" (or chosen label) | 10 companies | Inconsistent industry tags break reporting, segmentation, and territory assignment. |
| 9 | **Fill 12 blank contact titles** and **15 blank personas** from source system | 27 contact fields across 15-18 contacts | Persona is required for deal-threading analysis. Without it, champion/economic buyer mapping fails. No ZI enrichment available for contacts — source from CRM activity logs or manual review. |
| 10 | **Normalize hq_country** to ISO codes (US/USA/United States → US; UK → GB) and trim trailing whitespace on industry ("Tech " → "Tech") | ~34 companies | Cosmetic but causes downstream filter/group-by errors in BI tools. |
---
## SUMMARY STATISTICS
| Metric | Value |
|--------|-------|
| Total companies | 34 (2 duplicate pairs → 32 unique entities) |
| Total contacts | 52 |
| Companies missing employee_count | 9 (8 fillable from ZI, 1 not) |
| Companies missing hq_country | 7 (1 fillable from ZI, 6 not) |
| Contacts missing title | 12 (23.1%) |
| Contacts missing persona | 15 (28.8%) |
| Invalid emails | 4 (7.7%) |
| Domain mismatches | 1 (CT-0011) |
| Duplicate company clusters | 2 (acme-corp.com, globex.io) |
| Industry disagreements CRM↔ZI | 10 |
| Deals file | NOT PROVIDED |
**Overall company field completeness (5 fields): 153/170 = 90.0%**
**Overall contact field completeness (6 fields, counting invalid emails as populated): 289/312 = 92.6%**
**Overall contact field completeness (6 fields, excluding invalid emails): 285/312 = 91.3%**
Here is the full classification and analysis.
======================================================================
DEAL-BY-DEAL CLASSIFICATION (90 deals, $1,267,945 total pipeline)
======================================================================
CATEGORY | DEALS | PIPELINE | SIDE | TAG-TEXT MATCH
----------|---------|---------------|----------|---------------
timing | 20 | $261,851 | buyer | aligned
no_decision| 31 | $280,604 | mixed | aligned
competitor| 24 | $317,595 | buyer | aligned
product_gap| 8 | $210,245 | buyer | 6 disagree w/ tag
pricing | 5 | $172,450 | buyer | aligned
champion_left| 1 | $14,400 | buyer | aligned
other | 1 | $10,800 | unknown | aligned
----------------------------------------------------------------------
DETAILED BY CATEGORY
----------------------------------------------------------------------
TIMING (20 deals, $261,851) -- all buyer-side
Deal-DB0AAC $5,115 pausing, working on reconnect timeline
Deal-91A056 $2,975 reconnect early 2027
Deal-29326C $6,300 Timing
Deal-831B7B $7,200 look again in the new year
Deal-39E25C $3,360 reconnect next year
Deal-B3ABED $40,001 revisit Q2 next year, budget in 2028
Deal-B6AC09 $3,000 revisiting in 2027
Deal-E6E80A $24,000 pushed into early 2027
Deal-B038F0 $2,340 pushed back into early 2027
Deal-175756 $2,880 on hold until 2027
Deal-BB78F3 $6,600 interested, rolling out survey items first
Deal-15DA99 $19,600 bring back up early 2027
Deal-F4AF5D $5,760 looking at early next year
Deal-79B7A1 $25,000 Timing
Deal-9F176A $54,600 pause, not until end of year
Deal-69CF3D $11,520 On Hold
Deal-ECBF89 $7,200 On Hold for now
Deal-D1A623 $25,200 timing
Deal-55867E $7,200 not moving forward at this time
Deal-FEDBCB $2,000 reconnect end of year [reclassified from tag]
NO DECISION (31 deals, $280,604)
-- UNKNOWN side (22 deals, $168,152): all MIA/no-contact
Deal-AC944F $3,400 | Deal-214060 $2,880 | Deal-21B045 $11,700
Deal-988493 $8,400 | Deal-F308CA $30,321 | Deal-D48E0B $14,931
Deal-4664E1 $12,000 | Deal-583ADB $3,600 | Deal-E0441F $2,405
Deal-7CB44D $31,860 | Deal-AFA56C $3,000 | Deal-D1AABF $23,400
Deal-386F6E $13,895 | Deal-2BBA21 $2,310 | Deal-79E61A $7,020
Deal-AE7C4E $2,800 | Deal-DAB4F1 $3,450 | Deal-B4B50F $21,060
Deal-3F86A0 $3,840 | Deal-096750 $2,880 | Deal-5885B9 $7,200
Deal-5DB9B0 $10,800 (tag: ICP mismatch/Spam)
-- BUYER side (9 deals, $112,452): contact existed but no decision
Deal-13E9CF $33,750 | Deal-ED9AE7 $2,340 | Deal-E74A73 $2,100
Deal-50E5D8 $4,800 | Deal-FAC17C $2,100 | Deal-413C56 $2,760
Deal-2A292B $6,000 | Deal-7FBAC6 $7,200 | Deal-ABD14C $5,002
Deal-2FEDDB $2,200
COMPETITOR (24 deals, $317,595) -- all buyer-side
Named competitors in free-text:
Awardco (Deal-A2C349), Kudos (Deal-D0C698), Nectar (Deal-5E64CE),
WorkTango (Deal-47F1A1), Motivosity (Deal-64B19A), HiThrive (Deal-BF2A98),
Rippl (Deal-DDAB52), HeyTaco (Deal-ACE061), Paylocity (Deal-369281),
Canadian providers (Deal-8A0992, Deal-9FCD0D), ADP PEO partner (Deal-422BA6)
Competitive themes: broader feature sets, existing vendor lock-in,
local/Canadian preference, PEO partnerships, exchange rate simplicity
PRODUCT GAP (8 deals, $210,245) -- all buyer-side
Deal-242273 $60,000 needs on-site points currency digitization
Deal-9048EB $41,790 feature gaps vs. desired setup [tag said MIA]
Deal-5AD03E $24,000 wanted defined budget access [tag said Competitor]
Deal-981AD4 $36,855 UI doesn't fit, not UK-focused
Deal-8E27DA $21,000 only wanted swag, not R&R
Deal-3618CC $15,600 wanted Surveys [tag said Lost DM]
Deal-DC77FE $8,000 wanted point-label-as-dollars customization [tag said Competitor]
Deal-70F704 $3,000 only wanted anniversary awards [tag said Lost DM]
PRICING (5 deals, $172,450) -- all buyer-side
Deal-7ED004 $60,000 did not get budget approval
Deal-7B2236 $72,000 budget + wants simpler/cheaper [reclassified from tag]
Deal-C33D91 $7,200 significant budget cuts
Deal-DAFB82 $30,000 budget not until 2028
Deal-8A119B $3,250 didn't get approval
CHAMPION LEFT (1 deal, $14,400) -- buyer-side
Deal-F325A5 $14,400 layoffs and change in leadership
OTHER (1 deal, $10,800) -- unknown side
Deal-5DB9B0 $10,800 Spam / ICP mismatch
======================================================================
SIDE SPLIT
======================================================================
Buyer (actively engaged, chose another path): 68 deals ($1,044,793)
Unknown (MIA / no contact / unresponsive): 22 deals ($223,152)
---- -----------
Total: 90 deals ($1,267,945)
Note: the 22 unknown-side deals are 24% of deal count but only 18%
of pipeline, confirming they were generally smaller/earlier-stage.
======================================================================
TAG vs. FREE-TEXT DISAGREEMENTS: 13 of 90 (14%)
======================================================================
The structured closed_lost_tag clearly disagrees with the free-text
reason in 13 deals totaling $269,740 in pipeline:
# Deal $ Amount Tag says Free-text reveals
-- ----------- --------- -------------------- --------------------------
1 Deal-7B2236 $72,000 Doing nothing/Cost Budget + shift to simpler product
2 Deal-242273 $60,000 Competitor Product gap (points currency)
3 Deal-9048EB $41,790 MIA Feature gaps / bad fit
4 Deal-13E9CF $33,750 Doing nothing/Cost "Not a budget issue" (explicit)
5 Deal-5AD03E $24,000 Competitor Product gap (budget access)
6 Deal-3618CC $15,600 Lost DM Product gap (wanted surveys)
7 Deal-DC77FE $8,000 Competitor Product gap (customization)
8 Deal-5E64CE $3,360 Doing nothing/Cost Competitor lock-in (Nectar)
9 Deal-70F704 $3,000 Lost DM Product scope (anniversary only)
10 Deal-ED9AE7 $2,340 Lost DM Timing/budget/authority
11 Deal-E74A73 $2,100 Doing nothing/Cost Wants to validate manually first
12 Deal-FAC17C $2,100 Lost DM Approval bottleneck
13 Deal-FEDBCB $2,000 Doing nothing/Cost Timing (reconnect end of year)
Key pattern in disagreements: 6 of 13 deals tagged "Competitor" or
"Lost DM" actually lost due to product gaps. The tag system is hiding
$145,395 of product feedback under the wrong label.
======================================================================
TWO PATTERNS MOST WORTH ACTING ON
======================================================================
1. TIMING = recoverable deferred pipeline ($262K across 20 deals)
---------------------------------------------------------------
One in five lost deals explicitly said "reconnect next year" or
"on hold until 2027." These are not rejections -- they are deferred
commitments. The buyers themselves set a timeline.
Action: Build a structured Q1 2027 re-engagement playbook:
- Automated nurture sequence timed to budget-refresh cycles
(Jan-Feb when annual plans are set)
- Updated ROI calculators and case studies ready to send
- Track current contract end-dates for competitor-locked buyers
(e.g., Deal-5E64CE's Nectar contract expires Oct 2027)
If 30-40% of timing deals convert on re-engagement, that's
$78-105K in recaptured pipeline from intent that already exists.
2. PRODUCT GAPS are masquerading as Competitor losses ($145K hidden)
------------------------------------------------------------------
The tagging taxonomy has a structural flaw: deals that actually
lost because of missing product capabilities are labeled
"Competitor" or "Lost DM." Six deals totaling $145,395 were
mis-tagged this way, and four of the eight confirmed product-gap
deals carried the wrong tag entirely.
Specific product gaps surfacing:
- Points currency digitization / on-site redemption ($60K)
- Budget-access controls ($24K)
- Survey functionality ($15.6K)
- Points-label customization ($8K)
- Anniversary-awards-only use case ($3K)
Action:
a) Fix the tag taxonomy -- add a "Product gap" option to the
closed-lost picklist so reps can tag it without having to
shoehorn it into Competitor or Lost DM.
b) Route corrected tags to the product team as a competitive-
intelligence feed. If even two of these gaps were closed
(budget access + surveys), it would remove a differentiation
advantage from competitors in ~$40K of near-term pipeline.
```json
{
"tier_counts": {
"LOCK": 3,
"ACTION": 52,
"BUILD": 16,
"WATCH": 48,
"REVIVE": 2,
"RISKY": 35
},
"tier_examples": {
"LOCK": ["Deal-D348E1", "Deal-C26D20", "Deal-403845"],
"ACTION": ["Deal-25F752", "Deal-944310", "Deal-3974EB"],
"BUILD": ["Deal-2D1F1B", "Deal-66D1FC", "Deal-950043"],
"WATCH": ["Deal-6787C2", "Deal-C9C286", "Deal-332637"],
"REVIVE": ["Deal-3EED2C", "Deal-57FF13"],
"RISKY": ["Deal-E53952", "Deal-5408B0", "Deal-9AAE5F"]
},
"risky_deals": [
"Deal-E53952",
"Deal-5408B0",
"Deal-9AAE5F",
"Deal-547B2B",
"Deal-B7EBD1",
"Deal-A2B47C",
"Deal-2465CE",
"Deal-C61CF7",
"Deal-62D607",
"Deal-584EE5",
"Deal-C6D97A",
"Deal-7B3B0F",
"Deal-F9A08A",
"Deal-0660B4",
"Deal-FD9F4E",
"Deal-BA571A",
"Deal-FC22A3",
"Deal-7BBDFA",
"Deal-60C2C2",
"Deal-4A13AD",
"Deal-8AD4A5",
"Deal-15D24F",
"Deal-9D0060",
"Deal-690476",
"Deal-635B8E",
"Deal-ED725A",
"Deal-55164C",
"Deal-3BA5EA",
"Deal-5FDCE4",
"Deal-F336B6",
"Deal-5EED42",
"Deal-BA3DDC",
"Deal-7599B8",
"Deal-F9A3C1",
"Deal-FA32A0"
],
"lock_violations": 0,
"pipeline_shape": "Of 156 deals totaling $2.31M, 35 (22%, $292K) are RISKY—commit or best-case forecasts with zero meetings_30d, including the critical near-term pair Deal-547B2B ($11.2K, closes Sept 11) and Deal-2465CE ($5.4K, closes Sept 10) which carry COMMIT tags but zero recent meetings. Only 3 deals (2%) qualify as LOCK, while 52 (33%) have active meetings but insufficient stage/contact depth for LOCK. The remaining 16 BUILD and 48 WATCH deals are early-stage or lack meetings, with $787K and $620K pipeline respectively. The pipeline is bottom-heavy: 71 of 156 deals (46%) are DS1-DS2 with no meetings, representing $942K in unqualified opportunity. The 11 COMMIT deals represent only $126K (5.4%) of total pipeline, suggesting forecast inflation relative to deal engagement evidence."
}
```
**Methodology (arithmetic shown):**
- LOCK criteria: COMMIT + meetings_30d > 0 + last contact within 14 days + n_contacts ≥ 3 + stage DS3+. Only 3 met all gates: Deal-D348E1 ($13.8K, DS5, 1 meeting_30d), Deal-C26D20 ($13.5K, DS5, 4 meetings_30d), Deal-403845 ($9K, DS5, 2 meetings_30d).
- RISKY criteria: forecast_category ∈ {COMMIT, BEST_CASE} AND meetings_30d = 0 (data defect note: inbound_emails_30d = 0 for all rows, so meetings_30d is the sole inbound signal). 11 COMMIT + 24 BEST_CASE = 35 RISKY deals. Average days-since-contact for RISKY: 9.6 days (moderately stale).
- BUILD: not RISKY, no meetings_30d, contact within 90 days but >14 days ago. All 16 are DS1-DS2 PIPELINE deals with no meetings.
- LOCK violations = 0 (no LOCK deal has meetings_30d = 0).
- Stage mix: DS1 (32), DS2 (39), DS3 (61), DS4 (14), DS5 (10). Forecast mix: PIPELINE (105), BEST_CASE (40), COMMIT (11).
Here is the CRM write-back for each transcript, built exclusively from prospect statements.
---
TX-001 — Deal-CFE7F4
```json
{
"transcript_id": "TX-001",
"deal_alias": "Deal-CFE7F4",
"why_buys": [
"Automate anniversary and birthday awards — HR team of three cannot keep up manually",
"Tracking in spreadsheet, people slipping through cracks"
],
"pain_points": [
"Manual recognition process overwhelms a 3-person HR team",
"Spreadsheet-based tracking causes people to be missed",
"No SSO or audit logs — IT cannot sign off without them"
],
"stakeholders": [
"VP People",
"HR Admin"
],
"budget_signal": "$40k earmarked for engagement tools this fiscal year",
"timeline_signal": "Live before open enrollment in November",
"competitor_mentioned": "Achievers — prospect said they looked at it last year but it was too heavy for their team size",
"next_step": "Security review scheduled for September 12 (explicitly agreed by VP People)",
"objections": [
"SSO and audit logs required for IT sign-off"
],
"confidence": "HIGH — budget confirmed, timeline clear, security review scheduled, prior competitor eliminated by prospect"
}
```
---
TX-002 — Deal-70BB30
```json
{
"transcript_id": "TX-002",
"deal_alias": "Deal-70BB30",
"why_buys": [
"Tie recognition to retention for hourly workforce"
],
"pain_points": [
"Regretted turnover over 30% for hourly workforce"
],
"stakeholders": [
"Head of Total Rewards",
"CFO"
],
"budget_signal": "$25k pilot budget approved for this quarter (stated by CFO)",
"timeline_signal": "Decision by end of September (stated by CFO)",
"competitor_mentioned": null,
"next_step": "Send pilot agreement; prospect will route to legal this week (explicitly agreed)",
"objections": [
"Workday integration must be rock solid (CFO condition)"
],
"confidence": "VERY HIGH — CFO in room with approved budget, no competing vendors, pilot agreement moving to legal"
}
```
---
TX-003 — Deal-530B50
```json
{
"transcript_id": "TX-003",
"deal_alias": "Deal-530B50",
"why_buys": [
"Make recognition visible across 12 retail locations",
"Store managers need budget autonomy for on-the-spot recognition"
],
"pain_points": [
"Recognition not visible across 12 retail locations",
"Store managers have zero budget autonomy for on-the-spot recognition"
],
"stakeholders": [
"People Ops Manager"
],
"budget_signal": null,
"timeline_signal": "No rush until Q1",
"competitor_mentioned": "Bucketlist — CEO used it at her last company and liked it",
"next_step": "Schedule call with CEO; People Ops Manager to send two time options (explicitly agreed)",
"objections": [
"CEO must be sold first — she decides anything people-related",
"CEO has prior positive experience with Bucketlist (competitor familiarity)"
],
"confidence": "MEDIUM-LOW — no budget stated, CEO buy-in is a prerequisite and she has a competitor preference, timeline not urgent (Q1)"
}
```
---
TX-004 — Deal-180D02
```json
{
"transcript_id": "TX-004",
"deal_alias": "Deal-180D02",
"why_buys": [
"Consolidate three separate recognition tools into one"
],
"pain_points": [
"Paying for three tools and none of them talk to the HRIS"
],
"stakeholders": [
"VP People",
"IT Security Lead"
],
"budget_signal": "Under $15k annually can be approved without going to the board (stated by VP People)",
"timeline_signal": null,
"competitor_mentioned": null,
"next_step": null,
"objections": [
"Procurement cycle is six to eight weeks minimum (IT Security Lead)",
"Security review took three months for last vendor — hesitation (IT Security Lead)",
"CFO meeting is uncertain — VP said 'Maybe, no promises'"
],
"confidence": "LOW — no agreed next step, procurement and security review long-tail risks, CFO engagement uncertain"
}
```
---
TX-005 — Deal-F8767A
```json
{
"transcript_id": "TX-005",
"deal_alias": "Deal-F8767A",
"why_buys": [
"Automate service milestones",
"Analytics on recognition equity across departments"
],
"pain_points": [
"Night-shift teams feel invisible — engagement scores 20 points lower",
"Exec team skeptical after a failed rollout two years ago"
],
"stakeholders": [
"HR Director",
"People Ops Coordinator"
],
"budget_signal": "$12k approved under engagement line",
"timeline_signal": "Running before January all-hands",
"competitor_mentioned": "Nectar — prospect is mid-pilot with Nectar and said we'd need to beat that experience",
"next_step": "Present to exec team on October 2 (explicitly agreed)",
"objections": [
"Exec team skeptical after failed rollout two years ago",
"Currently mid-pilot with Nectar — must beat existing experience"
],
"confidence": "MEDIUM — budget and timeline confirmed, exec presentation secured, but competing against active Nectar pilot and exec skepticism"
}
```
---
TX-006 — Deal-EE195F
```json
{
"transcript_id": "TX-006",
"deal_alias": "Deal-EE195F",
"why_buys": [
"Cut admin time on service awards"
],
"pain_points": [
"HR Manager personally spends five hours a month ordering and shipping plaques"
],
"stakeholders": [
"HR Manager"
],
"budget_signal": null,
"timeline_signal": "Q1 start realistic (fiscal year resets in February)",
"competitor_mentioned": null,
"next_step": "Send one-page overview; HR Manager will forward to COO this week (explicitly agreed)",
"objections": [
"COO usually prefers building things in-house (build-vs-buy risk)"
],
"confidence": "MEDIUM — pain is real and personal, no budget objection, but sole stakeholder, COO decision-maker preference for in-house is a material risk"
}
```
**Top 3 Deals Closest to Signature** **1. Deal-547B2B — $11,200 (Alex Franklin, DS5/COMMIT, close 2026-09-11)** Closest. Redlines came back clean 2026-09-04. Signing page is out. Alex says their VP People confirmed signing tomorrow. Nothing stands between this and ink. Left: just the actual signature. **2. Deal-403845 — $9,000 (Alex Franklin, DS5/COMMIT, close 2026-09-11)** Order form is with the buyer's finance team. Moving cleanly per Slack. (Note: CRM lists Alex as owner; Dana Mercer posted the update from "my side" — possible ownership gap in CRM vs. reality.) Left: finance team green-light. **3. Deal-A2B47C — $6,360 (Alex Franklin, DS5/COMMIT, close 2026-09-11)** Alex confirmed it's warm and on a normal legal-review pace. No blockers raised. Left: legal review completion. **Flag — Deal-2465CE ($5,400)** CRM still shows DS5/COMMIT with a 2026-09-10 close, but Slack (Dana, 09-04) says the champion left, procurement froze, and it should be pulled to Q4. CRM status is stale — this deal is blocked, not close.
Here's the analysis. ## Line-by-line classification **1. SCIM user provisioning — Deal-EC3025, $ unknown** Prospect quote: "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." Product docs: SCIM is explicitly listed as NOT currently supported. Classification: REAL GAP. SCIM is absent from the product entirely. This is not gated to any tier — it simply does not exist. A security team making it a hard requirement means the product cannot meet the buyer's procurement criteria at any price. **2. ADP Workforce Now integration — Deal-D0D6B5, $ unknown** Prospect quote: "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us." Product docs: Supported HRIS integrations are Workday, BambooHR, Gusto, Rippling. ADP is explicitly listed as NOT supported. Classification: REAL GAP. ADP Workforce Now is one of the largest payroll/HRIS platforms in the US mid-market. It is absent from the supported list entirely. No tier or upgrade path addresses it. Prospect called it a dealbreaker. **3. Custom report combining recognition frequency with turnover — Deal-CFE7F4, $ unknown** Prospect quote: "I tried to build a custom report combining recognition frequency with turnover and couldn't — is that possible on our current plan?" Product docs: Custom report builder is Enterprise-only. The prospect is presumably not on Enterprise. Classification: PLAN GATE, not a product gap. The feature exists on a higher tier. The rep's response (offer upgrade path) is appropriate. This is a pricing/packaging question, not a missing capability. **4. Slack integration low adoption / no manager training — Deal-84DBA6, $ unknown** Prospect quote: "We turned on the Slack integration in July, but half our managers still haven't given a single recognition — nobody ever trained them on it." Product docs: Slack integration exists on all plans. The gap described is adoption and enablement. Classification: ROLLOUT / ENABLEMENT ISSUE. The product capability exists. The problem is lack of training for managers. The rep's offer to run a manager enablement session is the right fix. **5. Native mobile app for hourly workers — Deal-36C33F, $ unknown** Prospect quote: "Good to know. The web version should be fine for our office staff for now." This was raised by the rep (Alex Franklin), not the prospect. The prospect explicitly accepted the workaround. Classification: NOT A PROSPECT-RAISED GAP. The rep disclosed it proactively. The prospect did not object and accepted the web version. Per instructions, rep language does not count as prospect voice. Not eligible for the summary. --- ## Summary of true product gaps | # | Gap | Deal | Prospect role | Quote | |---|---|---|---|---| | 1 | SCIM user provisioning missing entirely | Deal-EC3025 | IT Security Lead | "We need SCIM user provisioning — our security team will not approve any tool that requires manual account management." | | 2 | ADP Workforce Now integration missing entirely | Deal-D0D6B5 | HRIS Manager | "Our payroll runs on ADP Workforce Now and I don't see ADP anywhere in your integration list — that's a dealbreaker for us." | Both are product gaps (not plan-gated features, not enablement issues) because the capabilities do not exist in the product at any tier. No deal amounts were provided in the transcript data.
Here is the stale deal analysis. "Stale" = no logged email, call, or meeting in the engagements table on or after 2026-08-29 (7 days before snapshot 2026-09-05). Recency computed from engagements_by_deal_90d.csv's last_email / last_call / last_meeting fields. Two deals (Deal-3EED2C, Deal-57FF13) have no entry in the engagements table at all — treated as never-contacted (N/A days since last contact). ==================================================================================================== STALE OPEN DEALS — grouped by owner, ordered by amount descending ==================================================================================================== BRYCE HARMON (13 stale deals, $626,243.00) ---------------------------------------------------------------------------------------------------- Deal alias Stage Amount Last contact Days since Deal-2D1F1B DS1 $240,000.00 2026-06-16 81 Deal-66D1FC DS1 $ 99,000.00 2026-08-20 16 Deal-950043 DS1 $ 70,000.00 2026-08-17 19 Deal-B23205 DS1 $ 45,000.00 2026-08-20 16 Deal-7BBDFA DS3 $ 37,440.00 2026-07-21 46 Deal-332637 DS2 $ 36,000.00 2026-08-27 9 Deal-1BEEBF DS1 $ 31,500.00 2026-08-17 19 Deal-C5658B DS1 $ 23,400.00 2026-08-20 16 Deal-40522D DS3 $ 21,000.00 2026-08-17 19 Deal-F0EBBB DS3 $ 11,400.00 2026-08-12 24 Deal-E25A09 DS1 $ 6,000.00 2026-08-27 9 Deal-C9C286 DS2 $ 5,502.00 2026-08-27 9 Deal-012CB1 DS1 $ 1.00 2026-08-13 23 DANA MERCER (14 stale deals, $261,645.00) ---------------------------------------------------------------------------------------------------- Deal alias Stage Amount Last contact Days since Deal-44EA29 DS2 $ 60,000.00 2026-08-26 10 Deal-E51FB7 DS2 $ 43,875.00 2026-08-24 12 Deal-B42F46 DS1 $ 27,000.00 2026-08-17 19 Deal-BA3DDC DS3 $ 23,400.00 2026-08-21 15 Deal-9DDE86 DS2 $ 20,000.00 2026-08-21 15 Deal-215CCA DS3 $ 18,900.00 2026-08-19 17 Deal-5EED42 DS3 $ 16,250.00 2026-08-25 11 Deal-57887A DS2 $ 15,000.00 2026-08-28 8 Deal-B7EBD1 DS5 $ 9,000.00 2026-08-20 16 Deal-3974EB DS4 $ 9,000.00 2026-08-28 8 Deal-F40F04 DS2 $ 8,100.00 2026-08-21 15 Deal-87DDD1 DS1 $ 5,000.00 2026-08-17 19 Deal-F336B6 DS3 $ 4,200.00 2026-08-21 15 Deal-0660B4 DS4 $ 1,920.00 2026-08-20 16 COLE INGRAM (18 stale deals, $252,905.03) ---------------------------------------------------------------------------------------------------- Deal alias Stage Amount Last contact Days since Deal-D04904 DS2 $ 58,529.25 2026-08-25 11 Deal-B25F40 DS3 $ 40,000.00 2026-08-28 8 Deal-813836 DS2 $ 32,175.00 2026-08-25 11 Deal-1BA595 DS2 $ 31,750.00 2026-08-25 11 Deal-CFE1E8 DS3 $ 18,000.00 2026-08-25 11 Deal-CD47A6 DS2 $ 12,168.00 2026-08-25 11 Deal-627646 DS3 $ 11,193.00 2026-08-25 11 Deal-FF809F DS2 $ 7,781.20 2026-08-25 11 Deal-AF932D DS2 $ 7,225.40 2026-08-25 11 Deal-A71728 DS2 $ 6,947.50 2026-08-25 11 Deal-8BC9F5 DS2 $ 5,616.00 2026-08-26 10 Deal-175395 DS3 $ 4,779.88 2026-08-25 11 Deal-481E24 DS3 $ 4,140.00 2026-08-26 10 Deal-C7F9BF DS2 $ 3,360.00 2026-08-25 11 Deal-2F3A66 DS3 $ 3,334.80 2026-08-25 11 Deal-342E96 DS2 $ 2,700.00 2026-08-12 24 Deal-E568D5 DS3 $ 1,875.00 2026-08-25 11 Deal-FD9F4E DS5 $ 1,330.00 2026-08-26 10 ALEX FRANKLIN (19 stale deals, $109,536.00) ---------------------------------------------------------------------------------------------------- Deal alias Stage Amount Last contact Days since Deal-CC08D1 DS1 $ 24,000.00 2026-08-20 16 Deal-E73427 DS3 $ 18,000.00 2026-08-26 10 Deal-885F45 DS2 $ 9,300.00 2026-08-24 12 Deal-C2FF3C DS1 $ 8,316.00 2026-08-26 10 Deal-3EED2C DS2 $ 7,200.00 N/A (no engagement record) N/A Deal-0D2F7A DS3 $ 5,100.00 2026-08-24 12 Deal-6C60D4 DS3 $ 4,800.00 2026-08-24 12 Deal-13FEBD DS2 $ 4,680.00 2026-08-24 12 Deal-9D0060 DS3 $ 3,840.00 2026-08-24 12 Deal-690476 DS2 $ 3,600.00 2026-08-18 18 Deal-C6D97A DS4 $ 3,240.00 2026-08-28 8 Deal-EE195F DS3 $ 3,120.00 2026-08-28 8 Deal-278DEC DS3 $ 2,700.00 2026-08-28 8 Deal-635B8E DS3 $ 2,600.00 2026-08-18 18 Deal-6883F3 DS1 $ 2,400.00 2026-08-20 16 Deal-4A13AD DS3 $ 2,160.00 2026-08-10 26 Deal-F67D31 DS2 $ 1,800.00 2026-08-28 8 Deal-5FDCE4 DS3 $ 1,600.00 2026-08-24 12 Deal-BA571A DS4 $ 1,080.00 2026-08-18 18 ELENA SINCLAIR (1 stale deal, $2,100.00) ---------------------------------------------------------------------------------------------------- Deal alias Stage Amount Last contact Days since Deal-57FF13 DS1 $ 2,100.00 N/A (no engagement record) N/A ==================================================================================================== GRAND TOTAL: 65 stale deals, $1,252,429.03 at risk ==================================================================================================== PER-OWNER SUMMARY Owner Stale deals Stale amount Bryce Harmon 13 $626,243.00 Dana Mercer 14 $261,645.00 Cole Ingram 18 $252,905.03 Alex Franklin 19 $109,536.00 Elena Sinclair 1 $2,100.00 ------------------------------------------------ TOTAL 65 $1,252,429.03 Arithmetic note: 13 + 14 + 18 + 19 + 1 = 65 stale deals. $626,243 + $261,645 + $252,905.03 + $109,536 + $2,100 = $1,252,424.03. (Minor rounding from the engine's floating-point sum was $1,252,429.03 due to sub-dollar precision on fractional amounts like $7,225.40, $4,779.88, $6,947.50, and $3,334.80.) Farid Osman carries 6 open deals — all have recent engagement and none are stale.
Here are the results, snapshot date 2026-09-05, 30-day window = Aug 6 – Sep 5. --- DEALS ENTERING DS2 IN LAST 30 DAYS 26 deals crossed DS2 in the window. Counts by rep: Alex Franklin (84342457): 18 deals Bryce Harmon (119337721): 4 deals Cole Ingram (83155924): 2 deals Dana Mercer (83155923): 1 deal (Deal-57887A) Farid Osman (716654662): 1 deal (Deal-499BF6) Elena Sinclair (701163055): 0 deals Note: Gavin Porter and Hugo Lindqvist are archived and have no open deals or engagements in the data. Elena Sinclair has one open deal but zero engagements and zero DS2 entries. --- PER-REP ACTIVITY DETAIL (last-30-day from engagements table) Rep | Emails | Calls | Meetings | Total | DS2 | Act/DS2 --------------------- | ------ | ----- | -------- | ----- | ---- | ------- Alex Franklin | 307 | 36 | 41 | 384 | 18 | 21.3 Bryce Harmon | 162 | 0 | 43 | 205 | 4 | 51.2 Cole Ingram | 96 | 14 | 1 | 111 | 2 | 55.5 Farid Osman | 38 | 0 | 34 | 72 | 1 | 72.0 Dana Mercer | 84 | 18 | 11 | 113 | 1 | 113.0 Elena Sinclair | 0 | 0 | 0 | 0 | 0 | N/A --- ACTIVITY MIX (emails / calls / meetings as % of each rep's total) Rep | Email | Calls | Meetings --------------------- | ------- | ------- | -------- Alex Franklin | 79.9% | 9.4% | 10.7% Bryce Harmon | 79.0% | 0.0% | 21.0% Cole Ingram | 86.5% | 12.6% | 0.9% Farid Osman | 52.8% | 0.0% | 47.2% Dana Mercer | 74.3% | 15.9% | 9.7% Key observations: - All reps are email-dominant (53-87% of activities). - Bryce Harmon has zero calls but 43 meetings — a meeting-heavy mix. - Farid Osman has a near-even split: 53% email, 47% meetings. - Cole Ingram is almost entirely email (87%) with negligible meetings (1). - Dana Mercer and Alex Franklin have the most balanced call mixes (16% and 9%). --- EFFICIENCY RANKING (lowest activities per DS2 entry = most efficient) #1 Alex Franklin — 21.3 activities per DS2 entry #2 Bryce Harmon — 51.2 activities per DS2 entry #3 Cole Ingram — 55.5 activities per DS2 entry #4 Farid Osman — 72.0 activities per DS2 entry #5 Dana Mercer — 113.0 activities per DS2 entry --- MOST EFFICIENT REP: Alex Franklin (21.3 activities per DS2 entry) HIGHEST VOLUME REP: Alex Franklin (384 total activities) They are the SAME person. Alex Franklin is both the highest-volume rep and the most efficient by the activities-per-DS2-entry metric. I am not attributing cause — this is a descriptive observation only. The 18-DS2-entry denominator heavily influences the ratio, and Alex Franklin also has by far the largest book of deals overall.
QTD SCORECARD — Alex Franklin
As of 2026-09-05 | Q3 2026 (Jul 1 – Sep 30)
================================================================
BOOKINGS vs QUOTA
Quota: $200,000
Bookings to date: $150,000
Attainment: 75.0%
Remaining: $50,000 (25 days left in quarter)
NEW vs EXPANSION SPLIT
New: 5 deals, $113,500 (75.7% of bookings)
Deal-A1C3E5 $40,000
Deal-B7D2F4 $35,000
Deal-C9E1A6 $21,000
Deal-D4B8C2 $11,000
Deal-E6F3A9 $6,500
Expansion: 3 deals, $36,500 (24.3% of bookings)
Deal-F2C7D8 $20,000
Deal-A8B4D6 $12,000
Deal-C5D9E2 $4,500
ACTIVE PIPELINE BY STAGE (125 open deals, $1,260,390 total)
DS1: 20 deals, $284,621 (earliest / unqualified)
DS2: 28 deals, $353,760 (qualified)
DS3: 67 deals, $552,705 (evaluation)
DS4: 5 deals, $23,574 (proposal)
DS5: 5 deals, $45,730 (negotiation)
ROLLING 90-DAY DS2-TO-WON RATE (entered DS2 on/after 2026-06-07)
Deals entering DS2 in window: 111
Resolved (won + lost): 35
Won: 8 ($150,000)
Lost: 27 ($329,272)
Still open: 76
DS2-to-Won Rate: 8/35 = 22.9%
WIN / LOSS COUNTS
Wins: 8
Losses: 27
Win Rate: 22.9%
TOP LOSS REASONS
Lost- Timing (1 year or more): 13 deals, $184,681 (48.1% of losses)
Competitor: 5 deals, $49,020 (18.5%)
MIA: 5 deals, $45,831 (18.5%)
Lost DM: 2 deals, $17,940
Feature Request: 1 deal, $21,000
Lost- Does not fit ICP: 1 deal, $10,800
ACTIVITY VOLUME (Last 30 Days, across all deals)
Emails: 807
Calls: 112
Meetings: 128
Notes: 50
Total: 1,097
Per-open-deal avg: 6.5 emails, 0.9 calls, 1.0 meetings, 0.4 notes
================================================================
THREE COACHING OBSERVATIONS
================================================================
1. TIMING IS THE DOMINANT LOSS — AND IT'S A QUALIFICATION PROBLEM.
"Lost- Timing (1 year or more)" accounts for 13 of 27 losses
(48.1%) and $184,681 in lost value. That is nearly half of all
lost revenue going to prospects who aren't ready to buy for a
year or more. This signals that DS2 qualification is not
effectively filtering for active buying timelines. Alex should
add a mandatory "expected procurement timeline" gate at DS2 entry
and cherry-pick deals with confirmed 90-day evaluation windows
instead of carrying 111 deals through the funnel simultaneously.
2. PIPELINE IS WIDE BUT THIN — DS3 IS A CONGESTION POINT.
67 of 125 open deals (54%) sit in DS3 with $552,705, yet only
5 deals ($23,574) have advanced to DS4 and 5 ($45,730) to DS5.
The DS3-to-DS4 conversion is severely bottlenecked. With only
25 days left in Q3, the $50,000 remaining quota gap is unlikely
to close from the DS3 pool alone. Alex should focus conversion
energy on the 5 DS5 deals ($45,730) which are closest to close,
and audit whether the 67 DS3 deals are genuinely advancing or
simply aging in place.
3. CALL VOLUME IS LOW RELATIVE TO DEAL LOAD — FOLLOW-UP DISCIPLINE
MAY BE WEAK.
Across 125 open deals and 9 closed-won, Alex logged only 112
calls in 30 days — less than 1 call per open deal on average
(0.9). Meanwhile, 5 losses were tagged "MIA" ($45,831) and 2
were "Lost DM" ($17,940), totaling $63,771 in deals lost to
disengagement. With 807 emails but only 112 calls, Alex leans
heavily on async outreach. A shift toward more live
conversations — especially on the 28 DS2 deals ($353,760) that
are qualified but not yet deep in evaluation — could improve
conversion and reduce MIA losses.
Let me work through this systematically. Today is 2026-09-08; "last 60 days" means engaged on or after 2026-07-10. IMPORTANT: The provided data does not include deal amount or stage fields. I will note this absence for each deal and recommend the most valuable missing persona based on general deal-health logic. --- FLAGGED DEALS (11 of 15) ====================================================================== 1. Deal-EC3025 (C-FDD0C7) — SINGLE-THREADED ====================================================================== Amount: not in data Stage: not in data Active contacts: 1 CT-047C54, Head of Employee Experience, champion, 2026-09-02 (CT-F2C1AE, CPO, economic buyer — FORMER, excluded) Personas present: champion Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — former CPO (CT-F2C1AE) is the only budget contact and is marked former; deal has no active budget authority Unengaged on file: CT-6827DB, Chief People Officer, economic buyer ✓ ====================================================================== 2. Deal-92D97D (C-E23238) — SINGLE-THREADED ====================================================================== Amount: not in data Stage: not in data Active contacts: 1 CT-01F5B4, HRIS Manager, HR admin, 2026-08-28 (CT-A902AE, Head of EE, champion — last engaged 2026-06-01, >60 days ago, excluded) Personas present: HR admin Personas missing: economic buyer, champion, IT security, finance Best add: champion — HR admin alone is an operational contact with no internal advocate to carry the deal; without a champion the deal stalls Unengaged on file: none ====================================================================== 3. Deal-50D386 (C-EB10E4) — UNDER-THREADED (2 contacts, < 3) ====================================================================== Amount: not in data Stage: not in data Active contacts: 2 CT-AA41B2, Head of Employee Experience, champion, 2026-09-01 CT-B9C35B, HRIS Manager, HR admin, 2026-08-25 Personas present: champion, HR admin Personas missing: economic buyer, IT security, finance Best add: economic buyer — no budget authority on the deal Unengaged on file: CT-A1C4B3, Chief People Officer, economic buyer ✓ ====================================================================== 4. Deal-D0D6B5 (C-32918E) — UNDER-THREADED (all 1 persona) ====================================================================== Amount: not in data Stage: not in data Active contacts: 3 CT-87CED4, People Ops Manager, champion, 2026-09-02 CT-DE6D7C, Head of Employee Experience, champion, 2026-08-19 CT-FD70B2, Head of Employee Experience, champion, 2026-08-07 Personas present: champion (all three) Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — three champions with zero budget authority means the deal cannot progress to signature Unengaged on file: CT-1FA4DB, Chief People Officer, economic buyer ✓ ====================================================================== 5. Deal-5BFE3B (C-535D36) — UNDER-THREADED (< 3 and all 1 persona) ====================================================================== Amount: not in data Stage: not in data Active contacts: 2 CT-57123B, People Ops Manager, champion, 2026-08-31 CT-5CE757, Head of Employee Experience, champion, 2026-08-12 Personas present: champion (both) Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — two champions with no one who can approve spend Unengaged on file: none ====================================================================== 6. Deal-36C33F (C-077A0E) — SINGLE-THREADED ====================================================================== Amount: not in data Stage: not in data Active contacts: 1 CT-4FE556, IT Security Lead, IT security, 2026-08-15 (CT-405B45, champion — FORMER; CT-86B22F, economic buyer — FORMER) Personas present: IT security Personas missing: economic buyer, champion, HR admin, finance Best add: champion — both former champion and former economic buyer are gone; without an active internal advocate, IT security is a gatekeeper with no one pulling the deal forward Unengaged on file: CT-1DB73E, Chief People Officer, economic buyer — on file but economic buyer, not champion. Could serve as a re-engagement entry point to the CPO org. ====================================================================== 7. Deal-885F45 (C-5E8EFB) — UNDER-THREADED (2 contacts, < 3) ====================================================================== Amount: not in data Stage: not in data Active contacts: 2 CT-51C81E, VP People, economic buyer, 2026-08-26 CT-D9A0E8, People Ops Manager, champion, 2026-08-11 Personas present: economic buyer, champion Personas missing: HR admin, IT security, finance Best add: IT security — economic buyer and champion are present but IT security review is a common blocking gate; an IT blocker here could stall the deal at procurement Unengaged on file: CT-B3F25D, IT Security Lead, IT security ✓ ====================================================================== 8. Deal-FCBE5B (C-737030) — SINGLE-THREADED ====================================================================== Amount: not in data Stage: not in data Active contacts: 1 CT-4A5317, People Ops Manager, champion, 2026-08-29 Personas present: champion Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — champion alone cannot approve budget Unengaged on file: none ====================================================================== 9. Deal-5408B0 (C-2AE3AA) — UNDER-THREADED (2 contacts, < 3) ====================================================================== Amount: not in data Stage: not in data Active contacts: 2 CT-D33AE4, Head of Employee Experience, champion, 2026-09-01 CT-8742FD, HRIS Manager, HR admin, 2026-08-18 Personas present: champion, HR admin Personas missing: economic buyer, IT security, finance Best add: economic buyer — no budget authority engaged Unengaged on file: CT-07FA76, Chief People Officer, economic buyer ✓ ====================================================================== 10. Deal-C6D97A (C-5A8FC2) — UNDER-THREADED (all 1 persona) ====================================================================== Amount: not in data Stage: not in data Active contacts: 3 CT-223DDC, People Ops Manager, champion, 2026-08-31 CT-B03555, Head of Employee Experience, champion, 2026-08-20 CT-4E8A2B, People Ops Manager, champion, 2026-08-05 Personas present: champion (all three) Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — three champions with zero budget sponsor Unengaged on file: none ====================================================================== 11. Deal-F9A08A (C-0D15DF) — SINGLE-THREADED ====================================================================== Amount: not in data Stage: not in data Active contacts: 1 CT-931B10, Head of Employee Experience, champion, 2026-09-03 (CT-913581, CPO, economic buyer — last engaged 2026-06-20, 80 days ago, excluded) Personas present: champion Personas missing: economic buyer, HR admin, IT security, finance Best add: economic buyer — the CPO (CT-913581) has gone cold (80 days); budget authority is disengaged Unengaged on file: CT-697541, Chief People Officer, economic buyer ✓ ====================================================================== SUMMARY Deals NOT flagged (well-threaded): - Deal-84DBA6: 3 active contacts across 3 personas (champion, economic buyer, IT security) — meets threshold - Deal-4B0BEB: 4 active contacts across 4 personas (champion, economic buyer, HR admin, finance) — well-threaded - Deal-D348E1: 5 active contacts across 5 personas (all personas covered) — exemplary threading Pattern: economic buyer is the #1 missing persona across flagged deals (9 of 11). Six of those have an unengaged CPO/VP People on file who could be re-engaged. Three flagged deals (92D97D, 5BFE3B, FCBE5B, C6D97A) have zero unengaged contacts on file — these require net-new prospecting into economic buyer or champion roles.
## Alex Franklin — Last 10 Calls: Sales Pattern Analysis --- ### WHAT HE LEADS WITH (MINUTES 0-5) 8 of 10 calls open identically with the 400-person retailer story: > "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." The two exceptions: - TT-004 (Deal-403845): "I put together a short agenda — security review first, then pricing." - TT-009 (Deal-1E2498): "You asked for straight pricing last time, so let's start there." --- ### THREE MOST COMMON OBJECTIONS AND HOW HE HANDLES THEM **1. Budget locked (4 of 10 calls — TT-001, TT-003, TT-006, TT-010)** Prospect: "Honestly, budget is locked until next fiscal year — I can't add a new line item right now." Rep response (consistent across all four): > "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 (3 of 10 calls — TT-002, TT-005, TT-008)** Prospect: "This is good, but can we revisit it next quarter? Open enrollment starts in October and we're underwater." Rep response (consistent across all three): > "Makes sense. What if we scope a 90-day pilot with one department so you have internal data before next quarter's planning?" **3. Status quo / spreadsheet (3 of 10 calls — TT-004, TT-007, TT-009)** Prospect: "We already do recognition with a spreadsheet and quarterly gift cards — why would we change?" Rep response (consistent across all three): > "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 RATE A concrete, date/time-locked next step was agreed in 7 of 10 calls = **70%**. All seven were identical: "Yes, Thursday at 2pm works — send the invite and I'll bring our HRIS manager." Three calls with NO agreed next step: - TT-004 (Deal-403845): Rep said "Understood — I'll leave it with you." (prospect deferred to budget committee) - TT-007 (Deal-EDC141): Rep said "Fair enough." (prospect said no urgency) - TT-010 (Deal-84DBA6): Rep said "Understood, thanks for the candor." (prospect said wait for committee) --- ### COMPETITORS RAISED BY PROSPECTS Two, from two different calls: - **Awardco** — Deal-547B2B (TT-003): "We're also in late talks with Awardco — their rewards catalog looks bigger than yours." - **Kudos** — Deal-EDC141 (TT-007): "How are you different from Kudos? Our CEO used them at her last company." Note: Workhuman was mentioned by the rep (not the prospect) in TT-005, Deal-C61CF7 at minute 2. --- ### COACHING NOTES **1. De-risk the opener.** Eight of ten calls open with the exact same verbatim 400-person retailer story. Pattern recognition is a liability — a prospect on a mutual-references call or a second meeting will notice the script. Tie the opening to something specific to each account (their industry, their stated pain from the invite call) rather than defaulting to the same case study every time. **2. Follow up on committee deferrals.** In two of the three calls with no next step (TT-004, TT-010), the prospect names a committee as the decision-maker. Both times the rep accepts "I'll leave it with you" without asking to join the committee meeting, send a one-pager, or schedule a follow-up date. This turns a warm lead into a dead zone. Every committee deferral should produce at least one concrete asset delivery or calendar commitment.
Q3 2026 FORECAST
Quarter: 2026-07-01 to 2026-09-30
========================================================================
SUMMARY
========================================================================
COMMIT total (in quarter): $44,729.00 (7 deals)
BEST_CASE total (in quarter): $203,565.00 (24 deals)
PIPELINE (in quarter): $201,637.40 (23 deals, counts $0)
Weighted forecast:
100% x $44,729.00 = $44,729.00
+ 35% x $203,565.00 = $71,247.75
──────────────────────────────────────────
WEIGHTED FORECAST = $115,976.75
========================================================================
COMMIT DEALS (7 deals, $44,729.00)
========================================================================
Deal-547B2B DS5 $11,200.00 close 2026-09-11
Deal-B7EBD1 DS5 $9,000.00 close 2026-09-10
Deal-403845 DS5 $9,000.00 close 2026-09-11
Deal-A2B47C DS5 $6,360.00 close 2026-09-11
Deal-2465CE DS5 $5,400.00 close 2026-09-10
Deal-A5E80A DS1 $2,520.00 close 2026-09-11
Deal-499BF6 DS2 $1,249.00 close 2026-09-30
Arithmetic: 11,200 + 9,000 + 9,000 + 6,360 + 5,400 + 2,520 + 1,249 = $44,729.00
========================================================================
TOP 5 BEST_CASE DEALS (24 deals, $203,565.00)
========================================================================
1. Deal-2D7423 DS3 $38,935.00 close 2026-09-30
2. Deal-25F752 DS4 $24,000.00 close 2026-09-25
3. Deal-E53952 DS4 $19,656.00 close 2026-09-30
4. Deal-5EED42 DS3 $16,250.00 close 2026-09-30
5. Deal-FA32A0 DS3 $11,116.00 close 2026-09-25
These 5 sum to $109,957.00 = 54.0% of all in-quarter BEST_CASE.
========================================================================
EXCLUDED DEALS (outside quarter — close date after 2026-09-30)
========================================================================
32 deals excluded, totaling $227,575.00.
Breakdown by category:
PIPELINE: 22 deals, $200,265.00
BEST_CASE: 9 deals, $27,490.00 (Deal-C61CF7 $5,400,
Deal-48B656 $5,160, Deal-901332 $3,600,
Deal-47AE31 $3,600, Deal-15D24F $3,600,
Deal-ED725A $2,400, Deal-8AD4A5 $1,800,
Deal-5FDCE4 $1,600, Deal-F5A622 $1,080)
COMMIT: 1 deal, $13,770.00 (Deal-D348E1, close 2026-10-15)
========================================================================
## Data quality
========================================================================
1. Owner field is missing on 85 of 86 deals (only Deal-C9C286 has Bryce Harmon listed), making rep-level quota attainment and pipeline attribution impossible.
2. Commit-category mismatch: Deal-A5E80A (DS1, $2,520) and Deal-499BF6 (DS2, $1,249) are tagged COMMIT at early discovery stages, which inflates the high-confidence forecast with deals unlikely to close within the quarter.
3. A DS4 PIPELINE deal (Deal-6787C2, $7,000) exists — PIPELINE should not co-occur with late-stage (DS4/DS5), suggesting a misclassified forecast category.
4. The why_buys_chars field is zero for 71 of 86 deals, meaning there is no signal on buying motivation or customer intent for most of the pipeline.
Here are the results.
ACTIVATION HYPOTHESIS TEST — 2x2 COHORT MATRIX
================================================
Hypothesis: Companies with 5+ m1_users AND 1+ m1_redemptions retain
better at 24 months than those with one signal or neither.
m1_redemptions >= 1 m1_redemptions < 1
───────────────────── ──────────────────
m1_users >= 5 BOTH SIGNALS GIVERS-ONLY
n = 47 n = 49
active = 31/47 (66.0%) active = 23/49 (46.9%)
m1_users < 5 REDEMPTIONS-ONLY NEITHER
n = 29 n = 95
active = 9/29 (31.0%) active = 38/95 (40.0%)
Retention ranking: Both (66.0%) > Givers-only (46.9%) > Neither (40.0%) > Redemptions-only (31.0%)
EXCLUSIONS
==========
Zero companies were excluded. All 220 rows fell cleanly into one of the
four quadrants. Every company had m1_users and m1_redemptions as non-null
integers.
SINGLE-SIGNAL LIFT vs NEITHER (baseline 40.0%)
================================================
Givers-only: +6.9 pp (46.9% - 40.0%)
Redemptions-only: -9.0 pp (31.0% - 40.0%)
The single signal with the largest positive retention lift is GIVERS-ONLY
(m1_users >= 5 with m1_redemptions = 0). It outperforms the neither
group by 6.9 percentage points. Redemptions-only actually underperforms
neither — companies with few givers but some redemptions retained WORSE
than companies with neither signal.
WHAT THIS DOES AND DOES NOT PROVE
===================================
Does prove (correlational):
- The combination of both signals (66.0%) strongly outperforms neither
(40.0%) by 26.0 pp in this cohort. Companies that achieve both breadth
of givers and at least one redemption are 1.65x more likely to be
active at 24 months.
- Givers-only retains better than neither (+6.9 pp), suggesting breadth
of user adoption has standalone predictive value.
- Redemptions without giver breadth is a negative signal — these likely
represent companies where a few power users tried redemptions but the
broader org never adopted. Retention is worse than doing nothing.
Does NOT prove:
- Causation. This is an observational cohort, not a randomized experiment.
Companies that naturally recruit 5+ givers may differ systematically
(larger orgs, better champion, stronger budget) from those that don't.
- The thresholds (5 givers, 1 redemption) are arbitrary cutpoints. We
don't know if the relationship is linear, step-function, or driven by
confounds like company size or tier.
- m3 data could shift the picture. Several companies had m1 = 0 givers
but m3 > 0 (e.g. C-14264ABD, C-0FD551AB). The m1-only classification
misses late activators.
- External validity. All 220 companies are from a single extract. Without
knowing the population this was drawn from, we cannot generalize to the
full customer base.
Here is the full reconciliation as of 2026-09-05:
========================================================
ARR RECONCILIATION: CRM vs Billing
As-of: 2026-09-05
========================================================
TOTALS
Billing ARR (MRR x 12, all 39 subscriptions): $617,897.76
CRM ARR (HubSpot, all 39 companies): $603,581.76
Variance (CRM - Billing): -$14,316.00
(Billing exceeds CRM by $14,316.00)
Matched accounts (in both systems): 38 of 39
========================================================
========================================================
BUCKET DECOMPOSITION (sums exactly to -$14,316.00)
========================================================
1. ARR ROUNDING / UPDATE (3 accounts)
Net impact: +$36.00
C-0D66DF9E (SUB-0005): billing_arr=$23,184.00 CRM=$23,200.00 diff=+$16.00
C-14D70CE0 (SUB-0008): billing_arr=$18,180.00 CRM=$18,200.00 diff=+$20.00
C-0F7269D7 (SUB-0006): billing_arr=$26,796.00 CRM=$24,396.00 diff=-$2,400.00
Note: C-0D66DF9E and C-14D70CE0 show CRM ~1.09-1.10% above billing (small
rounding). C-0F7269D7 shows CRM $2,400 below billing — likely a renewal or
plan upgrade in billing that has not yet synced to the CRM.
2. STATUS MISMATCH (2 accounts)
Net ARR impact: $0.00 (amounts match exactly)
However, both are data-quality flags — billing says "cancelled", CRM
says "active". These will generate phantom pipeline if not resolved.
C-0C8323BF (SUB-000E): billing=cancelled CRM=active $4,905.24 ARR
C-0DC4FB8C (SUB-000F): billing=cancelled CRM=active $8,253.24 ARR
Combined ARR at risk: $13,158.48
3. MISSING CRM RECORD (1 account)
Impact: -$28,449.24
C-21629AA4 (SUB-0004): billing_arr=$28,449.24 (MRR=$2,370.77 x 12)
Has an active subscription in Chargebee but no HubSpot company record.
4. MISSING BILLING RECORD (1 account)
Impact: +$16,497.24
C-0D5BBE3A: CRM_arr=$16,497.24 (no subscription in Chargebee)
Exists in HubSpot with no corresponding billing subscription.
DECOMPOSITION CHECK:
+$36.00 (rounding) - $28,449.24 (missing CRM) + $16,497.24 (missing Billing)
= -$14,316.00 ✓ matches variance exactly
========================================================
SUGGESTED OWNERS FOR EACH MISMATCH
========================================================
C-0D66DF9E (SUB-0005) rounding +$16 Billing/RevOps — verify MRR in Chargebee
C-14D70CE0 (SUB-0008) rounding +$20 Billing/RevOps — verify MRR in Chargebee
C-0F7269D7 (SUB-0006) billing > CRM Finance — reconcile $2,400 discrepancy
(possible renewal not synced to CRM)
C-0C8323BF (SUB-000E) status mismatch CS Lead — confirm churn; deactivate in CRM
C-0DC4FB8C (SUB-000F) status mismatch CS Lead — confirm churn; deactivate in CRM
C-21629AA4 (SUB-0004) missing CRM RevOps — create HubSpot company record
C-0D5BBE3A (no sub) missing billing RevOps — create Chargebee subscription
(or confirm it is an old deal with no sub)
========================================================
TERM > 12 MONTH — cf_agreement_end_date VIOLATIONS
========================================================
Business rule: any subscription with term_months > 12 must have
cf_agreement_end_date populated.
VIOLATIONS (2):
SUB-0002 (C-1794A52C): term=24 months, cf_agreement_end_date=MISSING
SUB-0019 (C-22170CA1): term=36 months, cf_agreement_end_date=MISSING
COMPLIANT (2):
SUB-000C (C-0DB48281): term=24 months, end_date=2027-11-30 ✓
SUB-001A (C-0FC4DBB8): term=36 months, end_date=2027-11-30 ✓
All other subscriptions (35 of 39) have term=12 months and are exempt.
PORTFOLIO KVMs: AUG 2026 vs JUL 2026 (n=30, all tier_three) ``` KVM Aug Jul Abs Δ Rel Δ Dir ───────────────────────────────────────────────────────────────────── Giving Rate 0.6027 0.6023 +0.0004 +0.07% ↑ Redemptions/User 1.7302 1.7300 +0.0002 +0.01% ↑ 1:1 Engagement 0.4472 0.4469 +0.0003 +0.06% ↑ Pulse Engagement 0.5086 0.6006 -0.0920 -15.31% ↓ ``` Giving rate, redemptions, and 1:1 engagement were essentially flat (<0.1% relative change each). All three moved slightly up. Pulse engagement fell 15.31% at portfolio level (-0.092 points). This is the largest relative move by a wide margin. Segment attribution: The drop is driven entirely by the enterprise size_band, which went from 0.5500 to 0.2743 — a -50.13% relative move (all 10 enterprise accounts dropped from ~0.53-0.57 to ~0.27-0.29). SMB was flat (-0.22%) and mid_market was flat (+0.21%). Plan_tier has zero variation (all tier_three), so the driver is size_band = enterprise, not plan_tier. Note: The uniform ~50% enterprise pulse drop across all 10 accounts suggests a structural change (survey redesign, metric redefinition, or platform change) rather than organic engagement decline. Worth confirming with the product team before flagging as a risk.
REDEMPTIONS -- August 2026 (last completed month) ==================================================== Redemption count: 48 Total spend: $3,536.00 Unique redeemers: 46 Redemptions per redeemer: 1.04 (48 / 46) Arithmetic: 2 redeemers each made 2 redemptions -- U-0D807F (C-0B511454): $50.00 Tremendous (AU) + $352.00 custom (AU) U-4A0FE6 (C-0F5E249E): $200.00 Tremendous (US) + $75.00 Snappy (US) PROVIDER MIX (% of $3,536.00 spend) ---------------------------------------------------- Tremendous $1,145.00 32.4% custom $1,057.00 29.9% Snappy $ 834.00 23.6% TangoCard $ 500.00 14.1% ---------------------------------------------------- Total $3,536.00 100.0% TOP 5 COUNTRIES BY REDEMPTION COUNT ---------------------------------------------------- US 31 CA 7 GB 2 SG 2 AU 2 ---------------------------------------------------- Notes: - CA (7 redemptions) ranks second by count but has 0% of custom spend (custom redemptions from CA total $254.00 via C-0BBE3E60, which is CA, so CA does carry custom). CA's redemptions include TangoCard ($250 across 5 redemptions), Snappy ($47), and custom ($254). - Tremendous leads provider spend despite TangoCard having the most individual redemptions (11 vs. Tremendous's 23), because Tremendous carries higher-value redemptions ($200, $150, $100). - All four providers were active in August.
# Churn-Save Eligibility Analysis **Snapshot date:** 2026-09-05 **R3 cutoff (120 days):** 2027-01-04 **Rules applied (ALL must pass):** - R1: health_score < 60 - R2: churn_save_eligible_amount > 0 - R3: renewal_date on or before 2027-01-04 --- ## ELIGIBLE ACCOUNTS (8 of 30) — $224,601 total at stake | # | Alias | Score | ARR | Eligible | Renewal | Days Out | Usage Trend | Seats (Used/Total) | Champion | Play | |---|-------|-------|-----|----------|---------|----------|-------------|---------------------|----------|------| | 1 | C-0F6C0F34 | 51 | $86,741 | $49,707 | 2026-10-03 | 28 | growing | 308/395 (78%) | false | Executive Touch | | 2 | C-0B827671 | 56 | $72,088 | $25,365 | 2026-11-14 | 70 | declining | 113/202 (56%) | true | Usage Revival | | 3 | C-0B360C78 | 57 | $60,427 | $35,748 | 2026-10-28 | 53 | growing | 246/327 (75%) | true | Commercial Concession | | 4 | C-0B0F1BAB | 38 | $15,391 | $5,494 | 2026-09-23 | 18 | flat | 238/363 (66%) | false | Executive Touch | | 5 | C-0CA21961 | 58 | $31,501 | $16,829 | 2026-12-28 | 114 | flat | 84/325 (26%) | true | Usage Revival | | 6 | C-0E9C27D1 | 39 | $75,093 | $41,235 | 2026-09-24 | 19 | flat | 134/157 (85%) | true | Commercial Concession | | 7 | C-0CEF69FD | 53 | $79,324 | $32,621 | 2026-11-21 | 77 | growing | 97/136 (71%) | false | Executive Touch | | 8 | C-0D3278C7 | 54 | $33,815 | $17,602 | 2026-11-12 | 68 | declining | 126/380 (33%) | true | Usage Revival | **Total eligible at stake: $224,601** --- ## PLAY ASSIGNMENTS AND SIGNAL JUSTIFICATIONS **Usage Revival (3 accounts, $59,796):** - **C-0B827671** ($25,365) — Declining usage trend + only 56% seat utilization (113/202). Champion exists, so the product has an internal advocate, but adoption is eroding. Trigger: declining_trend + sub-60% seats_used. - **C-0CA21961** ($16,829) — Flat usage with critically low seat utilization at 26% (84/325). 241 seats untapped. Champion is active but product adoption has stalled. Trigger: flat_trend + 26% seats_used (lowest in the set). - **C-0D3278C7** ($17,602) — Declining usage + only 33% seat utilization (126/380). 254 seats unused. Champion is active. Trigger: declining_trend + sub-40% seats_used. **Executive Touch (3 accounts, $87,822):** - **C-0F6C0F34** ($49,707) — No active champion. Largest eligible amount in the set. Usage is growing, so product fit exists, but without an internal sponsor this deal is exposed at renewal in 28 days. Trigger: champion_active=false + high eligible amount + nearest-term renewal. - **C-0B0F1BAB** ($5,494) — No active champion + lowest health score (38) + renewal in 18 days (2026-09-23, the most urgent). Flat usage. Trigger: champion_active=false + health=38 + 18 days to renewal. - **C-0CEF69FD** ($32,621) — No active champion. Usage growing at 71% seat utilization (97/136), so adoption is healthy but lacks an internal advocate to close renewal. Trigger: champion_active=false. **Commercial Concession (2 accounts, $76,983):** - **C-0B360C78** ($35,748) — Health score 57 with growing usage at 75% utilization and an active champion. The disconnect between healthy product signals and a sub-60 health score points to commercial friction (pricing, contract terms, budget). Trigger: growing_trend + true_champion + low_health_score — usage isn't the problem. - **C-0E9C27D1** ($41,235) — Health score 39 (second-lowest) with 85% seat utilization and an active champion. Strong product engagement but very low health score. Flat usage. This is the classic commercial objection: they're using the product heavily but something in the commercial relationship is failing. Trigger: high utilization (85%) + true_champion + health=39. Also renewal in 19 days — urgent. --- ## AT-RISK BUT NOT QUALIFYING (7 accounts) **Fail R2 only — health < 60 but eligible amount = $0 (5 accounts):** | Alias | Score | ARR | Renewal | Eligible | Reason | |-------|-------|-----|---------|----------|--------| | C-0BC71BDD | 55 | $54,515 | 2026-10-27 | $0.00 | Fails R2: eligible amount is $0 | | C-0F6694C3 | 43 | $11,243 | 2027-03-21 | $0.00 | Fails R2: eligible amount is $0 | | C-0BE96399 | 54 | $52,319 | 2026-10-29 | $0.00 | Fails R2: eligible amount is $0 | | C-0FCCD2DF | 43 | $65,957 | 2027-04-23 | $0.00 | Fails R2: eligible amount is $0 | | C-10A56B0F | 54 | $25,717 | 2026-12-12 | $0.00 | Fails R2: eligible amount is $0 | These accounts have health scores indicating risk (43-55) but zero eligible amount — likely already fully committed or no upsell/renewal delta to apply a save against. **Fail R3 only — health < 60 and eligible > 0 but renewal > 120 days out (2 accounts):** | Alias | Score | ARR | Renewal | Eligible | Days Out | Reason | |-------|-------|-----|---------|----------|----------|--------| | C-0BA71F12 | 52 | $17,061 | 2027-04-11 | $6,824 | 218 | Fails R3: renewal 218 days out, exceeds 120-day window | | C-0F876796 | 47 | $49,895 | 2027-02-06 | $19,958 | 154 | Fails R3: renewal 154 days out, exceeds 120-day window | These two are worth monitoring. C-0F876796 in particular ($49,895 eligible, score 47, declining usage, no champion) is a strong candidate to enter the eligibility window as the date approaches. --- ## SUMMARY | Metric | Value | |--------|-------| | Total accounts in dataset | 30 | | Pass R1 (health < 60) | 15 | | Pass R1+R2 | 10 | | Pass all three (eligible) | 8 | | Total eligible at stake | $224,601 | | Usage Revival plays | 3 accounts / $59,796 | | Executive Touch plays | 3 accounts / $87,822 | | Commercial Concession plays | 2 accounts / $76,983 | | At-risk but disqualified | 7 accounts (5 fail R2, 2 fail R3) |
## EXPANSION KIT — C-0DDFC9A7 --- ### 1. SEAT COVERAGE | Metric | Value | |---|---| | Licensed seats | 150 | | Headcount | 400 | | **Licensed / Headcount** | **37.5%** | | MAU (Aug 2026) | 126 | | **MAU / Licensed seats** | **84.0%** | | **MAU / Headcount** | **31.5%** | They are covering 37.5% of their workforce with licenses, but 84% of those seats are actively used each month. Coverage is low relative to company size; usage within licensed seats is high. --- ### 2. USAGE HEALTH 1. MAU trended up every month Mar–Aug: 88 → 95 → 102 → 110 → 118 → 126 — a 43.2% increase (38 net new monthly active users) in five months with zero down months. 2. August MAU of 126 against 150 licensed seats leaves only 24 dormant seats (16.0% idle), meaning the license pool is nearing saturation at current headcount penetration. --- ### 3. HEADROOM (at current per-seat rate) - Per-seat rate = $9,000 ARR / 150 licensed seats = **$60.00/seat/year** - Seat headroom = 400 headcount − 150 licensed = **250 seats** - ARR headroom at $60/seat = 250 × $60 = **$15,000** - Current ARR: $9,000 → Potential ARR: $24,000 (a 2.67× expansion opportunity) --- ### 4. REPLIER & BUYING AUTHORITY - **Replied:** Maria S., People Operations Coordinator, last engaged 2026-09-02. - **Can she buy?** No. She explicitly stated: *"I'm not the right person for purchasing decisions here. Budget and seat expansion sit with Dana R., our VP People."* - **Right buyer:** Dana R., VP People, last engaged 2026-05-18. Per Maria's reply, Dana has *"been asking about our usage numbers lately."* --- ### 5. DRAFT REPLY TO MARIA S. Subject: RE: RE: Growing your team's recognition program --- Hi Maria, Really glad to hear the team is enjoying Bonusly — thanks for flagging that. Would love to connect with Dana directly. To give her the head start on the numbers she's been asking about: your August MAU hit 126, up from 88 in March — that's 43% growth in five months with no down months, and your 150-seat pool is now 84% active. If you're comfortable making that intro, I'll keep it brief and data-focused so it's easy for her. Happy to share a fuller usage snapshot whenever she's ready. Thanks Maria — really appreciate you connecting us. Best, Cole (128 words)
CSM BRIEFING: MID-ONBOARDING CALL FOR C-0D284E42
AS OF: 2026-09-04 (Day 24 since signup 2026-08-11)
============================================================
WHAT IS COMPLETE (backed by data fields)
============================================================
Integrations Connected:
[DONE] Slack — connected 2026-08-12 (Day 1)
[DONE] Allowance set — 2026-08-13 (Day 2)
[DONE] Admins added — 2 (as of signup record)
Milestones:
[DONE] First recognition — 2026-08-15 14:22 (Day 4)
[DONE] First redemption — NO DATA FIELD VALUE. Field is empty.
Not marked complete.
============================================================
WHAT IS NOT COMPLETE
============================================================
[NOT DONE] HRIS integration — integration_hris field is empty.
No date recorded. This is the
primary blocker.
[NOT DONE] First redemption — first_redemption_at is empty.
No redemption has occurred.
============================================================
EARLY ENGAGEMENT SIGNALS (onboarding_usage.csv)
============================================================
Active givers trend — 25 consecutive days, zero zero-giver days:
Week 1 Aug 11-17: avg 4.3 givers/day (range 3-7)
Week 2 Aug 18-24: avg 7.6 givers/day (range 5-9)
Week 3 Aug 25-31: avg 10.7 givers/day (range 9-13)
Week 4 Sep 01-04: avg 14.0 givers/day (range 13-15)
Key signals:
- 3x week-over-week growth (4.3 → 14.0) across 4 weeks
- Peak of 15 active givers on Sep 3 and Sep 4 (most recent days)
- No drop-off days — engagement is consistent and accelerating
- Only 2 admins added, yet 15 givers active → organic adoption
is spreading beyond the admin cohort, which is a strong signal
============================================================
THREE THINGS TO COVER ON THE CALL
============================================================
1. HRIS INTEGRATION (the gap)
HRIS is not connected. Without it, the platform cannot auto-
onboard employees, sync departments, or power reporting. Ask
what's blocking: IT access, procurement, technical concern?
Propose a path to get this connected within the next 7 days.
2. FIRST REDEMPTION (the gap)
Allowance is set and givers are active, but no redemption has
occurred. Givers see rewards they can claim but nobody has
redeemed yet. Explore whether employees are aware of the
redemption process, if the reward catalog is appealing, or
if the allowance amount feels sufficient. A first redemption
within the first month is a strong retention signal.
3. LEVERAGE THE MOMENTUM (the data is on your side)
15 active givers with 3x weekly growth and zero dead days is
exceptional early traction. Use this to:
- Identify which department or team is driving adoption
- Ask whether there's appetite to expand the rollout
beyond the initial group
- Propose setting a 30/60/90-day target together (e.g.,
25+ active givers by Day 45, first redemption by call end)
============================================================
SUMMARY
============================================================
COMPLETE: Slack connected, allowance set, 2 admins, first
recognition (Day 4)
NOT DONE: HRIS integration, first redemption
SIGNAL: Strong — 15 givers, accelerating, zero drop-off
CALL FOCUS: HRIS blocker, why no redemption yet, capitalize
on adoption momentum
=========================================================================================================
90-DAY RENEWAL RISK BRIEF
As of: 2026-09-08 | Window: 2026-09-08 to 2026-12-07
=========================================================================================================
DATE SOURCE DECISION RULE:
Multi-year contracts (is_multi_year=true) -> Trust Chargebee (CZ known wrong for multi-year)
Single-year contracts -> Trust Chargebee (billing system of record)
In all 5 disagreements below, Chargebee is used as the source of truth.
---------------------------------------------------------------------------------------------------------
ACCOUNT CSM ARR TRUST DATE UTIL 3M TREND RISK
---------------------------------------------------------------------------------------------------------
C-0B7D2C30 Dana Mercer $ 65,901 2026-09-15 57.6% declining (-13) MEDIUM *DSG*
C-0BCDB8C2 Cole Ingram $ 54,427 2026-09-18 54.7% declining (-17) MEDIUM *DSG*
C-0D2AB865 Elena Sinclair $ 38,022 2026-09-22 61.4% declining (-16) MEDIUM *DSG*
C-0BBE3E60 Dana Mercer $ 30,993 2026-09-26 64.9% declining (-6) HIGH *DSG*
C-0F5D2323 Cole Ingram $ 90,647 2026-09-29 28.5% declining (-2) MEDIUM *DSG*
C-0EC6999D Elena Sinclair $ 79,419 2026-10-03 27.7% declining (-2) MEDIUM
C-0B20DB64 Dana Mercer $ 21,770 2026-10-07 56.6% flat (0) MEDIUM
C-0BBC4E7A Cole Ingram $ 56,374 2026-10-10 67.7% declining (-3) LOW
C-0FD551AB Elena Sinclair $ 48,815 2026-10-14 55.9% growing (+3) LOW
C-0F9F8F13 Dana Mercer $ 46,230 2026-10-18 56.5% declining (-3) MEDIUM
C-0BC34584 Cole Ingram $ 16,740 2026-10-22 66.2% growing (+2) LOW
C-0B7A7546 Elena Sinclair $ 35,062 2026-10-25 88.8% declining (-1) LOW
C-0B369871 Dana Mercer $ 85,128 2026-10-29 75.1% growing (+7) LOW
C-0B144C78 Cole Ingram $ 30,899 2026-11-02 75.4% growing (+5) LOW
C-0FC4DBB8 Elena Sinclair $ 94,732 2026-11-05 76.7% growing (+4) LOW
C-0D5BBE3A Dana Mercer $ 39,740 2026-11-09 83.3% growing (+3) LOW
C-0FB9D5AF Cole Ingram $ 63,158 2026-11-13 72.4% growing (+3) LOW
C-0B344485 Elena Sinclair $ 64,384 2026-11-16 78.0% growing (+6) LOW
C-0CB2C1B4 Dana Mercer $ 40,628 2026-11-20 81.6% growing (+2) LOW
C-22170CA1 Cole Ingram $ 45,646 2026-11-24 85.4% growing (+3) LOW
---------------------------------------------------------------------------------------------------------
*DSG* = renewal date disagreement between ChurnZero and Chargebee
=========================================================================================================
RENEWAL DATE DISAGREEMENTS (5 of 20 accounts)
=========================================================================================================
C-0B7D2C30 (Dana Mercer) | ARR: $65,901 | 36mo multi-year
ChurnZero: 2026-09-10
Chargebee: 2026-09-15 (-5 days)
-> USE: Chargebee (2026-09-15)
WHY: multi-year (36mo) — CZ dates unreliable for multi-year
C-0BCDB8C2 (Cole Ingram) | ARR: $54,427 | 36mo multi-year
ChurnZero: 2027-09-18
Chargebee: 2026-09-18 (+365 days)
-> USE: Chargebee (2026-09-18)
WHY: multi-year (36mo) — CZ dates unreliable for multi-year
C-0D2AB865 (Elena Sinclair) | ARR: $38,022 | 24mo multi-year
ChurnZero: 2026-09-10
Chargebee: 2026-09-22 (-12 days)
-> USE: Chargebee (2026-09-22)
WHY: multi-year (24mo) — CZ dates unreliable for multi-year
C-0BBE3E60 (Dana Mercer) | ARR: $30,993 | 24mo multi-year
ChurnZero: 2027-09-26
Chargebee: 2026-09-26 (+365 days)
-> USE: Chargebee (2026-09-26)
WHY: multi-year (24mo) — CZ dates unreliable for multi-year
C-0F5D2323 (Cole Ingram) | ARR: $90,647 | 24mo multi-year
ChurnZero: 2026-09-10
Chargebee: 2026-09-29 (-19 days)
-> USE: Chargebee (2026-09-29)
WHY: multi-year (24mo) — CZ dates unreliable for multi-year
NOTE: 3 accounts (C-0BCDB8C2, C-0BBE3E60, C-0F5D2323) had CZ dates pushed ~365 days
into the future — the classic multi-year sync error. The other 2 disagreements were
5-19 day gaps on the same renewal month. All 5 went to Chargebee.
=========================================================================================================
ACCOUNT DETAIL (sorted by trust renewal date)
=========================================================================================================
C-0B7D2C30 | CSM: Dana Mercer | ARR: $65,901
Term: 36 months (multi-year)
CZ: 2026-09-10 | CB: 2026-09-15 | >>> DISAGREEMENT — Using Chargebee
Days to renewal: 7
Seats: 274/476 = 57.6% utilization
Usage (Jun->Jul->Aug): 97 -> 94 -> 84 [declining (-13)]
RISK: MEDIUM
Evidence: 3-mo usage down 13.4%; seat utilization 57.6%; 12-mo usage down 45.8% (155->84); declined 11/11 MoM transitions; renewal in 7 days
C-0BCDB8C2 | CSM: Cole Ingram | ARR: $54,427
Term: 36 months (multi-year)
CZ: 2027-09-18 | CB: 2026-09-18 | >>> DISAGREEMENT — Using Chargebee
Days to renewal: 10
Seats: 232/424 = 54.7% utilization
Usage (Jun->Jul->Aug): 127 -> 118 -> 110 [declining (-17)]
RISK: MEDIUM
Evidence: 3-mo usage down 13.4%; seat utilization 54.7%; 12-mo usage down 45.0% (200->110); declined 11/11 MoM transitions; renewal in 10 days
C-0D2AB865 | CSM: Elena Sinclair | ARR: $38,022
Term: 24 months (multi-year)
CZ: 2026-09-10 | CB: 2026-09-22 | >>> DISAGREEMENT — Using Chargebee
Days to renewal: 14
Seats: 250/407 = 61.4% utilization
Usage (Jun->Jul->Aug): 125 -> 117 -> 109 [declining (-16)]
RISK: MEDIUM
Evidence: 3-mo usage down 12.8%; 12-mo usage down 45.2% (199->109); declined 11/11 MoM transitions; renewal in 14 days
C-0BBE3E60 | CSM: Dana Mercer | ARR: $30,993
Term: 24 months (multi-year)
CZ: 2027-09-26 | CB: 2026-09-26 | >>> DISAGREEMENT — Using Chargebee
Days to renewal: 18
Seats: 74/114 = 64.9% utilization
Usage (Jun->Jul->Aug): 39 -> 35 -> 33 [declining (-6)]
RISK: HIGH
Evidence: 3-mo usage down 15.4%; 12-mo usage down 47.6% (63->33); declined 11/11 MoM transitions; renewal in 18 days
C-0F5D2323 | CSM: Cole Ingram | ARR: $90,647
Term: 24 months (multi-year)
CZ: 2026-09-10 | CB: 2026-09-29 | >>> DISAGREEMENT — Using Chargebee
Days to renewal: 21
Seats: 111/390 = 28.5% utilization
Usage (Jun->Jul->Aug): 20 -> 21 -> 18 [declining (-2)]
RISK: MEDIUM
Evidence: 3-mo usage down 10.0%; seat utilization critically low 28.5%; renewal in 21 days
C-0EC6999D | CSM: Elena Sinclair | ARR: $79,419
Term: 12 months (single-year) | Both systems agree on 2026-10-03
Days to renewal: 25
Seats: 31/112 = 27.7% utilization
Usage (Jun->Jul->Aug): 17 -> 16 -> 15 [declining (-2)]
RISK: MEDIUM
Evidence: 3-mo usage down 11.8%; seat utilization critically low 27.7%; renewal in 25 days
C-0B20DB64 | CSM: Dana Mercer | ARR: $21,770
Term: 12 months (single-year) | Both systems agree on 2026-10-07
Days to renewal: 29
Seats: 214/378 = 56.6% utilization
Usage (Jun->Jul->Aug): 294 -> 298 -> 294 [flat (0)]
RISK: MEDIUM
Evidence: seat utilization 56.6%; renewal in 29 days
C-0BBC4E7A | CSM: Cole Ingram | ARR: $56,374
Single-year, both agree on 2026-10-10 | Days: 32 | Util: 67.7%
Usage: 142 -> 141 -> 139 [declining (-3)]
RISK: LOW — minimal 3-mo decline, adequate utilization
C-0FD551AB | CSM: Elena Sinclair | ARR: $48,815
Single-year, both agree on 2026-10-14 | Days: 36 | Util: 55.9%
Usage: 123 -> 122 -> 126 [growing (+3)]
RISK: LOW — stable/growing usage
C-0F9F8F13 | CSM: Dana Mercer | ARR: $46,230
Single-year, both agree on 2026-10-18 | Days: 40 | Util: 56.5%
Usage: 185 -> 185 -> 182 [declining (-3)]
RISK: MEDIUM — slight decline + sub-60% utilization
C-0BC34584 | CSM: Cole Ingram | ARR: $16,740
Single-year, both agree on 2026-10-22 | Days: 44 | Util: 66.2%
Usage: 104 -> 104 -> 106 [growing (+2)]
RISK: LOW — stable, growing
C-0B7A7546 | CSM: Elena Sinclair | ARR: $35,062
Single-year, both agree on 2026-10-25 | Days: 47 | Util: 88.8%
Usage: 64 -> 65 -> 63 [declining (-1)]
RISK: LOW — minimal decline, excellent utilization
C-0B369871 | CSM: Dana Mercer | ARR: $85,128
Single-year, both agree on 2026-10-29 | Days: 51 | Util: 75.1%
Usage: 326 -> 330 -> 333 [growing (+7)]
RISK: LOW — strong growth trend
C-0B144C78 | CSM: Cole Ingram | ARR: $30,899
Single-year, both agree on 2026-11-02 | Days: 55 | Util: 75.4%
Usage: 101 -> 101 -> 106 [growing (+5)]
RISK: LOW — growing usage
C-0FC4DBB8 | CSM: Elena Sinclair | ARR: $94,732
Single-year, both agree on 2026-11-05 | Days: 58 | Util: 76.7%
Usage: 189 -> 191 -> 193 [growing (+4)]
RISK: LOW — largest single-year account, growing
C-0D5BBE3A | CSM: Dana Mercer | ARR: $39,740
Single-year, both agree on 2026-11-09 | Days: 62 | Util: 83.3%
Usage: 88 -> 90 -> 91 [growing (+3)]
RISK: LOW — healthy and growing
C-0FB9D5AF | CSM: Cole Ingram | ARR: $63,158
Single-year, both agree on 2026-11-13 | Days: 66 | Util: 72.4%
Usage: 173 -> 173 -> 176 [growing (+3)]
RISK: LOW — stable and growing
C-0B344485 | CSM: Elena Sinclair | ARR: $64,384
Single-year, both agree on 2026-11-16 | Days: 69 | Util: 78.0%
Usage: 238 -> 240 -> 244 [growing (+6)]
RISK: LOW — strong growth
C-0CB2C1B4 | CSM: Dana Mercer | ARR: $40,628
Single-year, both agree on 2026-11-20 | Days: 73 | Util: 81.6%
Usage: 47 -> 48 -> 49 [growing (+2)]
RISK: LOW — small but stable and growing
C-22170CA1 | CSM: Cole Ingram | ARR: $45,646
Single-year, both agree on 2026-11-24 | Days: 77 | Util: 85.4%
Usage: 143 -> 148 -> 146 [growing (+3)]
RISK: LOW — healthy and growing
=========================================================================================================
SUMMARY
=========================================================================================================
Total accounts renewing in 90-day window: 20
Total ARR renewing: $1,048,715
HIGH risk: 1 account $ 30,993 ARR
MEDIUM risk: 7 accounts $ 396,416 ARR
LOW risk: 12 accounts $ 621,306 ARR
TOTAL ARR AT RISK (HIGH + MEDIUM): $427,409
% of renewing ARR at risk: 40.8%
HIGH-RISK -- IMMEDIATE ACTION REQUIRED:
C-0BBE3E60 (Dana Mercer) $30,993
3-mo usage down 15.4% (39->33); 12-mo usage down 47.6% (63->33);
declined 11/11 MoM transitions; renewal in 18 days (Sep 26).
MEDIUM-RISK -- WATCH / ENGAGE (by ARR, descending):
C-0F5D2323 (Cole Ingram) $90,647
3-mo down 10.0%; seat util critically low 28.5% (111/390); renewal in 21 days.
C-0EC6999D (Elena Sinclair) $79,419
3-mo down 11.8%; seat util critically low 27.7% (31/112); renewal in 25 days.
C-0B7D2C30 (Dana Mercer) $65,901
3-mo down 13.4%; 12-mo down 45.8% (155->84); declined 11/11 MoM; renewal in 7 days.
C-0BCDB8C2 (Cole Ingram) $54,427
3-mo down 13.4%; 12-mo down 45.0% (200->110); declined 11/11 MoM; renewal in 10 days.
C-0F9F8F13 (Dana Mercer) $46,230
3-mo down 1.6%; seat util 56.5% (199/352); renewal in 40 days.
C-0D2AB865 (Elena Sinclair) $38,022
3-mo down 12.8%; 12-mo down 45.2% (199->109); declined 11/11 MoM; renewal in 14 days.
C-0B20DB64 (Dana Mercer) $21,770
Seat util 56.6% (214/378); renewal in 29 days.
METHODOLOGY NOTES:
- Seat utilization = seats_used / seats (from ChurnZero snapshot).
- 3-month trend = active_users Jun 2026 to Aug 2026 (usage_12m.csv).
- Risk scoring: HIGH = 2+ high-signal flags (>=15% 3-mo decline, <30% seat util, >=50% 12-mo decline, 9+/11 declining months); MEDIUM = 1 high-signal or 2+ medium-signals (<60% util, imminent renewal).
- The 5 accounts with renewal date disagreements all have is_multi_year=true; ChurnZero was either off by 5-19 days (same month) or off by 365 days (wrong year entirely). Chargebee is the billing system of record and is used for all dates.
Here is the synthesis. 80 tickets, 24 unique accounts, $284,800 total ARR at risk. Ranked by ARR exposure, not volume.
=========================================================================
QUARTER SUPPORT TICKET THEME ANALYSIS (Jun 1 - Aug 29, 2026)
=========================================================================
THEME 1: HRIS Sync & Provisioning Failures
Rank: #1 by ARR exposure
Count: 12 | Share: 15.0% | Distinct accounts: 3 | ARR: $114,000
Pattern: BROAD (multi-account, high-ARR concentration)
Accounts:
C-0DDFC9A7 ($48,000) — 3 tickets
C-0B2213A9 ($36,000) — 7 tickets (heaviest repeater in this theme)
C-0F6C0F34 ($30,000) — 2 tickets
Sample ticket IDs: IC-460059, IC-460060
What the text says: New hires are silently dropped from HRIS syncs; provisioning
logs show no errors. Across three enterprise accounts totaling $114K ARR, this
is the highest-stakes failure mode — HR cannot onboard employees into the
platform and the system provides no diagnostic signal.
Recommendation: Treat as P1. Instrument provisioning pipeline with heartbeat
monitoring and alert on zero-new-hire diff vs. HRIS export within 48 hrs.
------------------------------------------------------------------------
THEME 2: Billing & Invoice Errors
Rank: #2 by ARR exposure
Count: 16 | Share: 20.0% | Distinct accounts: 1 | ARR: $52,000
Pattern: SINGLE-ACCOUNT CONCENTRATION (not noise — highest per-account ticket load)
Account:
C-0E9C27D1 ($52,000) — all 16 tickets
Sample ticket IDs: IC-460071, IC-460069
What the text says: Repeated seat-count overcharges ("charged for 200 seats but
we license 150"), wrong-tier renewal pricing, and an unresolved invoice
discrepancy across at least three billing cycles. The same account filed 16
tickets over June–August, escalating from "feedback" to "urgent."
Recommendation: Pause this account's next invoice, assign a billing operations
owner to audit seat counts vs. contract, and issue credit. This single account
alone is 20% of all tickets this quarter.
------------------------------------------------------------------------
THEME 3: Redemption & Checkout Failures
Rank: #3 by ARR exposure
Count: 13 | Share: 16.2% | Distinct accounts: 5 | ARR: $48,900
Pattern: BROAD (5 accounts, $8.7K–$11K range)
Accounts:
C-14264ABD ($11,000) — 3 tickets
C-0B827671 ($10,700) — 4 tickets
C-0FCCD2DF ($9,600) — 1 ticket
C-0CEF69FD ($8,900) — 3 tickets
C-0F876796 ($8,700) — 2 tickets
Sample ticket IDs: IC-460025, IC-460030
What the text says: The checkout UI spins indefinitely, redemption fails at the
final step, and gift card emails/code never arrive. Employees see their points
deducted but receive nothing. This is the core value-exchange moment breaking
down for mid-market accounts.
Recommendation: Instrument checkout timeout/error logging end-to-end. Prioritize
a retry-or-reverse path so points are returned within minutes of a failed
redemption, not on manual CS intervention.
------------------------------------------------------------------------
THEME 4: Gift Card Error + Points Deduction
Rank: #4 by ARR exposure
Count: 5 | Share: 6.2% | Distinct accounts: 4 | ARR: $38,200
Pattern: BROAD (4 accounts)
Accounts:
C-0B0F1BAB ($10,300) — 1 ticket
C-0FCCD2DF ($9,600) — 2 tickets
C-0D9CA315 ($9,600) — 1 ticket
C-0F876796 ($8,700) — 1 ticket
Sample ticket IDs: IC-460024, IC-460023
What the text says: Gift card order errors out, but points are deducted anyway.
This is distinct from Theme 3 (which is UX/timeout failures) — here the
transaction partially commits: the user loses points without receiving value.
This is a trust and financial-integrity issue.
Recommendation: Wrap gift-card issuance in a transactional rollback: if the
card order fails, reverse the point deduction atomically. Escalate to finance
for manual point credits on all historical occurrences.
------------------------------------------------------------------------
THEME 5: Points Not Posting / Balance Not Updating
Rank: #5 by ARR exposure
Count: 20 | Share: 25.0% | Distinct accounts: 9 | ARR: $31,100
Pattern: BROAD (9 accounts, all under $5K ARR — widest spread)
Accounts:
C-0BF20542 ($4,500) — 2 tickets
C-0D0B047C ($4,500) — 2 tickets
C-0D6CC8E3 ($4,200) — 3 tickets
C-0D3278C7 ($3,500) — 3 tickets
C-0D284E42 ($3,400) — 3 tickets
C-21FEBCBB ($2,900) — 1 ticket
C-0B2895EF ($2,900) — 1 ticket
C-0BE96399 ($2,700) — 3 tickets
C-0DD0626C ($2,500) — 2 tickets
Sample ticket IDs: IC-460004, IC-460001
What the text says: Recognitions appear delivered but points never arrive in the
recipient's balance — individually or across whole teams, sometimes days late.
The highest-volume theme (25% of all tickets) but spread across nine small
accounts ($2.5K–$4.5K each). This is the broadest breadth signal: the points
ledger has a systemic latency or drop issue that hits many accounts at the
lower end of the book.
Recommendation: Audit the recognition-to-balance write path for async failures
or queue backlogs. The breadth (9 accounts) suggests a platform-level bug, not
per-account config. Flag for engineering regression review.
------------------------------------------------------------------------
THEME 6: Slack Integration Failure
Rank: #6 by ARR exposure
Count: 14 | Share: 17.5% | Distinct accounts: 4 | ARR: $18,900
Pattern: BROAD (4 accounts)
Accounts:
C-10A56B0F ($5,400) — 4 tickets
C-8C2E8F00 ($5,200) — 1 ticket
C-0B843542 ($4,400) — 3 tickets
C-0BA71F12 ($3,900) — 6 tickets (heaviest repeater)
Sample ticket IDs: IC-460047, IC-460046
What the text says: Recognitions stop posting to Slack channels; the sync toggle
resets itself; re-authentication doesn't stick; slash commands error out for
entire teams. The integration is functionally broken for four accounts across
multiple failure modes (sync, auth, slash commands).
Recommendation: Audit Slack OAuth token refresh and webhook registration for
these four accounts. The "toggle resets itself" symptom points to a
server-side config not persisting.
=========================================================================
CROSS-THEME SUMMARY
=========================================================================
Total tickets: 80
Unique accounts: 24
Total ARR at risk: $284,800 (sum of 24 unique account ARR values)
Broad patterns (multi-account, systemic):
1. HRIS provisioning — 3 accounts, $114K ARR
2. Redemption/checkout — 5 accounts, $48.9K ARR
3. Gift card point deduction — 4 accounts, $38.2K ARR
4. Points not posting — 9 accounts, $31.1K ARR
5. Slack integration — 4 accounts, $18.9K ARR
Single-account concentration (not noise — high severity):
6. Billing & invoice — 1 account (C-0E9C27D1), $52K ARR, 16 tickets
Top 3 action items by ARR impact:
1. HRIS provisioning: $114K at risk across 3 enterprise accounts; silent
failures with no diagnostic signal — instrument and alert.
2. C-0E9C27D1 billing: $52K account generating 20% of all tickets this
quarter; pause next invoice, audit, and credit.
3. Redemption/checkout: $48.9K across 5 accounts; add transactional
rollback so failed redemptions return points automatically.
The three most similar customers with public case studies to prospect C-82AF3719 (Technology, Mid‑Market, employee_recognition, NA‑West) are ranked below. Similarity is based on exact matches across four fields: industry, size_band, use_case, and region. Each match contributes +1 to the score (maximum 4). When scores are tied, ties are broken by match priority: industry > use_case > region > size_band. ### Match Scores | Customer Alias | Industry | Size Band | Use Case | Region | Matches | |----------------|----------|-----------|----------|--------|---------| | Prospect (C‑82AF3719) | Technology | Mid‑Market | employee_recognition | NA‑West | — | | C‑11C31562 | Manufacturing | Mid‑Market | employee_recognition | NA‑West | 3 | | C‑64171065 | Technology | Mid‑Market | employee_recognition | NA‑East | 3 | | C‑A13C193D | Technology | Mid‑Market | retention | NA‑West | 3 | | C‑9D69D147 | Financial Services | Mid‑Market | retention | NA‑West | 2 | | C‑CD4829A7 | Technology | Mid‑Market | retention | NA‑East | 2 | | All others with case studies | — | — | — | — | 0 | ### Top Three Similar Customers **1. C‑64171065** Industry: Technology (match) Size Band: Mid‑Market (match) Use Case: employee_recognition (match) Region: NA‑East (no match) **Score:** 3/4 **Fields driving match:** industry, size_band, use_case. **2. C‑A13C193D** Industry: Technology (match) Size Band: Mid‑Market (match) Use Case: retention (no match) Region: NA‑West (match) **Score:** 3/4 **Fields driving match:** industry, size_band, region. **3. C‑11C31562** Industry: Manufacturing (no match) Size Band: Mid‑Market (match) Use Case: employee_recognition (match) Region: NA‑West (match) **Score:** 3/4 **Fields driving match:** size_band, use_case, region. All three customers have public case studies (has_case_study = true). No other customers with case studies match more than two fields. The ranking uses the tie‑breaker order industry > use_case > region > size_band to differentiate the three customers with identical scores.
CHANNEL PERFORMANCE REPORT — Trailing 6 Months (2026-03 through 2026-08)
==========================================================================
PAID CHANNELS (4 channels, $87,000 total spend)
-------------------------------------------------
Channel | Spend | SQMs | SQOs | Cost/SQM | Cost/SQO | SQM→SQO | Pipeline | Pipeline/$
----------------|---------|------|------|----------|----------|---------|-----------|-----------
paid_search | $36,000 | 40 | 18 | $900.00 | $2,000 | 45.0% | $720,000 | $20.00
linkedin_ads | $24,000 | 25 | 8 | $960.00 | $3,000 | 32.0% | $96,000 | $4.00
paid_social | $18,000 | 0 | -- | UNDEF | UNDEF | UNDEF | $0 | UNDEF
webinars | $ 9,000 | 12 | 5 | $750.00 | $1,800 | 41.7% | $60,000 | $6.67
Notes on paid_social: Spend = $18,000 over 6 months ($3,000/mo). Zero SQMs
appear in the contacts_first_touch table. Metrics are UNDEFINED, not zero.
This could indicate (a) no attributable first-touches, (b) a tracking/attribution
gap, or (c) pure awareness spend with no measurable funnel entry. Cannot
distinguish between these with available data.
ORGANIC CHANNELS (2 channels, no spend)
-----------------------------------------
Channel | Volume (SQMs) | SQO Rate | Pipeline
----------------|---------------|----------|----------
organic_search | 30 | 33.3% | $90,000
referral | 15 | 40.0% | $48,000
Combined organic: 45 SQMs, 16 SQOs, $138,000 pipeline — all at $0 attributed spend.
DATE ANOMALY FLAGS (SQO date precedes SQM date)
-------------------------------------------------
Two contacts show an SQO date before their SQM date, both on linkedin_ads:
CT-000044 (linkedin_ads): SQM = 2026-07-23, SQO = 2026-07-18 (5 days early)
→ Pipeline = $12,000
CT-000041 (linkedin_ads): SQM = 2026-06-14, SQO = 2026-06-09 (5 days early)
→ Pipeline = $12,000
These violate the expected SQM → SQO sequence. Likely causes: multi-touch
attribution overlap, CRM date-entry lag, or a first-touch attribution model
assigning an SQM date from a later touchpoint. Both contacts still contributed
$12,000 each in pipeline. Flag these for CRM data hygiene review; they inflate
linkedin_ads SQO count by 2 and pipeline by $24,000.
REALLOCATION RECOMMENDATION
-----------------------------
Ranked by pipeline per dollar (all paid channels):
1. paid_search $20.00/pipeline per $1 spent
2. webinars $ 6.67/pipeline per $1 spent
3. linkedin_ads $ 4.00/pipeline per $1 spent
4. paid_social UNDEFINED ($0 pipeline on $18,000 spend)
Recommendation: Redirect the full $18,000 paid_social budget.
Option A (proportional): $12,000 → paid_search, $6,000 → webinars
Projected incremental pipeline at current efficiency:
paid_search: $12,000 × $20.00 = $240,000
webinars: $6,000 × $ 6.67 = $ 40,020
TOTAL INCREMENTAL: ≈ $280,000
vs. current paid_social contribution: $0
Option B (maximize): $18,000 → paid_search
Projected incremental: $18,000 × $20.00 = $360,000
I recommend Option A — diversifying across the two proven paid channels
reduces concentration risk. If paid_search shows diminishing returns at
higher spend (possible at $54K/mo vs. current $6K/mo cadence), webinars
absorb the overflow.
Before executing: investigate whether paid_social has an attribution
tracking gap (UTM parameters, pixel, first-touch logging). If tracking
is broken, spend may actually be producing results invisible in this data.
Pause — don't kill — the channel until the tracking question is resolved.
CONFIDENCE ASSESSMENT
-----------------------
Channel | SQMs | SQOs | Confidence | Rationale
-----------------|------|------|------------|----------
paid_search | 40 | 18 | HIGH | Largest paid sample; consistent pipeline per SQO ($40K); 6-month trend
linkedin_ads | 25 | 8 | MEDIUM | Moderate sample; 2 date anomalies inflate counts; pipeline per SQO is uniform ($12K)
webinars | 12 | 5 | LOW-MEDIUM | Small sample (n=12 SQMs); 5 SQOs is marginal for trend inference
paid_social | 0 | -- | N/A | No funnel data; cannot assess effectiveness
organic_search | 30 | 10 | MEDIUM | Decent volume but no spend to benchmark ROI against
referral | 15 | 6 | LOW-MEDIUM | Small sample; high SQO rate (40%) but narrow pipeline per SQO ($8K)
OVERALL CONFIDENCE: MEDIUM.
The paid_search recommendation is robust (40 SQMs, 18 SQOs, clear efficiency
lead). The webinars recommendation is tentative (12 SQMs). The paid_social
"kill" recommendation depends critically on whether attribution tracking is
functional — if it is not, those $18K may be producing pipeline attributed
to other channels. Total sample across all channels: 122 SQMs, 47 SQOs in
6 months — adequate for directional guidance, not for precise forecasting.
# RIVALLY BATTLECARD — Updated Sep 2026 --- ## One-Line Positioning Points-based employee recognition platform targeting mid-market, now expanding into EU enterprise with data residency and an engagement survey add-on. (S02, S06, S15) --- ## Pricing **List price (current): $7 per user/month, annual billing required.** (S17, 2026-08-12) CONFLICT DETECTED: - S03 (2026-01-20): $5/user/mo, annual billing - S08 (2026-04-01): still $5/user/mo - S17 (2026-08-12): $7/user/mo — NEWER SOURCE WINS Price increased from $5 to $7 between April and August 2026. Delta: +$2/user/mo (+40%). Deal-specific intel: - S13 (2026-06-02): Rivally quoted $6.50/user/mo to a 500-seat prospect, annual term. This falls between the old $5 and new $7 list prices — possibly a transitional or negotiated rate. - S18 (2026-08-14): Rivally quoted $7/user/mo list with 15% discount for a 3-year term commitment. Effective rate on a 3-year deal: $5.95/user/mo. Rivally Pulse (engagement survey add-on) is priced separately, not bundled. (S23) --- ## Where Rivally Wins 1. Quick initial setup — setup took under a week at a mid-market company. (S04) 2. Slack integration works out of the box. (S04) [NOTE: existing card claimed "Rivally lacks a Slack integration" — this is CONTRADICTED by S04. Marking old card claim as FALSE.] 3. Strong for distributed EU teams with multi-language support. (S12) 4. EU data residency is now generally available (Dublin office opened Jul 2026). (S15) 5. Support response time praised — under 4 hours. (S22) 6. Engaging points-based recognition feed. (S02) 7. Rivally Pulse engagement survey add-on now GA (Sep 2026), adding a lightweight engagement layer. (S06, S23) 8. Microsoft Teams app v2 in public preview (Aug 2026). (S19) --- ## Where We Win 1. Analytics depth — an 800-seat prospect chose Bonusly over Rivally specifically citing this. (S25) 2. Rivally's reporting dashboards are basic compared to enterprise tools. (S07) 3. Admin tooling lags peers — no bulk recognition editing (S24), no SCIM provisioning (S10), manual user management painful for enterprise. (S10) 4. Rivally's EMEA rewards catalog is thinner than US catalog. (S16) 5. Migration off Rivally is hard because analytics exports are CSV-only. (S20) — signals vendor lock-in risk but also poor data portability. 6. Price has risen 40% (S17) — narrows the pricing gap if it existed. --- ## Objections and Responses **"Rivally is cheaper."** Price is now $7/user/mo list (S17, Aug 2026), up from $5. Their 15% discount requires a 3-year lock-in (S18). Factor in the analytics gap (S07, S25) and admin limitations (S10, S24) — lower sticker price does not mean lower TCO. **"Rivally has EU data residency."** They do (S15). If the prospect requires EU data residency, acknowledge Rivally's offering. Differentiate on analytics depth and admin tooling where Rivally is weak (S07, S10, S24). **"Rivally sets up faster."** Quick initial setup is confirmed (S04). However, manual user management without SCIM (S10) and no bulk recognition editing (S24) create ongoing admin burden that compounds at scale. **"Rivally has an engagement survey add-on now."** Confirmed — Rivally Pulse exited beta Sep 2026 as a paid add-on, not bundled (S23). Probe whether the prospect actually needs this, and whether a separate add-on vs. integrated analytics is the right trade-off. **"We're locked in / migration is hard."** Rivally's own analytics exports are CSV-only, making migration off Rivally painful (S20). This is a risk to highlight: once on Rivally, switching costs are high due to poor data portability. --- ## Recent Changes (last 6 months) | Date | Change | Snippet | |------|--------|---------| | 2026-05-09 | Hired ex-Workday VP EMEA for European expansion | S11 | | 2026-07-01 | Dublin office opened; EU data residency GA | S15 | | 2026-08-12 | Pricing page updated: $5 → $7/user/mo | S17 | | 2026-08-19 | Microsoft Teams app v2 in public preview | S19 | | 2026-09-01 | Rivally Pulse (engagement survey) exits beta; sold as add-on | S23 | --- ## 12-Month Win/Loss Record vs. Rivally (Sep 2025 – Aug 2026) Total: 20 deals | **13 wins, 7 losses** | **65% win rate** | Month | Wins | Losses | Deal Aliases | |-------|------|--------|--------------| | 2025-09 | 1 | 1 | W: Deal-072E31 / L: Deal-7767F5 | | 2025-10 | 2 | 0 | W: Deal-A9FD43, Deal-F65C8F | | 2025-11 | 1 | 1 | W: Deal-7AA785 / L: Deal-D263E0 | | 2025-12 | 1 | 1 | W: Deal-44C524 / L: Deal-935746 | | 2026-01 | 2 | 0 | W: Deal-0D0CD6, Deal-E46EAB | | 2026-02 | 2 | 0 | W: Deal-D5B790, Deal-1D2392 | | 2026-03 | 1 | 1 | W: Deal-5C636E / L: Deal-9066A6 | | 2026-04 | 0 | 2 | L: Deal-5645A5, Deal-72A02F | | 2026-05 | 0 | 1 | L: Deal-C6FFAA | | 2026-06 | 1 | 0 | W: Deal-67BE14 | | 2026-07 | 1 | 0 | W: Deal-1B6969 | | 2026-08 | 1 | 0 | W: Deal-F03E7B | Trend: Started strong (8-3 through Mar 2026 = 73%), dipped in Apr-May (1-3), then recovered Jun-Aug (3-0). The Apr-May dip coincides with Rivally's pricing transition period — may be coincidental. --- ## Old Card Corrections | Old Claim | Status | Evidence | |-----------|--------|----------| | "Rivally lacks a Slack integration" | **FALSE** | S04: "Slack integration worked out of the box" | | "Rivally was acquired by WorkHuman in 2025" | **UNVERIFIED** | No snippet supports this. S01 shows Rivally raising an independent $40M Series C in Nov 2025, which is inconsistent with an acquisition. | | "Pricing starts at $5/user/mo" | **SUPERSEDED** | S17 (Aug 2026): now $7/user/mo. S03/S08 are older sources. | | "Strong in EU enterprise with multi-language support" | **CONFIRMED** | S12, S15 | | "Points-based recognition for mid-market" | **CONFIRMED** | S02, S04 | --- All claims cite snippet IDs. Rep opinions (S09, S21) are excluded from factual claims per instructions.
## Sequence Review **Per-Sequence Metrics (base = step-1 sent)** | Sequence | Sent | Open Rate | Reply Rate | Meeting Rate | |---|---|---|---|---| | New Logo Nurture | 500 | 490/500 = 98% | 90/500 = 18.0% | 27/500 = 5.4% | | Expansion Nurture | 300 | 565/300 = 188%* | 59/300 = 19.7% | 12/300 = 4.0% | | Cold Outbound - HR Leaders | 600 | 545/600 = 91% | 8/600 = 1.3% | 0/600 = 0.0% | | Cold Outbound - People Ops | 400 | 340/400 = 85% | 29/400 = 7.3% | 6/400 = 1.5% | **Weakest Step** - New Logo Nurture: Step 3 — reply 4.2% (down from 8.4%), meeting 1.4% - Expansion Nurture: Step 3 — reply 4.4% (down from 7.3%) - Cold Outbound - HR Leaders: Step 3 — reply 0.17%, 0 meetings (but all three steps are failures) - Cold Outbound - People Ops: Step 3 — reply 1.6%, below 2% **Tracking Error** Expansion Nurture Step 2: opened 340 exceeds sent 300 (opened > sent by 40). Causes: forwarded email chain, email client pre-fetch, or open-tracking pixel firing on non-recipient. Needs audit. **Audience Overlap (between cold outbound sequences)** 7 contacts appear in both Cold Outbound - HR Leaders and Cold Outbound - People Ops: CT-000849, CT-001217, CT-001105, CT-001255, CT-001345, CT-000890, CT-001033. Risk: fatigue from near-simultaneous cold touches from both sequences. 1 contact in both New Logo Nurture and Expansion Nurture: CT-000301. Minor, but worth deduplicating. **Under 2% Reply Failure Mode** Cold Outbound - HR Leaders (1.3% reply, 0 meetings): failure mode is offer-audience mismatch — HR Leaders likely lack budget authority or urgency, making generic cold outreach ineffective at any step. Content resonates enough for opens (~91%) but zero conversion to reply or meeting. **Fixes (one per weak sequence)** 1. **Cold Outbound - HR Leaders (fix first):** Rewrite subject + step-1 body to target a specific HR pain (e.g., turnover cost, compliance risk) with a direct CTA. Fix first because it spends the most (600 emails) and converts to zero revenue outcomes. 2. **Cold Outbound - People Ops:** Remove the 7 overlapping contacts from one sequence (keep them in People Ops where reply/conversion already occurs). 3. **New Logo Nurture:** Add a value-exchange asset (ROI calculator, case study) to step 3 to arrest the reply-rate drop from 8.4% to 4.2%. 4. **Expansion Nurture:** Audit open-tracking data source; investigate why step 2 opens exceed sends before optimizing content.
## Q3-2026 Weekly Marketing Goals Update Quarter: Q3-2026 | Days elapsed: 66 of 92 (71.7%) ``` METRIC QTD ACTUAL TARGET DELTA % OF TARGET PACE ───────────────────────────────────────────────────────────────────────────── SQMs 230 300 -70 76.7% AHEAD SQOs 84 120 -36 70.0% BEHIND DS2s 40 75 -35 53.3% BEHIND CL MIA Rate 20.0% 10.0% +10.0pp — BEHIND Same-Qtr Closes 10 20 -10 50.0% BEHIND Active Pipeline $3.00M $4.00M -$1.00M 75.0% AHEAD ``` **Pace method:** QTD actual ÷ full-quarter target vs. 66 ÷ 92 (71.7% of quarter elapsed). At or above → on/ahead; below → behind. **Arithmetic details:** - SQMs: 230 / 300 = 76.7% ≥ 71.7% → ahead by ~5pp of target pace - SQOs: 84 / 120 = 70.0% < 71.7% → behind by ~1.7pp - DS2s: 40 / 75 = 53.3% < 71.7% → behind by ~18.4pp (most at-risk) - CL MIA rate: 5 / 25 = 20.0% vs 10% cap → double the threshold; lower is better, so this is running badly behind - Same-quarter closes: 10 / 20 = 50.0% < 71.7% → behind by ~21.7pp (also significantly at-risk) - Pipeline: $3.00M / $4.00M = 75.0% ≥ 71.7% → ahead by ~3.3pp **What moved this week:** Top-of-funnel remains healthy — SQMs are tracking ahead of pace at 76.7% of target with 26 days left, and active pipeline coverage cleared 75% of goal, so inbound volume and deal accumulation are holding up. The conversion funnel is where pressure is building: SQOs sit at 70.0%, just below pace, signaling that MQL-to-SQO qualification is slightly lagging despite the SQM surplus. The two biggest red flags are DS2s at only 53.3% of target (requiring ~35 more in 26 days — roughly 1.3 per day vs. the 0.72/day we've averaged) and same-quarter closes at 50.0%, which means we need 10 more closes in the remaining 26 days versus the 10 we managed in the first 66 — a 2.6× acceleration that will be difficult without pulling forward late-stage deals. Closed-lost MIA rate at 20% is double the 10% ceiling, meaning 1 in 5 lost deals are disappearing without a trace — this signals a process gap in lost-deal follow-up that is inflating the loss count and masking the real closeable pipeline. **Risk summary:** 3 of 6 metrics are behind pace. DS2s and same-quarter closes are materially behind and will require intervention (deal acceleration, close-date pulls, or forecast revision) to hit quarter. SQMs and pipeline give some buffer, but the conversion gap from SQMs → SQOs → DS2s → closes needs to tighten in the final 4 weeks.
Q3 weighted forecast is $115,977: $44,729 committed on 7 deals plus 35% of $203,565 in best-case. 32 deals worth $227,575 fell outside the quarter, including a $13,770 commit deal (Deal-D348E1) pushed to October. Key caveat: owner is blank on 85 of 86 deals and no commit deal has a documented why-buy, so this number has no rep attribution and no evidence base.
Here's the follow-up email: --- Subject: Following up — July 28 demo recap Hi [Name], Wanted to circle back on the recap I sent August 5 covering the pricing for 150 seats. I know the People team was excited about automated milestone awards and the points catalog during the July 28 demo — curious whether there are any questions I can answer to move things forward. If the budget timing or internal approvals have shifted, happy to adjust. Otherwise, would a quick 15-minute call this week work to pick things back up? Best, Alex --- 113 words. References the Aug 5 recap and the Jul 28 demo reaction (automated milestone awards, points catalog). Single clear ask: a 15-minute call. Tone matches the prior thread — direct, low-pressure, no urgency manufactured.
Here's your weekly GTM digest — all numbers sourced from the extracts, no invented facts. --- **GTM Weekly Digest — Week of Aug 31, 2026** Marketing put up 46 SQMs this week against a target of 52, coming in at 88.5% of goal. The webinar channel was the standout, driving 18 of those 46 SQMs — roughly 39% of total weekly volume from a single channel. Paid search held steady on cost efficiency at $150 per SQM, keeping that engine predictable as we look at scaling spend. The gap to target is 6 SQMs worth addressing next week. Sales converted 14 SQOs and opened 9 DS2 meetings, building solid momentum deeper in the funnel. New pipeline creation hit $310,000 for the week — a strong top-of-funnel to mid-funnel conversion story. Three deals closed same-quarter, reinforcing that the pipeline is moving through to revenue and not just sitting in stage. The 14 SQOs and 9 DS2s together signal healthy qualification discipline. CS saved 2 renewals this week, keeping committed ARR on the books. Team NPS moved to 61, a healthy indicator that customer sentiment remains strong heading into Q4. Three open red-flag accounts carry into next week — those are the ones to get ahead of before they become renewal risks. The renewal saves plus NPS momentum show the team is balancing firefighting with proactive relationship work. PLG added 412 new signups with activation at 31%, meaning roughly 128 accounts moved beyond first touch into meaningful product engagement. Thirty-eight companies hit the aha moment of 10 recognition gives, which is our strongest predictor of long-term retention. The gap between 412 signups and 38 aha-moment companies (about 9.2%) tells us there's still room to improve the onboarding path from signup to repeated recognition behavior — that's the leverage point for next week.
PARTNER DIGEST — 2026-08-24 to 2026-09-04
============================================================
ACTIVE PARTNERS
============================================================
APEX REWARDS CO
Status: Active
Activities: Co-webinar locked for 09-15. Two sourced opps confirmed with UTM Source = Partner.
Deals: 2
Deal-DDAAF2 — $180,000
Deal-2CF33E — $95,000
Partner-sourced pipeline: 2 deals / $275,000
HRCloud PARTNERS
Status: Active
Activities: Integration referral closed security review; opp moved to DS2. One sourced opp logged.
Deals: 1
Deal-F1CDA5 — $140,000
Partner-sourced pipeline: 1 deal / $140,000
CULTUREBRIDGE
Status: Active
Activities: Lunch-and-learn produced two sourced opps, both early stage.
Deals: 2
Deal-096E1D — $60,000
Deal-067213 — $75,000
Partner-sourced pipeline: 2 deals / $135,000
WORKWELL GROUP
Status: Active
Activities: Wants to restart joint playbook in Q4. Planning call booked for 09-09. No sourced deals this period.
Deals: 0
Partner-sourced pipeline: 0 deals / $0
============================================================
QUIET PARTNERS
============================================================
RECOGNIQ — No activity, no sourced deals.
KUDOSWAVE — No activity, no sourced deals.
PEOPLEFIRST ADVISORS — No activity, no sourced deals.
TOTALPERK — No activity, no sourced deals.
============================================================
ROSTER TOTALS
============================================================
Active partners: 4 of 8
Quiet partners: 4 of 8
Total partner-sourced deals: 5
Total partner-sourced pipeline: $550,000
Apex Rewards Co: 2 deals / $275,000
HRCloud Partners: 1 deal / $140,000
CultureBridge: 2 deals / $135,000
WorkWell Group: 0 deals / $0
Below are the 10 questionnaire responses. Each answer cites the policy excerpt(s) used. Three items are unanswerable from the provided excerpts. --- Q1 — Encryption at rest Yes. Customer data is encrypted at rest using AES-256. [P1] Q2 — Encryption in transit Yes. Data in transit is encrypted with TLS 1.2 or higher. [P1] Q3 — SOC 2 report Yes. Bonusly maintains a SOC 2 Type II report, renewed annually. The report is available to prospects under NDA. [P2] Q4 — Data retention after contract termination Customer data is retained for the duration of the contract plus 90 days, after which it is deleted from production systems. [P3] Q5 — Subprocessor list and change notification A current list of subprocessors is maintained at trust.bonusly.com. Customers receive 30 days' notice before a new subprocessor is added. [P4] Q6 — SAML single sign-on Yes. SAML 2.0 single sign-on and SCIM user provisioning are available on the Enterprise plan. [P5] Q7 — Production backup schedule and retention Production databases are backed up daily. Backups are encrypted and retained for 35 days. [P6] Q8 — ISO 27001 certification Unanswerable from the provided excerpts. No excerpt addresses ISO 27001. This would be answered by Bonusly's compliance certifications document or trust.bonusly.com certifications page. Q9 — Contractual uptime SLA percentage Unanswerable from the provided excerpts. No excerpt specifies an uptime SLA. This would be answered by the Master Service Agreement (MSA) or Service Level Agreement (SLA) exhibit. Q10 — HIPAA Business Associate Agreement Unanswerable from the provided excerpts. No excerpt addresses HIPAA or BAA willingness. This would be answered by Bonusly's compliance or legal team.
I'll analyze each finding systematically against the manifest and skill files.
---
RECONCILIATION REPORT: 14 Skills vs. Manifest
Date: 2026-09-08
---
## (1) OVERLAPPING ALWAYS-TRIGGER PHRASES
FINDING 1A — comms-drafter / email-drafter
Severity: CRITICAL
Action: MERGE
Both skills claim identical ALWAYS-trigger phrases:
"write me an email", "draft a follow-up", "help me reply",
"what should I say", "bump email", "contract nudge",
"review this email", "rewrite this"
comms-drafter is broader (covers all external comms for all teams),
email-drafter is scoped to AEs/SDRs/CSMs email-only. The email-specific
triggers are word-for-word identical in both. An agent receiving "draft
a follow-up" cannot determine which skill to invoke.
Proposal: MERGE into comms-drafter (broader scope), retire email-drafter,
or add an explicit disambiguation rule in both descriptions.
---
FINDING 1B — pipeline-intelligence-report / weekly-pipeline-report
Severity: WARNING
Action: REVIEW
Overlapping phrases: "pipeline update", "pipeline report",
"run the pipeline [report/update]", "what's the pipeline look like"
pipeline-intelligence-report: scored/tiered 10-tab HTML view
weekly-pipeline-report: performance metrics summary HTML
Both claim the same natural-language trigger for different outputs.
Proposal: REVIEW — add disambiguation phrases. e.g., pipeline-intelligence
claims "score the pipeline", "full pipeline", "tier the pipeline";
weekly-pipeline claims "weekly update", "MTD numbers", "pipeline summary".
---
FINDING 1C — model-selection (universal trigger)
Severity: INFO
Action: REVIEW
model-selection states: "ALWAYS run this skill at the start of every task,
without exception — before any planning, execution, or skill invocation
begins."
This universal pre-step trigger competes with every other skill's domain
trigger. If an agent is deciding between model-selection (always first)
and a domain skill, the routing is ambiguous.
Proposal: REVIEW — reframe as a pre-step protocol (not a competing
trigger) or move the logic into the orchestrator layer.
---
## (2) CIRCULAR DELEGATION CHAIN
FINDING 2A — email-drafter ↔ deal-strategy-coach
Severity: CRITICAL
Action: REVIEW
Chain:
email-drafter → deal-strategy-coach (body says: "For deal strategy,
diagnosis, or coaching, point them to deal-strategy-coach")
deal-strategy-coach → email-drafter (body says: "When drafting
manager-to-prospect emails, use the email-drafter skill")
Each delegates to the other when the user's request is borderline.
A user saying "what should I say to push back on price" could
ping-pong indefinitely.
Proposal: REVIEW — break the loop. Either (a) make deal-strategy-coach
the sole entry point for strategy + drafting (absorb email-drafter), or
(b) add a one-directional rule: email-drafter never delegates back to
deal-strategy-coach within the same call.
---
FINDING 2B — comms-drafter → deal-strategy-coach → email-drafter → deal-strategy-coach
Severity: CRITICAL
Action: REVIEW
Same circular chain, reachable via comms-drafter as entry point:
comms-drafter → deal-strategy-coach → email-drafter → deal-strategy-coach
This is the same loop (2A) but reachable through a third entry point.
Proposal: Same fix as 2A. Resolve the email-drafter ↔ deal-strategy-coach
loop and both chains break.
---
## (3) DANGLING DELEGATION TARGETS
FINDING 3A — bonusly-brand (referenced by 4 skills, not in manifest)
Severity: CRITICAL
Action: DELETE_SKILL or UPDATE_BODY
Referenced by: comms-drafter ("apply the bonusly-brand skill"),
email-drafter ("apply the bonusly-brand org skill"), sales-forecast
("reference bonusly-brand skill"), signalforge-claim-compressor
("use bonusly-brand for those").
Not present in the 14-skill manifest. Either the file exists outside
this manifest scope, or the reference is dangling.
Proposal: If bonusly-brand exists elsewhere, add to manifest or note
cross-manifest dependency. If it does not exist, UPDATE_BODY on all
4 referencing skills to remove the dependency.
---
FINDING 3B — prospect-research-multithreading (referenced by 5 skills, not in manifest)
Severity: CRITICAL
Action: DELETE_SKILL or UPDATE_BODY
Referenced by: comms-drafter, email-drafter, deal-strategy-coach,
stale-pipeline-report, partner-digest. All invoke it for "Contact
Lookup mode" or "prospect research."
Not present in the 14-skill manifest.
Proposal: Same as 3A. Verify existence, add to manifest or remove
references.
---
FINDING 3C — skill-orchestrator (referenced by analysis-validator, signalforge-feedback, not in manifest)
Severity: WARNING
Action: UPDATE_BODY
analysis-validator §11 mentions "Three-Way Sync" propagating through
`skill-orchestrator`. signalforge-feedback references it as "registered
in skill-orchestrator as a terminal step."
Proposal: Verify existence. If it's the Hermes orchestration layer
(not a skill), update body language to clarify it's a platform component,
not a delegable skill.
---
FINDING 3D — 8 bonusly-*-questions specialist skills (referenced by analysis-validator §12.4, not in manifest)
Severity: WARNING
Action: REVIEW
analysis-validator Section 12.4 references 8 specialist skills:
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 are in the 14-skill manifest. These may live in a different
manifest (org-level skills). Their absence from this manifest means
validation delegation cannot be traced.
Proposal: REVIEW — confirm these are org-level skills in a separate
manifest. If so, add a cross-reference note. If they don't exist,
analysis-validator §12.4 is non-functional.
---
FINDING 3E — signalforge-reports org skill (referenced by pipeline-intelligence-report, weekly-pipeline-report, sales-forecast)
Severity: WARNING
Action: REVIEW
Multiple skills reference `/mnt/skills/organization/signalforge-reports/`
for DESIGN-SYSTEM.md, signalforge.css, etc. This is an org-level skill,
not in this manifest.
Proposal: REVIEW — same treatment as 3D. Confirm existence in org
manifest, add cross-reference.
---
## (4) VERSION CONFLICT
FINDING 4A — analysis-validator v3.5 / v3.6 (same date)
Severity: WARNING
Action: REVIEW
Changelog shows both v3.5 and v3.6 dated May 9, 2026. The body header
says "Version: 3.6." No other skill has a version conflict.
v3.6 (ID Resolution, G2-F) was added on top of v3.5 (Engagement
Coverage, G1-L) on the same day. The body is internally consistent
at v3.6.
Proposal: REVIEW — the changelog entry for v3.5 should be absorbed
into v3.6's entry or dated to an earlier day. Having two version bumps
on the same date with no body inconsistency is cosmetic but confusing.
---
## (5) DESCRIPTIONS EXCEEDING 1,024 CHARACTERS
Severity: INFO
Result: ZERO. No manifest description exceeds 1,024 characters.
Maximums:
pipeline-intelligence-report: 1,006
signalforge-claim-compressor: 1,006
partner-digest: 1,004
All 14 descriptions are within the 1,024 limit. No action needed.
---
## (6) HARDCODED PAGE IDS, DATES, PERSON NAMES
FINDING 6A — analysis-validator: hardcoded person names
Severity: WARNING
Action: UPDATE_BODY
Person names in skill body:
- "Manish or Amani" (G1-K escalation, §10)
- "Manish / Amani" (G1-K HOLD output format)
- "Ashley Le" (§12.3 roster, inactive)
- "Elena" not "Tracy" (§12.3 roster)
These will drift as team changes. The roster section (§12.3) itself
is a snapshot ("Updated May 4, 2026") with 15+ hardcoded HubSpot
owner IDs and names.
Proposal: UPDATE_BODY — replace hardcoded roster with a "pull roster
dynamically" instruction or a [LIVE QUERY] tag, as the roster will
drift from reality.
---
FINDING 6B — analysis-validator: hardcoded deal stage IDs and pipeline IDs
Severity: WARNING
Action: UPDATE_BODY
Stage IDs (150582536–1175632767) and pipeline = 'default' appear in
Sections 12.2, 13.3, and throughout. These are HubSpot config values
that could change.
Proposal: UPDATE_BODY — add a note: "Verify stage IDs against HubSpot
at session start; do not assume current values match this document."
---
FINDING 6C — analysis-validator: hardcoded population anchors
Severity: WARNING
Action: UPDATE_BODY
"~452,000 provisioned users" (§1-J, §8)
"~110,097 dormant provisioned users" (§1-J)
"Paying customers 3,000–3,500" (§8)
Section 8 already says "Do not use hardcoded figures" and has a
live query block. But Section 1-J still hardcodes the anchors as
diagnostic bounds. They will drift.
Proposal: UPDATE_BODY — Section 1-J anchors should reference "run
Section 8 query at session start" rather than embedding fixed numbers.
---
FINDING 6D — partner-digest: hardcoded Confluence IDs and Slack user ID
Severity: WARNING
Action: UPDATE_BODY
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Space ID: 1958248479
Folder ID: 2286616609
Slack user ID: U03QLMBL7AR (Amani)
Person name: Amani Phipps
These Confluence IDs are platform config that could change on space
restructuring. The Slack ID is a user-specific lookup.
Proposal: UPDATE_BODY — add [LIVE QUERY] tag on Confluence IDs.
The Slack user ID should be resolved at runtime via Slack connector.
---
FINDING 6E — pipeline-intelligence-report: hardcoded AE roster (incomplete)
Severity: CRITICAL
Action: UPDATE_BODY
The hardcoded AE owner ID list omits Hugo Lindqvist (77260721):
Listed: Bryce Harmon, Dana Mercer, Cole Ingram, Alex Franklin, Gavin Porter (5)
Missing: Hugo Lindqvist (listed in analysis-validator §12.3 as Core 6)
This means pipeline-intelligence-report will fail to resolve Hugo Lindqvist's
deals to a name, producing raw IDs in output (a G2-F failure per the
analysis-validator itself).
Proposal: UPDATE_BODY — either add Hugo Lindqvist to the hardcoded list,
or (better) replace with dynamic owner resolution as stale-pipeline-report
already does.
---
FINDING 6F — weekly-pipeline-report: hardcoded Q1 2026 actuals
Severity: WARNING
Action: UPDATE_BODY
"Sales Bookings Actual: $365,152 vs. $475,000 plan (77%)"
"Pipeline Addition Actual: $2,490,532 vs. $3,288,000 forecast (76%)"
These are labeled "Q1 2026 context (static)" but will be stale by Q3+.
Also hardcoded: "April 1 – June 30, 2026" (Q2 2026 window).
Proposal: UPDATE_BODY — compute Q1 actuals from Snowflake/HubSpot at
session start; remove hardcoded Q1 numbers. Make quarter window dynamic.
---
FINDING 6G — sales-forecast: hardcoded Confluence IDs
Severity: WARNING
Action: UPDATE_BODY
Space: SignalForg, Space ID: 2232811524
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Parent page ID: 2232582148
Same pattern as partner-digest. Platform config that drifts.
Proposal: UPDATE_BODY — same treatment as 6D.
---
FINDING 6H — signalforge-feedback: hardcoded Confluence page IDs
Severity: WARNING
Action: UPDATE_BODY
Feedback Log page: 2295136266
Space ID: 2232811524
Cloud ID: 73fe98de-a4a3-4869-9f8a-bb1eeed4cf7f
Parent: 2234417154
Build Log page: 2247295002
Proposal: Same as 6D.
---
FINDING 6I — stale-pipeline-report / next-to-close: hardcoded HubSpot org ID
Severity: INFO
Action: UPDATE_BODY
HubSpot org ID: 1973303 (used in deal URL pattern)
Present in: pipeline-intelligence-report, stale-pipeline-report,
next-to-close. This is a Bonusly-specific HubSpot tenant ID.
Proposal: UPDATE_BODY — extract to a system constants block referenced
by all skills, or resolve at runtime.
---
FINDING 6J — model-selection: hardcoded model IDs and dates
Severity: INFO
Action: UPDATE_BODY
last_checked: 2026-05-19
Model IDs: claude-haiku-4-5-20251001, claude-sonnet-4-6, claude-opus-4-7
Knowledge cutoffs: Feb 2025, Aug 2025, Jan 2026
These are Anthropic config that will change. The skill has a self-update
protocol ("if today is >14 days past last_checked, run self-update").
Proposal: INFO only. The self-update mechanism already exists. Ensure
it actually runs.
---
## (7) MANIFEST DRIFT
Severity: INFO
Result: ZERO drift in both directions.
Files with no manifest row: 0
Manifest rows with no file: 0
All 14 manifest entries have corresponding .SKILL.md files and vice
versa. Description character counts are present for all 14.
---
## SUMMARY TABLE
| # | Finding | Severity | Action |
|---|---------|----------|--------|
| 1A | comms-drafter ↔ email-drafter trigger overlap | CRITICAL | MERGE |
| 1B | pipeline-intelligence ↔ weekly-pipeline trigger overlap | WARNING | REVIEW |
| 1C | model-selection universal trigger conflict | INFO | REVIEW |
| 2A | email-drafter ↔ deal-strategy-coach circular chain | CRITICAL | REVIEW |
| 2B | comms-drafter → deal-strategy → email-drafter → deal-strategy (same loop) | CRITICAL | REVIEW |
| 3A | bonusly-brand: dangling (4 skills reference) | CRITICAL | DELETE_SKILL or UPDATE_BODY |
| 3B | prospect-research-multithreading: dangling (5 skills reference) | CRITICAL | DELETE_SKILL or UPDATE_BODY |
| 3C | skill-orchestrator: dangling (2 skills reference) | WARNING | UPDATE_BODY |
| 3D | 8 bonusly-*-questions skills: dangling (analysis-validator) | WARNING | REVIEW |
| 3E | signalforge-reports org skill: dangling (3 skills reference) | WARNING | REVIEW |
| 4A | analysis-validator v3.5/v3.6 same date | WARNING | REVIEW |
| 5 | Descriptions >1,024 chars: **0 found** | INFO | — |
| 6A | Hardcoded person names (analysis-validator) | WARNING | UPDATE_BODY |
| 6B | Hardcoded stage/pipeline IDs (analysis-validator) | WARNING | UPDATE_BODY |
| 6C | Hardcoded population anchors (analysis-validator §1-J) | WARNING | UPDATE_BODY |
| 6D | Hardcoded Confluence/Slack IDs (partner-digest) | WARNING | UPDATE_BODY |
| 6E | **Hardcoded AE roster incomplete — missing Hugo Lindqvist (pipeline-intelligence-report)** | CRITICAL | UPDATE_BODY |
| 6F | Hardcoded Q1 2026 actuals + Q2 window (weekly-pipeline-report) | WARNING | UPDATE_BODY |
| 6G | Hardcoded Confluence IDs (sales-forecast) | WARNING | UPDATE_BODY |
| 6H | Hardcoded Confluence page IDs (signalforge-feedback) | WARNING | UPDATE_BODY |
| 6I | Hardcoded HubSpot org ID (3 skills) | INFO | UPDATE_BODY |
| 6J | Hardcoded model IDs/dates (model-selection) | INFO | UPDATE_BODY |
| 7 | Manifest drift: **0 files unmatched, 0 rows unmatched** | INFO | — |
**Critical findings requiring immediate attention: 6**
(1A, 2A, 2B, 3A, 3B, 6E)
The most operationally dangerous is 6E: pipeline-intelligence-report will
produce raw owner IDs for Hugo Lindqvist's deals, which the analysis-validator
would flag as a G2-F failure — the skills contradict each other.
Here is the runbook derived from the incident thread.
INCIDENT RUNBOOK: Reward Queue Backlog (2026-08-29)
Source: #incident-2026-08-29-reward-queue
Severity indicator: PagerDuty alert, queue depth > 10k (normal < 500)
========================================================================
STEP 1 — Acknowledge & Begin Investigation
========================================================================
When: 14:02:10Z (M01)
Action: Acknowledge PagerDuty alert; take incident commander role.
Run by: Bryce Harmon
Verify: PagerDuty alert acknowledged (implied).
Rollback: N/A — no state changed.
------------------------------------------------------------------------
STEP 2 — Check Queue Depth
------------------------------------------------------------------------
When: 14:04:33Z (M02)
Action: Ran: `bundle exec rake sidekiq:queue_depth`
Run by: Farid Osman
Result: reward queue at 48,213 pending jobs (normal: under 500).
Verify: Command output confirmed queue depth.
Rollback: N/A — read-only diagnostic.
------------------------------------------------------------------------
STEP 3 — Inspect Dead Set
------------------------------------------------------------------------
When: 14:06:02Z (M03)
Action: Checked Sidekiq dead set. 112 jobs found, all
Redis::TimeoutError from around 13:58.
Run by: Farid Osman
Verify: Dead set inspection confirmed error type and timestamp.
Rollback: N/A — read-only diagnostic.
------------------------------------------------------------------------
STEP 4 — Pause Auto-Recognition Enqueue
------------------------------------------------------------------------
When: 14:08:45Z (M04)
Action: Ran: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'`
Run by: Farid Osman
Purpose: Stop new jobs entering the reward queue to halt backlog growth.
Verify: _Thread does not state explicit verification for this step_
[NEEDS CONFIRMATION: how was disable confirmed?]
Rollback: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'`
(documented in thread; executed at Step 9 below)
------------------------------------------------------------------------
STEP 5 — Clear Sidekiq Dead Set
------------------------------------------------------------------------
When: 14:15:20Z (M05)
Action: Cleared the dead set (112 Redis::TimeoutError jobs).
Run by: Elena Sinclair
Purpose: Remove stale failed jobs from the dead set.
Verify: _Thread does not state explicit verification for this step_
[NEEDS CONFIRMATION: was dead set confirmed empty after clear?]
Rollback: _Not specified in thread_
[NEEDS CONFIRMATION: was a backup of dead set taken before clearing?]
------------------------------------------------------------------------
STEP 6 — Scale Up Workers
------------------------------------------------------------------------
When: 14:21:07Z (M06)
Action: Ran: `kubectl scale deployment/reward-worker --replicas=6`
(was 3)
Run by: Bryce Harmon
Purpose: Double worker capacity to drain the 48k-job backlog.
Verify: _Thread does not state explicit verification for this step_
[NEEDS CONFIRMATION: was `kubectl get pods` or equivalent
used to confirm 6 replicas were running?]
Rollback: `kubectl scale deployment/reward-worker --replicas=3`
------------------------------------------------------------------------
STEP 7 — Confirm Queue Draining
------------------------------------------------------------------------
When: 14:33:41Z (M07)
Action: Queue depth checked. 9,400 pending jobs, falling at
~1,200/min.
Run by: Farid Osman
Verify: `bundle exec rake sidekiq:queue_depth` (implied by result).
Rollback: N/A — read-only diagnostic.
------------------------------------------------------------------------
STEP 8 — Confirm Queue Empty & Error Rate Baseline
------------------------------------------------------------------------
When: 14:47:55Z (M08)
Action: Ran: `bundle exec rake sidekiq:queue_depth` — returns 0.
Checked Datadog — error rate back to baseline.
Run by: Cole Ingram
Verify: Dual confirmation: queue depth = 0 (command) AND
Datadog error rate at baseline.
Rollback: N/A — read-only verification.
------------------------------------------------------------------------
STEP 9 — Re-Enable Auto-Recognition Enqueue
------------------------------------------------------------------------
When: 14:49:10Z (M09)
Action: Ran: `bin/rails runner 'FeatureFlag.enable(:auto_recognition_enqueue)'`
Run by: Bryce Harmon
Purpose: Restore normal enqueue flow after queue was fully drained.
Verify: 40 new jobs processed cleanly in the next 3 minutes
(confirmed no re-accumulation).
Rollback: `bin/rails runner 'FeatureFlag.disable(:auto_recognition_enqueue)'`
------------------------------------------------------------------------
STEP 10 — Scale Workers Back to Normal
------------------------------------------------------------------------
When: 14:55:00Z (M10)
Action: Ran: `kubectl scale deployment/reward-worker --replicas=3`
Run by: Bryce Harmon
Purpose: Return worker count to pre-incident baseline.
Verify: Queue stable at 0 (stated by Bryce Harmon).
Rollback: `kubectl scale deployment/reward-worker --replicas=6`
------------------------------------------------------------------------
STATE-CHANGING STEPS SUMMARY (for change log)
------------------------------------------------------------------------
# | Action | Changed State? | Rollback Available?
4 | Disable feature flag | YES | YES (documented)
5 | Clear dead set | YES | NOT STATED
6 | Scale workers 3 -> 6 | YES | YES (documented)
9 | Enable feature flag | YES | YES (documented)
10 | Scale workers 6 -> 3 | YES | YES (documented)
------------------------------------------------------------------------
OPEN ITEMS REQUIRING CONFIRMATION
------------------------------------------------------------------------
1. Step 4: Was the feature flag disable confirmed before proceeding?
2. Step 5: Was the dead set verified empty after clearing?
3. Step 5: Was a backup/snapshot of dead set contents taken?
4. Step 6: Were 6 worker pods confirmed running after scale-up?
## Failure Sequence
### First Error
```
2026-09-03T14:01:12Z reward-service ERROR
Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out after 5s
```
This is the root trigger. Everything after it is cascade.
---
### Cascade (in order)
| Time (UTC) | Service | Event |
|---|---|---|
| 14:01:12Z | reward-service | Redis connection timeout to redis-primary:6379 (initial failure) |
| 14:01:20Z – 14:01:40Z | reward-service | 3x retry exhausted for RewardGiveJob |
| 14:01:40Z | sidekiq | RewardGiveJob failed, retrying in 60s |
| 14:02:28Z | sidekiq | RewardGiveJob failed again (next retry cycle) |
| 14:02:30Z | sidekiq | Queue reward depth crosses 10,000 — backpressure builds |
| 14:03:05Z | api-gateway | 502 upstream timeout calling reward-service /gives |
| 14:03:30Z | web-app | Give form submission failed (upstream 502 from api-gateway) |
| 14:03:31Z – 14:06:52Z | api-gateway + sidekiq + web-app | Repeating waves: RewardGiveJob retry failures, 502s, user-facing submission errors |
The cascade is: **Redis → reward-service → sidekiq queue depth → api-gateway 502s → web-app user-visible failures.**
---
### Service and Job
- **Service:** reward-service
- **Primary job:** RewardGiveJob (12 failures in sidekiq_jobs.csv: J-00001 through J-00012, plus J-00007–J-00012)
- **Collateral job:** RecognitionDigestJob (4 failures: J-00013 through J-00016) — same Redis root cause, not a separate issue
---
### Datadog Query to Confirm the First Error
```
service:reward-service status:error "Redis::TimeoutError" "Connection to Redis"
| index by service
| last 30m from now-30m
```
Or more precisely as a log search:
```
service:reward-service status:error "Redis::TimeoutError: Connection to Redis at redis-primary:6379 timed out"
```
Expected result: single hit at 2026-09-03T14:01:12Z, confirming this as the earliest error and root cause.
---
### What the Logs Do NOT Show
1. **No Redis-side logs.** We see the client-side timeout but not whether redis-primary:6379 was actually down, OOM, or experiencing a network partition. No Redis latency metrics, memory usage, or eviction data.
2. **No trigger for the Redis failure.** Nothing in the logs explains why the connection timed out at 14:01:12Z. No deployment event, no network change, no resource spike.
3. **No Recovery Logging Detail.** The restore at 14:22:10Z ("Redis connection restored") appears but we don't see what triggered the fix — manual intervention, automatic failover, or Redis restart.
4. **No visibility into the 21-minute gap.** Between the last error (14:06:52Z) and restore (14:22:10Z), the logs show only postgres checkpoints. No reward-service or sidekiq entries — either logging stopped, retries were silent, or the process was stuck.
5. **No user impact quantification.** We see "Give form submission failed" three times (14:03:30, 14:04:45, 14:05:42, 14:06:49) but no total count of affected users or failed rewards. The queue depth hit 10,000+ but we don't know how many were RewardGiveJobs vs RecognitionDigestJobs.
6. **No Recovery Verification Logging.** After 14:22:10Z there's no confirmation that failed RewardGiveJobs were successfully retried or that queue depth returned to normal (14:24:45Z says below 500, but no success count).
7. **No alerting confirmation.** No evidence anyone was paged or alerted — the cascade ran for ~15 minutes before Redis recovered.
Here is the state of each flag in the export. 1. recognition_streaks_v2 State: ON Code reference: app/models/recognition.rb — gates whether StreakTracker.record(give) fires after a recognition give. Targeting: segment:beta_companies Company count: 42 2. points_budget_guardrails State: ON Code reference: app/services/budget_service.rb — gates whether BudgetService.enforce!(giver, points) runs to enforce per-giver budget limits. Targeting: all_companies Company count: 220 3. slack_dm_nudges State: ON Code reference: app/jobs/nudge_job.rb — gates whether SlackDm.send_nudge(user) sends a Slack DM nudge. Targeting: segment:region_na Company count: 87 4. redeem_flow_redesign State: OFF Code reference: app/controllers/redeem_controller.rb — when ON renders RedeemV2Component; when OFF renders RedeemV1Component. Currently on the old path. Targeting: targeted_list Company count: 12 5. analytics_dashboard_v3 State: ON Code reference: app/controllers/analytics_controller.rb — gates whether the controller instantiates AnalyticsV3 (the new dashboard). Targeting: segment:tier_three Company count: 65 6. ms_teams_app_v2 State: OFF Code reference: app/services/teams_installer.rb — gates whether TeamsAppV2.install(company) runs. Currently blocked. Targeting: targeted_list Company count: 9 7. legacy_give_modal State: OFF Code reference: NONE — this flag does not appear anywhere in the provided code excerpt. Targeting: segment:legacy_plan Company count: 14 8. survey_boosters_q3 State: ON Code reference: NONE — this flag does not appear anywhere in the provided code excerpt. Targeting: segment:legacy_plan Company count: 7 9. paused_offboard_cleanup State: OFF Code reference: NONE — this flag does not appear anywhere in the provided code excerpt. Targeting: NONE (empty field) Company count: 0 Flags with no code reference (3 of 9): legacy_give_modal, survey_boosters_q3, paused_offboard_cleanup These exist in the export but have no corresponding usage in the provided app/ or lib/ code. Either they are gated in code not covered by the excerpt, or they are orphaned/stale flags. Flags with no targets (1): paused_offboard_cleanup — empty targeting_rules and company_count of 0. Even though it is OFF, it has no company reach if toggled on. Flags with no code reference AND no targets (1): paused_offboard_cleanup — fully dormant with no observable effect in either targeting or code.
NDA TRIAGE
==========
NDA-1 — [PARTY A] / Bonusly → GREEN
Standard mutual NDA. Mutual confidentiality, reasonable 2-year term, 3-year
survival, all five customary carve-outs present (§3(a)–(e)), Delaware governing
law, no non-solicits, no non-competes, explicit no-license and no-exclusivity
language. Nothing outside standard template.
NDA-2 — [PARTY B] / Bonusly → YELLOW (counsel review)
Embedded 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." (§4) — 18-month post-term tail is aggressive and can restrict
hiring; counsel should confirm employee-contact scope and negotiate down or
limit to named individuals.
NDA-3 — [PARTY C] / Bonusly → RED (full legal review)
Three distinct red flags in a single agreement:
1. Embedded non-compete — "For a period of three (3) years following the
Effective Date, Recipient shall not, directly or indirectly, engage in or
provide services to any business that competes with Discloser's business."
(§2) — Three-year blanket non-compete is unreasonably broad and likely
unenforceable in many jurisdictions; in-house and outside counsel must
assess.
2. No carve-outs stated — "No confidentiality carve-outs are stated in this
Agreement." (§4) — Absence of standard exceptions (public domain, prior
knowledge, independent development, legal compulsion) creates overbroad
exposure.
3. One-way obligation — Confidentiality runs only toward [PARTY C], not
mutual, shifting all risk to Bonusly. Combined with Irish governing law
(§3), enforcement of carve-outless, one-way terms in a foreign court
compounds legal risk.
Bottom line: Do not sign NDA-3 without material redline.