The people you need
Required participants must meet their attendance rule. If they can’t, the time is blocked. A high score never overrides that.
Open source · Runs on your machine · Read-only
Everyone matters. Not everyone needs the whole hour. Find meeting times that respect both—and see exactly why they work.
Working example
Change who’s required, their weight, or how long they need to join. The real search engine does the rest, right here in your browser.
For example: Alex and Blair are required. Casey joins the first 15 minutes; Devon joins the last 15. Unknown calendars never count as free.
Fictional people and simulated calendars. No account, credentials or calendar API calls.
How it decides
Required participants must meet their attendance rule. If they can’t, the time is blocked. A high score never overrides that.
Optional participants improve coverage when they can join. Give each person a relative weight to reflect what matters.
An unreadable calendar is unknown, never free. The uncertainty sits next to the conflicts instead of hiding behind a promise.
coverage = available weight ÷ total weight × 100A satisfied partial rule contributes its full weight.
Partial attendance
That can be enough. Choose whole-meeting, first-minute, last-minute, or continuous-percentage attendance for each person.
Two separate 15-minute gaps don’t count as 50% of an hour. The free block has to be continuous.
When nothing fits
See blocked alternatives and the people or rules that block them. Adjust the conditions yourself. Meeting Finder never quietly relaxes a requirement.
It reads free/busy information. It doesn’t create events, send invitations or messages, assume conflicts can move, or store calendars in your browser.
Your machine, your existing login
Run a credential-free demo first. For your actual audience, Meeting Finder uses the Google Workspace CLI’s saved authentication.
Local web app · CLI · HTTP API · Agent skill
Setup guidegit clone https://github.com/samaluk/meeting-finder.git
cd meeting-finder
mise install
mise run install
bun run build
bun run start -- serve --demo --port 4310
Then open 127.0.0.1:4310. Demo mode makes no Google calls.