A Streamlit-based web application that analyzes multiple .ics calendar files and identifies common free time slots across all participants.
-
Upload up to 10
.icscalendar files -
Automatically detects the overlapping date range across all calendars
-
Supports recurring events (e.g. weekly meetings)
-
Filters out:
- Transparent events (
TRANSPARENT) - Cancelled events (
CANCELLED)
- Transparent events (
-
Configurable minimum meeting duration:
- 30 minutes to 3 hours
-
Calculates common free time slots within working hours (08:00–17:00)
-
Outputs results as:
- Interactive table
- Downloadable CSV file
- Each uploaded calendar is parsed and expanded (including recurring events).
- The app determines the intersection of all calendar date ranges.
- Busy time intervals are extracted and merged.
- Free time windows are computed for each day.
- Only time slots that satisfy the minimum duration requirement are returned.
You have multiple team members' calendars and want to find a meeting slot:
- Person A: Jan–Jun
- Person B: May–Sep
👉 The app automatically evaluates only the overlapping period (May–Jun) and finds all possible meeting slots.
Clone the repository:
git clone https://github.com/EliValLoc/appointment_finder.git
cd appointment_finderInstall dependencies:
pip install -r requirements.txtOr manually:
pip install streamlit pandas icalendar recurring-ical-eventsRun the Streamlit app:
python -m streamlit run streamlit_calender_finder.pyThen open the app in your browser and:
- Upload your
.icsfiles - Select desired meeting duration
- Choose date range (auto-limited to overlap)
- Click "Freie Zeitslots berechnen"
- Default timezone:
Europe/Zurich - Working hours:
08:00 – 17:00 - Weekends are excluded
- All processing happens locally in the app session
- No calendar data is stored or transmitted externally
- Accuracy depends on the correctness of the
.icsfiles
- Generate all possible start times within free windows
- Support for custom working hours
- Timezone auto-detection per calendar
- UI improvements for large datasets
Built with the help of OpenAI's GPT models.