Skip to content
Recued
Menu
← Back to packs

CRM Commitment Tracker (post-substrate canary)

by recued-core v1 recipe_pack

Post-substrate canary pack for the D-139 engagement evidence substrate per spec § P6.B. Privacy-tier separated from the deterministic `crm-engagement-augmentation` pack (P6.A): this pack reads mail bodies + calendar descriptions + memory entries + per-type CRM engagement bodies to extract commitments people made ("you said you'd send X by Friday") and tracks follow-through. Installs one Layer-1 silent producer (`commitment-tracker-producer`) wrapping the AI-surface `commitment_tracker` topic + one Layer-2 visible alert (`notify-commitment-due-soon`) that fires when a pending commitment's `due_at` falls within the next 24h. Authorship-filtered (extracts ONLY from `'user'` / `'crm_user'` / `'unknown'` rows — automation/system_process rows can't make commitments). Body-state acceptance is tighter than P5 AI-surface canaries: requires `'inline_body'` (full-context required for accurate extraction; truncated previews skipped). Dedupe acceptance `'exact_only'` so probable-twin emails extract as TWO separate commitments rather than collapsing into one. Manual trust default per D-132 — user must promote at MANUAL_RUN_THRESHOLD before the substrate fires. Free-pool first per spec — commitment text generation is bounded, low-token; routing through the user's free-tier pool keeps the pack cost-neutral by default. Pack install carries an implicit MCP body-content permission grant for `data.contact.engagements.body_content` per spec § A.9.5 — without it the AI would have nothing to extract from. The grant is pack-scoped: installing the deterministic `crm-engagement-augmentation` pack does NOT carry a body-content grant. Status: post-substrate canary — graduated from launch-flag gating; marketplace listing surfaces unconditionally. Independent install gate from the deterministic pack — installs without `crm-engagement-augmentation`, vice versa, no implicit pack dependency.

What this pack installs

Included recipes 2 pinned recipes

This pack installs the complete recipe workflow together.

Vendor-agnostic Layer-1 silent producer wrapping the post-substrate-canary `commitment_tracker` topic per spec § A.9.2c. Subscribes to bus events from BOTH connection.api.hubspot.contact AND connection.api.salesforce.contact updates; for each fired contact reads any housekeeping-computed row via `enrichment-list` filtered to the canonical `system.housekeeping.commitment_tracker` author, then re-emits it through the recipe cycle so the row carries an up-to-date `cursor_at` reflecting the contact touch. The substrate-side AI compute path (full Pass-4 evidence-quality fold — authorship_acceptance ['user', 'crm_user', 'unknown'] + lifecycle_state_acceptance ['point_in_time', 'completed'] + body_state_acceptance ['inline_body'] + dedupe_acceptance 'exact_only' + per-contact perspective fan-in via extractContactIdentity) lands in `backend/server/src/housekeeping/engagement-aggregates/commitment-tracker.ts` paralleling the P5 sentiment + NBA producers. Recipe writes carry `authored_by_recipe_id` distinct from `system.housekeeping.commitment_tracker` so both rows coexist on the unique `(topic, scope, target_id, authored_by_recipe_id)` index without conflict. Honest empty default per spec — when no housekeeping row exists the recipe writes an empty `commitments[]` rather than synthesizing speculative commitments at the recipe layer (no AI runs at the recipe level; substrate-side housekeeping is the canonical compute path). Trust default `manual` per D-132 — user must promote at MANUAL_RUN_THRESHOLD before the substrate producer fires; pool default `free_only` per spec § P6.B. Pack-level body-content MCP grant per spec § A.9.5 ships through the `crm-commitment-tracker` pack manifest's `mcp_body_visibility_grants: ['data.contact.engagements.body_content']`.

crmhubspotsalesforcecontact
by recued-core pinned v1

Vendor-agnostic Layer-2 visible alert per spec § P6.B. Subscribes to bus events from BOTH connection.api.hubspot.contact AND connection.api.salesforce.contact updates; for each fired contact reads the cross-vendor `commitment_tracker` enrichment via `enrichment-list` filtered to the canonical `system.housekeeping.commitment_tracker` author. Filters commitments where `status equal pending` AND the commitment's `due_at` falls in the next `due_window_hours` (default 24h) per spec § P6.B. Dispatches a notification via `notification-send` rendering the matched commitments' text alongside their D-120 link-graph evidence_links — UI surfaces "Extracted from: [Mail …] [Calendar …] [Attachment: agenda.pdf]" so the user can audit any commitment before acting. The substrate-side AI compute path (full Pass-4 evidence-quality fold on the producer side — authorship_acceptance ['user', 'crm_user', 'unknown'] + lifecycle_state_acceptance ['point_in_time', 'completed'] + body_state_acceptance ['inline_body'] + dedupe_acceptance 'exact_only') lands in `backend/server/src/housekeeping/engagement-aggregates/commitment-tracker.ts` paralleling the P5 sentiment + NBA producers. Trust default `manual` per D-132 — the user must promote at MANUAL_RUN_THRESHOLD before the substrate populates rows. The alert is gated behind the `crm-commitment-tracker` pack's `packs.crm_commitment_tracker.enabled` launch flag at marketplace listing time per spec § P6.B sequencing.

crmhubspotsalesforcecontact
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.contactdata.connectiondata.enrichment

About

Tags

pack:crm-commitment-trackercrmhubspotsalesforcecontactengagementcommitmentai_surfacealertscross_vendorpost_substrate_canarydepartment:sales