Recued
Menu
← Back to recipes

Mail attention summary

by recued-core v2 31 views

Use “Mail attention summary” in Recued. Answer 'is there anything to attend to in mail?' from limited local metadata before spending AI processing. It reads information without changing data in the connected service.

How it works 165 steps

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

Process (165 steps)
■ now_iso date_add
Add 0 seconds to
■ now_ms date_parse
Parse now iso as a date
■ exclusive_until math
Calculate: {{step.now_ms}} + 1
■ bounded_lookback_hours clamp
Clamp setting lookback hours between 1 and 720
■ bounded_history_days clamp
Clamp setting history days between 1 and 3650
■ bounded_scan_limit clamp
Clamp setting scan limit between 1 and 500
■ bounded_history_scan_limit clamp
Clamp setting history scan limit between 1 and 1000
■ effective_history_scan_limit math
Calculate: max({{step.bounded_scan_limit}}, {{step.bounded_history_scan_limit}})
■ bounded_relationship_sender_limit clamp
Clamp setting relationship sender limit between 1 and 50
■ bounded_evaluation_thread_limit clamp
Clamp setting evaluation thread limit between 1 and 50
■ bounded_row_limit clamp
Clamp setting row limit between 1 and 100
■ bounded_business_start_hour clamp
Clamp setting business start hour between 0 and 23
■ bounded_business_end_hour clamp
Clamp setting business end hour between 1 and 24
■ business_window_valid compare
Check if bounded business start hour is less than bounded business end hour
■ bounded_sender_burst_window_minutes clamp
Clamp setting sender burst window minutes between 1 and 10080
■ bounded_sender_burst_count_threshold clamp
Clamp setting sender burst count threshold between 2 and 500
■ bounded_thread_burst_window_hours clamp
Clamp setting thread burst window hours between 1 and 8760
■ bounded_thread_burst_count_threshold clamp
Clamp setting thread burst count threshold between 2 and 500
■ bounded_long_thread_count_threshold clamp
Clamp setting long thread count threshold between 2 and 500
■ bounded_reply_silence_hours clamp
Clamp setting reply silence hours between 1 and 8760
■ bounded_large_body_bytes_threshold clamp
Clamp setting large body bytes threshold between 1024 and 1000000000
■ bounded_many_recipients_count_threshold clamp
Clamp setting many recipients count threshold between 2 and 1000
■ lookback_since math
Calculate: {{step.now_ms}} - {{step.bounded_lookback_hours}} * 3600000
■ history_since_raw math
Calculate: {{step.now_ms}} - {{step.bounded_history_days}} * 86400000
■ history_since math
Calculate: min({{step.lookback_since}}, {{step.history_since_raw}})
■ sender_burst_since math
Calculate: {{step.now_ms}} - {{step.bounded_sender_burst_window_minutes}} * 60000
■ thread_burst_since math
Calculate: {{step.now_ms}} - {{step.bounded_thread_burst_window_hours}} * 3600000
■ reply_silence_ms math
Calculate: {{step.bounded_reply_silence_hours}} * 3600000
■ mailbox_set compare
Check if setting mail slug has data
■ mailbox_note ternary
Apply ternary
◆ recent_raw core.mail.email.list
List mail email
skip: step.mailbox_set equal false
■ recent_messages map
Extract from each item
■ recent_record_count count
Count items in recent messages
■ recent_limit_reached compare
Check if recent record count is at least bounded scan limit
■ recent_inbound filter
Filter by condition
■ new_mail_count count
Count items in recent inbound
■ new_inbound_threads group_by
Group by thread_key
■ new_thread_count count
Count items in new inbound threads
■ new_thread_keys pluck
Extract thread_key from each item
◆ history_raw core.mail.email.list
List mail email
skip: step.mailbox_set equal false
■ history_messages map
Extract from each item
■ history_record_count count
Count items in history messages
■ history_limit_reached compare
Check if history record count is at least effective history scan limit
■ history_scan_complete not
Apply not
■ history_latest_rows unique
Remove duplicates from
■ current_inbound_latest filter
Filter by condition
■ waiting_base filter
Filter by condition
■ waiting_record_ids pluck
Extract record_id from each item
■ waiting_messages filter
Filter by condition
■ waiting_thread_count count
Count items in waiting messages
■ evaluation_rows slice
Take a subset of
■ evaluated_thread_count count
Count items in evaluation rows
■ evaluation_record_ids pluck
Extract record_id from each item
■ evaluation_raw_records filter
Filter by condition
■ evaluation_messages map
Extract from each item
■ unevaluated_thread_count math
Calculate: max(0, {{step.waiting_thread_count}} - {{step.evaluated_thread_count}})
■ evaluation_limit_reached compare
Check if unevaluated thread count is greater than 0
■ already_answered_count math
Calculate: max(0, {{step.new_thread_count}} - {{step.waiting_thread_count}})
■ history_thread_rollup group_by
Group by thread_key
■ history_outbound filter
Filter by condition
■ outbound_thread_rollup group_by
Group by thread_key
■ history_inbound filter
Filter by condition
■ sender_history_rollup group_by
Group by from
■ sender_burst_messages filter
Filter by condition
■ sender_burst_rollup group_by
Group by from
■ thread_burst_messages filter
Filter by condition
■ thread_burst_rollup group_by
Group by thread_key
■ waiting_with_new_count enrich_by
Apply enrich_by
■ waiting_with_history enrich_by
Apply enrich_by
■ waiting_with_outbound enrich_by
Apply enrich_by
■ waiting_with_sender_history enrich_by
Apply enrich_by
■ waiting_with_sender_burst enrich_by
Apply enrich_by
■ waiting_with_thread_burst enrich_by
Apply enrich_by
■ waiting_new_count_normalized map
Extract from each item
■ waiting_history_count_normalized map
Extract from each item
■ waiting_sender_history_normalized map
Extract from each item
■ waiting_sender_burst_normalized map
Extract from each item
■ waiting_thread_burst_normalized map
Extract from each item
■ waiting_with_to_count map
Extract to from each item
■ waiting_with_cc_count map
Extract cc from each item
■ waiting_with_recipient_count map
Extract from each item
■ waiting_with_reply_received map
Extract last_outbound_at from each item
■ waiting_with_reply_lag map
Extract from each item
■ waiting_with_reply_lag_boundary map
Extract reply_lag_ms from each item
■ waiting_with_reply_after_silence map
Extract from each item
■ waiting_with_sender_burst_flag map
Extract sender_burst_count from each item
■ waiting_with_thread_burst_flag map
Extract thread_burst_count from each item
■ waiting_with_long_thread map
Extract history_message_count from each item
■ waiting_with_first_seen_raw map
Extract sender_first_at from each item
■ waiting_with_first_seen map
Extract from each item
■ waiting_with_unread map
Extract is_read from each item
■ waiting_with_attachment map
Extract has_attachments from each item
■ waiting_with_large_body map
Extract size_bytes from each item
■ waiting_with_many_recipients map
Extract recipient_count from each item
■ business_window_checks time_within_window
Apply time_within_window
■ business_window_rows map
Extract from each item
■ waiting_with_business_window enrich_by
Apply enrich_by
■ waiting_with_outside_window map
Extract within_business_hours from each item
■ waiting_with_after_hours map
Extract from each item
■ senders_with_address filter
Filter by condition
■ unique_senders unique
Remove duplicates from
■ unique_sender_count count
Count items in unique senders
■ relationship_senders slice
Take a subset of
■ relationship_sender_query_count count
Count items in relationship senders
◆ business_context_checks core.contact.business-context
Business context contact
■ business_context_rows map
Extract from each item
■ business_context_success_rows filter
Filter by condition
■ business_context_success_count count
Count items in business context success rows
■ business_context_coverage_events_nested map
Extract from each item
■ business_context_coverage_events flatten
Flatten nested lists in
■ business_context_coverage_event_count count
Count items in business context coverage events
■ business_context_coverage_gap_rows filter
Filter by condition
■ business_context_coverage_gap_count count
Count items in business context coverage gap rows
■ business_context_failed_count math
Calculate: max(0, {{step.relationship_sender_query_count}} - {{step.business_context_success_count}})
■ waiting_with_context enrich_by
Apply enrich_by
■ waiting_with_relationship_level map
Extract from each item
■ waiting_with_relationship_active map
Extract relationship_level from each item
■ waiting_with_relationship_historical map
Extract relationship_level from each item
■ waiting_with_relationship_known map
Extract relationship_level from each item
■ strong_attention_checks any
Check if any of the conditions are true
■ strong_attention_rows map
Extract from each item
■ waiting_with_strong_attention enrich_by
Apply enrich_by
■ review_checks any
Check if any of the conditions are true
■ review_rows map
Extract from each item
■ waiting_with_review enrich_by
Apply enrich_by
■ classified_rows map
Extract from each item
■ active_rows filter
Filter by condition
■ active_count count
Count items in active rows
■ review_state_rows filter
Filter by condition
■ review_count count
Count items in review state rows
■ quiet_rows filter
Filter by condition
■ quiet_count count
Count items in quiet rows
■ signal_events_nested map
Extract from each item
■ signal_events flatten
Flatten nested lists in
■ active_signal_events filter
Filter by condition
■ signal_counts group_by
Group by signal
■ signal_catalog default
Apply default
■ signal_catalog_with_counts enrich_by
Apply enrich_by
■ signal_rows map
Extract from each item
■ signal_table to_table
Format results as a data table
■ surfaced_rows filter
Filter by condition
■ surfaced_with_priority map
Extract from each item
■ surfaced_with_reason map
Extract from each item
■ surfaced_with_subject_display map
Extract subject from each item
■ surfaced_with_from_display map
Extract from from each item
■ surfaced_with_thread_display map
Extract thread_key from each item
■ surfaced_dated map
Extract received_at from each item
■ surfaced_sorted sort
Sort by
■ top_rows slice
Take a subset of
■ attention_display_rows map
Extract from each item
■ attention_table to_table
Format results as a data table
■ evidence_rows map
Extract from each item
■ business_context_shortfall compare
Check if business context success count is less than unique sender count
■ missing_sender_rows filter
Filter by condition
■ missing_sender_count count
Count items in missing sender rows
■ missing_sender_present compare
Check if missing sender count is greater than 0
■ context_incomplete any
Check if any of the conditions are true
■ coverage_partial any
Check if any of the conditions are true
■ coverage_state ternary
Apply ternary
■ window_start_text date_format
Format as a date
■ window_end_text date_format
Format as a date
■ history_window_start_text date_format
Format as a date
■ coverage_rows default
Apply default
■ coverage_table to_table
Format results as a data table
■ card to_summary
Format results as a summary card
▼
Output
summary card
table attention_table
table signal_table
table coverage_table
json evidence_rows
Settings 18 configurable

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

mail slug setting = [object Object]
row limit setting = 20
scan limit setting = 500
history days setting = 90
lookback hours setting = 24
business end hour setting = 18
history scan limit setting = 1000
business start hour setting = 8
reply silence hours setting = 48
evaluation thread limit setting = 50
relationship sender limit setting = 50
thread burst window hours setting = 24
large body bytes threshold setting = 1048576
long thread count threshold setting = 12
sender burst window minutes setting = 60
sender burst count threshold setting = 3
thread burst count threshold setting = 4
many recipients count threshold setting = 5

Uses (2 operations)

Mail List mail email core.mail.email.list
Contacts Business context contact core.contact.business-context

Trust & control

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

What it's allowed to do

Read Mail core.mail.email.list read-only
Read Contacts core.contact.business-context read-only

Data it touches

SurfacesMailContacts

About

Tags

mailemailattentionsummarydigestdeterministicmetadatazero-airead-onlymcpoffice

Details

165 steps 18 configurable settings recipe_id: mail-attention-summary