It sounds like you have a solid setup with Vapi and Make, and you're very close to achieving your goal! For the JavaScript logic inside Make, the general approach would be to:
1. Sort your day's events by start time.
2. Add your working hours as the first and last "events" of the day to serve as boundaries.
3. Loop through the events, and for each gap between the end of one event and the start of the next, check if it's long enough for the job duration plus buffer.
4. Collect up to 3 of these valid gaps and format them as time slots.
If you haven't already, try representing each event as an object with start and end times (in a consistent format), and use simple comparisons to find gaps. Once you detect a gap that's long enough, push it to an array of available slots. When you have three, you can stop the loop and return them.
You're definitely on the right track, and with a bit of iteration on the JS logic, you should be able to get those time slots formatted and sent back to Vapi!