Every weekday morning, reads the calls booked on your calendar for today and sends you one written-up message in Telegram.

UsesGoogle MeetOpenAITelegram

A written-up plan of your day in Telegram

Every weekday at 07:00, the calls booked on your calendar for today are read and one message is sent to your own Telegram chat: for each call, the time, the title, who is coming and a line on what to have ready.

The time and the title are copied from the calendar entry, never written by AI, so a reminder cannot tell you the wrong hour. The one line that is written for you is checked before use: every figure in it has to appear in the calendar entry, and a line that states a figure the entry does not is dropped. Only calls carrying a Google Meet link are read, so a blocked-out afternoon with no video link will not appear. An entry with no start time is left out and counted at the foot of the message. On a day with nothing booked it says so, so silence always means the workflow did not run.

You need a Telegram bot that can message you, and a few words on what to call out about each call. Nothing is booked, moved or cancelled.

ScheduleRun every weekday at 07:00.Run every weekday at 07:00.
ValuesSet telegramChatId to blank.Set telegramChatId to blank.
ValuesSet whatToNote to blank.Set whatToNote to blank.
ValuesSet maxMeetings to 12.Set maxMeetings to 12.
Dates & TimesGet today's date and save it as today.Get today's date and save it as today.
ValuesSet utcStamp to the current date and time formatted as an ISO 8601 timestamp in UTC truncated to 19 charactersZ.Set utcStamp to the current date and time formatted as an ISO 8601 timestamp in UTC truncated to 19 charactersZ.
ValuesSet localStamp to the current date and time formatted as an ISO 8601 timestamp truncated to 19 charactersZ.Set localStamp to the current date and time formatted as an ISO 8601 timestamp truncated to 19 charactersZ.
Dates & TimesCount the minutes from utcStamp to localStamp and save it as minutesFromUtc.Count the minutes from utcStamp to localStamp and save it as minutesFromUtc.
Dates & TimesMove todayT00:00:00Z by 0 minus minutesFromUtc minutes and save it as dayStart.Move todayT00:00:00Z by 0 minus minutesFromUtc minutes and save it as dayStart.
Dates & TimesMove todayT23:59:59Z by 0 minus minutesFromUtc minutes and save it as dayEnd.Move todayT23:59:59Z by 0 minus minutesFromUtc minutes and save it as dayEnd.
ValuesSet meetings to an empty list.Set meetings to an empty list.
Decisions & LoopsIf a step below fails, save the error as calendarErrorIf a step below fails, save the error as calendarError
Try
ValuesChange meetings to the meetings from the Google Meet “List meetings” step.Change meetings to the meetings from the Google Meet “List meetings” step.
On error
Decisions & LoopsStop and report a problem: Your calendar could not be read, so no reminder was sent: calendarError as text.Stop and report a problem: Your calendar could not be read, so no reminder was sent: calendarError as text.
ValuesSet sections to an empty list.Set sections to an empty list.
ValuesSet written to 0.Set written to 0.
ValuesSet skipped to 0.Set skipped to 0.
Decisions & LoopsFor each meeting in meetings:For each meeting in meetings:
Decisions & LoopsIf written is greater than or equal to maxMeetings multiplied by 1If written is greater than or equal to maxMeetings multiplied by 1
Yes
Decisions & LoopsStop repeating.Stop repeating.
No
No steps
ValuesSet title to blank.Set title to blank.
Decisions & LoopsIf a step below fails, save the error as titleMissingIf a step below fails, save the error as titleMissing
Try
TextTrim meeting.title and save it as title.Trim meeting.title and save it as title.
On error
ValuesChange title to blank.Change title to blank.
Decisions & LoopsIf title is nullIf title is null
Yes
ValuesChange title to blank.Change title to blank.
No
No steps
Decisions & LoopsIf title is emptyIf title is empty
Yes
ValuesChange title to Untitled meeting.Change title to Untitled meeting.
No
No steps
ValuesSet startsAt to blank.Set startsAt to blank.
Decisions & LoopsIf a step below fails, save the error as startMissingIf a step below fails, save the error as startMissing
Try
TextTrim meeting.start and save it as startsAt.Trim meeting.start and save it as startsAt.
On error
ValuesChange startsAt to blank.Change startsAt to blank.
Decisions & LoopsIf startsAt is nullIf startsAt is null
Yes
ValuesChange startsAt to blank.Change startsAt to blank.
No
No steps
Decisions & LoopsIf startsAt is emptyIf startsAt is empty
Yes
ValuesShow in the output: Left out '@title': the calendar entry has no start time.Show in the output: Left out '@title': the calendar entry has no start time.
ValuesAdd 1 to skipped.Add 1 to skipped.
Decisions & LoopsSkip to the next item.Skip to the next item.
No
No steps
ValuesSet clock to All day.Set clock to All day.
Decisions & LoopsIf startsAt contains TIf startsAt contains T
Yes
TextShorten the last item of startsAt split by T to 5 characters and save it as clock.Shorten the last item of startsAt split by T to 5 characters and save it as clock.
No
No steps
ValuesSet guests to blank.Set guests to blank.
Decisions & LoopsIf a step below fails, save the error as guestsMissingIf a step below fails, save the error as guestsMissing
Try
TextJoin meeting.attendees with , and save it as guests.Join meeting.attendees with , and save it as guests.
On error
ValuesChange guests to blank.Change guests to blank.
ValuesSet meetingFacts to Title: titleSet meetingFacts to Title: title Starts: startsAt Guests: guests.
ValuesSet notePrompt to You are writing one line of preparation for a meeting that is already scheduled. Reply with a single sentence of at most 25 words and nothing else.Set notePrompt to You are writing one line of preparation for a meeting that is already scheduled. Reply with a single sentence of at most 25 words and nothing else. Do not state any time, date, duration, price, count or other figure. The reminder already carries the time, and a figure you supply cannot be checked. If you have nothing useful to add, reply with the single word none. What the reader wants called out: whatToNote The meeting: meetingFacts.
ValuesSet note to blank.Set note to blank.
Decisions & LoopsIf a step below fails, save the error as noteErrorIf a step below fails, save the error as noteError
Try
TextTrim the response text from the OpenAI “Ask OpenAI” step and save it as note.Trim the response text from the OpenAI “Ask OpenAI” step and save it as note.
On error
ValuesShow in the output: No preparation line for '@title': noteError as text.Show in the output: No preparation line for '@title': noteError as text.
ValuesChange note to blank.Change note to blank.
Decisions & LoopsIf note in lowercase is noneIf note in lowercase is none
Yes
ValuesChange note to blank.Change note to blank.
No
No steps
TextShorten note to 220 characters and save it as note.Shorten note to 220 characters and save it as note.
TextExtract all matches from note and save it as noteFigures.Extract all matches from note and save it as noteFigures.
TextExtract all matches from meetingFacts and save it as factFigures.Extract all matches from meetingFacts and save it as factFigures.
ValuesSet noteIsSourced to true.Set noteIsSourced to true.
Decisions & LoopsFor each noteFigure in noteFigures:For each noteFigure in noteFigures:
Decisions & LoopsIf factFigures doesn't contain noteFigureIf factFigures doesn't contain noteFigure
Yes
ValuesChange noteIsSourced to false.Change noteIsSourced to false.
No
No steps
Decisions & LoopsIf noteIsSourced is noIf noteIsSourced is no
Yes
ValuesShow in the output: Dropped the preparation line for '@title': it stated a figure the calendar entry does not.Show in the output: Dropped the preparation line for '@title': it stated a figure the calendar entry does not.
ValuesChange note to blank.Change note to blank.
No
No steps
ValuesSet section to clock title.Set section to clock title.
Decisions & LoopsIf guests isn't emptyIf guests isn't empty
Yes
ValuesChange section to sectionChange section to section With: guests.
No
No steps
Decisions & LoopsIf note isn't emptyIf note isn't empty
Yes
ValuesChange section to sectionChange section to section note.
No
No steps
ListsAdd section to the end of sections and save it as sections.Add section to the end of sections and save it as sections.
ValuesAdd 1 to written.Add 1 to written.
ValuesSet message to blank.Set message to blank.
Decisions & LoopsIf sections is emptyIf sections is empty
Yes
ValuesChange message to Nothing booked for today.Change message to Nothing booked for today.
No
ValuesChange message to Your day, todayChange message to Your day, today sections joined by a blank line.
Decisions & LoopsIf skipped is greater than 0If skipped is greater than 0
Yes
ValuesChange message to messageChange message to message Left out: skipped as text calendar entries with no start time.
No
No steps
TextShorten message to 3900 characters and save it as message.Shorten message to 3900 characters and save it as message.
Decisions & LoopsIf message is blankIf message is blank
Yes
Decisions & LoopsStop and report a problem: There was nothing to send, so no message went out.Stop and report a problem: There was nothing to send, so no message went out.
No
No steps
TelegramTelegramSend a message to chat telegramChatId.Send a message to chat telegramChatId.message