Recued
Menu
← Back to recipes

Record meeting minutes into project work

by recued-core v1 41 views

Use “Record meeting minutes into project work” in Recued. Write the decisions, the action items and what is still open. Each action becomes a task for the participant it names, what you took on becomes your promise, and the next briefing starts from it. No AI or calendar involved.

Complete workflow

Meeting Minutes 2 pinned recipes

Use Meeting Minutes in Recued. Write the minutes yourself, turn each action item into a task for the person it names in a federated project, and brief the next meeting from what happened since, with no AI, calendar, or recording involved.

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

Use “Record meeting minutes into project work” in Recued. Write the decisions, the action items and what is still open. Each action becomes a task for the participant it names, what you took on becomes your promise, and the next briefing starts from it. No AI or calendar involved.

pack:meeting-minutesmeeting-minutesproject-managementfederated-project
by recued-core pinned v1

Use “Brief the next meeting from its minutes” in Recued. Start from the last minutes and the project as it stands: what was carried over, where each action is now, what is overdue, what moved, and who holds what. No AI or calendar involved, and nothing is saved.

pack:meeting-minutesmeeting-minutesproject-managementfederated-project
by recued-core pinned v1
View pack details, dependencies, and permissions →

Minutes that become the work

Write what the meeting decided, who took on what, and what is still open. Recued saves it as a note on the project, turns every action item into a task for the person it names, records what you took on yourself, and keeps what the next briefing needs.

Nothing outside Recued is involved: no calendar, no recording, no AI model, nothing to connect. What you write is read exactly as written, so the same minutes always produce the same result.

How to write the action items

One per line, in three parts separated by a vertical bar:

Send the revised quote | alice@example.com | 2026-10-03

  • What needs doing becomes the task title.
  • Who is the email of a participant in the project, or me for something you took on.
  • Due is a date like 2026-10-03, meaning by the end of that day. Leave it off if there is none.

Decisions and the items for next time are one per line as well. Bullets are fine; they are removed.

Who gets what

Work for someone else becomes a task in the project, assigned to them. That needs exactly one active participant in the project with that email. Add them under Add participant, where an email alone is enough and they do not need to be on Recued. When they run their own Recued, the tasks assigned to them are already theirs.

Work that is yours (me) is recorded as a promise in your own list, linked to the project, so it shows up in the next briefing and in Open commitments. Turn that off to keep it in the minutes only.

A line that cannot be written is never guessed at: an email that matches nobody, a date that is not understood, a missing owner. It stays in the minutes and is listed under Needs your attention with the reason.

Only federated projects

The project has to be a federated project, because a task assigned to someone in an ordinary local project can never reach them. A project run with Federated Projects is one, even when you are the only person in it.

Preview, then apply

Preview shows exactly what would be written and changes nothing. Apply saves the minutes as a note on the project and writes the tasks and promises, asking for approval first.

Correcting minutes

Minutes are filed by project, meeting name and date. Applying the same minutes again changes nothing. Applying a corrected version updates the same note and adds only what is new: a task already created is not created twice, and a promise already recorded is not recorded again. A task whose line you changed or removed is left as it is and listed, so you can close it on the board if it was dropped.

How it works 192 steps

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

Process (192 steps)
■ project_ref_text trim
Trim whitespace from setting project ref
⚠ stop_choose_a_project guard
Stop if project ref text is empty
■ meeting_name trim
Trim whitespace from setting meeting title
⚠ stop_name_the_meeting guard
Stop if meeting name is empty
■ now_iso date_add
Add 0 seconds to
■ now_ms date_parse
Parse now iso as a date
■ meeting_at_input_text trim
Trim whitespace from setting meeting at
■ meeting_at_input_supplied compare
Check if meeting at input text has data
■ meeting_at_input_parsed date_parse
Parse meeting at input text as a date
■ meeting_at_input_unreadable all
Check if all conditions are true
⚠ stop_meeting_time_not_understood guard
Stop if meeting at input unreadable equals
■ meeting_instant default
Apply default
■ meeting_day date_format
Format as a date
■ meeting_when_text date_format
Format as a date
■ attendee_joined join
Join items with " "
■ attendee_decomma replace
Replace text in attendee joined
■ attendee_desemicolon replace
Replace text in attendee decomma
■ attendee_despaced replace
Replace text in attendee desemicolon
■ attendee_lower lowercase
Convert attendee despaced to lowercase
■ attendee_rows_raw csv_parse
Apply csv_parse
■ attendee_rows filter
Filter by condition
■ attendee_rows_unique unique
Remove duplicates from
■ attendees pluck
Extract email from each item
■ attendee_count count
Count items in attendees
■ decisions_text template
Generate text from a template
■ decisions_text_undashed replace
Replace text in decisions text
■ decisions_text_unstarred replace
Replace text in decisions text undashed
■ decisions_text_plain replace
Replace text in decisions text unstarred
■ decisions_rows_raw csv_parse
Apply csv_parse
■ decisions_rows_trimmed map
Extract line from each item
■ decisions_rows filter
Filter by condition
■ decision_list map
Extract from each item
■ decisions_count count
Count items in decision list
■ carry_forward_text template
Generate text from a template
■ carry_forward_text_undashed replace
Replace text in carry forward text
■ carry_forward_text_unstarred replace
Replace text in carry forward text undashed
■ carry_forward_text_plain replace
Replace text in carry forward text unstarred
■ carry_forward_rows_raw csv_parse
Apply csv_parse
■ carry_forward_rows_trimmed map
Extract line from each item
■ carry_forward_rows filter
Filter by condition
■ carry_forward_list map
Extract from each item
■ carry_forward_count count
Count items in carry forward list
■ notes_text trim
Trim whitespace from setting notes
■ has_notes compare
Check if notes text has data
■ action_text template
Generate text from a template
■ action_text_undashed replace
Replace text in action text
■ action_text_unstarred replace
Replace text in action text undashed
■ action_text_plain replace
Replace text in action text unstarred
■ action_rows_raw csv_parse
Apply csv_parse
■ action_rows_what map
Extract what from each item
■ action_rows_who_trimmed map
Extract who from each item
■ action_rows_who_lower map
Extract who from each item
■ action_rows_who map
Extract who from each item
■ action_rows_due map
Extract due from each item
■ action_rows_extra map
Extract extra from each item
■ action_rows filter
Filter by condition
■ action_count count
Count items in action rows
■ minutes_item_count math
Calculate: {{step.decisions_count}} + {{step.action_count}} + {{step.carry_forward_count}}
■ minutes_are_empty all
Check if all conditions are true
⚠ stop_the_minutes_are_empty guard
Stop if minutes are empty equals
⚠ stop_more_than_50_action_items guard
Stop if action count is greater than
◆ project_read core.work-entity.get
Get work entity
⚠ stop_project_not_found guard
Stop if project read found does not equal
■ project_id default
Apply default
■ project_title default
Apply default
■ project_key sha256
Apply sha256
◆ federation_read recued-core.federated-projects.federation.search
Search federation on federated projects
■ federation_rows default
Apply default
■ project_is_federated compare
Check if federation rows has data
⚠ stop_project_is_not_federated guard
Stop if project is federated equals
◆ participant_read recued-core.federated-projects.participant.search
Search participant on federated projects
■ participant_rows default
Apply default
■ participant_index_raw map
Extract from each item
■ participant_index_trimmed map
Extract email from each item
■ participant_index map
Extract email from each item
■ participants_with_email filter
Filter by condition
■ participant_email_groups group_by
Group by email
■ unique_participant_groups filter
Filter by condition
■ assignable_emails pluck
Extract email from each item
■ action_rows_due_text map
Extract from each item
■ action_rows_due_at map
Extract due_instant_text from each item
■ action_rows_has_what map
Extract what from each item
■ action_rows_has_who map
Extract who from each item
■ action_rows_due_given map
Extract due from each item
■ action_rows_due_missing map
Extract due_at from each item
■ action_rows_due_bad map
Extract from each item
■ action_rows_has_extra map
Extract extra from each item
■ action_rows_what_length map
Extract what from each item
■ action_rows_too_long map
Extract what_length from each item
■ action_rows_is_me map
Extract who from each item
■ action_rows_assignable map
Extract who from each item
■ action_rows_kind map
Extract from each item
■ action_rows_reason map
Extract kind from each item
■ action_rows_what_key map
Extract what from each item
■ action_rows_keyed map
Extract from each item
■ action_rows_due_suffix map
Extract from each item
■ action_lines map
Extract from each item
■ task_rows_all filter
Filter by condition
■ task_rows_unique unique
Remove duplicates from
■ promise_rows_all filter
Filter by condition
■ promise_rows_unique unique
Remove duplicates from
■ attention_rows filter
Filter by condition
■ task_rows_key_source map
Extract from each item
■ task_rows_key_hash map
Extract key_source from each item
■ task_rows map
Extract from each item
■ task_row_count count
Count items in task rows
■ promise_row_count count
Count items in promise rows unique
■ attention_count count
Count items in attention rows
■ meeting_title_key lowercase
Convert meeting name to lowercase
■ minutes_id sha256
Apply sha256
◆ minutes_read core.storage.shared.read
Read storage shared
■ recorded_before compare
Check if minutes read found equals true
■ previous_note_id default
Apply default
■ previous_promise_keys default
Apply default
■ previous_actions default
Apply default
◆ previous_note_read core.work-entity.get
Get work entity
skip: step.previous_note_id is_empty
■ previous_note_exists compare
Check if previous note read found equals true
■ current_task_match_keys pluck
Extract match_key from each item
■ dropped_actions filter
Filter by condition
■ dropped_count count
Count items in dropped actions
◆ latest_read core.storage.shared.read
Read storage shared
■ latest_meeting_at default
Apply default
■ is_latest compare
Check if meeting instant is at least latest meeting at
■ promises_on compare
Check if setting record promises does not equal false
■ promise_rows_keyed map
Extract what from each item
■ new_promise_rows filter
Filter by condition
■ new_promise_rows_key_source map
Extract from each item
■ new_promise_rows_key_hash map
Extract key_source from each item
■ new_promise_rows_keyed map
Extract from each item
■ attendees_md_joined join
Join items with " - "
■ attendees_md_has_items compare
Check if attendee count is greater than 0
■ attendees_md ternary
Apply ternary
■ decisions_md_items pluck
Extract text from each item
■ decisions_md_joined join
Join items with " - "
■ decisions_md_has_items compare
Check if decisions count is greater than 0
■ decisions_md ternary
Apply ternary
■ actions_md_items pluck
Extract line from each item
■ actions_md_joined join
Join items with " - "
■ actions_md_has_items compare
Check if action count is greater than 0
■ actions_md ternary
Apply ternary
■ carry_forward_md_items pluck
Extract text from each item
■ carry_forward_md_joined join
Join items with " - "
■ carry_forward_md_has_items compare
Check if carry forward count is greater than 0
■ carry_forward_md ternary
Apply ternary
■ notes_md ternary
Apply ternary
■ note_title template
Generate text from a template
■ note_body template
Generate text from a template
■ note_body_length string_length
Apply string_length
⚠ stop_the_minutes_are_too_long guard
Stop if note body length is greater than
■ preview_mode compare
Check if setting write mode does not equal apply
■ note_create_skipped any
Check if any of the conditions are true
■ note_update_skipped any
Check if any of the conditions are true
■ note_key_hash sha256
Apply sha256
◆ apply_note_create core.work-entity.note.create
Create work entity note
skip: step.note_create_skipped equal true
◆ apply_note_update core.work-entity.note.update
Update work entity note
skip: step.note_update_skipped equal true
■ note_id coalesce
Use the first available value from: apply note create note id, apply note update note id
◆ apply_task_creates core.work-entity.task.create
Create work entity task
skip: step.preview_mode equal true
■ promise_write_skipped any
Check if any of the conditions are true
◆ apply_promises core.work-entity.commitment.create
Create work entity commitment
skip: step.promise_write_skipped equal true
■ task_results default
Apply default
■ task_written filter
Filter by condition
■ task_failed filter
Filter by condition
■ promise_results default
Apply default
■ promise_written filter
Filter by condition
■ promise_failed filter
Filter by condition
■ task_written_count count
Count items in task written
■ promise_written_count count
Count items in promise written
■ recorded_actions map
Extract from each item
■ written_promise_keys map
Extract from each item
■ promise_keys_all flatten
Flatten nested lists in
■ promise_keys unique
Remove duplicates from
■ failed_rows flatten
Flatten nested lists in
■ failures map
Extract from each item
■ failed_count count
Count items in failures
■ should_record all
Check if all conditions are true
■ pointer_skipped any
Check if any of the conditions are true
■ minutes_record default
Apply default
◆ record_write core.storage.shared.write
Write storage shared
skip: step.should_record equal false
◆ pointer_write core.storage.shared.write
Write storage shared
skip: step.pointer_skipped equal true
■ record_saved compare
Check if record write ok equals true
■ pointer_saved compare
Check if pointer write ok equals true
■ briefing_text_latest ternary
Apply ternary
■ briefing_text ternary
Apply ternary
■ mode_text ternary
Apply ternary
■ recorded_before_text ternary
Apply ternary
■ promise_setting_text ternary
Apply ternary
■ task_table to_table
Format results as a data table
■ promise_table to_table
Format results as a data table
■ attention_table to_table
Format results as a data table
■ failure_table to_table
Format results as a data table
■ dropped_table to_table
Format results as a data table
■ card to_summary
Format results as a summary card
▼
Output
summary card
table task_table
table promise_table
table attention_table
table failure_table
table dropped_table
text note_body
Settings 10 configurable

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

notes setting =
decisions setting =
meeting at setting =
write mode setting = preview
project ref setting = [object Object]
action items setting =
carry forward setting =
meeting title setting = [object Object]
attendee emails setting =
record promises setting = true

Uses (9 operations)

Tasks & notes Get work entity core.work-entity.get
Pack operation Search federation on federated projects recued-core.federated-projects.federation.search
Pack operation Search participant on federated projects recued-core.federated-projects.participant.search
Shared store Read storage shared core.storage.shared.read
Tasks & notes Create work entity note core.work-entity.note.create
Tasks & notes Update work entity note core.work-entity.note.update
Tasks & notes Create work entity task core.work-entity.task.create
Tasks & notes Create work entity commitment core.work-entity.commitment.create
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 Tasks & notes core.work-entity.get read-only
Read Shared store core.storage.shared.read read-only
Write Tasks & notes core.work-entity.note.create external change
Write Tasks & notes core.work-entity.note.update external change
Write Tasks & notes core.work-entity.task.create external change
Write Tasks & notes core.work-entity.commitment.create 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

SurfacesTasks & notesShared store
Warehousedata.shared

About

Tags

pack:meeting-minutesmeeting-minutesproject-managementfederated-projectmanualtaskcommitmentnote

Details

192 steps 10 configurable settings recipe_id: record-meeting-minutes