Case Study 05 · 2026

CareerScout — Job Match Scanner

Personal product — build a job profile, scan company career pages (Greenhouse, Lever, Ashby), and rank openings by fit.

Interactive prototype

Open live demo — try it in your browser

job-search-companion-plum.vercel.app

Open live demo
UX/UI DESIGNFRONTENDPRODUCT DESIGNINFORMATION ARCHITECTUREAI MATCHINGCAREER TOOLS
CareerScout — Job Match Scanner — hero screen
My role: UX Design & Frontend Development
Product context: Career tools · Job search
Scope: Personal product — profile → scan → ranked matches

Project overview

What this project was

Personal product built end-to-end. Not affiliated with Greenhouse, Lever, Ashby, or any employer careers site.

I designed and built CareerScout as a personal product for active job search. Users define desired roles and skills, paste company career URLs, and get openings ranked by fit. The app discovers supported ATS boards, explains unsupported pages clearly, and keeps profile and company lists available across sessions in the browser.

User goals

Help job seekers go from “which companies should I check?” to “which roles actually fit me?” — without manually comparing every listing to their CV.

Why it mattered

Career pages and ATS boards are fragmented. Fit is hard to judge at a glance. Unsupported or custom boards often fail without explanation — wasting time and trust. CareerScout turns that into a guided flow with ranked results and explicit scan status.

The problem

Where it was breaking

User pain points

  • Checking many company career pages one by one is slow and repetitive.
  • Hard to compare openings against your own skills without a shared scoring model.
  • ATS boards differ (Greenhouse, Lever, Ashby, custom sites) — users do not know what will work.
  • Failed scans often feel like “the tool is broken” when the board is simply unsupported.

Business challenges & constraints

  • Keep onboarding short enough to start a scan, but rich enough for useful matching.
  • Support real ATS boards while being honest about limits (custom careers pages, LinkedIn, Workday, etc.).
  • Show progress and failures per company so users know what succeeded, what to retry, and what to replace with a board URL.
  • Job extraction currently targets Greenhouse, Lever, and Ashby board URLs.
  • Profile and company lists persist in the browser (localStorage) — no multi-user cloud account yet.
  • Matching quality depends on the skills and roles the user provides up front.

My role

What I owned

Product Thinking
UX/UI Design
Information Architecture
Frontend Development
Error & Empty-State Design

Research & discovery

How I learned what mattered

  1. 01

    Problem framing

    Mapped the job-search loop: define fit criteria → collect company URLs → extract openings → decide what to apply to.

  2. 02

    Flow design

    Structured a three-step onboarding (profile, companies, review) so scanning only starts when inputs are useful.

  3. 03

    Board constraints

    Classified career destinations and designed clear messaging for unsupported or custom careers pages.

  4. 04

    Build & iterate

    Shipped scan pipeline, match ranking, company-level status, filters, and results UI — refining copy for failed and unsupported boards.

Challenges

Technical & UX hurdles

Career URL discovery & classification

Homepages and careers links often redirect to mixed destinations. The app must prefer supported ATS boards and avoid misleading failures (e.g. incidental LinkedIn profile links).

Honest unsupported states

Custom careers pages and unsupported ATS need plain-language status (e.g. Unsupported) plus guidance to paste a Greenhouse, Lever, or Ashby URL when available.

Match results that stay scannable

Many openings across companies require ranking by fit, filters, and grouping by company — without turning results into a dense dashboard.

The solution

What I designed & shipped

Guided three-step setup

Profile (roles & skills), companies (career URLs), then review & start scan — so matching has enough signal before work begins.

Supported ATS scanning

Extract jobs from Greenhouse, Lever, and Ashby boards, with discovery when users paste a company homepage or careers page.

Fit-ranked results

Openings scored against the user profile, filterable and grouped by company, with rescan/retry per failed board.

Clear failure communication

Per-company status and error copy explain unsupported boards instead of failing silently.

Desktop onboarding — Step 1 (job profile with roles & skills) and Step 2 (company career URLs), with guidance on supported ATS boards.
Desktop onboarding — Step 1 (job profile with roles & skills) and Step 2 (company career URLs), with guidance on supported ATS boards.
Mobile onboarding — profile → companies → review & start scan, condensed for a phone-sized layout.
Mobile onboarding — profile → companies → review & start scan, condensed for a phone-sized layout.

Results & impact

What this product aims to improve

A focused job-search companion: one profile, multiple company boards, ranked matches, and honest feedback when a careers page cannot be scanned — instead of silent failure or generic empty states.

Key learnings

What I'm taking forward

Lesson 01

For tools that hit third-party sites, trust comes from clear limits — users forgive unsupported boards when the next step is obvious.

Lesson 02

Onboarding length is a product decision: too little profile data weakens matching; too much delays the first useful scan.

Lesson 03

Status language matters — “Unavailable” feels like an outage; “Unsupported” correctly frames a product constraint.

Lesson 04

Building end-to-end (UX + frontend + scan pipeline) surfaces edge cases early — discovery, classification, and results UI have to tell one story.