Every 15 minutes
Record decisions from meeting summaries in SharePoint
Decisions and action items from meeting summary emails are added to SharePoint lists, so nothing agreed gets lost.
- Runs
- Every 15 minutes
- Apps
- Outlook, SharePoint
- AI
- Yes, uses the built-in AI allowance
- Access
- Mail.Read, Sites.ReadWrite.All
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, look for new meeting summary emails in Outlook, pull out the decisions and tasks, and add them to the Decisions and Actions lists in SharePoint.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Meeting notes and recap emails pile up in inboxes, and three months later nobody can find when a decision was made or who agreed to do what. Projects stall on tasks everyone assumed someone else had.
Pulling the decisions and actions out of each summary email into SharePoint lists builds a searchable decision log and a task list, without anyone retyping notes after the meeting.
What you get out of it
A decision log you can search
Every decision is a list item with the meeting and date. When someone asks 'when did we agree that?', the answer is one search away.
Actions with owners
Tasks are recorded with the person responsible and any due date mentioned. It's easy to check what's still open.
No retyping
The summary email you already send is the input. Nobody has to copy points into SharePoint after the meeting.
Works with any notes tool
Recaps from Teams, a note-taker or a person all work, as long as they arrive as emails with a recognisable subject.
How it works
What happens, step by step
Every 15 minutes it looks for new emails with a meeting summary subject.
AI reads the summary and lists the decisions and the action items with owners and due dates.
Each decision is added to your Decisions list and each action to your Actions list in SharePoint.
It remembers which emails it has processed, so nothing is added twice.
Before it runs live
- Connect Outlook
- Connect SharePoint
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Slack
- Combine it with other Outlook and SharePoint steps into one automation
Under the hood
The code that runs this automation
GRAPH = "https://graph.microsoft.com/v1.0"
SITE = "contoso.sharepoint.com:/sites/operations:"
from clickruntime import on_trigger, credentials, http, state, ai, report_fetched
SCHEMA = {"type": "object", "properties": {"decisions": {"type": "array", "items": {"type": "string"}},
"actions": {"type": "array", "items": {"type": "object", "properties": {"task": {"type": "string"}, "owner": {"type": "string"}, "due": {"type": "string"}}}}},
"required": ["decisions", "actions"]}
@on_trigger
def run(event):
h = {"Authorization": f"Bearer {credentials.connection('microsoft', 'work')}"}
since = state.get("since") or "2026-01-01T00:00:00Z"
msgs = http.get(f"{GRAPH}/me/messages", headers=h, params={"$filter": f"receivedDateTime gt {since} and contains(subject, 'Meeting summary')",
"$select": "id,subject,body,receivedDateTime"}).json()["value"]
report_fetched(len(msgs))
if not msgs:
return {"summary": "Nothing new"}
for m in msgs:
r = ai.generate(m["body"]["content"][:6000], system="Extract decisions and action items (task, owner, due) from these meeting notes.",
json_schema=SCHEMA, max_output_tokens=800).json
for d in r["decisions"]:
http.post(f"{GRAPH}/sites/{SITE}/lists/Decisions/items", headers=h, json={"fields": {"Title": d[:255], "Meeting": m["subject"]}})
for a in r["actions"]:
http.post(f"{GRAPH}/sites/{SITE}/lists/Actions/items", headers=h,
json={"fields": {"Title": a.get("task", "")[:255], "Owner": a.get("owner", ""), "Due": a.get("due", ""), "Meeting": m["subject"]}})
state.set("since", max(m["receivedDateTime"] for m in msgs))
return {"emails": len(msgs)}FAQ
Common questions
Which emails does it read?
What if the AI misses something?
Can it assign tasks to people?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Archive email attachments to a SharePoint library
Attachments from incoming emails are saved to your SharePoint library by date, with a log of what was filed.
See how it worksLog form submissions in a SharePoint list and email the owner
Every form submission becomes an item in your SharePoint list, the right person is emailed, and the sender gets an acknowledgement.
See how it worksEmail timesheet reminders to staff listed in SharePoint
Twice a week everyone on your staff list gets a personal reminder from Outlook to submit their timesheet.
See how it worksKeep exploring
Set up “Record decisions from meeting summaries in SharePoint” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.