Automatically discover free time between calendar events and get AI-powered recommendations for nearby activities based on weather, travel time, and your Notion preferences via Slack.
This agent works seamlessly with these platforms to deliver powerful automation.
Create, read, update, and delete Google Calendar events
All-in-one workspace for content and collaboration with powerful database and pa...
Leverage OpenAI's powerful language models to generate text, answer questions, a...
Send messages, manage channels, and automate workflows in Slack workspaces
This intelligent Gap Time Concierge workflow transforms those awkward time gaps between meetings into productive, enjoyable micro-experiences. Every 30 minutes, it automatically checks your calendar for upcoming appointments, calculates available free time, retrieves weather conditions at your destination, and uses AI to suggest personalized activities—whether you have 20 minutes or 2 hours to spare. Instead of scrolling through your phone or arriving too early, you'll receive curated recommendations for nearby cafes, parks, coworking spaces, or activities perfectly matched to your preferences and the current weather.
Key benefits include:
Perfect for: Busy professionals with back-to-back meetings, sales representatives traveling between appointments, consultants working across multiple client sites, or anyone who wants to make the most of their time between commitments.
This workflow is designed for time-conscious professionals who:
Whether you're a consultant, sales professional, freelancer, executive, or remote worker who hot-desks across the city, this agent acts as your personal time optimization assistant.
Why it's needed: Stores your personal preferences, favorite activity types, dietary restrictions, work styles, and location preferences that inform the AI's recommendations.
Setup steps:
secret_)Why it's needed: Retrieves your upcoming calendar events to identify gaps in your schedule and destination locations.
Setup steps:
Configuration tip: Ensure your calendar events include location information in the "Where" field for accurate travel time and weather calculations.
Why it's needed: Powers the AI recommendations engine that analyzes your preferences, available time, weather conditions, and nearby options to generate personalized activity suggestions.
Setup steps:
sk-) – you won't see it againgpt-4o-mini for cost-effective, fast responsesCost estimate: With 30-minute checks and typical usage, expect $3-8/month in API costs.
Why it's needed: Delivers your personalized activity recommendations directly to you via Slack message, ensuring you see suggestions in real-time.
Setup steps:
The Schedule (Every 30 min) node initiates the workflow automatically.
30 and Unit to minutes
The Configuration node stores key settings used throughout the workflow.
Add these configuration values:
{
"lookAheadMinutes": 120,
"minimumGapMinutes": 15,
"travelBufferMinutes": 10,
"searchRadius": 2000,
"weatherApiKey": "YOUR_OPENWEATHER_API_KEY",
"googleMapsApiKey": "YOUR_GOOGLE_MAPS_API_KEY"
}
Parameter explanations:
API Keys needed:
Configure the Get User Preferences Notion node:
Configure the Get Next Calendar Event Google Calendar node:
primary for your main calendar or specific calendar ID{{new Date().toISOString()}} for current time{{new Date(Date.now() + $node["Configuration"].json.lookAheadMinutes * 60000).toISOString()}}
1 (we only need the next event)startTime
true (expand recurring events)Get Weather at Destination HTTP Request node:
GET
https://api.openweathermap.org/data/2.5/weather?lat={{$node["Get Next Calendar Event"].json.location.lat}}&lon={{$node["Get Next Calendar Event"].json.location.lon}}&appid={{$node["Configuration"].json.weatherApiKey}}&units=metric
Get Travel Time HTTP Request node:
GET
https://maps.googleapis.com/maps/api/distancematrix/json?origins={{$node["Get Next Calendar Event"].json.location.lat}},{{$node["Get Next Calendar Event"].json.location.lon}}&destinations={{$node["Get Next Calendar Event"].json.location.lat}},{{$node["Get Next Calendar Event"].json.location.lon}}&key={{$node["Configuration"].json.googleMapsApiKey}}
Configure the Calculate Gap Time function node with this code:
const now = new Date();
const nextEventStart = new Date($node["Get Next Calendar Event"].json.start.dateTime);
const travelMinutes = $node["Get Travel Time"].json.rows[0].elements[0].duration.value / 60;
const bufferMinutes = $node["Configuration"].json.travelBufferMinutes;
const availableMinutes = (nextEventStart - now) / 60000 - travelMinutes - bufferMinutes;
return {
json: {
availableMinutes: Math.floor(availableMinutes),
nextEventTime: nextEventStart.toISOString(),
travelMinutes: Math.floor(travelMinutes),
hasGap: availableMinutes >= $node["Configuration"].json.minimumGapMinutes
}
};
Has Sufficient Gap Time? condition node:
Boolean
{{$node["Calculate Gap Time"].json.hasGap}}
equals
true
Route by Weather switch node:
Configure cases:
{{$node["Get Weather at Destination"].json.weather[0].main}} equals Clear
{{$node["Get Weather at Destination"].json.weather[0].main}} equals Rain
Search Indoor Spots and Search Outdoor Spots HTTP Request nodes:
GET
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={{$node["Get Next Calendar Event"].json.location.lat}},{{$node["Get Next Calendar Event"].json.location.lon}}&radius={{$node["Configuration"].json.searchRadius}}&type=cafe|library|coworking_space&key={{$node["Configuration"].json.googleMapsApiKey}}
park|gym|walking_area
AI Recommendations OpenAI node:
gpt-4o-mini
You are a "Gap Time Concierge" assistant.
Based on the following information, suggest 2-3 specific activities the user can do:
Available Time: {{$node["Calculate Gap Time"].json.availableMinutes}} minutes
Weather: {{$node["Get Weather at Destination"].json.weather[0].description}}, {{$node["Get Weather at Destination"].json.main.temp}}°C
User Preferences: {{$node["Get User Preferences"].json.activityTypes}}
Nearby Options: {{$node["Search Indoor Spots"].json.results}}
Provide concise, actionable recommendations with:
1. Activity name and location
2. Estimated time needed
3. Why it matches their preferences
Format as a friendly Slack message.
0.7 (balanced creativity)300
Send Slack Notification node:
{{$node["AI Recommendations"].json.choices[0].message.content}}
Gap Time Concierge (optional):clock3: (optional emoji)Step 1 - Configuration Node:
Step 2 - Notion Integration:
Step 3 - Calendar Integration:
Step 4 - Weather & Travel:
Step 5 - Gap Calculation:
hasGap reflects whether gap exceeds minimumStep 6 - Conditional Routing:
Step 7 - Location Search:
Step 8 - AI Generation:
Step 9 - Slack Delivery:
Successful execution with gap time:
Successful execution without gap time:
Problem: "Database not found" error in Notion node
Solution:
Problem: "No events found" in Google Calendar node
Solution:
lookAheadMinutes provides sufficient time windowprimary if unsure)Problem: Weather API returns 401 Unauthorized
Solution: