Skip to content
Recued
Menu
← Back to recipes

Propose Recued commitments from mail

by recued-core v1

Detection half of the core mail-to-commitment loop. It fires when a mail record is created, applies deterministic subject/sender allow and block filters before any body read or AI call, extracts one concrete commitment only for matched mail, writes a small awaiting_owner_approval proposal row in data.shared, and notifies the owner. It defaults to requiring at least one allow filter so large inboxes do not burn model tokens by default. It never creates the commitment itself: the owner-invoked create-approved-mail-commitment recipe performs the Recued commitment write.

Complete workflow

Core-only workflow pack for turning filtered inbound mail into Recued commitments. The producer is fail-closed by default until the owner configures subject or sender allow terms; matching mail is then read, extracted into one likely commitment, and persisted only as a small proposal ledger row in data.shared. The manual recipe creates the Recued commitment after the owner chooses to run it. This pack does not send email, depend on an external CRM or task vendor, create vendor work, or scan the full mailbox by default: it adds a deterministic filter and approval step between email and Recued-native commitments.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Propose Recued commitments from mail
This recipe Background automation

Detection half of the core mail-to-commitment loop. It fires when a mail record is created, applies deterministic subject/sender allow and block filters before any body read or AI call, extracts one concrete commitment only for matched mail, writes a small awaiting_owner_approval proposal row in data.shared, and notifies the owner. It defaults to requiring at least one allow filter so large inboxes do not burn model tokens by default. It never creates the commitment itself: the owner-invoked create-approved-mail-commitment recipe performs the Recued commitment write.

emailmailcommitmentwork-entity
by recued-core pinned v1

Owner-invoked create half of the core mail-to-commitment loop. It reads one awaiting_owner_approval proposal written by mail-commitment-proposal-producer, optionally targeted by proposal_thread_key, creates a Recued commitment from the proposal, links the commitment back to the source mail record, and marks the proposal created. This recipe is manual-only: running it is the owner's approval to turn the proposed mail promise into durable Recued accountability.

emailmailcommitmentwork-entity
by recued-core pinned v1
View pack details, dependencies, and permissions →
How it works 74 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Data fetch
message ?
Process (73 steps)
mail_slug default
Apply default
record_id default
Apply default
subject default
Apply default
from_email default
Apply default
raw_thread_id default
Apply default
has_raw_thread_id compare
Check if raw thread id has data
thread_id ternary
Apply ternary
has_mail_slug compare
Check if mail slug has data
has_record_id compare
Check if record id has data
thread_key_colon replace
Replace text in thread id
thread_key_slash replace
Replace text in thread key colon
thread_key_dot replace
Replace text in thread key slash
thread_key_at replace
Replace text in thread key dot
thread_key_space replace
Replace text in thread key at
thread_key_left_angle replace
Replace text in thread key space
thread_key_right_angle replace
Replace text in thread key left angle
thread_key_plus replace
Replace text in thread key right angle
thread_key_equals replace
Replace text in thread key plus
thread_key_question replace
Replace text in thread key equals
has_thread_key compare
Check if thread key question has data
has_subject_allow_terms compare
Check if setting subject contains any has data
has_from_allow_terms compare
Check if setting from contains any has data
allow_filter_configured any
Check if any of the conditions are true
allow_filter_requirement_pass ternary
Apply ternary
subject_allow_match contains_any
Apply contains_any
from_allow_match contains_any
Apply contains_any
subject_allow_pass ternary
Apply ternary
from_allow_pass ternary
Apply ternary
subject_exclude_match contains_any
Apply contains_any
from_exclude_match contains_any
Apply contains_any
metadata_filter_pass all
Check if all conditions are true
proposal_key default
Apply default
skip_existing_proposals_read any
Check if any of the conditions are true
existing_proposals ?
skip: step.skip_existing_proposals_read equal true
existing_proposals_family filter
Filter by condition
existing_thread_proposals filter
Filter by condition
has_existing_proposal compare
Check if existing thread proposals has data
skip_content_read any
Check if any of the conditions are true
skip_thread_read any
Check if any of the conditions are true
skip_single_body_read any
Check if any of the conditions are true
thread ?
skip: step.skip_thread_read equal true
thread_messages default
Apply default
thread_body_reads ?
thread_messages_with_body filter
Filter by condition
thread_body_segments pluck
Extract result.body from each item
thread_body join
Join items with " --- "
single_body_read ?
skip: step.skip_single_body_read equal true
single_body default
Apply default
body ternary
Apply ternary
body_present compare
Check if body has data
now_iso date_add
Add 0 minutes to
skip_extract any
Check if any of the conditions are true
protect pii-protect
Apply pii-protect
extract_commitment ?
skip: step.skip_extract equal true
restore_commitment pii-restore
Apply pii-restore
commitment_statement_raw default
Apply default
commitment_statement trim
Trim whitespace from commitment statement raw
raw_direction default
Apply default
direction_is_outbound compare
Check if raw direction equals outbound
direction_is_internal compare
Check if raw direction equals internal
internal_or_inbound ternary
Apply ternary
commitment_direction ternary
Apply ternary
counterparty_email_raw default
Apply default
counterparty_email trim
Trim whitespace from counterparty email raw
promised_for_at date_parse
Parse restore commitment restored promised for at iso as a date
extraction_confidence default
Apply default
missing_statement compare
Check if commitment statement is empty
below_confidence compare
Check if extraction confidence is less than setting confidence threshold
skip_propose any
Check if any of the conditions are true
write_proposal ?
skip: step.skip_propose equal true
skip_notify any
Check if any of the conditions are true
notify ?
skip: step.skip_notify equal true
card to_summary
Format results as a summary card
Settings 7 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

channels setting = in_app
from contains any setting =
from excludes any setting = noreply,no-reply
confidence threshold setting = 0.65
require allow filter setting = true
subject contains any setting =
subject excludes any setting =

Trust & control

What installing this recipe 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.

Permissions it requires

Send notifications
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.shareddata.mail

About

Tags

emailmailcommitmentwork-entityproposalapprovalreactivesilent-producerclosed-loopcore-onlystate:mail-commitment-proposal-producerpack:mail-commitment-proposalai_surface

Details

74 steps 7 configurable settings recipe_id: mail-commitment-proposal-producer