JobWeaver

Inspiration

Job hunting sucks. You spend hours tailoring resumes and cold-messaging people on LinkedIn with <5% response rates. I wanted one tool that does both - paste a job, get your resume score AND LinkedIn profiles to contact. Done.

What I Learned

Multi-agent orchestration is tricky. Getting three AI agents (orchestrator, resume analyzer, LinkedIn searcher) to work together seamlessly took way more prompt engineering than I expected. Explicit workflows (STEP 1, STEP 2...) and clear decision trees were key. ADK is very nice to use though.

Resume matching math: I used cosine similarity to compare job descriptions with resumes:

$$\text{similarity} = \frac{\mathbf{A} \cdot \mathbf{B}}{|\mathbf{A}| |\mathbf{B}|}$$

Simple, fast, and surprisingly accurate for quick matching without needing ML models.

Chrome extensions are stateful nightmares. Had to learn chrome.storage.local to persist chats when users click away, plus the difference between onStartup and onInstalled lifecycle hooks.

How I Built It

Stack: Chrome Extension (vanilla JS) → FastAPI backend → Google Cloud Run → Google ADK agents

Architecture: Root agent orchestrates two specialists - one analyzes resumes (cosine similarity), another searches LinkedIn (Google Custom Search API). All deployed serverless on Cloud Run.

Why this stack?

  • Chrome extension: Maximum compatibility
  • FastAPI: Fast prototyping
  • Google ADK: Native multi-agent support
  • Cloud Run: Auto-scaling, pay-per-use

Challenges

Agent hallucination: Agents kept inventing fake LinkedIn profiles. Fixed with strict prompts: "NEVER generate fake data" and requiring tool calls only.

Cold starts: First request takes 8-10 seconds (Cloud Run container spin-up).

Resume persistence: Cloud Run is stateless, uploads don't persist between deploys. For the MVP, users just re-upload. Would use Google Cloud Storage in production.

CORS: Chrome extensions have weird origins. Ended up with allow_origins=["*"] for the hackathon (would tighten for prod).

Impact

Turns a long job application process into 30 seconds. If this saves one person a few hours of frustration, worth it.

Next steps: Google Cloud Storage for persistence, cover letter generation, email templates for outreach, user based service.

Built With

Share this project:

Updates