← Back to Projects

Job Tracker — AI Assistant

A self-hostable job application tracker where every interaction — adding listings, updating statuses, recording notes — happens entirely through conversation with an embedded AI assistant. The UI is a real-time dashboard with a clean filterable table and a rich detail panel for every opportunity.

Python FastAPI Claude AI HTML/CSS/JS Uvicorn PWA

Project Overview

Job Tracker is a full-stack web application that rethinks the job search workflow. Instead of filling out forms and manually updating fields, every action is handled through natural language chat with an AI assistant powered by Claude. The result is a tracker that feels more like a conversation with a knowledgeable assistant than a database entry tool.

Built as a personal project outside of coursework, this demonstrates practical full-stack development — a FastAPI backend with an agentic AI loop, a live-updating vanilla JS frontend, and a flat-file data layer that keeps the setup dead simple. The demo is pre-loaded with sample CDL-A job search data from the DFW/Weatherford TX area.

What This Demonstrates

Engineering Decisions

  • Designed an agentic AI loop where Claude uses structured tools to read and write data — not just generate text
  • Rebuilt the system prompt on every request with current user profile injected at the top, giving the AI persistent context without a memory layer
  • Chose flat JSON files over a database to keep self-hosting frictionless
  • Built the frontend in vanilla HTML/CSS/JS — no framework — to keep the footprint minimal and the demo deployable to GitHub Pages

Problem-Solving Process

  1. Interface Design: Inverted the typical CRUD UI — the table is read-only and chat is the only input surface
  2. Agentic Loop: Implemented Claude's tool-use API so the AI can chain multiple reads and writes in a single response
  3. Live Updates: Wired the frontend to re-render the table after each AI response without a full page reload
  4. Flexible Data Model: Added a key-value details field so the tracker works for any industry — CDL-A, tech, healthcare, etc.
  5. Alert System: Built color-coded alert callouts (amber/blue/red) so critical info is never buried in notes

Professional Outcome

  • End-to-end full-stack application from API design to deployed frontend
  • Practical experience integrating Claude's tool-use API in a production-style agentic loop
  • Clean, installable PWA that works on mobile
  • Demonstrates ability to ship a complete, usable product independently

Key Features

AI-Managed Tracker

All adds, edits, status changes, and notes happen through natural language chat. No forms, no manual data entry.

Rich Detail Panel

Click any row to see the full picture: pay range, schedule, requirements, benefits, recruiter contact, apply link, and industry-specific details.

Alert Callouts

Color-coded flags on each job — action items (amber), useful info (blue), disqualifiers and rejection reasons (red). Never lose track of why a listing was skipped.

User Profile Memory

The AI remembers your background, qualifications, target salary, and preferences across every session without re-explaining yourself.

Live Table Updates

The tracker re-renders instantly after the AI modifies data — status changes and new entries appear without reloading the page.

PWA-Ready

Installable on mobile via web app manifest. Filter by status: Interview, Call Recruiter, Applied, Rejected, Not Applied.

How It Works

The dashboard is a read-only view — you never fill out a form directly. All interaction goes through the AI Assistant. Example prompts:

  • "Add Northside Tech in Austin TX, $95K/yr, status Applied, remote-friendly, contact is Sarah at 555-1234"
  • "Mark Acme Corp as Call Recruiter — interview scheduled for next week"
  • "What jobs am I still waiting to hear back from?"
  • "Reject the Globex position — the salary is too low and it's fully on-site"
  • "Update my profile — I have 5 years of experience and I'm targeting $90K+"

The AI reads and writes jobs.json directly via its tools. The table re-renders live after every change.

Architecture

The application is structured as a single FastAPI server that handles both the API and serves the frontend:

  • main.py — FastAPI app with the agentic loop, all seven AI tools, and static file serving
  • frontend/index.html — Full app: live tracker table, AI chat panel, and detail slide-out
  • data/jobs.json — All job entries (AI reads and writes this directly)
  • data/profile.json — User profile injected into every AI session
  • docs/index.html — GitHub Pages static demo with AI disabled (pre-loaded sample data)

Zero database required. The flat-file approach keeps self-hosting to a single pip install and one command.

AI Capabilities

The assistant has seven structured tools that Claude uses in an agentic loop — it can chain multiple operations in a single response:

list_jobs

Read all job entries — used to answer status questions and generate summaries.

get_job

Fetch full details for a single listing by ID.

add_job

Create a new entry with all rich fields from a single natural language prompt.

update_job

Change any field — status, pay range, notes, alerts, industry-specific details.

delete_job

Remove an entry by name or ID.

get_profile / update_profile

Read and update the saved user profile — background, qualifications, salary target, preferences.

Tech Stack

Python 3.11+ FastAPI Uvicorn Anthropic Claude (tool use) Vanilla HTML/CSS/JS JSON (flat-file data) PWA Manifest GitHub Pages

Skills Demonstrated

  • Full-stack web application development (backend API + frontend)
  • Agentic AI integration using Claude's tool-use API
  • RESTful API design with FastAPI
  • Real-time UI updates without a framework
  • System prompt engineering for persistent user context
  • Progressive Web App (PWA) implementation
  • End-to-end product delivery — from concept to deployed demo
  • Flexible data modeling for multi-industry use cases