Job Tracker
Scope & Press
AI Coding Design Engineer Gmail API / OAuth
Full-Stack Development AI Integration
React.js / Node.js
Summary
The Pain Point: I was tired of the manual drudgery of maintaining ugly spreadsheets. My applications were fragmented across LinkedIn, Indeed, and cold emails, making tracking a chore.
The Insight: No matter where I apply, the confirmation always lands in one place—my email.
The Solution: Instead of fighting the chaos, I built a tool directly on the Gmail API to automatically organize and track my job search progress from the inbox out.
Links
Live App: https://jobtrack-zeta.vercel.app/
Demo Walk Through Video: https://app.arcade.software/share/gjZR0Drn2YiFmTgSEAYB
Want in? DM me your email to sayhitoyutonghu@gmail.com,
and I will grant you access to sign in and scan your own applications.
JobTrack integrates directly with your Gmail Label System, automatically categorizing incoming applications and syncing status updates back to your inbox.
How I Built It
I built this entire full-stack application without writing a single line of manual code. Instead, I utilized an agentic workflow within the IDE (using tools like Antigravity and Cursor).
My role shifted from syntax writing to Context Management. I treated the IDE as a command center, prompting AI agents to generate file structures, debug terminal errors, and refactor logic via natural language.
Moved from brittle keyword matching to GPT-4o-mini. The app now "reads" email semantics to accurately distinguish between a generic newsletter and a specific rejection.
The Shift to Kanban Board
Early versions used a linear list (like an email inbox). I realized job hunting isn't about reading; it's about moving forward. I redesigned the UI into a drag-and-drop Kanban Board. This matches the user's mental model of a "pipeline" rather than a static feed.
The Challenge
The Solution: Divide and Conquer I re-architected the deployment by separating concerns:
Frontend (Vercel): Hosting the React UI here ensured lightning-fast static delivery and automatic CI/CD.
Backend (Railway): I deployed the Node.js/Express server on Railway to handle the heavy lifting (API requests & Database).
The Result: This separation solved the callback conflicts. By having a dedicated production URL for the backend, the OAuth handshake became rock-solid, mimicking a real-world enterprise architecture.