←Projects

InternTrack

2025

A job application tracker with a statistics dashboard, built for recruiting season.

ReactTypeScriptTailwind CSSViteGitHub

InternTrack was developed in response to a familiar problem during recruiting season: most students track applications in a spreadsheet, and the approach degrades quickly. Statuses go stale, follow-ups are missed, and beyond a few dozen rows the spreadsheet offers no aggregate view of the search. The application is organized around the observation that a job search is a pipeline rather than a list, and that the useful questions concern the pipeline as a whole.

Each application carries a company, a role, and notes, and moves through the stages Applied, Interviewing, Offered, and Rejected. Every transition is recorded on a per-application timeline, so the record preserves history rather than only current state. A dashboard recomputes aggregate statistics on each change, including response rates and the distribution of applications across stages.

Implementation

The application is written in React with TypeScript, bundled by Vite and styled with Tailwind CSS. The component tree is deliberately flat: a JobCard for each application, a StatsDashboard, and a Timeline, all reading from state held in a single parent component. As a result, the dashboard and the list are projections of one source of truth and cannot diverge.

The data model was designed to accommodate a parsing layer that would convert recruiter emails into application entries without requiring changes to the interface. Although that layer was not implemented, designing for it imposed a useful discipline: the state describes applications, not components.

Discussion

The project illustrates how much of a small application's correctness follows from state placement. Centralizing state in a single parent is often dismissed as naive, yet at this scale it removes an entire class of consistency defects. It also served as an exercise in building for a real and time-constrained user, namely myself in the middle of application season.