AI Application Assistant hero image
Back to work

AI Application Assistant

Shipped

The AI on this page is the case study

This is the same tool answering questions on this page right now. I built it to solve a problem I actually had: keep one factual base résumé, then let a wizard tailor it against a job posting before anything gets rewritten. The assistant you can talk to above works off that exact same data, not some looser demo version of it.

Quick scan

  • I kept hand-rewriting résumé bullets per application and losing track of which version went where.
  • So I built one factual base résumé that a wizard tailors per job posting - an admin tool for me, plus the public assistant embedded right on this page.
  • The AI only phrases and prioritizes - it never invents a metric, responsibility, or fact that isn't already in the base résumé.
  • Solo build, start to finish: product, design, and engineering.
  • It's live and in active use for my own job search right now - the assistant answering questions above runs on this exact data, not a looser demo.

Team

Solo - design, engineering, and product

Role

Solo designer & engineer

Timeline

Ongoing personal project, alongside UC Irvine coursework

Status

Live in production, in active use

Stack

Next.js, Supabase, Anthropic API

Overview

So here's how this actually started. I was partway through a career pivot into HCI, and I kept rewriting the same résumé bullets by hand for every single application. Worse, I'd lose track of which version I'd sent where, and start second-guessing whether it still matched what I'd actually done.

I built this tool to fix that for myself, first. One factual base résumé. Every tailored version gets generated from it, not from memory, and not from an AI just making something up.

It ended up shipping as two pieces that talk to each other. There's a private admin tool where I manage that base résumé and run new job applications through an analysis-and-tailoring wizard. And there's a public assistant, the one embedded right on this homepage, answering questions about my work from that same underlying data.

How an application gets tailored

  1. One factual base résumé

    Every role, project, and metric lives as structured data, not prose. It's the one source of truth the rest of the tool reads from, so nothing gets re-described from scratch each time.

  2. Analyze the posting

    A new application starts with the job posting itself. I break down what it's actually asking for, separately from my résumé, so the two can get compared instead of blended together.

  3. Match against the facts

    Then the posting's requirements get matched against what's actually in my base résumé. Real gaps show up here. I don't get to quietly paper over them.

  4. Tailor the language

    Only the framing and the emphasis change per application. What I actually did, for whom, with what result, that stays fixed.

Grounding the AI in facts, not vibes

Here's the part that actually worried me: an AI that sounds confident and is just wrong. Quietly inventing a metric or a responsibility I never had. So every generated answer, whether it's a tailored bullet in the admin tool or a reply from the public assistant on this page, gets grounded in that same structured résumé data. The model's job is to phrase things and prioritize. It doesn't get to author new facts.

There's also a 'struggle insights' view that tracks where the assistant's answers didn't really fit the data well. That way, gaps in the underlying facts get fixed, not just gaps in the prompt.

The public 'Ask my portfolio' AI assistant widget, embedded on the homepage of this site

The public half of the tool, live on this page above the Work section. It answers from the exact same résumé-facts data as the private admin tool.

What actually shipped

  • A persistent admin shell, side navigation plus a contextual topbar, so every screen (dashboard, new application, base résumé, training, struggle insights) shares one structural frame instead of each page inventing its own header.
  • A multi-step application wizard that walks a single job posting through analysis, matching, and tailoring. Each step's actions are wired to that step's own state, not one shared state that goes stale.
  • A public-facing assistant embedded right on this homepage, answering real questions from real visitors against that same factual base. Not a separate, looser demo version.

What this was actually about

This wasn't built to be shown. It was built to be used, for my own job search, before it ever became a portfolio piece. That's honestly why I can't overstate this one: head back to the homepage and ask it something yourself.