I hate forms and I must data entry
I tried three different UI models for staffing requirements. Two made me wince every time I had to test them. One finally felt like time, not paperwork.
SKEDA is not a data-entry-heavy application. The real work happens in the backend, where the solver crunches the numbers and builds a schedule that respects rules, availability, and coverage requirements.
But there is still a hard input: the weekly staffing requirements. I call this the timetable. It answers the question, “How many people do we need at each hour of the week?” Getting that into the system is unavoidable, and I spent more time than I expected figuring out how to make it feel humane.
The list input
The first version was a list input. Click +, fill in start time, end time, and headcount, repeat.
Time Blocks
It technically worked, but interacting with it hundreds of times felt horrible. The work felt like paperwork rather than planning. Maybe I should have moved on to something else, most users only need to enter a few timeblocks, they don't change that often either. But it really rubbed me the wrong way.
The spreadsheet attempt
My main competitor are spreadsheets, so I tried to imitate that. Rows for hours, columns for days, grid cells for headcount.
It looked familiar, but the experience was worse. Without true spreadsheet affordances like copy, paste, and fill, it did not improve the user experience. I did not want to rebuild a spreadsheet engine just to make the UI tolerable, so I scrapped it. But hours-as-rows and days-as-columns felt natural.
Week staff spreadsheet
Enter how many staff are required for each hour of the week.
| Hour | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|---|
| 08:00 | |||||||
| 09:00 | |||||||
| 10:00 | |||||||
| 11:00 | |||||||
| 12:00 | |||||||
| 13:00 | |||||||
| 14:00 | |||||||
| 15:00 | |||||||
| 16:00 | |||||||
| 17:00 | |||||||
| 18:00 | |||||||
| 19:00 | |||||||
| 20:00 | |||||||
| 21:00 | |||||||
| 22:00 | |||||||
| 23:00 |
The timetable
SKEDA already lives in time and dates, so I leaned into a calendar-style weekly view. The same day columns, but now requirements are blocks that stretch instead of numbers you type into every cell. It is still a grid, if you really squint.
With the timetable, a requirement becomes a gesture: draw a block, resize it, assign a role. You can see coverage at a glance. You can copy a whole day. Most importantly, it feels like planning instead of data entry.
It is not radically different from the spreadsheet idea, but the interaction model is. The moment I could drag a block to express “two people from 9 to 3,” I stopped dreading the setup step.