Experiment
Live at at.suvamsahoo.com
Attendance Tracker
Students at my college can be kept out of exams by an attendance number they can't check. I built them their own copy of the record, first for my friends and then for the whole college.
- Role
- Product, design + engineering, solo
- Apparatus
- PHP 8 · MySQL · Vanilla JS · Web Push · PWA
- Tags
The problem
Below 75% attendance, you can be barred from the exam. The college shows you the number late, with no record of your own to check it against. Other apps lose students at step one, "type in your timetable".
What happened
- 201 sign-ups in 3 days after launch. No ad spend.
- 56% marked a day. I found why the rest didn't and fixed it the same day.
- 13 classes with timetables pre-loaded, so most students join in one tap.
- 0.03 s to open the dashboard on a slow connection, down from 1.32 s.
- ₹0 extra running cost. No paid services.
- 2 weeks from first build to public launch. Solo, with Claude Code.
The bet
People don't give up on attendance trackers because marking a class is hard. They give up before they start, at the setup.
- A student signs upThree fields, then they pick their class.
- First in the class?They set up the timetable once, or send me a photo.
- It becomes the class templateOnly its creator can edit it.
- Classmates join in one tapEach gets their own copy, and a prompt to share.
↺ Only the first student in a class pays the setup cost. The class, not the student, is the unit of growth.
The product
- MarkEvery period comes pre-filled from the timetable. Most days it's one tap, then Save.
- KnowYour percentage, and how many more classes you can miss and stay above 75%.
- PlanPer-subject margins, the weekday you skip most, and a streak worth keeping.
- Leave"Can I afford three days off?", answered for each subject.



After launch
By 5 Oct, 112 of 201 sign-ups had marked a day. I looked at what the other 89 had actually done:
- Marked a day
- Signed up that day
- Never picked a class
- Stuck on an empty dashboard
- 41 · Just arrivedNothing to fix. Sign-ups under 24 hours old now stay out of the activation rate.
- 26 · Mistyped their classThey ended up in an empty duplicate class. Now they get "Did you mean…?" suggestions.
- 22 · "0% of 0"The empty dashboard looked broken. Now new users see a single "Mark today" card.
Then came the habit: one reminder at 7 pm, sent only when there’s a class to mark, and a dashboard that opens instantly from the phone’s cache.
Timeline
- A private app for 13 friendsFour-digit codes, two hardcoded sections.
- A week of fixes from real use"You can still miss N classes", "what if I miss tomorrow".
- Public launchAccounts, the class directory, a QR poster on noticeboards.
- Reminders and an owner dashboardNightly Web Push, and one screen showing where students get stuck.
- 201 sign-ups, first activation fixesClass suggestions and the "Mark today" card.
- A leave plannerPublic for anyone, pre-filled from the dashboard.
Key decisions
- Copy the timetable, don't share itOne student's edit can never change thirty other people's records.
- "No class" as its own stateCancelled classes don't count for or against you, so every percentage stays right.
- Load timetables by handAt this scale my time is cheaper than building OCR.
- A web app, not an app store appNo review queue and no download. From QR code to a working app in under a minute.
What I learned
- Sign-ups are easy. Activation is the work.
- Read the raw data before reacting to a metric.
- At this scale, doing things by hand is a strategy, not a shortcut.
The honest note
201 is sign-ups, not retention. November will show whether this is a product or a launch spike. Some setup is still done by hand, which works for one college but not for five.