LLM App / Agent / Full-stack
2026
Role: Product scoping, workflow design, interaction definition, full-stack MVP implementation
CareerPilot
An AI job-application workspace that turns scattered application tasks into one guided workflow covering JD analysis, evidence matching, rewriting, interview prep, and traceable generation.
Impact: Converted my own job-search pain points into a demoable AI product that makes application workflows more structured, inspectable, and easier to personalize at scale.



Overview
CareerPilot is a productized AI job application workspace built around one complete loop: upload a resume, interpret the JD, match evidence, generate targeted artifacts, and inspect the reasoning path. I framed it as a workflow product instead of a collection of isolated prompts.
Problem
Students and early-career candidates often apply to many roles at the same time, but each role requires a different framing of the same experiences. The difficult part is not only writing better sentences, but also identifying the right evidence, matching it to job requirements, and keeping every generated claim truthful.
Solution
I decomposed the experience into clear product stages: requirement extraction, resume evidence retrieval, matching analysis, rewriting, cover-letter drafting, and interview preparation. Splitting the flow this way makes the product easier to trust, easier to debug, and easier to demonstrate in interviews.
Architecture
The project uses a monorepo architecture with a FastAPI backend, Celery worker, React frontend, shared TypeScript contracts, Alembic migrations, Docker-based local orchestration, Redis for asynchronous workflow execution, and Postgres with pgvector planned for vector storage.
Core Features
- Resume ingestion and structured resume parsing
- Job description analysis and requirement extraction
- Resume-JD matching with evidence-aware recommendations
- Targeted resume rewriting and cover letter generation
- Interview preparation based on matched role requirements
- Agent trace observability for inspecting workflow outputs
Tech Stack
- Python
- FastAPI
- React
- Celery
- PostgreSQL
Implementation Details
- Built the project as a monorepo with separate API, worker, web, shared contracts, and Docker infrastructure modules.
- Used asynchronous generation through Celery and Redis so long-running LLM calls do not block the request-response path.
- Designed environment-based provider configuration so live DeepSeek-backed generation can be enabled while deterministic local generation remains available for tests and demos.
- Added backend and frontend verification commands, including tests, linting, build checks, and an end-to-end smoke flow that uploads a generated PDF resume and verifies matching, outputs, and trace pages.
- Designed deployment notes around HttpOnly cookie-backed authentication, CSRF protection, environment-managed secrets, CORS control, and future vector storage through Postgres pgvector.
Challenges
- Keeping AI-generated career writing persuasive while still grounded in the user's real resume evidence.
- Separating long-running LLM workflows from normal API requests without making the product experience feel slow or opaque.
- Designing agent trace outputs that are useful for debugging without overwhelming the user with internal implementation details.
What I Learned
- For career AI products, the key value is not generic text generation but evidence-aware transformation of existing experience.
- Observable workflows are essential when LLM outputs affect high-stakes decisions such as job applications.
- A production-oriented AI app needs model orchestration, queueing, authentication, testing, and deployment design from the beginning.