Email Promise Extractor
Free AI tool that reads an email thread and lists every commitment in it — yours and theirs — with the exact quote, a due date, and a follow-up date. No signup.
Nothing is stored. The text is sent once to the AI to be scanned, and the dates and follow-ups are worked out on our side, not by the model.
Powered by NeatMail AI
You just found the promises in one thread. What about the other four hundred?
NeatMail reads every email as it arrives in Gmail and Outlook, catches the promises you make and the ones made to you, files them under a single Follow up label with a date, and drafts the nudge when that date arrives.
About the Email Promise Extractor
An email promise extractor reads a thread and pulls out every commitment buried in it. Paste one email or a whole reply chain, say who you are in it, and you get a list split into what you owe and what you're owed — each row carrying the exact sentence it came from, a due date resolved to a real calendar day, and the date you should chase it. It exists because promises are rarely lost to inattention: they're lost to paragraph three of a thread you already marked as read. The scan runs free with no signup, and the follow-up dates are computed here rather than by the model, so they're arithmetic rather than a guess.
How to use the Email Promise Extractor
- 1
Paste the whole thread, quoted replies included
Don't trim it to the last message. Commitments cluster in the early replies — the ones nobody has scrolled back to in a fortnight. Quoted chains are fine: repeated sentences are collapsed into one row each.
- 2
Say who you are in the thread
A first name or the email address you send from is enough. That is how the tool decides which obligations are yours and which are theirs, which is the whole point of the split.
- 3
Check today's date and pick a follow-up window
Today's date is what "by Friday" and "end of week" resolve against, so change it if you're reconstructing an old thread. The window sets when undated commitments get chased — three days by default.
- 4
Read the counts before the rows
Overdue and no-date-set are the two numbers that matter. Then copy the list out as a plain-text checklist or a Markdown table, and copy a ready-written nudge for anything someone owes you.
The four kinds of commitment that get missed
Anything that scans for the word "will" finds the easy half. The commitments that actually go missing are the ones that never announce themselves as commitments — this tool labels each row by kind so you can see which sort you're dealing with:
| Kind | What it looks like in a thread | Why it gets dropped |
|---|---|---|
| Stated promise | "I'll send the revised SOW by Friday." | It rarely does — this is the kind everything catches. |
| Unanswered question | "Can you confirm the seat count before I price it?" | It isn't phrased as a task, so nobody writes it down. The whole thread then stalls on it. |
| Conditional | "Once legal signs off, I'll send the DPA across." | The condition becomes the excuse. Nobody tracks whether the condition ever cleared. |
| Third party | "Marcus will handle the invoice." | Neither person in the thread owns it, so neither chases it. |
| Implied | "Leave the pricing with me." | No verb, no date, no deliverable — but you're now waiting on something. |
The split between what you owe and what you're owed matters more than it sounds. Both land in the same place — a single Follow up view rather than two lists — because in practice you check one list or none. If you want the reasoning behind collapsing them, our write-up on labels versus folders covers why five to seven action-shaped categories beat a topic tree.
Every phrase this tool flags as soft language
Alongside the commitments, the scan reports the phrases in your thread that sound like commitments and aren't. This list is published in full rather than hidden behind the tool, because the list is the useful part — once you can recognise these, you catch them while you're writing rather than three weeks later:
| Phrase | What's actually missing |
|---|---|
| "circle back" / "touch base" / "let's sync" | An owner and a date. Nobody has agreed to do anything. |
| "as soon as possible" / "asap" | A day. It means "when I get to it", which is not a commitment. |
| "at some point" / "sometime" / "in due course" | A date, explicitly refused. |
| "when I get a chance" / "when I get a moment" | A priority. Your request now ranks below everything unnamed. |
| "shortly" / "soon" | Feels like timing, contains none. |
| "early next week" / "later this week" / "in the next few days" | Precision — each is ambiguous by two to three days, which is exactly long enough to slip. |
| "I'll try" / "aiming to" / "should be able to" / "hopefully" | The obligation. These are intentions, and everyone reads them as promises anyway. |
| "we'll see" | A decision. Treat the thread as unresolved, not as agreed. |
| "look into it" / "keep you posted" / "get back to you" / "revert back" | A deliverable. What comes back, and when? |
The fix in every case is the same two-part edit: name the deliverable, name the day. "I'll get back to you" becomes "I'll send the pricing on Thursday." It reads as more of a commitment because it is one.
How the dates are worked out (and why not by the AI)
The model does exactly one job here: find the sentences that carry an obligation and resolve any stated deadline to a calendar day. Everything after that is ordinary arithmetic done on our side, because a model asked to both read a long thread and do date maths will get the maths wrong somewhere, and a commitment list with subtly wrong dates is worse than no list at all.
- Dated commitments are followed up the day after they were due. If that day has already passed, the follow-up is today — a reminder set in the past is not a reminder.
- Undated commitments get today plus your chosen window, three days by default.
- Overdue counts are whole days between the due date and the today you set, so the number stays right whether you scan the thread now or next month.
- Ordering is overdue first (most overdue at the top), then upcoming by date, then the undated ones. Undated items sit last but are flagged loudest — they have no position on a timeline to sort into, which is precisely why they're the highest-risk group on the list.
- Dates the thread never supported are shown as inferred, never as stated. If the model resolves "end of week" to a Friday, the row says so.
One more check runs before anything reaches the page: every quoted sentence is matched back against the text you pasted, ignoring punctuation and whitespace, and any row whose quote can't be found is thrown away and counted. A tool that invents a plausible-sounding commitment — right names, right tone, never actually said — is worse than one that misses a real commitment, because nothing in the output tips you off. If the footnote says two rows were discarded, that check is what discarded them.
What this tool will not do
- It doesn't connect to your inbox. No Gmail or Outlook access, no OAuth, no permissions. It reads the text you paste and nothing else — which also means it can't see attachments, calendar invites, or the message you forgot to paste.
- It doesn't store your thread. The text goes to the AI model once to be scanned and isn't kept on our servers or used to train anything. Treat it as you would any cloud tool: don't paste passwords or card numbers.
- It can't read a screenshot. Plain text only. Copy the message body, not a picture of it.
- It caps at 14,000 characters and 30 commitments. A year-long thread needs splitting; paste the portion that carries the open items.
- It's a snapshot, not a tracker. Nothing watches these dates for you afterwards. Copy the checklist somewhere that does, or use something that does the watching.
- Low-confidence rows are judgement calls. A row marked Medium or Low confidence means the obligation or its owner was read from context. Check the quote before you act on it.
What to do with the list once you have it
Split it by who owes what, because the two halves need different actions. For what you owe, the list is a to-do list — the useful move is doing the two-minute ones now and putting a date on the rest. For what you're owed, each row already has a nudge written for you: it quotes the commitment back verbatim, which is the only part of a chasing email that does any real work.
That built-in nudge is deliberately plain and is written locally, not by the AI — it costs nothing and appears instantly. When the nudge needs an argument rather than a quote, the follow-up email generator writes the next message in a thread that's gone quiet, and the gentle reminder generator handles the overdue-invoice end of the spectrum. If the row is something you owe and the reply is the whole job, the AI email response generator drafts it from the message you received.
Timing matters as much as wording. Following up the next day is the most common mistake — across 156,000 sequences, waiting three days instead lifted replies by 31% (Optifai, 2026), and follow-ups account for 58.6% of all replies in Belkins' analysis of 7.5 million emails. The default three-day window in this tool is set to that number rather than to instinct. Our guide to handling email follow-ups has the full cadence.
If the same commitments keep surfacing from the same senders, the problem is upstream of any list. Route those threads out of the general inbox with the Gmail filter generator, and read Inbox Zero at 100+ emails a day for the triage pass that keeps them findable. Client work has its own version of this failure — 66% of clients leave over poor communication, and a dropped promise is what poor communication looks like from the outside.
Frequently asked questions
- Is the email promise extractor free?
- Yes. There's no signup and no card. You get a set number of free AI scans, and the counter above the button shows how many you have left.
- How is this different from an action item extractor?
- An action item list tells you what needs doing. This tells you who owes it, quotes the sentence that created the obligation, and separates what you owe from what you're owed — which is the split that decides whether you do the work or chase someone else for it. It also catches obligations that aren't phrased as tasks at all: unanswered questions, conditional promises, and things a third party was said to be handling.
- Does it read my Gmail or Outlook inbox?
- No. It has no access to any inbox and asks for no permissions. It reads only the text you paste in. If you want every thread scanned automatically as it arrives, that's what NeatMail itself does once you connect an account.
- Is my email content private?
- The text you paste is sent to the AI model to be scanned and is not stored on our servers or used to train anything. Treat it as you would any cloud tool — avoid pasting passwords, card numbers, or anything you wouldn't put in an email.
- Why did a result disappear from my list?
- Because its quote couldn't be found in the text you pasted. Every row is matched back against your thread word for word, ignoring punctuation and spacing, and anything that fails is discarded and counted in a footnote under the list. It's a guard against the tool inventing a plausible commitment that was never actually made.
- How does it handle "by end of week" and other vague deadlines?
- It resolves them against the date you set as today and marks the result as inferred rather than stated, so you can see which dates came from the thread and which came from interpretation. Phrases with no timing at all — "as soon as possible", "when I get a chance" — produce no date and are flagged as the highest-risk group, because an undated promise has nothing to sort it into a calendar with.
- How long a thread can I paste?
- Up to 14,000 characters, and it returns at most 30 commitments. Paste the whole reply chain if it fits — the oldest messages are where forgotten promises live, and repeated quoted text is collapsed to one row per commitment.
- Can it tell which promises are mine?
- Yes, if you fill in the "who are you in this thread" field with a first name or the address you send from. Without it, most rows come back marked Unclear, because a thread rarely says who is reading it.
Related tools
Still doing this by hand? NeatMail runs it for you, on every email, inside Gmail and Outlook.
Start free