Zee - Blog
Published on

Dev note for Job Assistant

Authors
  • avatar
    Name
    Zee Lu
    Twitter

Introduction

Job Assistant is a Chrome extension that I built to solve the most tedious parts of my own job hunt. We all know the drill: finding a job, researching the company, tailoring the resume, and tracking the application. It's repetitive, time-consuming, and prone to error.

I wanted a tool that could:

  • Automate Research: Instantly gather insights about a company.
  • Tailor Resumes: Automatically adjust my CV to match the job description using AI.
  • Track Applications: Keep a history of where I've applied without manual spreadsheets.
  • Seamless Integration: Work directly on the job board sites I use (LinkedIn, Join, etc.).

Tech Stack

  • Frontend: React, Vite, Tailwind CSS, Shadcn UI
  • Extension Core: Chrome Extension Manifest V3
  • Database: Supabase (PostgreSQL + Edge Functions)
  • AI/LLM: Integration for resume tailoring and research
  • PDF Processing: cloudflare worker + puppeteer + brower rendering for pdf generation(Edge function in supabase does not support headless browser), pdf.js for reading and interactive visual feedback.

Design

Application Architecture

The extension follows a standard Chrome Extension architecture but heavily leverages cloud services for heavy lifting:

  • Content Scripts: Injected into job boards (e.g., LinkedIn) to extract job descriptions and detect application status.
  • Side Panel / Popup: The main UI for the user to interact with the assistant, trigger analysis, and view results.
  • Background Service Worker: Handles persistent state, long-running tasks, and communication between components.
  • Supabase Edge Functions: We offload the AI processing (tailoring, research) to serverless functions to keep the client light and secure API keys.

Data Flow & Features

1. Job Extraction & Analysis

When I open a job post, the JobExtractor service parses the page to get the title, description, and company name. It automatically standardizes this data regardless of the source site.

2. Intelligent Resume Tailoring

This is the core feature. The TailorResumeService takes my base resume and the extracted job description:

  1. Analyze: It finds gaps between my profile and the job requirements.
  2. Generate: It uses an LLM to rewrite bullet points and summaries to highlight relevant experience.
  3. PDF Generation: It rebuilds the resume as a clean PDF ready for upload.

3. Company Research

Before applying, often I need to know more about the company. The ResearchService triggers a background search to find:

  • Company culture and values
  • Recent news and funding
  • Interview common questions

4. Application Tracking

The HistoryService and TrackingSession maintain a log of every job I've analyzed or applied to. No more "Did I apply here already?" moments.

Conclusion

Job Assistant started as a script to help me apply faster, but it evolved into a full-fledged extension. By combining modern web tech (React, Supabase) with the power of LLMs, it turns the quantitative struggle of applying to jobs into a qualitative workflow.

Next steps include adding more job board support and refining the "Auto-Fill" capabilities to complete application forms automatically.