A schedule is only as good as the availability it is built from. Most bad answers come from a bad question, so here is how to ask, what format to ask for, and how to clean up what comes back.
Scheduling looks like a puzzle about slots, but the hard part happens earlier: finding out when people can actually come. If a family writes "after school, not Wednesdays, sometimes Fridays", you have to turn that into times before anything can be placed. If a teacher says "I am pretty flexible", you have no constraint at all, and the schedule will find the edge of their patience one bad day at a time.
Every hour you spend making the form clearer saves several hours of follow-up calls. The goal of the form is simple: every answer should be something a person or a tool can read as one or more concrete windows, with a day, a start time, and an end time.
Teacher availability is a set of hard limits, and it needs more than a list of days. Ask for the days and the earliest start and latest end on each, the instruments they teach, the longest day they will accept including travel, and whether they have fixed commitments such as a second job or school pickup. Ask separately about days they would work only in a pinch, so you can treat those as backup instead of standard.
Also ask the things that never come up until they cause a problem. Does the teacher travel to homes or teach at a location, and from where do they start the day? Do they need a break at a particular time? Are there students they cannot teach, or students they strongly prefer? Write the answers down per teacher, in one place, before you touch a single family.
Ask for windows, never a single preferred time. "Mondays and Thursdays between 3:30 and 6:00" is a window a scheduler can work with. "Thursday at 4" is a request that fails the moment that teacher is busy. Ask for at least two windows, and for each family say clearly that wider windows are the best way to get a good teacher and a good time.
Beyond times, collect the fields that change which teacher or slot is possible: instrument, age or level, lesson length, a home address if lessons travel, siblings who should be scheduled together, and any teacher requirement the family has. Also ask whether lessons weekly or every other week suit them. If you run alternating weeks, the A/B week guide explains how to keep those straight.
The cleanest availability is structured: one answer per day, a start time, and an end time. A form with a row for each weekday, and two time fields per row, never produces an ambiguous answer. If you must use a single text box, show an example directly under it, in the exact shape you want.
The next best thing is consistent free text. Each window written as a day, then a time range, separated by semicolons, reads reliably: "Mon 3:30 PM to 6:00 PM; Thu 4:00 PM to 6:30 PM". Always include AM or PM, or use 24 hour times, because "4 to 6" could be a lunch break or a late dinner. Ask people to write "none" for days they cannot do, instead of leaving them blank, so a blank means the person skipped the question.
Most unreadable answers come from three things. Open-ended wording invites open-ended answers, so use structured fields wherever you can. Missing examples let people guess your format, so always show one. And a missing deadline lets answers trickle in forever, so set a date and say what happens to late replies.
Plan for the replies that still come back vague. Treat "to be decided" and "will check" as no availability yet, not as available any time, and put those families in a follow-up list with a date. Guessing at a vague answer is how a student ends up scheduled in a time their family never agreed to. A short reply such as "Which two afternoons could your child do between 3:30 and 6:00?" gets a usable answer far more often than another round of "please clarify".
When the answers come in, spend an hour on cleanup before any placement. Check that each family has at least one window long enough for the lesson length plus a few minutes. Look for windows so narrow that the student can only fit one slot on one teacher, and flag them as the hardest cases to place first. Merge duplicates, match teacher names that were spelled two ways, and link siblings so they are handled as one household.
This is also the moment to compare supply and demand. Add up the teacher hours open on each weekday and the student windows that fall on it. If forty students can only come on Thursday after 4:00 and your teachers have room for twenty, you have found the real scheduling problem in September rather than in the first week of lessons. The fall schedule guide shows where this step fits in the season timeline.
If you want a starting point, the availability form template lays out the fields and the answer format described above, ready to adapt. Use it as a spreadsheet or copy the questions into whatever form tool you already have.
Set the Tune works from availability windows: it imports a roster from CSV or DOCX, reads day-and-time windows from an availability column, and keeps placements inside them. Windows it cannot read, such as "check with mom", are set aside as not available yet instead of being guessed at. From there it matches instruments, keeps siblings together, and checks drive time at real traffic. You can see an example board on the demo.
Days and time windows with a start and end, instrument, lesson length, a home address if lessons travel, siblings, and any teacher requirement. For teachers, add their longest acceptable day and fixed commitments.
Several windows. A single preferred time fails as soon as that slot is taken, while two or three windows give a scheduler room to find a good fit.
A day, a start time with AM or PM, and an end time, such as Tue 3:30 PM to 6:00 PM, with multiple windows separated by semicolons. Structured fields with one row per weekday are even better.
Treat them as incomplete and send a short follow-up asking for specific days and times. Do not guess, because a guessed time is a lesson the family cannot attend.
Yes. It imports CSV and DOCX rosters and reads day-and-time windows from an availability column. Answers it cannot read are set aside as not available yet rather than guessed.