// 25 Jul 2024
Update the design review scheduler to better match our actual schedule and add key features for managing slots.
First, correct the session times - we only have reviews on Tuesdays and Thursdays:
- Tuesdays have 3 sessions: AX/Workflows/Insights/AI (2:30-4:30pm Paris time), Search/Activation/Tel/Bots (10-11am PT), and CPX/DS/DP/Integrations (1-2pm PT)
- Thursdays have 1 session: Global/All Pods (8:30-9:30am PT)
All times should automatically display in the viewer's local timezone - detect their timezone and convert all session times accordingly. Don't show multiple timezones, just show what time each session is in their local time. For example, someone in Buenos Aires should see all times converted to their timezone without any reference to PT or Paris time.
Add the ability for designers to cancel their own bookings. When someone views a slot they've booked, they should see an option to remove themselves. This should free up the slot immediately.
Implement a waitlist feature where designers can join a queue for fully booked slots. If someone cancels, the system should automatically assign the slot to the first person on the waitlist. Show the waitlist count on booked slots (e.g., "2 on waitlist") and let people see their position when they join.
Since reviews are in 15-minute increments but designers often need more time, add a duration selector when booking. Let designers choose how many consecutive 15-minute slots they need (1-4 slots, showing as 15, 30, 45, or 60 minutes). The system should check availability for all requested consecutive slots and book them as a group. Display multi-slot bookings as a single continuous block in the UI.
These features address our main pain points: the inflexibility of the Google Doc for cancellations, the frustration when popular slots fill up with no recourse, and the awkwardness of booking multiple separate slots for longer reviews.
Make some UI improvements to simplify the interface and improve clarity for our global team.
Remove the subtitle text "Book your design review slots across our global team sessions" from the page header - we'll add better copy later but for now just the main title is enough.
Remove the total slot count that shows availability across all sessions. Keep the individual slot counts for each session tab since that's what designers actually need to see when booking.
Since our team is distributed across 4 main locations, display the session times in all relevant timezones with country flags for clarity. Show Paris π«π·, Santiago π¨π±, Buenos Aires π¦π·, and SF πΊπΈ times for each session. This helps everyone quickly see when sessions occur without doing mental timezone math.
Ensure consistent time formatting throughout the entire interface - all times should display in 12-hour format with AM/PM (e.g., "2:30 PM" not "14:30" or "2:30p"). This includes the timezone display, slot times, and anywhere else times appear. The consistent format makes it easier to scan and reduces confusion.
Fix two issues with the current implementation:
First, simplify the cancellation flow by removing the name verification requirement. For now, allow anyone to cancel any slot with just a confirmation click - we'll add proper authentication later to prevent people from deleting others' slots. This makes testing easier and removes friction.
Second, correct the timezone handling for Session 1 (AX/Workflows/Insights/AI). This session runs from 2:30-4:30 PM Paris time, but it's currently showing the wrong times. The system should store this session's schedule in Paris timezone (Europe/Paris) and then convert it to each viewer's local timezone. For example, if someone in SF views it, they should see their local SF time (which would be 5:30-7:30 AM PT when Paris is at 2:30 PM). The multi-timezone display should show the same slot converted correctly to all 4 timezones.
Make sure the timezone conversion is working properly - Session 1 should be defined as Paris time in the backend, then converted for display based on the user's location.
Fix the slot cancellation feature which is currently returning a 500 error. When someone clicks to cancel a slot, the server is failing to process the request.
Debug the DELETE endpoint in server.ts to find why it's throwing a 500 error. Check that:
- The endpoint is correctly extracting the slot ID from the request
- The database query to update the slot is properly formatted
- All the fields being cleared (designer_name, topic, review_type, xfn_partners) match the database schema
- The waitlist logic (if implemented) isn't causing the error
- The response is being sent correctly after the database update
Also check the frontend is sending the request to the correct endpoint URL and the slot ID is being passed properly. Add error logging to help identify where the cancellation process is failing.
The cancellation should simply clear the booking details and set the slot status back to 'available', then return a success response.
// 29 Jul 2025
Update the cancellation flow to give designers more flexibility when they've booked multiple consecutive slots.
Currently, canceling removes the entire booking. Instead, when someone cancels a multi-slot booking, show them each 15-minute segment they've reserved and let them select which parts to cancel using checkboxes. This way, someone who booked 45 minutes but only needs 30 can free up the extra time without losing their spot entirely.
The cancellation modal should clearly show the time ranges for each slot in the booking. Default to selecting all slots (full cancellation) but allow users to uncheck slots they want to keep.
Ensure the system maintains booking continuity - if someone cancels middle slots from a longer booking, handle that appropriately. The remaining slots should still function correctly whether they're continuous or now separated.
This solves a real pain point from our Google Doc where people would sometimes hog time slots because they couldn't easily adjust their booking duration after realizing they overestimated their needs.
I'm still not seeing the checkbox functionality for partial cancellations when I test canceling a multi-slot booking. When I click cancel on a booking that spans multiple slots, it's still showing the old cancellation flow without any checkboxes to select which slots to cancel.
Can you check the implementation again? Specifically:
- Verify the cancel modal is actually showing checkboxes for each slot in a multi-slot booking
- Confirm the backend is tracking which slots belong together as one booking
- Make sure the frontend is passing the selected slots to the backend when confirming cancellation
- Test with a 30 or 45-minute booking to ensure multiple slots appear with checkboxes
Walk through the actual code that should be handling this feature and identify what might be missing or not connected properly.
The scheduler has some bugs and could use a design refresh to make it more polished and professional.
First, investigate why duplicate time slots are appearing - there should only be one slot per 15-minute increment. Find and fix the root cause, then clean up any existing duplicates.
For the design improvements, make the interface feel more modern and sleek. Consider:
- Better visual hierarchy to make important information stand out
- Smoother transitions and micro-interactions
- More sophisticated typography and spacing
- Refined color usage beyond just the basic review type badges
- Improved layout that reduces visual clutter
- Better mobile responsiveness
The goal is to evolve this from a functional prototype to something that feels like a polished product our design team would be proud to use daily. Keep the core functionality working while elevating the overall experience.
Focus on making common tasks (viewing available slots, booking time, managing bookings) as intuitive and visually appealing as possible.