Don’t guess assignees from first names alone
“Alex will own this” looks easy to turn into a Notion person or Linear assignee. Without an attendee map, your workflow will invent the wrong Alex — or assign nobody useful.
The failure mode
Transcripts are messy: first names only, nicknames, people who weren’t on the calendar, and “we” / “someone” commitments. An LLM asked for owner_email will happily invent one, or map “Alex” to the first Alex in your workspace directory.
Wrong assignees create noise tickets and train the team to ignore the automation.
Pass an attendee roster
Before extraction, give the model a closed set of people who were actually in the meeting:
{
"meeting_date": "2026-09-16",
"attendees": [
{"name": "Alex Kim", "email": "alex@acme.com"},
{"name": "Sam Ortiz", "email": "sam@acme.com"}
],
"transcript": "..."
}
Instruct: only set owner / owner_email when the transcript clearly matches one roster entry. Otherwise null.
Keep the source span
Always retain the quote that justified the item:
{
"title": "Send revised pricing deck",
"owner": "Alex Kim",
"owner_email": "alex@acme.com",
"due_date": null,
"source_span": "Alex will send the revised pricing deck"
}
Write gates
- Notion Person properties: only set when you have a resolvable user id/email; else use rich text for the spoken name.
- Linear assignees: omit
assigneeIdwhen unknown; still create the issue with the quote. - Never invent emails. Invented addresses bounce or notify strangers.
Takeaway
Assignee matching is a directory problem, not a creativity problem. Closed roster + null-on-ambiguity + source spans keep meeting → ticket pipelines trustworthy.
This pattern ships in the pack
OpsPacket Meeting → Action Items includes extraction prompts and Notion/Linear write branches that prefer null owners over guessed emails.
Get the n8n pack — $97