Inspiration

As a student, I've felt the pain of job hunting firsthand. Hours spent scrolling through irrelevant listings, copy-pasting the same information into different application forms, and manually rewriting my resume for every single job posting — only to hear nothing back. The process is broken, repetitive, and demoralizing.

I wanted to build something that treats job hunting the way it should be treated — as a problem that AI can almost entirely solve. That frustration became ApplyPilot.


What it does

ApplyPilot is an AI-powered job hunting copilot that automates the most painful parts of applying for jobs:

  • 📄 Resume Upload & Analysis — Upload a PDF or paste resume text. PDF.js extracts the content instantly in the browser. AI detects your experience level, top skills, target job title, and education.
  • 🔍 Smart Job Search — Searches real job listings from Indeed, LinkedIn, and Glassdoor via JSearch API based on your profile and preferred location.
  • 🎯 AI Match Scoring — Every job is scored 0–100 based on how well it matches your actual skills, experience level, and target role. Color coded: green for strong match, yellow for moderate.
  • ✍️ Resume Tailoring — Rewrites your resume bullet points to match each job description's keywords — using only content that already exists in your resume, never fabricating anything.
  • 💌 Cover Letter Generation — Generates a personalized cover letter for each role in seconds using your actual background and the company's specific requirements.
  • 📊 Application Tracker — A kanban board with drag and drop to track every application across Saved, Applied, Interview, Offer, and Rejected stages.

How we built it

The entire application was built using MeDo through multi-turn natural language conversations — no manual backend coding required.

Frontend:

  • React with PDF.js for client-side PDF text extraction
  • Tailwind CSS for styling
  • HTML5 drag and drop for the kanban tracker

Backend:

  • Supabase Edge Functions (Deno/TypeScript) for all server-side logic
  • Supabase PostgreSQL for storing resumes, jobs, tailored versions, and application status
  • Supabase Storage for PDF file storage

AI & APIs:

  • Groq API with llama-3.3-70b-versatile for resume analysis, job matching, resume tailoring, and cover letter generation
  • JSearch API for fetching real-time job listings from major job boards

Deployment:

  • MeDo one-click deploy to a public URL

The entire pipeline — from resume parsing to job search to AI tailoring to deployment — was built by describing features in plain English to MeDo across structured multi-turn sessions.


Challenges we ran into

PDF text extraction was the biggest technical challenge. Server-side PDF parsing libraries like pdf-parse don't work in Deno edge function environments. We tried multiple approaches — Groq vision API with PDF input, binary text parsing, and AI-based extraction — before landing on the right solution: using PDF.js entirely on the frontend to extract text in the browser before sending it to the server.

Groq API rate limits on the free tier were hit quickly because the initial implementation made one AI call per job for match scoring — meaning 10 jobs triggered 10 simultaneous API calls. We solved this by batching all job descriptions into a single Groq call and returning a JSON array of scores.

Supabase Row Level Security silently blocked database writes and deletes without throwing errors — returning success responses with 0 rows affected. This was particularly tricky to debug since no error appeared in the logs. Adding detailed console logging at every step exposed the root cause.

AI hallucination in resume tailoring — early versions of the tailor prompt allowed the AI to invent fake projects, certifications, and skills. Fixing the prompt with strict instructions to only use content present in the original resume completely solved this.


Accomplishments that we're proud of

  • 🏗️ Built a complete full-stack SaaS application — frontend, backend, database, AI pipeline, and deployment — entirely through natural language prompts in MeDo
  • 🤖 A fully working AI pipeline that connects resume parsing → job matching → resume tailoring → cover letter generation in one seamless flow
  • 📄 Client-side PDF extraction using PDF.js that works reliably without any server-side dependencies
  • 🎯 Accurate job matching that accounts for experience level — freshers get entry-level and internship listings, not senior roles requiring 5+ years
  • 🗂️ A fully functional drag and drop kanban tracker with optimistic UI updates and real-time Supabase sync

What we learned

  • MeDo is most powerful when used in focused, single-concern prompts — dumping everything into one prompt produces mediocre results. Breaking features into layers and building iteratively produced significantly better code.
  • Deno and Node.js are not interchangeable — many popular npm libraries simply don't work in Supabase edge functions. Always verify runtime compatibility before choosing a library.
  • AI prompt engineering matters as much as the code — the difference between a resume tailor that hallucinated fake content and one that produced accurate results was entirely in how the prompt was written.
  • Optimistic UI is non-negotiable for drag and drop — updating the database before updating the UI makes interactions feel laggy. Always update the UI first, sync to the database in the background.

What's next for ApplyPilot — Your AI Job Hunting Copilot

ApplyPilot in its current form is a powerful prototype. The vision for the full product is a true end-to-end job application platform:

  • 🌐 Dedicated web scraper — go beyond APIs and scrape company career pages, LinkedIn, Naukri, and Twitter job postings directly for broader coverage
  • 🧠 Vector embedding matching — replace keyword-based scoring with semantic vector similarity using pgvector for dramatically more accurate job matching
  • 🤖 Auto-applier — browser automation that visits job application pages and fills forms on behalf of the user
  • 👤 Multi-user support — full authentication, user profiles, and personalized job history
  • 📧 Email notifications — alert users when new high-match jobs are found
  • 🌍 Global job market support — dedicated location filters for India, UAE, UK, Canada and other major markets beyond US-centric boards

Built With

Share this project:

Updates

Submission history