Recued
Menu
← Back to recipes

Turn a minutes file into project work

by recued-core v2 30 views

Use “Turn a minutes file into project work” in Recued. Upload the minutes you wrote, then review supported progress and task changes in the projects you share, plus an index of what you promised. The next briefing starts from these minutes.

Complete workflow

Meeting Secretary 4 pinned recipes

Use Meeting Secretary in Recued. One person keeps the meeting loop: upload the minutes you wrote and AI turns them into tasks in the federated projects you share, mail the minutes out, then brief the next meeting from the last minutes, current progress and what is new.

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

Use “Turn a minutes file into project work” in Recued. Upload the minutes you wrote, then review supported progress and task changes in the projects you share, plus an index of what you promised. The next briefing starts from these minutes.

pack:meeting-secretarymeeting-outcomesproject-managementfederated-project
by recued-core pinned v2

Use “Mail the minutes and who does what” in Recued. Send the last minutes you recorded for a project to the people who were there, each with the tasks the meeting assigned. From your own mail account, one message per person, never twice.

pack:meeting-secretarymeeting-secretarymailfederated-project
by recued-core pinned v1

Use “Prepare the next meeting from its minutes” in Recued. Starts from the last minutes you recorded and current project progress, adds what is new since, and prepares the project portion: what is still open, decisions for the room, and new topics.

pack:meeting-secretarymeeting-prepproject-contextproject-management
by recued-core pinned v2

Use “Mail the briefing before the meeting” in Recued. Send the briefing prepared for a project’s next meeting to the people who were at the last one. From your own mail account, one message per person, never twice.

pack:meeting-secretarymeeting-secretarymailfederated-project
by recued-core pinned v1
View pack details, dependencies, and permissions →

Update work once

This recipe starts after a meeting. It focuses on project follow-through instead of repeating scheduling, reminders, reception, or CRM logging. It reads the minutes file you wrote (plain text or Markdown); you provide the attendee emails — save them in this recipe’s settings and they are used every time. Nothing else is involved: no recording, no calendar, and no tool to install. For a Word or PDF file, use Meeting Outcomes - Uploaded Notes instead.

It proposes supported progress updates and new tasks in the projects you share, records what you yourself promised, and reports anything that needs a decision. When approved, those changes keep the work current so the next meeting can prepare from project progress instead of asking attendees to report it again.

Only federated projects

Every project this recipe writes to has to be a federated project. A task assigned to someone in an ordinary local project can never reach them: people receive work by reading a federated project, and a local one gives them nothing to read. Recued used to write those tasks anyway, into your own copy, and call the work assigned.

This does not mean anyone else has to be on Recued. A federated project is simply the container that can become theirs later. Seat a colleague in it by email today, and on the day they run their own Recued you fill in their contract on the participant you already have — every task assigned to them since is theirs immediately, with nothing re-modelled. Starting in a private list means redoing all of it.

So a meeting about a local project produces a review list and no changes. Federate the project first, or act on the review by hand. Selecting a mix is fine — the local ones are simply left out.

Who gets what

Work that belongs to someone else becomes a task in a federated project, assigned to them. That needs exactly one active participant in the project whose email matches the attendee — add them under Add participant, where an email alone is enough. Nobody matching, or more than one, keeps the suggestion in the review list rather than assigning by guesswork.

Work that is yours is recorded as a commitment rather than a task: your own index of what you owe and by when. You can turn commitments off. Promises made to you are not recorded twice: they are already the other person's task, where their progress on it is the better signal.

An existing task can be updated only when the recipe read that task during the same run.

Nothing is created that cannot be shared

A meeting that clearly calls for a new project is reported, never created. A new project would be local, and a local project is exactly what this recipe refuses to write into. Federating one is a deliberate act, not a side effect of a meeting.

In the meeting's language

Task titles and descriptions are written in the language of the meeting's own record, or in the one you name under Language for the tasks — the people they are assigned to read them there.

Review before writing

Preview is the default and changes nothing. Apply writes the supported task changes as soon as you run it, so preview first to see them. Anything you promised is held for your approval before it is recorded.

One meeting, one set of changes

Once a meeting has produced work, Recued records that. Running the same meeting again shows you what it would propose but writes nothing, so a repeated run cannot leave you with two copies of the same tasks. Turn on Allow reconciling a meeting again when you mean to — for instance after correcting the minutes. A run that produced no work records nothing, so it never blocks a later attempt.

What counts as “the same meeting” is the Meeting reference when you set one, and otherwise the title together with today’s date — so a recurring name like “Weekly standup” is a new meeting each day rather than the same one forever. Two different meetings written up under one name on the same day need a reference to tell them apart.

The next meeting

Applying also keeps a record for each project: which minutes file this was, who was there, and what was written. Prepare the next meeting from its minutes starts from it — you add only what is new — and the two mail-out recipes send the minutes and the briefing to the people who were there. A preview keeps nothing.

How it works 167 steps

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

Process (167 steps)
■ minutes_file_id trim
Trim whitespace from setting minutes file
⚠ minutes_file_guard guard
Stop if minutes file id is empty
◆ minutes_file_read core.storage.data-file-read
Data file read storage
■ minutes_filename default
Apply default
■ minutes_mime lowercase
Convert minutes file read mime type to lowercase
■ minutes_filename_lower lowercase
Convert minutes filename to lowercase
■ minutes_mime_is_text starts_with
Check if minutes mime starts with text/
■ minutes_named_md ends_with
Check if minutes filename lower ends with .md
■ minutes_named_markdown ends_with
Check if minutes filename lower ends with .markdown
■ minutes_named_txt ends_with
Check if minutes filename lower ends with .txt
■ minutes_is_text any
Check if any of the conditions are true
⚠ minutes_file_not_text_guard guard
Stop if minutes is text equals
■ meeting_material_raw decode_base64
Apply decode_base64
■ meeting_material trim
Trim whitespace from meeting material raw
■ meeting_material_length string_length
Apply string_length
■ meeting_material_too_long compare
Check if meeting material length is greater than 200000
⚠ meeting_material_size_guard guard
Stop if meeting material too long equals
■ has_meeting_material compare
Check if meeting material has data
■ minutes_stem_markdown replace
Replace text in minutes filename
■ minutes_stem_md replace
Replace text in minutes stem markdown
■ minutes_stem replace
Replace text in minutes stem md
■ meeting_title default
Apply default
■ notes_now_iso date_add
Add 0 seconds to
■ notes_today date_format
Format as a date
■ meeting_key_fallback template
Generate text from a template
■ meeting_key default
Apply default
■ has_supplementary_notes default
Apply default
■ confidence_threshold clamp
Clamp setting confidence threshold between 0 and 1
■ action_cap clamp
Clamp setting max actions between 1 and 50
■ attendee_emails_joined join
Join items with " "
■ attendee_emails_lowercase lowercase
Convert attendee emails joined to lowercase
■ attendee_emails_despaced replace
Replace text in attendee emails lowercase
■ attendee_emails_split split
Split attendee emails despaced into parts
■ attendee_emails unique
Remove duplicates from
■ attendee_names default
Apply default
■ attendee_phone_numbers default
Apply default
■ resolved_project_refs default
Apply default
■ project_selection_source default
Apply default
■ requested_project_refs_raw slice
Take a subset of
■ requested_project_refs unique
Remove duplicates from
⚠ project_guard guard
Stop if requested project refs is empty
◆ project_reads core.work-entity.get
Get work entity
■ found_project_reads filter
Filter by condition
■ candidate_projects map
Extract from each item
■ requested_found_refs pluck
Extract id from each item
⚠ found_project_guard guard
Stop if requested found refs is empty
◆ federation_reads recued-core.federated-projects.federation.search
Search federation on federated projects
■ federation_groups map
Extract from each item
■ federations flatten
Flatten nested lists in
■ federated_project_refs pluck
Extract project_ref from each item
■ project_refs unique
Remove duplicates from
⚠ federated_project_guard guard
Stop if project refs is empty
■ federated_projects filter
Filter by condition
◆ task_reads core.work-entity.list
List work entity
◆ participant_reads recued-core.federated-projects.participant.search
Search participant on federated projects
■ task_groups map
Extract from each item
■ candidate_tasks flatten
Flatten nested lists in
■ candidate_task_ids pluck
Extract id from each item
■ participant_groups map
Extract from each item
■ participants_raw flatten
Flatten nested lists in
■ participants_index_raw map
Extract from each item
■ participants_index_trimmed map
Extract owner_email from each item
■ participants_index map
Extract owner_email_trimmed from each item
■ eligible_participants filter
Filter by condition
■ eligible_assignment_rows map
Extract from each item
■ assignment_groups group_by
Group by pair_key
■ exact_assignment_groups filter
Filter by condition
■ eligible_assignment_keys pluck
Extract pair_key from each item
■ exact_assignment_rows filter
Filter by condition
■ meeting_material_pii_protect pii-protect
Apply pii-protect
✦ extract_meeting_evidence core.ai.extract
AI extracts structured fields from data
skip: step.has_meeting_material equal false
■ extract_meeting_evidence_pii_restore pii-restore
Apply pii-restore
■ primary_evidence default
Apply default
■ supplementary_evidence default
Apply default
■ evidence_accounts_raw default
Apply default
■ evidence_accounts filter
Filter by condition
■ evidence_account_count count
Count items in evidence accounts
■ evidence_source_names pluck
Extract source from each item
■ evidence_source join
Join items with " + "
⚠ evidence_guard guard
Stop if evidence account count equals
■ meeting_evidence default
Apply default
■ task_language_text trim
Trim whitespace from setting task language
■ task_language_given compare
Check if task language text has data
■ write_in ternary
Apply ternary
■ reconcile_pii_protect pii-protect
Apply pii-protect
✦ reconcile core.ai.extract
AI extracts structured fields from data
■ reconcile_pii_restore pii-restore
Apply pii-restore
■ proposal_defaults defaults
Apply defaults
■ task_updates_valid filter
Filter by condition
■ task_updates_due map
Extract due_at_iso from each item
■ task_updates slice
Take a subset of
■ federated_task_creates_valid filter
Filter by condition
■ federated_task_creates_grounded enrich_by
Apply enrich_by
■ task_creates_grounded default
Apply default
■ task_creates_due map
Extract due_at_iso from each item
■ task_creates_priority map
Extract priority from each item
■ task_creates slice
Take a subset of
■ project_signals_valid filter
Filter by condition
■ project_signals slice
Take a subset of
■ record_commitments compare
Check if setting record commitments equals true
■ commitments_owned filter
Filter by condition
■ commitments_directed map
Extract owner_role from each item
■ commitments_valid filter
Filter by condition
■ commitments_due map
Extract promised_for_at_iso from each item
■ project_link_rows map
Extract from each item
■ commitments_project_linked enrich_by
Apply enrich_by
■ commitments_counterparty_lower map
Extract counterparty_email from each item
■ commitments_linked default
Apply default
■ commitments slice
Take a subset of
■ preview_mode compare
Check if setting write mode equals preview
■ reconciled_mark_id sha256
Apply sha256
◆ reconciled_read core.storage.shared.read
Read storage shared
■ already_reconciled compare
Check if reconciled read found equals true
■ reapply_allowed compare
Check if setting allow reapply equals true
■ duplicate_blocked all
Check if all conditions are true
■ writes_suppressed any
Check if any of the conditions are true
■ commitment_write_skipped any
Check if any of the conditions are true
◆ apply_task_updates core.work-entity.task.update
Update work entity task
skip: step.writes_suppressed equal true
■ task_creates_key_source map
Extract from each item
■ task_creates_key_hash map
Extract key_source from each item
■ task_creates_keyed map
Extract from each item
■ commitments_key_source map
Extract from each item
■ commitments_key_hash map
Extract key_source from each item
■ commitments_keyed map
Extract from each item
◆ apply_task_creates core.work-entity.task.create
Create work entity task
skip: step.writes_suppressed equal true
◆ apply_commitments core.work-entity.commitment.propose
Propose work entity commitment
skip: step.commitment_write_skipped equal true
■ task_update_count count
Count items in task updates
■ task_create_count count
Count items in task creates
■ project_signal_count count
Count items in project signals
■ commitment_count count
Count items in commitments
■ review_count count
Count items in needs review
■ task_update_results default
Apply default
■ task_create_results default
Apply default
■ commitment_results default
Apply default
■ task_updates_written filter
Filter by condition
■ task_creates_written filter
Filter by condition
■ commitments_written filter
Filter by condition
■ task_update_written_count count
Count items in task updates written
■ task_create_written_count count
Count items in task creates written
■ commitment_written_count count
Count items in commitments written
■ task_update_refusals filter
Filter by condition
■ task_create_refusals filter
Filter by condition
■ commitment_refusals filter
Filter by condition
■ task_update_refusal_rows map
Extract from each item
■ task_create_refusal_rows map
Extract from each item
■ commitment_refusal_rows map
Extract from each item
■ write_refusals flatten
Flatten nested lists in
■ write_refusal_count count
Count items in write refusals
■ applied_count math
Calculate: {{step.task_update_written_count}} + {{step.task_create_written_count}} + {{step.commitment_written_count}}
■ should_mark_reconciled all
Check if all conditions are true
◆ reconciled_mark_write core.storage.shared.write
Write storage shared
skip: step.should_mark_reconciled equal false
■ secretary_task_ids_created pluck
Extract result.task.id from each item
■ secretary_task_ids_updated pluck
Extract result.task.id from each item
■ secretary_task_ids flatten
Flatten nested lists in
■ secretary_commitment_ids pluck
Extract result.commitment.id from each item
■ secretary_held_at date_parse
Parse notes now iso as a date
■ secretary_rows_raw map
Extract from each item
■ secretary_rows_keyed map
Extract from each item
■ secretary_rows map
Extract key_source from each item
◆ secretary_record_write core.storage.shared.write
Write storage shared
skip: step.writes_suppressed equal true
■ secretary_record_results default
Apply default
■ secretary_records_kept filter
Filter by condition
■ secretary_record_count count
Count items in secretary records kept
■ proposal_table to_table
Format results as a data table
■ review_table to_table
Format results as a data table
■ refusal_table to_table
Format results as a data table
■ card to_summary
Format results as a summary card
▼
Output
summary card
table proposal_table
table review_table
table refusal_table
json task_updates
json project_signals
json commitments
Settings 12 configurable

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

write mode setting = preview
max actions setting = 24
meeting key setting =
minutes file setting = [object Object]
project refs setting =
allow reapply setting = false
meeting title setting =
task language setting =
attendee emails setting =
record commitments setting = true
confidence threshold setting = 0.75
reconcile state prefix setting = recipe.meeting-outcomes

Uses (11 operations)

Files Data file read storage core.storage.data-file-read
Tasks & notes Get work entity core.work-entity.get
Pack operation Search federation on federated projects recued-core.federated-projects.federation.search
Tasks & notes List work entity core.work-entity.list
Pack operation Search participant on federated projects recued-core.federated-projects.participant.search
AI models AI extracts structured fields from data core.ai.extract
Shared store Read storage shared core.storage.shared.read
Tasks & notes Update work entity task core.work-entity.task.update
Tasks & notes Create work entity task core.work-entity.task.create
Tasks & notes Propose work entity commitment core.work-entity.commitment.propose
Shared store Write storage shared core.storage.shared.write

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 Files core.storage.data-file-read read-only
Read Tasks & notes core.work-entity.get read-only
Read Tasks & notes core.work-entity.list read-only
Read AI models core.ai.extract read-only
Read Shared store core.storage.shared.read read-only
Write Tasks & notes core.work-entity.task.update external change
Write Tasks & notes core.work-entity.task.create external change
Write Tasks & notes core.work-entity.commitment.propose external change
Write Shared store core.storage.shared.write external change

2 more aren't listed here. You'll see them at install.

Data it touches

SurfacesFilesTasks & notesAI modelsShared store
Warehousedata.shared

About

Tags

pack:meeting-secretarymeeting-outcomesproject-managementfederated-projecttaskcommitmentminutes-fileai_surface

Details

167 steps 12 configurable settings recipe_id: reconcile-meeting-outcomes-minutes