Role: Intern, Full-Stack + Product · Client: California Superbike School India (owned by Maya Appliances/Vidiem) · Worked directly with the company's AGM (IT) throughout · superbikeschoolindia.com

The Problem

A once-a-year, 180-slot riding event ran registration through a form, payments tracked in a spreadsheet, and no audit trail. As volume grew, duplicate entries piled up, reconciliation ate hours, and riders weren't sure if they'd even registered.

Users

Goals

Kill manual reconciliation. Every rider gets a confirmation. Admin runs the season self-serve. Every admin action is attributable.

What I Built, and the Trade-off

Built Why
Email OTP before form Blocks spam entries at the door, small extra step for riders
Razorpay + NEFT/DD kept as fallback Fast online payment, but riders trusted bank transfer too. Didn't force everyone onto one rail
Admin panel (payment marking, swap, duplicate flag, export) This is the real product. Leverage is in admin speed, not the rider form
Season year as config, not server clock Client opens next year's registration in October. A hardcoded year would break
Redis audit log Full accountability without over-building a DB table nobody queries long-term

Impact (qualitative, no pre/post analytics were in place)

Reconciliation went from hours of spreadsheet work to real-time payment marking. Confirmation emails killed the "did it go through?" calls. Admin runs open/close and season rollover themselves. Every action is now traceable to who did it and when.

PM Lens: If This Were SaaS

What I'd Do Differently