✓
Sudarvel
Product Designer
Case file 02
V1.0 · 2025
Turning a rigid, automatic-only attendance system into a roll call faculty can run in one tap per student.

Project: Roll Call Attendance
Product: Faculty attendance, Android and iOS apps · Digival
Role: UX / Product Designer · Year: 2025
01 Context
02 Process
00 / THE STORY
10:02 AM, before the app.
▶ CLICK THE BOOK TO TURN THE PAGE
00.1 Opening and TL;DR
I designed Roll Call around one principle: the app should follow the routine teachers already have, not ask them to learn a new one.
This is the story of that routine, the research behind it, the six decisions that shaped the screens, and the system it became.
TL;DR
Faculty could only take attendance through automatic modes: Bluetooth, Engager or Buzzer. When the room had poor coverage, a phone died or a guest student walked in, there was no clean fallback. Teachers went back to paper and typed it in later.
I designed a manual Roll Call mode that copies the paper register: call a name, tap Present, Absent or Late, then sign it off.
Result
▸
Live in the faculty Android and iOS apps
▸
500+ sessions completed with Roll Call
▸
One tap per student; anyone left blank is recorded Absent on finalize
▸
Late, excused, leave, permission and on-duty all handled in the same list
In production · 500+ sessions




Chapter 01 · The old way
One lecture, four moments where attendance slips
The lecture has started, but attendance comes first. Repeated marking makes it easy to lose track. There is no shared rule for late arrivals, so records are corrected from memory and mistakes carry forward.
01.1 The roll call ritual
Teachers call names, students answer, and a mark goes in the register. Everyone knows the rules without being told: answer when your name is called, silence means absent, walking in late gets a note in the margin.
That shared understanding is what I wanted to keep. The paper and the retyping were what I wanted to remove.
Secondary research · Medical college lectures, India
average minutes to call roll in a class of ~100
average total, including the lag before calling starts
lecture classes observed in the study
One hour-long lecture slot, minute by minute
Lag before calling
Calling the roll
Teaching time
Mahato and Suman, roll-number calling in MBBS and BDS lectures (2013). Close to a tenth of a one-hour slot goes to the register before teaching starts.
01.2 The rigid system
Faculty could start session attendance only through automatic modes: Bluetooth, Engager or Buzzer. These work well in many rooms. When they didn’t, the app had no answer.
Teachers ended up running two systems: the app, and a paper list on the side to catch everyone the app missed. Records were split, late arrivals had nowhere to go, and corrections became requests to admin.
Poor Bluetooth coverage
Device issues
Guest or visitor students
Small-room checks
Manual verification
Before · Automatic only
Start session
→
Mode fixed to Automatic
→
Students’ phones check in
→
Scan fails or misses students
→
Paper list, typed in later
After · Roll Call as a mode
Start session
→
Choose Automatic or Roll Call
→
Call names, tap ✓ ✕ ◷
→
Finalize and lock
→
Reports and student view
From the project brief: “Allow staff to mark attendance manually for in-person sessions, including combined sessions, as an alternative to the existing automatic modes.”
01.2a The version we shut down
Existing attendance report

SHUTTERED
1
A switch pretending to be a mark
Status was a toggle. Toggles read as settings, and on/off can only hold two answers.
2
“Assisted” meant nothing to faculty
A system word for how the record was made, shown where teachers expect a status.
3
Two signals that disagree
A red cross next to an orange switch that’s on. Blue, orange and grey switches with no legend.
4
Leave hidden in tiny text
The row stayed editable, so a teacher could overwrite approved leave by accident.
5
A rule that needed a footnote
“Final Attendance report will be calculated based on the selection.” If a screen needs this, the model isn’t clear.
6
No place for late
Counts covered Present, Absent and Leave. A student 20 minutes late had to become one of those.
Why it had to go
It recorded attendance. It didn’t let anyone take it.
The old screen was built for reviewing what the automatic modes captured, then patching it with switches. It had no idea of a teacher calling names in order and answering each one.
Rather than restyle the switches, we retired the screen and rebuilt the list around the register: three answers per row, words instead of codes, and system states that can’t be overwritten.
Before
Toggle per student · 2 states · icon + switch · leave editable · no late
After
✓ ✕ ◷ per student · 3 marks + 4 late levels · status in words · system states locked


01.3 Research approach
This was a re-design of a live feature with a tight timeline. I worked from secondary research, short conversations with the people around attendance, and an audit of the existing flow. I did not run formal usability tests in this round, and I say so plainly in the reflection.
Secondary research
Stakeholder conversations
Existing flow audit
Jobs to be done
Usability testing
01.3a What each stakeholder needed
Paraphrased from conversations
Session faculty
Mark the class quickly while students wait, and fix a slip without calling admin.
One tap per row. Every mark stays editable until finalize.
Attendance coordinators
Know how late a student was, and keep leave, permission and on-duty separate from absence.
Late levels. System states that the teacher sees but can’t overwrite.
Academic admin
A locked, final record that flows into reports, with retakes kept rather than overwritten.
A finalize step with counts, then lock. Retake history kept.
Students
See how they were marked and raise a request if it is wrong.
Student status sheet with every attendance taken in the session.
Product and engineering
Fit beside the existing automatic modes, and work for combined sessions.
Roll Call as a selectable mode. One list for merged sessions.
01.3b Secondary insights
Four findings that shaped the work
I1 · Time
~6 min
Calling a hundred names costs real teaching time
In 54 medical college lectures with around 100 students, roll call took 4 min 20 s on average, and 5 min 41 s once the lag before it was included.
So: every extra tap per student is multiplied by a hundred. The marking action has to be a single tap.
Mahato & Suman, Sch. J. App. Med. Sci., 2013
I2 · Stakes
75 / 80%
A wrong mark can stop a student from sitting an exam
Under NMC’s CBME rules, MBBS students need at least 75% attendance in theory and 80% in practical or clinical training. Below that, they can’t sit the supplementary exam.
So: marks must be precise and correctable, lateness needs a category, and the final record must lock.
Careers360, NMC CBME FAQ coverage
I3 · Failure modes
Fallback
Automatic attendance breaks in known, repeatable ways
Card readers broke and IDs were tapped by friends at POSTECH. Even vendors selling Bluetooth attendance keep a manual code for dead batteries and older phones.
So: manual marking isn’t a legacy feature. It is the fallback every automatic system needs, and it should sit beside them.
POSTECH Times; Attendance Radar
I4 · Mental models
Register
People predict new tools using the ones they already know
A mental model is what a user believes about how a system works, built from past experience. For attendance, that past experience is the paper register.
So: copy the register’s rules: name order, three answers, blank means absent, sign at the bottom.
Nielsen Norman Group, “Mental Models”
01.3c Jobs to be done
J1
When automatic tracking is unreliable, I want to mark who is present so attendance records are accurate.
J2
When students arrive late, I want to record the late entry with the right category.
J3
When I make a mistake, I want to retake or reset attendance without losing history.
J4
I want the attendance mode and final result visible to students and administrators.
Design principles that came out of it
1. Follow the register.
If paper already has a rule for it, use the same rule.
2. One tap is the budget.
The common case (present) costs a single tap.
3. Nothing is final until it’s signed.
Teachers can correct freely; admin gets a locked record.
4. Add, don’t replace.
Roll Call sits beside the automatic modes.
02.1 The register in their head
This table became the spec. Any screen that didn’t map back to something teachers already do on paper had to justify itself.
Two rows needed the most care: silence and crossing out. On paper both are free. In software they turn into rules about defaults and history.
On paper
In Roll Call
Names listed by roll number
→
Student list in roll order, with search
“Present” → a tick
→
Tap ✓ on the row. It turns green.
Silence → blank box
→
Leave it. Blank becomes Absent on finalize.
Walks in late → “L”
→
Tap ◷, pick a late level
Note in the margin
→
Optional comment, badge on the row
Cross out, rewrite
→
Change any mark. Retakes keep history.
Sign at the bottom
→
Finalize: review counts, then lock
Register goes to the office
→
Sent to reports and the student’s view
02.2 From insight to decision
Every decision traces back to research
I1 · Time
Roll call costs ~6 min a lecture
I2 · Stakes
Marks decide exam eligibility
I3 · Failure modes
Automatic modes need a fallback
I4 · Mental model
Teachers think in register rules
D1
Mark from the row
I1 · I4
D2
Blank means absent
I4
D3
Late is a level
I2
D4
Bulk select, with a receipt
I1
D5
Reversible until signed
I2
D6
A mode, not a replacement
I3
02.3 Key design decisions
Decision 01
Mark from the row, not a detail page
What I decided
Every student row carries three buttons: ✓ Present, ✕ Absent, ◷ Late. One tap marks. The row shows the status in words under the name.
The default direction: tap a student, open a detail screen, choose a status, go back.
Why I rejected it: for a hundred students that is three hundred taps and a hundred screen changes while the class waits (I1).
Tradeoff I accepted: denser rows, so each button needs a generous touch target and clear colour plus icon.
What I gained: the rhythm of roll call. Name, answer, tap, next.
Decision 02
Blank means absent
What I decided
Teachers only mark who answers. On finalize, anyone unmarked is recorded Absent, and the sheet says so before saving.
The default direction: block finalize until every row has a mark.
Why I rejected it: on paper, an empty box already means absent (I4). Forcing a hundred marks adds work without adding accuracy.
Tradeoff I accepted: a missed row becomes an absence, so the warning has to be impossible to miss.
What I gained: speed, and a rule teachers already trust.
Decision 03
Late is a level, not a yes or no
What I decided
Late opens a short sheet: Level 1 10–20 min, Level 2 20–30 min, Level 3 30+ min, or a custom duration up to 40 min. Plus an optional comment.
The default direction: a single Late toggle.
Why I rejected it: coordinators treat ten minutes late differently from thirty-five, and attendance decides exam eligibility (I2). A yes or no loses that.
Tradeoff I accepted: one extra step, but only for late students.
What I gained: the right category at the moment it happens, with no follow-up typing.
Decision 04
Bulk select, with a receipt
What I decided
Select turns on checkboxes and a bottom bar: Late, Absent, Present. A confirm dialog lists the names and says what happens to everyone else.
The default direction: a single “Mark all present” button.
Why I rejected it: it hides mistakes. One-by-one is safe but slow in a hall of a hundred (I1).
Tradeoff I accepted: a confirm step on every bulk action.
What I gained: big classes in seconds, without silent mass changes. “Remaining 24 students are marked absent” is spelled out.
Decision 05
Reversible until you sign
What I decided
Any mark can change. Late can be excused or cancelled. Finalize shows counts by category, then locks and sends to reports. Retakes are kept as history.
The default direction: save each tap as final.
Why I rejected it: teachers correct registers all the time. Instant-final turns every slip into an admin request, on records that carry exam stakes (I2).
Tradeoff I accepted: an explicit finalize step teachers have to remember.
What I gained: freedom to fix things in class, and a clean locked record for admin.
Decision 06
A mode, not a replacement
What I decided
Starting a session asks for a mode: Automatic (Bluetooth, Engager, Buzzer) or Roll Call. The choice stays on the session card with an Edit link.
The default direction: replace automatic with manual, or hide manual in settings.
Why I rejected it: automatic works well in many rooms. Manual is the fallback every room eventually needs (I3).
Tradeoff I accepted: one more choice when a session starts.
What I gained: faculty choose per session, and nothing that already worked breaks.
4 choices that shaped Roll Call
I wrote down every choice I made, sorted them into big-picture and small-detail, and picked the four that best show how I think. Each one is a short story: the problem, what it was before, what I chose, and what changed.
Tap a row to see the choices in it. Things I chose not to build count too.
Why we replaced the old screen instead of restyling it
Press Next (or the → key) to read it step by step.
03.1 Product walkthrough
One session, start to finish.
Session details show the current mode. Tapping Edit opens a two-option sheet. Roll Call is described in the teacher’s own words: “Mark attendance by calling the students’ name or ID.”
1
Mode visible on the card, never hidden
2
Start button changes to match: Start Roll Call




Names in roll order, three buttons each. The counters at the top update with every tap, so the teacher always knows where the class stands.
1
Status in words under the name: “Present · Approved”
2
Search for latecomers by name or ID
3
Finalize stays pinned at the bottom
Tap the clock. Pick a level or type the minutes, add a note if needed. The row shows “10 MINS LATE” in amber, and a badge marks rows with a comment.
1
Custom duration capped at 40 minutes
2
Comment is optional, never required




Tapping a late row offers Mark as Excuse or Cancel Late. For big halls, Select turns on checkboxes and a Late, Absent, Present bar. The confirm dialog names every student it will change.
1
Corrections in class, no admin request
2
Bulk actions always show who is affected
Finalize shows the count for each category: On Duty, Present, Absent, Late, Leave, Permission. A line in bold reminds the teacher that unmarked students become Absent. Save locks it and sends it to reports.
1
Leave, permission and on-duty come from the system and can’t be overwritten
2
Final report keeps request and approval states




When two sessions overlap, the home screen offers to merge them. Roll Call then shows one list for everyone, with a switch to take each session individually.
1
One roll call for a combined hall
2
Staff attendance from the same screen
Students see their overall status and every attendance taken in the session, such as “Primary (Latest) · Late by 10 mins”. If something is wrong, they raise a request and the record shows it as pending.
1
Mode shown on the completed session: “Onsite · Roll call”
2
Request history visible to the student


03.2 The state system
The teacher only ever presses three keys. States that come from elsewhere, like approved leave or on-duty, appear as locked pills on the row, so a teacher can’t overwrite a decision made by someone else.
Teacher keys
✓
Present
✕
Absent
◷
Late
Late levels
L1
10–20 min
L2
20–30 min
L3
30+ min
Custom
up to 40
System states, read-only for teachers
🔒 Leave
🔒 Permission
🔒 On duty
🔒 Request pending
🔒 Excused
🔒 Approved
03.2a UI breakdown · Marking screen
What each part of the marking screen is doing.
This is the screen a teacher lives in for the whole roll call. It copies the paper register on purpose, and leaves the rules to the system.
Four tiles sit above the list: Total, Present, Absent and Late. The old counts covered Present, Absent and Leave, so a student twenty minutes late had to become one of those. Late now has its own tile, and the numbers move with every tap.
A search field finds a student in a long class, and Select switches to marking several students at once. Both sit above the list, so the teacher reaches them without scrolling away from the register.
Each row copies the paper register: the student’s name and number on the left, three keys on the right. One tap per student marks Present, Absent or Late, and the status is written back onto the row, so the teacher can see what they recorded without opening anything.
Finalize Attendance stays pinned at the bottom of the screen. Marks remain editable until then, and anyone left blank is recorded Absent only at that moment, so a missed row is a choice the teacher confirms, not an accident.
03.3 Outcome
Sessions completed with Roll Call
500+
Shipped in the faculty Android and iOS apps as a mode beside Bluetooth, Engager and Buzzer, including merged sessions and the student view.
The quieter result: teachers no longer need a paper list next to the app. The same screen handles present, absent, late, excused and the states admin already owns.
Reflection
“The best interaction model was already in the room. My job was to stop the app getting in its way.”
What I’d do next
01
Measure time to finalize per session against the ~5–6 minute paper baseline.
02
Watch it in a live class. I skipped primary observation this round; it is the first gap I’d close.
03
Track missed-row absences to check whether “blank means absent” causes wrong marks.
04
Test offline mode in rooms where both Bluetooth and network are weak.
Sources
Other projects
Roll call
ends here.
Sudarvel · UX/Product Designer · Digival · Chennai







