- Log in (already implemented)
- Post time availability (backlog: # of interviews)
- Copy Interviewing.io design
- Utilize
30 minutehour intervalsas opposed to hourly - Able to modify availability
- Receive Email once an interviewee signs up for a slot
- No overbooking (2 interviews at same time)
- Look into Mutex/Locks for ruby if necessary
Look into simplybook.me api(too expensive)
- No overbooking (2 interviews at same time)
- Can view upcoming matches/interviews on dashboard
- Calendar
- Table that represents the aggregate data of Interviewer Availability
- Used for interviewees to view available timeslots
- Show a week in advance
- Reset at 00:00 -> delete current day and add day at end of table
- i.e. delete sunday, add next week's sunday at end of current week.
- Reset at 00:00 -> delete current day and add day at end of table
- 7 x 24 hour slots
- Every entry will have a counter representing # of interviewers for that slot
- if 0: unavailable; if > 0: available
- Update on every availability update by inc/decrementing the counter
- decrement if no available persons
- increment if new available person
- User Interview Data (modify existing table?)
- Store upcoming interviews to view on dashboard
- Store past interviews so user can look at past progression/feedback
- Store availility time slots to be pulled to Calendar model
- Store Max Interviews a week
- Store two counters current_week and next_week to keep track of limits
- Users may specify how many interviews they can be scheduled for within varying amounts of availability
- e.g. 1 interview on Sunday anytime between 2-5 pm
- e.g. 2 interviews this week any day during 10-11 am
- Should postings be public? - Yes (for interviewees to see)
- Users can just manually match (sign up for interviewer's slot)
- If multiple interviewers are available during same time slot and someone signs up for that slot how do we decide who to pair up with?
- Random?
- Least paired with (would require counters for each interviewer)
- Users may only sign up for a limited amount of mock interviews per week (as to not have someone take all slots)
- Perhaps some load balancing algo needed
- Limit to 2 at a time?
- Time data abstraction (library?)
- Simpler data is better for manipulation
- Interviewer vs. Interviewee different submission pages
- Interviewer:
- How often? "We'll never schedule more than x a week"
- When? "I'm available from y to z on w"
- Upcoming unavailable Dates: used to mark off days
- Interviewee:
- Select 1 hour slot from interviewers' availabilities
- Interviewer:
- Central data table for all interviewer availabilities
- This model will be used to display slots(current postings) for interviewees
- Bookings modify this table and subsequently individual interviewer data
- Individual data tables for each user for their specific availabilities (We probably won't need this)
- This model will be used to display slots(current postings) on interviewer's dashboard
- Data here is pushed to central data table
- Bookings are pulled from central data table for updates
- Individual data tables for each interviewee that store their upcoming interviews
- Data here is pushed to user dashboard to view upcoming interviews
- Data received from controller when user submits a successful interview request
- Form for POSTing availability data to server
- Checks if interviewer is already booked at that time
- Form for POSTing request data (when interviewee wants an interview) to server
- bookSlot (for interviewees)
- Books a slot for an interviewee
- Modifies slot table
- Modifies upcoming interview table
- Returns success or fail
- Removes slot from slot table
- pullAllAvailability (for interviewees)
- Pulls data from slot table for all availabilities for interviewees to see when choosing an interview slot
- pullAvailability (for interviewers)
- Pulls data from slot table for posted slots for dashboard display
- pullInterviews (for both)
- Pulls data from upcoming interview data table for upcoming interviews for dashboard display
- cancelInterview (for both)
- Delete interview from upcoming interview table
- Attach notification to other party's data table to display cancellation on dashboard
- Send email for cancellation
- (optional) attach message as to why interview is cancelled
- updateAvailability (could possibly just reuse pushAvailability)
- Modify slot table
- Can add new ones or delete old ones
- Dashboard
- Submit (interviewer)
- Submit (interviewee)
- SubmitCancellation (both)
- Successful submit (interviewer) (not sure if 2 or 1 successful submit page needed yet)
- Successful submit (interviewee)
- Successful cancellation (both)
- Fail(submit/cancel) (both)
- Will need to do further research on algorithms before I fill this in
- WIP/TBD/OMW/DMR/ETC
- Users cannot be booked for multiple interviews at the same time
- Users can only be booked with another of the opposite type (interview/interviewee)
- Should users only be allowed 1 match at a time?
- Makes matching making simpler
- Perhaps give prompt for user to "Continue searching for additional matches" to schedule more than 1 interview at a time
- This would allow user to redefine their time availability if they wish (don't want 2 back-to-back interviews; or even worse 2 back-to-back with the same partner)
- Need to ensure no one gets left out
- Pair in a way s.t. everyone (optimally) gets a match
- Optionally ensure variability
- Match users with as many different users as possible
- More coverage in subjective feedback and interview/er/ee styles
- Enables better growth feedback (bigger difference after 1 week of practice as opposed to 1 day) between same pairings
- WIP/TBD/OMW/DMR/ETC
- WIP/TBD/OMW/DMR/ETC