Skip to content
ishwaryaaaaaaaaaPublic

About

Multi-Agent Internship Application System | CrewAI, Groq, FastAPI, Playwright, Gmail API

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

Repository files navigation

🤖 Job Hunter Crew

A multi-agent AI system that takes the grunt work out of applying for internships.

Upload your resume, pick a lane, and let a team of AI agents find roles, write tailored cover letters, fill simple application forms, and draft outreach emails — so you can focus on the parts that actually need you.


CrewAI Groq FastAPI Playwright Python License


✨ What it does

Applying to internships means hours of repetitive grunt work — searching boards, finding the right people, writing near-identical cover letters, and filling the same fields over and over. Job Hunter Crew automates the boring parts using a team of coordinated AI agents.

You upload your resume once, tell it how many roles you want and what kind, and the agents handle three different application pathways — each in the way that actually works for that path.


🎥 Demo: add your screen recording / GIF here



🛣️ The three lanes

The agents behave differently depending on the kind of opportunity, because a startup form, a professor's inbox, and a Workday portal each need a different approach.

Lane What the agents do
🚀 Early-stage startups Find roles, write a tailored cover letter, and use Playwright to fill simple application forms — then leave them open for you to review and submit. If a form can't be filled, you get the direct link.
🎓 Research under professors Find relevant professors, compile their research areas into a file, and use the Gmail API to create draft outreach emails (with source links to verify). Drafts only — never sent. You review and send.
🏢 Big tech companies These are protected by CAPTCHAs and logins (which exist precisely to stop bots), so the agents find the role and hand you the direct application link to fill manually.

Everything the agents do is collected into a single report.md you can download after each run.


🧠 How it works

The system is built on CrewAI, which orchestrates multiple specialized agents that pass work down an assembly line.

        ┌─────────────────────────────────────────────┐
        │            Web UI (FastAPI + HTML)           │
        │   pick a lane · upload resume · launch       │
        └───────────────────────┬─────────────────────┘
                                 │
                        build_crew(lane)
                                 │
        ┌────────────────────────▼────────────────────────┐
        │                    THE CREW                      │
        │                                                  │
        │   🔎 Scout  ──►  ✍️ Scribe  ──►  (lane-specific)  │
        │   finds roles    writes letters,                 │
        │   & contacts     fills forms / drafts emails     │
        └──────────────────────────────────────────────────┘
                                 │
              ┌──────────────────┼──────────────────┐
              ▼                  ▼                  ▼
        Playwright          Gmail API           report.md
        (fill forms)      (create drafts)    (combined output)
  • A Scout agent searches the web (via Serper) and gathers roles, links, professor emails, or contacts.
  • A Scribe agent uses your resume to write tailored letters/emails, then takes the right action for the lane — filling a form, creating a Gmail draft, or logging a link.
  • Tasks run sequentially, with each agent's output passed as context to the next.

🧰 Tech stack

Tool Role
CrewAI Multi-agent orchestration — defining agents, tasks, and how they coordinate
Groq LLM inference (Llama 3.3 70B) — fast and free-tier friendly
Serper Web search API for finding roles and professors
FastAPI Backend server + REST API powering the web UI
Playwright Browser automation for filling application forms
Gmail API Creating draft outreach emails (OAuth2)
Vanilla HTML/CSS/JS A custom, lightweight frontend

📁 Project structure

job_hunter_crew/
├── config/
│   ├── agents.yaml          # WHO each agent is (role, goal, backstory)
│   └── tasks.yaml           # WHAT each agent does
├── frontend/
│   └── index.html           # the web UI (lane picker, pipeline, results)
├── src/
│   ├── tools/
│   │   ├── gmail_tool.py     # creates Gmail drafts (never sends)
│   │   ├── autofill_tool.py  # Playwright form-filler
│   │   └── report_tool.py    # writes the combined report
│   ├── crew.py               # the orchestrator — builds the crew per lane
│   ├── server.py             # FastAPI backend
│   └── main.py               # optional command-line entry point
├── output/                   # generated report.md + form screenshots
├── .env.example              # template for your keys (copy to .env)
├── requirements.txt
└── README.md

🚀 Getting started

1. Clone and set up

git clone https://github.com/<your-username>/job-hunter-crew.git
cd job-hunter-crew

python -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate

pip install -r requirements.txt
playwright install chromium      # downloads the browser for form-filling

2. Add your keys

Copy the template and fill in your own values:

cp .env.example .env

Then edit .env:

GROQ_API_KEY=your_groq_key_here          # free at console.groq.com
SERPER_API_KEY=your_serper_key_here      # free at serper.dev
MODEL=groq/llama-3.3-70b-versatile

FULL_NAME=Your Name
EMAIL=your.email@gmail.com
PHONE=+910000000000
RESUME_PATH=./your_resume.pdf

Drop your resume PDF into the project folder and point RESUME_PATH at it.

3. (Research lane only) Set up Gmail

To create email drafts, you need a Google OAuth client:

  1. In Google Cloud Console, create a project and enable the Gmail API.
  2. Under OAuth consent screen, add your own email as a Test user.
  3. Create an OAuth Client ID of type Desktop app, download the JSON, rename it to credentials.json, and place it in the project root.

The first time you run the research lane, a browser opens asking you to approve draft access — approve it, and a token.json is created automatically.

4. Run it

python src/server.py

Open http://localhost:8000, pick a lane, set how many roles, and hit Launch.


🎯 Usage

  1. Choose a lane — Startup jobs, Research interns, or Big companies.
  2. Confirm your resume (it's auto-detected, or drag a new one in).
  3. Type what you're after — e.g. remote ML intern in India or computer vision research intern.
  4. Set how many roles and click Launch agents.
  5. Watch the agent pipeline light up, then download report.md with all the results. For the research lane, check your Gmail Drafts.

⚠️ Limitations & responsible use

This project is honest about what it can and can't do:

  • Form filling works on simple forms (basic fields + file upload). Sites with logins, CAPTCHAs, or complex multi-step flows will fill partially or not at all — by design, the tool does not bypass bot-protection.
  • It never auto-submits. Forms are filled and left open for you to review and submit, so you stay in control.
  • Emails are drafts only. The Gmail integration creates drafts — it never sends. Always verify a professor's email against the source link before sending, as web-sourced emails can occasionally be outdated.
  • Output quality depends on the LLM tier. On Groq's free tier, token limits can interrupt longer runs and reduce email quality. A paid tier removes this.

💡 Biggest lesson from building this: AI agents are powerful, but knowing what not to automate (OTPs, CAPTCHAs, hitting "send") matters as much as what you can.


📜 License

This project is licensed under the MIT License — see the LICENSE file for details.


Built with ❤️ and a lot of debugging, using CrewAI.

If you're building agent systems — or know a team that is — I'd love to connect!

About

Multi-Agent Internship Application System | CrewAI, Groq, FastAPI, Playwright, Gmail API

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages