Blog/ AI email prompts & use-cases

AI Prompts to Extract Action Items From an Email Thread

Nafiul HasanNafiul Hasan· 13 min read
An email thread beside a structured action-item table with columns for task, owner, due date, and source line — the output of an AI prompt to extract action items from an email thread

The short answer

Paste the thread oldest-first, then use a prompt that requests each action item as 'Task | Owner | Due date | Quoted line.' Tell the model to write 'Unassigned' or 'No date' when the thread does not name them, and to include only firm commitments — not vague intentions like 'I'll look into it.'

Five copy-paste AI prompts to pull action items, owners and due dates from any email thread — including a strict mode that flags inferred items.

On this page
  1. 01What do you need before running the prompt?
  2. 02What is the basic prompt to extract action items from an email?
  3. 03How do I add a source quote so I can verify each task?
  4. 04What if the thread only implies some tasks without stating them clearly?
  5. 05How do I get a table that shows priority and what is blocked?
  6. 06How do I get a 'who owes what' summary to share with the whole group?
  7. 07Does this work the same in ChatGPT, Claude, Gemini, and Copilot in Outlook?
  8. 08What do you do when the extraction is incomplete or wrong?
  9. 09A faster way: action items without the copy-paste loop

The hardest information to find in a long email thread is who agreed to do what and by when. A commitment appears once, in plain prose, buried under seven replies and three rounds of quoted history. You read past it, miss the deadline, and the project stalls. Using an ai prompt to extract action items from an email thread turns that buried sentence into a structured checklist — task, owner, due date, and the exact line it came from — in under a minute.

Five prompts below cover the most common extraction jobs: a basic task list, a table with priority and dependencies, a version that quotes the source line for each item, a strict mode that marks inferred commitments as unconfirmed, and a short 'who owes what' summary you can share with the group. Each prompt is copy-paste ready. You supply the thread; the model supplies the list.

The variable that separates a useful extraction from a noisy one is the instruction about what counts as an action item. A vague prompt promotes 'we should probably revisit this' into a firm task, producing a list that contains obligations nobody agreed to. The prompts here tell the model to treat only firm, named commitments as tasks — and to mark anything softer as unconfirmed when it keeps it at all.

What do you need before running the prompt?#

The quality of the output depends almost entirely on the quality of the input. Three things make the difference between a reliable extraction and one that invents owners and drops commitments.

First, expand the full thread before copying. Most email clients collapse quoted history under a 'Show trimmed content' or '...' control. If you copy only what is visible, the model processes one reply and reports it with the confidence of having read the whole chain. Expand everything, then copy.

Second, keep the thread oldest-first. Email displays newest-first, but a model traces commitments through a conversation — who agreed to what, based on what was asked before. If your client forces newest-first order, add one line to the prompt: 'This thread is pasted newest-first — treat the last message as the earliest in the conversation.'

Third, keep sender names and dates in the paste. They are the raw material for Owner and Due date. Strip them and the model cannot tell you who committed to anything or when.

  • Expand the full thread before copying — collapsed history hides the messages the model needs.
  • Paste oldest-first; if you must paste newest-first, say so explicitly in the prompt.
  • Keep sender names and timestamps — they are how Owner and Due date get filled accurately.
  • Delete signatures, disclaimers, and repeated quoted blocks to cut noise and save context.
  • Treat the paste as a privacy decision: a confidential thread in a consumer chatbot goes to a third-party server, so redact anything sensitive before pasting.

Pasting a thread is a privacy decision

When you paste an email thread into a consumer chatbot, real names, commitments, and correspondence go to a third-party server. On free and consumer tiers your input may be used for training unless you explicitly turn that off. Redact what you can before pasting, or use a tool that reads the thread inside your own inbox — nothing leaves your account.

What is the basic prompt to extract action items from an email?#

Start with the plainest version: a flat list that names the task, the owner, and the due date. The three rules below do the real work. 'Unassigned' and 'No date' are not placeholders — they are explicit permission to leave a field blank rather than fill it with a plausible-sounding guess. 'Firm commitments only' is what stops a casual 'we should look at that' from appearing as a task with an assigned owner.

Prompt 1: basic action-item list
TaskExtract every action item from the email thread below.
FormatOne per line: Task | Owner | Due date.
RuleIf no owner is named, write 'Unassigned.' If no date, write 'No date.'
RuleInclude only firm commitments. Ignore vague intentions such as 'I'll look into it.'
RuleIf there are no action items, reply exactly: 'No action items found.'
Thread[paste the full thread here, oldest message first]

How do I add a source quote so I can verify each task?#

The most common reason an extracted task turns out to be wrong is that the model inferred something the thread only implied. Adding a Quoted line column forces the model to show its work: each task is tethered to the exact sentence that contains the commitment, and you can cross-check in ten seconds.

This version also catches a common drift — the model paraphrasing a commitment slightly differently from what the thread said, rounding a Tuesday deadline to 'end of week' or assigning ownership to whoever was CC'd most. The quoted line keeps that from happening without you noticing.

Prompt 2: action items with source quote
TaskExtract every action item from the email thread below.
FormatTask | Owner | Due date | Quoted line (copy the exact sentence that commits to this).
RuleWrite 'Unassigned' or 'No date' rather than guess. Firm commitments only.
RuleThe quoted line must be verbatim from the thread, not a paraphrase.
Thread[paste the full thread here, oldest message first]

The quoted line is an anti-hallucination check

If the model cannot produce a verbatim sentence that contains the commitment, the task is most likely inferred rather than stated. Requiring the quote forces it to distinguish between what the thread said and what it assumed — which is exactly the gap where wrong owners and invented deadlines appear.

What if the thread only implies some tasks without stating them clearly?#

Threads often contain soft commitments — 'I can probably help with that' or 'let me know if you need anything' — that do not quite rise to a firm agreement but are not meaningless either. A standard extraction prompt either promotes them to firm tasks or drops them entirely. The strict-mode prompt below takes a third path: it keeps them on the list but marks them as INFERRED, so whoever receives the list knows those items need a confirmation before anyone acts.

This matters most when you are forwarding the extracted list to the people who own the tasks. A task marked INFERRED signals that the recipient needs to confirm they agreed before treating it as a real obligation.

Prompt 3: strict mode with inferred flag
TaskExtract action items from the thread below using two categories.
CONFIRMEDExplicitly agreed, with a named owner and a possible deadline.
INFERREDImplied or loosely suggested — must be confirmed before anyone acts on it.
FormatTask | Owner | Due date | Category (CONFIRMED or INFERRED).
RuleWhen uncertain, default to INFERRED rather than CONFIRMED. Never omit items that might be commitments.
Thread[paste the full thread here, oldest message first]

How do I get a table that shows priority and what is blocked?#

Once you have the full list, the next question is usually: what is urgent and what is waiting on something else? Adding Priority and Blocked-by columns makes those visible without reading the list twice. Tell the model to infer priority only from explicit signals in the thread — words like 'urgent,' 'blocking,' 'by end of day' — and to leave the field blank otherwise. A guessed priority that contradicts what the thread actually said is worse than a blank column.

Prompt 4: action-item table with priority and dependencies
TaskExtract action items from the email thread below into a table.
ColumnsTask | Owner | Due date | Priority | Blocked by
RuleSet Priority only from explicit signals: 'urgent,' 'blocking,' 'by EOD.' Leave blank if none.
RuleSet 'Blocked by' to the task name or person blocking it, or leave blank.
RuleWrite 'Unassigned' or 'No date' rather than guess. Sort rows by due date, soonest first.
Thread[paste the full thread here, oldest message first]

How do I get a 'who owes what' summary to share with the whole group?#

When you want to share the result with everyone on the thread, a five-column table is often too much to forward in a reply. A who owes what summary collapses the list into a short block per person — what they committed to, by when, and who is waiting on them. It is readable in fifteen seconds and easy to paste into a reply or a shared channel without burying the key points in a spreadsheet.

Prompt 5: who owes what (shareable summary)
TaskFrom the email thread below, produce a 'who owes what' summary.
FormatGroup by person. For each: what they committed to, by when, and who is waiting on them.
RuleInclude only things actually agreed in the thread. Write 'None' for anyone with no open items.
RuleIf a commitment was already fulfilled later in the thread, omit it from the summary.
Thread[paste the full thread here, oldest message first]

Does this work the same in ChatGPT, Claude, Gemini, and Copilot in Outlook?#

All four handle structured extraction, but they differ in where you run the prompt, how much thread they can handle, and whether they read your inbox directly or require a paste. The table below covers the practical differences as of mid-2026. Verify current limits and features against each vendor's own documentation before relying on them.

ToolWhere you run itReads inbox directlyPrompt controlNotes
ChatGPT (GPT-4o)chat.openai.comNo — paste requiredFullEveryday threads fit comfortably; follows structured format reliably when rules are explicit
Claude (claude.ai)claude.aiNo — paste requiredFullLarge context; rarely invents owners when the Unassigned rule is stated
Copilot in OutlookInside Outlook (Microsoft 365)YesLimitedReads the open thread directly; output format is fixed and cannot be customized by prompt
Gemini in GmailInside Gmail (Google Workspace)YesLimitedHighlights action items in the summary pane; format cannot be changed by prompt
API or custom integrationYour own setupCan be, with OAuthFullMost consistent for repeatable workflows; requires initial setup

Built-in tools trade format control for privacy

Copilot in Outlook and Gemini in Gmail read the thread where it lives, so nothing is pasted to a separate server. The trade-off is less control over the output format — you get their default layout, not the structured table you designed. For one-off extraction, either works. For a repeatable workflow where format consistency matters, a custom prompt gives more reliable results.

What do you do when the extraction is incomplete or wrong?#

Most extraction failures trace back to one of four causes. Work through them in order before re-running the prompt with no changes.

The thread was incomplete. If you copied only the visible top message of a collapsed thread, the model processed one reply and reported it with the confidence of having processed the whole chain. Expand the thread fully, verify all messages are in the paste, and re-run.

The thread arrived newest-first without a note. Add one line to the prompt: 'This thread is pasted newest-first — treat the last message in the paste as the earliest in the conversation.' Without that, the model may read commitments in reverse and attribute them to the wrong person.

The thread is too long for one pass. Quality degrades when a commitment is buried thousands of words into a single paste. Split the thread into chronological chunks, run the extraction prompt on each chunk, then combine the results with a merge prompt: 'These are action-item lists from consecutive sections of one email thread. Merge them, remove any item that was already completed in a later section, and resolve any owner or date that changed.' Check the merged list for duplicates and contradictions before forwarding it.

The model invented an owner or date. This happens when the thread does not name an owner and the model fills the slot with whoever was most active. The fix is explicit: add 'Write Unassigned rather than guess. Do not infer ownership from frequency, position, or seniority.' Switch to Prompt 2 and require the Quoted line — if no sentence in the thread supports the task, the task should not be on the list.

A faster way: action items without the copy-paste loop#

The prompts above work. The part that wears thin is the loop: expand the thread, copy, switch tabs, paste — then repeat for every thread in the backlog. For one critical thread, that setup is worth five minutes. For a daily workflow across dozens of threads, the friction accumulates faster than the time saved.

AI Emaily is an AI-native email client that surfaces action items automatically, inside the inbox where the thread already lives — no paste loop, because it reads the conversation directly in your real mailbox. Open a thread and the tasks, owners, and due dates appear alongside the summary, each one linked back to the message it came from. We build AI Emaily. The mechanism is straightforward: extraction runs on your own mailbox, your mail is never copied to a third-party chatbot, and it is not used to train models.

A 7-day free trial covers the full client, with no commitment before day seven. AI Emaily works across Gmail, Outlook, iCloud, Fastmail, Proton, and IMAP, and in Copilot mode the extracted tasks can become proposed replies or follow-up actions, each waiting for your approval before anything is sent. Start at aiemaily.com or see aiemaily.com/pricing for what each plan includes.

Frequently asked

Nafiul Hasan

Written by

Nafiul Hasan

Nafiul Hasan is an entrepreneur and AI automation system builder with 10+ years of experience turning messy, manual workflows into reliable automated systems. He designs and ships AI enterprise solutions end-to-end — the agent logic, the data plumbing, and the product people actually use — and founded AI Emaily to give busy professionals their attention back. He writes here from the builder's seat: what works, what breaks, and how to put AI to work without giving up control.

EntrepreneurAI Automation System BuilderAI EnthusiastBuilds AI Enterprise Solutions10+ years experience
More from Nafiul
Ready when you are

Stop building task lists by hand from long email threads

AI Emaily surfaces action items, owners, and due dates automatically inside your real inbox — no copy-paste, no chatbot tab, no privacy trade-off. Works across Gmail, Outlook, iCloud, Fastmail, Proton, and IMAP. 7-day free trial, no commitment before day seven.

  • 7-day free trial
  • Cancel anytime
  • Every provider