The moment it happens
Turn meeting notes into Asana tasks and a Slack recap
Send your meeting notes to a link and get an Asana task for each action item, with owner and due date, plus a recap in Slack.
- Runs
- The moment it happens
- Apps
- Asana, Slack
- AI
- Yes, uses the built-in AI allowance
- Access
- Asana write; chat:write
Send this to your assistant
Create a ClickRuntime automation: when I send meeting notes to this link, pull out the action items, create an Asana task for each with an owner and due date, and post a short summary with the task links in Slack.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A project lead runs several client and internal meetings a week and takes notes in a doc or gets a transcript from the call tool. Turning those notes into tasks is the step that slips: by the time the lead gets to it, people have forgotten what they agreed and some action items never reach Asana at all.
This automation reads the notes as soon as you send them, creates a task for every action item with the right person and date, and posts a recap in Slack. Decisions turn into tracked work while the meeting is still fresh.
What you get out of it
Action items do not get lost
Every 'I'll send that by Friday' becomes a task with an owner and a date. Follow-up no longer depends on someone reading back through notes.
Owners know what they agreed to
Each person sees their task in Asana and their name in the Slack recap. There is less confusion about who said they would do what.
A recap for people who missed the meeting
The Slack summary gives the main decisions and links to the tasks. Colleagues who were not there catch up in a minute.
Works with notes or transcripts
Typed notes, a doc pasted as text or a call transcript all work. AI picks out the commitments from loose wording.
How it works
What happens, step by step
You send your meeting notes or transcript to your automation's trigger link.
AI reads the notes and lists each action item with an owner and due date where one was mentioned.
A task is created in your chosen Asana project for every action item.
A short recap of the meeting with links to the new tasks is posted in Slack.
Before it runs live
- Connect Asana
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Paste your automation's link into the other app's webhook settings
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 Google Sheets
- Combine it with other Asana and Slack steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, ai, notify
PROJECT_ID = "your-asana-project-id"
SCHEMA = {"type": "object", "properties": {"summary": {"type": "string"}, "items": {"type": "array", "items": {
"type": "object", "properties": {"task": {"type": "string"}, "owner_email": {"type": "string"}, "due": {"type": "string"}},
"required": ["task"]}}}, "required": ["summary", "items"]}
@on_event
def handle(event):
notes = ((event.json or {}).get("notes") or event.body or "")[:20000]
out = ai.generate(f"Meeting notes:\n{notes}\n\nGive a two-sentence summary and every action item. "
"Use YYYY-MM-DD for due dates.", json_schema=SCHEMA, max_output_tokens=1200).json
asana = {"Authorization": f"Bearer {credentials.secret('ASANA_TOKEN')}"}
links = []
for item in out["items"]:
data = {"name": item["task"], "projects": [PROJECT_ID]}
if item.get("owner_email"):
data["assignee"] = item["owner_email"]
if item.get("due"):
data["due_on"] = item["due"]
task = http.post("https://app.asana.com/api/1.0/tasks", headers=asana, json={"data": data}).json()["data"]
links.append(f"- {item['task']} {task.get('permalink_url', '')}")
notify.slack(f"Meeting recap: {out['summary']}\n" + "\n".join(links), channel="#team")
return {"tasks": len(links)}FAQ
Common questions
How are task owners matched to Asana users?
What if no due date was mentioned?
Where do the tasks go?
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
Score leads, create Asana tasks and alert sales in Slack
Hot leads are scored on arrival, turned into Asana tasks and posted to your sales channel so someone picks them up straight away.
See how it worksSet up an Asana project and Slack channel for each new client
When a new client comes in, they get an Asana project from your template and their own Slack channel, with links posted in #clients.
See how it worksPost a daily standup from Asana to Slack
Every weekday morning, your team channel shows what each person finished yesterday, what is due today and what is overdue.
See how it worksKeep exploring
Set up “Turn meeting notes into Asana tasks and a Slack recap” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.