Internal (B2E)Cross-Venue Workforce Scheduling System
Scheduling that meant contacting more than 100 employees one by one, replaced by one notification and online submission
Available slots are entered by employees directly and HR handles only exceptions; clock-in, overtime and anomaly reporting connect to the same flow.
Source DAOS-Sport/Workforce-Scheduling
- Outcome
- One notification and self-service entry replace contacting more than 100 employees one by one; availability collection estimated to save at least 70% of the time
- Role
- Taken over from a prototype that held only empty data: connected real employee data, GPS clock-in, LINE identity mapping and push notifications
- Period
- Launched 2026.02
- Tech
- React · TypeScript · Express · PostgreSQL · Drizzle ORM · LINE LIFF · LINE Messaging API
Problem Scheduling on paper and in Excel: availability asked one person at a time, then typed in by hand
Scheduling used to run on paper and Excel: each person was asked for available slots and the answers were typed in by hand. HR had to send private messages one by one before the roster could be gathered.
Role Taken over from an empty-data prototype, connected to real data and clock-in
Taken over from an existing prototype, which at that point held only empty data. Connected real employee data, built LINE GPS clock-in, used the database to map LINE identities, and built LINE push notifications.
Clock-in results are wired into overtime, anomaly reports and missed-clock-in reminders, and 8 read-only internal export APIs were added. Responsible for day-to-day maintenance after launch.
User flow Employees submit slots from LINE, HR assigns shifts in one place
Scheduling:
- Employees enter and log in from LINE.
- Available slots and preferences are submitted online.
- HR assigns shifts in one place; employees receive roster reminders, and managers can view the cross-venue roster.
Clock-in on arrival:
- Enter from the LINE clock-in entry point: the clock-in page or a LINE location message.
- Share the current location to clock in by GPS.
- View the clock-in result on a page in the scheduling system.
The system collects and consolidates; scheduling decisions rest with HR.
LINE integration Login, submission, GPS clock-in and push connected to LINE
Employees sign in and submit available slots from LINE; on arrival, clock-in is by GPS through the LINE clock-in page or a location message; roster reminders and missed clock-in reminders go out as LINE push messages.
Impact One notification replaces contacting more than 100 employees one by one
One notification and self-service entry by employees replace contacting more than 100 employees one by one. HR no longer has to send private messages one by one to collect rosters and handles only exceptions; managers can view the cross-venue roster directly.
For the preference-collection step, a comparison of the old and new processes estimates time savings of at least 70% (an estimate from process comparison, not formal timing).
Technical decisions Clock-in distance computed once, on the server only
Employees clock in from different entry points, so where should the distance check live?
The LIFF clock-in page and LINE location messages both call the same clock-in function. LINE OA BOT does no distance calculation; it only forwards location messages to the scheduling system. Distance is computed once, on the server only, and the front end only displays the result. This clock-in function has 15 test cases.
After launch Fixed clock-in distance errors and payroll statistics
- 2026.08|Fixed incorrect clock-in distance. Distance had been computed as 433 meters, which did not match the map location. Coordinates of all venues were checked one by one, the clock-in distance check was rewritten, and failure logging was added so a failed check no longer disappears silently.
- Same month|Fixed payroll statistics not matching the roster. Hours are now configurable in the back office instead of hard-coded.
Scale After takeover: GPS clock-in, 6 push types and 8 export APIs
Completed after takeover: LINE GPS clock-in, 6 types of LINE push notification, 8 read-only internal export APIs; the clock-in function has 15 test cases.
Whole system (prototype included, counted from the GitHub main branch): 148 API routes, 27 database tables, 24 backend modules, 28 test cases.
The 6 LINE push types: rules to be read, tomorrow's roster, missed clock-in, next week's roster, last week's lateness report, available-slot reminder. The 7 clock-in-related tables: clock-in, make-up clock-in, overtime, anomaly report, missed clock-in notification, hourly wage setting, off-site outing.
Source code: DAOS-Sport/Workforce-Scheduling.