Skip to content
Recued
Menu
← Back to packs

CRM Engagement Augmentation

by recued-core v1 recipe_pack

Primary deterministic pack for the D-139 engagement evidence substrate. Installs four Layer-1 silent producer recipes (`engagement-velocity-producer` / `engagement-silence-producer` / `inbound-outbound-ratio-producer` / `last-meaningful-touch-producer`) wrapping the deterministic deal-level topics (`engagement_velocity_signal` + `engagement_silence_duration` + `inbound_outbound_ratio` + `last_meaningful_touch`) plus four Layer-2 visible alerts that surface decaying-velocity deals, silence-exceeded deals, out-of-band engagement (rep mail not landing in CRM), and overdue meeting follow-ups. Producers and alerts are vendor-agnostic — both subscribe to the cross-vendor deal/opportunity update bus and dispatch via the dynamic `{{context.event.payload.platform}}` scope that resolves to either `connection.api.hubspot.deal` or `connection.api.salesforce.opportunity` per event. The substrate-side housekeeping engagement-aggregates code (D-139 P3 + P4) is the canonical compute path; producer recipes here re-emit the row through the recipe-cycle audit so the user sees the topic ticking on each deal touch (Layer-1 pattern). Cost-preview previews zero token cost (deterministic only). Independent install gate from the post-substrate canary `crm-commitment-tracker` pack (P6.B) — installing the deterministic pack does NOT carry a body-content MCP grant.

What this pack installs

Included recipes 8 pinned recipes

This pack installs the complete recipe workflow together.

Vendor-agnostic Layer-1 silent producer wrapping the `engagement_velocity_signal` topic per spec § A.9.1. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads any housekeeping-computed row via `enrichment-list` with the dynamic `{{context.event.payload.platform}}` scope and re-emits it through the recipe cycle so the row carries an up-to-date `cursor_at` reflecting the deal touch. The substrate-side housekeeping engagement-aggregates code (D-139 P3 — `backend/server/src/housekeeping/engagement-aggregates/engagement-velocity-signal.ts`) is the canonical compute path with the full Pass-4 evidence-quality fold (authorship + lifecycle + direction filters; 90d window split into recent 30d + baseline 60d; weighted trajectory math). Recipe writes carry `authored_by_recipe_id` distinct from the housekeeping `system.housekeeping.<topic>` author so both rows coexist on the unique `(topic, scope, target_id, authored_by_recipe_id)` index without conflict. Honest-zero `'steady'` default per the trajectory enum invariant when no housekeeping row exists yet.

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-1 silent producer wrapping the `engagement_silence_duration` topic per spec § A.9.1. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads any housekeeping-computed row via `enrichment-list` with the dynamic `{{context.event.payload.platform}}` scope and re-emits it through the recipe cycle (so the row carries an up-to-date `cursor_at` reflecting the deal touch even when the substrate-side housekeeping cycle hasn't fired yet). The substrate-side housekeeping engagement-aggregates code (D-139 P1a.1 — `backend/server/src/housekeeping/engagement-aggregates/engagement-silence-duration.ts`) remains the canonical compute path; producer recipe writes carry `authored_by_recipe_id` distinct from the housekeeping `system.housekeeping.<topic>` author so both rows coexist on the unique `(topic, scope, target_id, authored_by_recipe_id)` index without conflict. Honest-zero defaults per the value-schema invariant when no housekeeping row exists yet.

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-1 silent producer wrapping the `inbound_outbound_ratio` topic per spec § A.9.1. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads any housekeeping-computed row via `enrichment-list` with the dynamic `{{context.event.payload.platform}}` scope and re-emits it through the recipe cycle. The substrate-side housekeeping engagement-aggregates code (D-139 P3 — `backend/server/src/housekeeping/engagement-aggregates/inbound-outbound-ratio.ts`) is the canonical compute path with the full Pass-4 evidence-quality fold (inbound = direction='inbound' + authorship excluding automation/system_process; outbound = direction='outbound' + authorship IN user/crm_user; failed sends + no_answer count toward outbound effort but never as prospect engagement). Recipe writes carry `authored_by_recipe_id` distinct from the housekeeping `system.housekeeping.<topic>` author so both rows coexist on the unique `(topic, scope, target_id, authored_by_recipe_id)` index without conflict. Honest-zero `'mutual'` default per the bucket enum invariant when no housekeeping row exists yet.

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-1 silent producer wrapping the `last_meaningful_touch` topic per spec § A.9.1. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads any housekeeping-computed row via `enrichment-list` with the dynamic `{{context.event.payload.platform}}` scope and re-emits it through the recipe cycle. The substrate-side housekeeping engagement-aggregates code (D-139 P3 — `backend/server/src/housekeeping/engagement-aggregates/last-meaningful-touch.ts`) is the canonical compute path with the full Pass-4 evidence-quality fold (excludes tracking-pixel + workflow auto-logs via authorship NOT IN crm_automation/system_process; lifecycle filter point_in_time + completed only; direction-agnostic — any meaningful inbound or outbound counts). Recipe writes carry `authored_by_recipe_id` distinct from the housekeeping `system.housekeeping.<topic>` author so both rows coexist on the unique `(topic, scope, target_id, authored_by_recipe_id)` index without conflict. Honest-zero defaults per the value-schema invariant (last_touch_at = 0 paired with all-null vendor + entity + authorship + direction) when no housekeeping row exists yet — the value-schema validator enforces the pairing.

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-2 visible alert per spec § P6.A. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads the cross-vendor `engagement_velocity_signal` enrichment via `enrichment-list` with dynamic `{{context.event.payload.platform}}` scope. Dispatches a notification when velocity trajectory is `decaying` AND the deal/opportunity meta.amount snapshot exceeds the configurable amount floor (default 10,000). The amount is read from the substrate's platform-reference `meta` snapshot per D-128 — populated by the vendor reconciler at ingest time. Pairs with the Layer-1 `engagement-velocity-producer` re-emitter that ticks the topic on each deal touch — substrate-side housekeeping is the canonical compute path, and the alert reads whichever row is freshest (no authored_by filter).

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-2 visible alert per spec § P6.A. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads the cross-vendor `engagement_silence_duration` enrichment via `enrichment-list` with dynamic `{{context.event.payload.platform}}` scope. Dispatches a notification when silence (days since last meaningful inbound) exceeds the configurable days threshold (default 14) per spec. Pairs with the Layer-1 `engagement-silence-producer` re-emitter that ticks the topic on each deal touch — substrate-side housekeeping is the canonical compute path. Note: by virtue of the event-trigger model, this alert fires when a silent deal IS touched (revealing the silence), not periodically while truly silent — for true daily cadence over silent deals the housekeeping cycle handles topic refresh and a future watcher can fan out without code change here.

crmhubspotsalesforcedeal
by recued-core pinned v1
Show all 8 recipes

Alert when a rep emailed deal contacts outside the CRM — an outbound mail in the last 90 days with no matching CRM engagement record. Fires on HubSpot deal / Salesforce opportunity updates, and only when the deal-association confidence gate passes (single-deal contact, or primary-deal activity in the last 14 days).

crmhubspotsalesforcedeal
by recued-core pinned v1

Vendor-agnostic Layer-2 visible alert per spec § P6.A. Subscribes to bus events from BOTH connection.api.hubspot.deal AND connection.api.salesforce.opportunity updates; for each fired record reads the cross-vendor `meeting_to_followup_lag` enrichment via `enrichment-list` with dynamic `{{context.event.payload.platform}}` scope. Dispatches a notification when the meeting → next outbound rep touch lag falls into the `'long'` (≥ 72h / 3d) or `'slipping'` (> 7d) bucket per the value_schema bucket enum (`fast` ≤ 24h / `normal` ≤ 72h / `long` ≤ 7d / `slipping` > 7d / `none` no-followup-yet). The substrate-side housekeeping engagement-aggregates code (D-139 P4 — `backend/server/src/housekeeping/engagement-aggregates/meeting-to-followup-lag.ts`) is the canonical compute path with the full Pass-4 evidence-quality fold (completed-meeting source + outbound rep authorship + lifecycle filter for follow-up evidence states + dedupe_acceptance: 'exact_only').

crmhubspotsalesforcedeal
by recued-core pinned v1

Trust & control

What installing this whole pack would let it do. Recued grants these permissions at install — review them there before approving.

Where it runs

Device + server Runs on your device (browser) or your server.

Data it touches

Warehousedata.connectiondata.enrichment

About

Tags

pack:crm-engagement-augmentationcrmhubspotsalesforcedealengagementalertscross_vendordepartment:sales