Promise Keeper
Catches the promises you and your team make by email, before a customer has to chase you. Every morning at 7am Eastern the flow reads the emails your connected Gmail account sent recently (the last 2 days by default) and an AI model picks out each commitment in them, such as "I'll send the revised quote by Friday" or "we'll have the crew there Tuesday": what was promised, who it was promised to and the deadline, worked out from the day the email was sent. Each one is logged to the Commitments tab of a Google Sheet with the status open. Right after, it reads the Commitments tab and, when something needs you, emails you a morning brief: what is overdue, what is due today, what is due within your reminder lead time (1 day by default) and any new commitments that came without a date. For each overdue commitment it also drafts a short follow-up to the person you owe and puts it on your Approvals page, where you edit, approve or reject it; nothing goes to a customer until you approve it. The draft is a reply in the original thread when the customer wrote the thread's last message, and otherwise a new email to them with the thread's subject (a Gmail reply goes to the thread's last sender, which is usually you). Works for any business: there is no platform to pick, only Gmail and Google Sheets. Every sent email is logged to the Scan Log tab before it is read, so each email is read once, and each follow-up is logged there before it is queued, so each overdue commitment gets one draft per due date. Up to 25 emails are read per run (you can raise it to 100); the rest are read on the next run while they are inside the lookback window. Spreadsheet tabs, header in row 1: Commitments (written by the flow; you edit the status): A id, B logged on, C sent on, D thread id, E owed to, F promise, G due, H status, I notes. Scan Log (written by the flow): A key (a Gmail message ID, or follow-up:<commitment id>:<due> for a queued follow-up), B logged on. Status: the flow writes open. Write done once a promise is kept, or snoozed to stop reminders for it; any status other than blank or open is left alone. To move a deadline, change the due date (YYYY-MM-DD or M/D/YYYY): the commitment is reminded again, and gets a new follow-up draft, once the new date passes. Use the notes column for anything you like; the flow never reads it. Setup: create a Google Sheet with the two tabs and their header rows, connect Google (Gmail and Sheets), and set the spreadsheet, the email that gets the morning brief, your business name (it signs the follow-up drafts), the lookback window, the number of emails read per run and the reminder lead days on the setup screen; they land in the Settings node, where you can change them later. Save the flow once after importing it to arm the schedule. Privacy: the text you wrote in each sent email (not the quoted earlier messages) goes to the AI model, and the Commitments tab holds the recipient's email address and the promise, nothing else from the email. Limitations: only the connected mailbox's sent mail is read, so a teammate's promises are caught only when they send from that mailbox. The AI can miss a promise or misread one, so check new rows now and then; commitments it is unsure of are not logged. Vague promises with no date ("I'll get back to you soon") are logged without a due date and listed in the brief once, on the morning they are logged; add a due date to have them reminded. Replies are not tracked as fulfilment: sending what you promised does not close the row, so mark it done yourself. Dates are worked out in US Eastern time, the schedule's time zone. Morning briefs have a subject starting with "Promise Keeper" and are skipped when your sent mail is read; an approved follow-up is read like any other sent email. An email whose AI step fails is not read again. Planned follow-ups: closing a row when a later sent email shows the promise was kept, and Outlook support.
What's inside · 43 steps
- Schedule
- PromptTemplate×16
- GmailIntegration×4
- GoogleSheetsIntegration×5
- CombineData×4
- CodeSandbox×6
- Loop×2
- LanguageModel
- IfElse×3
- ApprovalQueue
Use this template
Sign in to open this workflow in the builder, ready to connect your accounts.
Use this template