Skip to content
Recued
Menu
← Back to recipes

Propose Recued tasks from mail

by recued-core v1

Detection half of the core mail-to-task 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 owner task 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 task itself: the owner-invoked create-approved-mail-task recipe performs the Recued task write.

Complete workflow

Mail Task Proposal Loop 2 pinned recipes

Core-only workflow pack for turning filtered inbound mail into Recued tasks. 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 owner task, and persisted only as a small proposal ledger row in data.shared. The manual recipe creates the Recued task after the owner chooses to run it. This pack does not send email, depend on an external work tracker, create vendor tasks, or replace the inbox: it adds a deterministic filter and approval step between email and Recued-native work.

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 tasks from mail
This recipe Background automation

Detection half of the core mail-to-task 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 owner task 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 task itself: the owner-invoked create-approved-mail-task recipe performs the Recued task write.

emailmailtaskwork-entity
by recued-core pinned v1

Owner-invoked create half of the core mail-to-task loop. It reads one awaiting_owner_approval proposal written by mail-task-proposal-producer, optionally targeted by proposal_thread_key, creates a Recued task from the proposal, links the task 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 action into durable Recued work.

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

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

Data fetch
message ?
Process (72 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_task ?
skip: step.skip_extract equal true
restore_task pii-restore
Apply pii-restore
task_title_raw default
Apply default
task_title trim
Trim whitespace from task title raw
task_notes default
Apply default
due_at date_parse
Parse restore task restored due at iso as a date
raw_priority default
Apply default
priority_is_low compare
Check if raw priority equals low
priority_is_high compare
Check if raw priority equals high
priority_high_or_medium ternary
Apply ternary
task_priority ternary
Apply ternary
extraction_confidence default
Apply default
missing_title compare
Check if task title 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

emailmailtaskwork-entityproposalapprovalreactivesilent-producerclosed-loopcore-onlystate:mail-task-proposal-producerpack:mail-task-proposalai_surface

Details

73 steps 7 configurable settings recipe_id: mail-task-proposal-producer