Any professional who has clients knows that one of the most annoying things about the job is scheduling. When a client asks for an appointment time that interrupts another client, a time-consuming, energy-draining, reputation-risking game of telephone may ensue with the professional in the middle. But, what if this didn't have to be your responsibility? What if clients could figure out their schedule conflicts on their own?
Tailored Tutoring is my friend's math tutoring company. She came to me with a business problem to solve: her student's surprise scheduling conflicts with other students.
My client's company name proudly proclaims that she tailors her schedule to her student's needs. When a student asks to reschedule to a time that conflicts with another, she likes to accommodate.
Unfortunately, this entails long contacting, waiting, and often messy shuffling around multiple appointments.
Student #1 (S1) who is asking to reschedule their appointment.
Tailored Tutoring (TT) who is the tutor being asked and my client.
Student #2 (S2) who is the student being asked by TT to change their appointment since S1 would like it.
Beyond the main problem of wasted time, there are other reasons my client wants this problem solved.
Once S1 requests a schedule change, TT then has to reach out to S2 and wait for a response. Since my client and her students communicate over text, this can take some time. Once TT happens to hear back from S2, she then has to reach out to S1 again, which will mean more waiting for my client.
All this back and forth cost my client's business about 30 minutes.
My client worries about how she appears professionally to her students and their parents when she reschedules with them.
There is a domino effect where, if one student goes, they all seem to go. Once one misses an appointment, they may conclude that they no longer need her services and then tell their friends.
Due to the time-consuming and unpredictable nature of this problem and her limited free time, my client can currently only take so many students at a time.
Students must remain anonymous amongst each other. Her business runs best when her students don't know each other by name.
This product needs to be for my client and her students, both of whom are PC users with occasional tablet use. A web-based app would give access to all of these evenly.
My client loves Google Calendar, and I'm not going to take that away from her. Rather than giving her another Google Calendar, I wanted to provide a product to optimize her experience there.
I knew I wanted to build an appointment-tracking app of some kind for my client. I wanted to see how other appointment apps perhaps dealt with this problem. I studied the products below.
I discovered that I needed to build a narrow product focused on simplifying communication between my client and her students when scheduling conflict. Since my client liked Google Calendar, I can make a product that talks to it via an integrated plugin rather than making another Google Calendar. This solution seemed more straightforward.
I took some time to understand these competitors' system flows to see how their solutions could pertain to my client's problems, if at all.
Once the business owner is alerted on the app that a customer wants to change an appointment time that interferes with another customer's time, they may choose to reach out to other customers to ask for an appointment change.
The business owner is the unfortunate middleman who has to play a telephone game between their two customers. The business owner is notified of the problem first and has to inform the second customer.
There is no reason for the business owner to be at both ends of this chain of events. What if I made a product that took that middleman spot instead of my client?
Through my new appointment-scheduling product, any request to change an appointment that conflicts with another student will now be sent to S2 to be approved first, saving my client the telephone game.
With S2 as the first decider, my client is only alerted if S2 can't make the appointment change. This will cut down the amount of time this problem takes by a third, if not more.
She also is no longer the one reaching out to S2. Rather than being asked by TT if they would mind moving things around for the sake of their business, S2 is now being asked if they would mind helping out an anonymous fellow student. This saves my client from having to inconvenience her students by reframing the request helpfully.
Santa Cruz, CA
Sophomore in High School
She has an unpredictable and hectic schedule due to her extra-curricular activities and a massive amount of homework. Unfortunately, this causes her to have to reschedule with my client about twice a month, and she feels terrible every time she has to do it.
"I feel bad for having to ask to reschedule with my tutor; I know it makes things difficult for her."
Know her next appointment.
Being able to change appointment times.
Being able to cancel an appointment.
Having to wait for her tutor to confirm her appointment.
She was feeling wrong about inconveniencing her tutor.
I ran a survey using Google Forms and found participants on Facebook, LinkedIn, Reddit, and SurveySwap. I screened out people who have either never hired a business owner before or were not business owners themselves.
To learn how often business owners can expect this problem to occur.
To validate my assumption that students are less annoyed when asked to change their appointment from a fellow student rather than directly from their tutor.
How often can we expect this problem to occur?
About once per two weeks per student. She typically has six students at a time, that is about once every other day.
How much do students mind moving their schedule around for their tutor?
They were a bit annoyed.
On average, they rated their annoyance as a 5/7.
How much do students mind moving their schedule around for fellow students?
On average, they rated their annoyance as a 3/7.
I took advantage of the fact that my client had real students for me to interview. I interviewed four of them over the phone.
To determine how welcome students feel to ask for an appointment change.
To validate my assumption that students are less annoyed when asked to change their appointment from a fellow student rather than directly from their tutor.
How bad do students feel when they reach out to change their schedule?
They feel guilty and rated their comfort level 2/7.
They feel irresponsible for asking.
How does a student asking another student to change their schedule effect them.
They felt helpful in this case and rated their comfort level 4/7.
"I don't mind helping out other students."
I wrote some user stories to gain more empathy for what all parties are going through, understand the problem more profound, and make sure I was considering all possible user needs.
Update my business hours
Add a student
Change a student's appointment
Request an appointment
Approve/Deny a student request
Propose new time to student
Request a specific appointment time
My business days
My business hours
Which business days I would prefer to work if I have open days
An 'overflow day' where student appointments may overflow from those preferred business days
My cancellation policy
My default appointment length
Change an appointment
Cancel an appointment
Request a new appointment
See my upcoming appointments
See my appointment history
Quickly choose a time that will work for my tutor without having to think about a time myself
Edit my login information
Edit my notification settings
Edit my email
Edit my phone nymber
My goal with the user flows was to understand further the specific actions that Tailored Tutoring and its students would need to take. Just like with everything else, I separated TT's side from the students' side.
Since the only users of this product will be Tailored Tutoring students, it makes the most sense for TT to set up their students' accounts. TT would then email each student a secure link to their profile. Once students entered their account, they could then set up their username and password.
Let's see how the user flow changes between students.
S1 is the one requesting to change their appointment. Their experience depends on whether their request was approved first by S2 and then by TT.
If it were approved, S1 would then receive a confirmation that S1 accepted their request. If it weren't, the product would prompt them to try again with some recommended times that should work based on TT's settings on her side.
S2's user flow is simple since they are now the first decider in the chain of command. As such, when they receive a request to change their appointment, they either say yes to a new appointment or say no to keep their old one.
When a student asks to change their schedule, there is either a scheduling conflict with another student or not.
The product reaches out to S2 with options if they want to help out. If S2 says yes, they choose a new time, and a notification is sent to TT letting them know about the changes.
The request will go directly to TT as it currently does.
If there is a conflict, my client will have a 'pending' request in her 'requests' section. Once she receives this request, she can either approve or decline both proposals.
The product sends a notification to both students with their new appointment times.
The product will write S2, thanking them for the change not being needed with confirmation that their previous appointment still stands.
The product will send available appointment times to S1 to avoid another conflict entirely. My client can also manually tell the student a couple of times to work for her directly if she likes.
As you may see by now, this is a bit of a complex problem. As such, I decided to create a system flow of my proposed product to understand all the moving pieces.
I like my highs and lows of my journey maps to be my empathy map which gives my user quotes the dimension of time, which helps me understand where my user experiences the most friction.
Currently, my client needs to go through quite a bit to be the Tailored Tutor. The beginning of her journey is a lot of frustration due to wait time and awkward conversations. She only feels better when this chaos begins to be over.
Let's take a look at how I can help.
By letting the product take the middleman position for my client, I have eliminated her time-consuming game of telephone. She now only receives requests after both S1 and S2 have agreed to new times.
The product I am making will save my client from having to:
I started sketching the student's side first since their functionality is going to be the one that will need the user testing. I will let the student's homepage inform me how I design the administrator version for TT.
I began sketching a 'Crazy 8's' exercise where I spent exactly one minute on each home screen designing and redesigning the students' homepage.
My client needs to see how long her students have been waiting to hear from her. The longest-waiting student will be ordered first and turn red to show my client that there is an urgent matter to which she needs to attend.
Request conflicts are on the left, and requests with no disputes are on the right.
I decided to nest the alternate appointment times in an 'Edit' button to simplify the homepage and quickly notice their next appointment for the students.
Some weeks, my client's life can get as unpredictable as her students' wants to reserve the final say for appointment changes because of her. However, some weeks are more predictable and can afford a much simpler user experience for everyone, as long as it obeys my client's cancellation policy and scheduling parameters.
In response, I added an auto-approve toggle for these slower, more short weeks. With it on, the product automatically approves requests that obey my client's schedule.
With auto-approve off, my client still needs to give final approval of any schedule changes.
With auto-approve on, my client has nothing to do. When a student requests to change their appointment to another time that doesn't interrupt my client's schedule, it will be approved automatically.
I presented three branding directions to my client, and we decided that the direction I called 'In-Progress' was the most appropriate choice.
Since students felt uncomfortable asking for schedule changes from my client, I thought it necessary that the branding feel welcome to change.
With this in mind, we landed on a brand personality with an 'in-progress kind of feel to remind users not to stress about moving plans around. Things change! Embrace it! Traditional planners have a particular form of child-like creativity where you never worry if things don't come out perfect.
The design has a human-hand feel combined with straightforward typography and colors to help users use this product quickly to make this connection. And, if possible, to not stress about it in the process.
My client deserves a logo that champions her ability be tailor herself exactly to her student's needs. I felt a bull's eye was appropriate to symbolize that perfect appointment slot she is always trying to find for her students.
The muted blue-green primary brand color provides a balance of serenity and playfulness. These colors paired well with some attractive secondary colors that can bring some colorful interest to the experience. Many studies show that bright colors help keep teenagers on the page.
One of the first things I do when creating a design system is to do a contrast check with the most challenging-to-read element. For this, I usually choose a primary button I know the product will need.
My buttons use the blue-green brand color background with white type on top that never reduces any further than 22pt on-screen or 18pt on mobile.
I chose colors that were not too bright to reduce eye strain but were still exciting and inviting.
I also chose an almost black. Pure black is hard on the eyes, so I chose a very dark grey short for my copy.
I got back on ZOOM calls with three of her students I had previously interviewed in order to test the product.
*My client rather her students reschedule than cancel. I answered this ask by nesting the cancel option in the 'Change' button pop-up window. As my client put it, "canceling an appointment now seemed to be an appropriate amount of difficult for my students."
Receiving a request from another student to change their appointment is a bit of a unique experience. For this reason, I added a section to the user testing that included a prototype of a PC desktop where a notification pops up asking them if they would mind helping out a fellow student by accepting a new appointment time.
When my client has auto-approve off, an essential piece of information to convey to S2 when they accept another appointment time will still need to be approved by TT. To clarify, I added a prominent red warning box telling S2 that there will be a short waiting for her tutor to confirm.
With it auto-approve on, the change would go through as long as the request doesn't violate my client's cancellation policy. S1, S2, and TT will then get final confirmations of new appointments.
My client and I are currently embarking on a journey to make this product real and functional. We need to think about background security and app integrations.
Work with a backend developer to finalize site and make sure it is secure.
Use Firebase for background security and Usability Hub to maintain UX user feedback after product launches.
Introduce other tutors to the product.
Look beyond tutoring. Any professional who would like to accommodate their client's scheduling needs can be used this product which needs to remain anonymous amongst each other. These professionals include doctors, lawyers, therapists, personal trainers, and a myriad of others.
[This app made me feel] relieved because I know that there is a way for me to contact other students easily and quickly if I'm feeling stressed out and I can't do a certain time.
—Tailored Tutoring testing participant