Every 2 weeks
Schedule backlog refinement meetings from your sheet
Before each sprint, the top backlog items are picked from your sheet and refinement meetings are put in the team's calendars.
- Runs
- Every 2 weeks
- Apps
- Google Calendar, Google Sheets
- AI
- Yes, uses the built-in AI allowance
- Access
- Sheet read; Calendar write
Send this to your assistant
Create a ClickRuntime automation: before each sprint, read my Backlog sheet, pick the top items by priority and schedule refinement meetings for the team.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A product manager at a small software company keeps the backlog in a Google Sheet. Every two weeks she sorts it, decides which stories need discussion, and books refinement sessions around everyone's calendars. It is an hour of admin before each sprint, and when she is away the sessions do not happen.
Picking the highest-priority items and booking time to discuss them on a fixed rhythm keeps the backlog ready for planning. Small product and engineering teams use it to make refinement a habit instead of something that depends on one person remembering.
What you get out of it
Refinement happens every sprint
Sessions are booked on a regular schedule, so the team does not arrive at planning with unclear stories.
The most important work is discussed first
Items are chosen by the priority in your sheet, so the time goes to what matters most.
Each meeting has a clear agenda
The invitation lists the stories to discuss, so people can read them before the session.
Less admin for the product manager
Sorting the backlog and booking meetings no longer eats into the day before each sprint.
How it works
What happens, step by step
A few days before each sprint, ClickRuntime reads your Backlog sheet.
It picks the highest-priority items that have not been refined yet.
AI groups related items into short sessions and writes a brief agenda for each.
Refinement meetings with that agenda are added to the team's calendars.
Before it runs live
- Connect Google Calendar
- Connect your Google Sheets account and pick the spreadsheets it may use
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
- Run it at a different time, more or less often, or only on weekdays
- 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 Google Calendar and Google Sheets steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timedelta, timezone
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, ai
SHEET_ID = "your-spreadsheet-id"
TEAM = ["dev1@example.com", "dev2@example.com", "designer@example.com"]
@on_trigger
def run(event):
creds = Credentials(credentials.connection("google", "work"))
rows = build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values().get(
spreadsheetId=SHEET_ID, range="Backlog!A2:D").execute().get("values", [])
todo = sorted([r for r in rows if len(r) >= 3 and (len(r) < 4 or r[3].lower() != "refined")], key=lambda r: int(r[2]))[:9]
cal = build("calendar", "v3", credentials=creds, cache_discovery=False)
start = (datetime.now(timezone.utc) + timedelta(days=1)).replace(hour=14, minute=0, second=0, microsecond=0)
for n in range(0, len(todo), 3):
batch = todo[n:n + 3]
agenda = ai.generate("Write a 3-line agenda for a refinement session on these stories:\n" + "\n".join(f"{r[0]}: {r[1]}" for r in batch), max_output_tokens=200).text
s = start + timedelta(days=n // 3)
cal.events().insert(calendarId="primary", sendUpdates="all", body={"summary": "Backlog refinement", "description": agenda,
"start": {"dateTime": s.isoformat()}, "end": {"dateTime": (s + timedelta(minutes=45)).isoformat()},
"attendees": [{"email": e} for e in TEAM]}).execute()
return {"items": len(todo), "meetings": (len(todo) + 2) // 3}FAQ
Common questions
How are the items for each meeting chosen?
Who is invited?
When are the meetings booked?
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
Turn your week's calendar into a timesheet by client
Every Friday your calendar events are sorted by client or project and written to your timesheet sheet with the hours for each.
See how it worksSchedule study sessions around your calendar until the exam
Your syllabus topics are turned into study sessions placed in your free time, all finished before the exam date.
See how it worksPut birthdays, anniversaries and probation dates on the calendar
Birthdays, work anniversaries and probation end dates from your employee sheet appear as calendar events ahead of time.
See how it worksKeep exploring
Set up “Schedule backlog refinement meetings from your sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.