This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
What it does: It is an automated assistant that fills out online job application forms for you.
The problem it solves: Applying to jobs takes hours of typing the same information (name, experience, summary) over and over. This tool automates the boring typing part.
Who benefits: Job seekers who want to save time and energy during repetitive application processes.
Demo
How to see it in action: Clone the repo, set your profile in .env, and run python agent.py .
Visual confirmation: The browser opens automatically (headless=false), types the answers live on your screen, and takes screenshots before and after submitting.
Code
42lv88
/
Job_Apply_Agent-
Apply for job using agent
Job Apply Agent 🤖
An autonomous job application agent that combines Playwright (browser automation) with Ollama/Gemma (local LLM) to automatically fill and submit job application forms.
Architecture
┌─────────────────────────────────────────────────┐
│ agent.py (orchestrator) │
└────┬───────────┬──────────────┬─────────────────┘
│ │ │
▼ ▼ ▼
scraper.py llm_client.py form_filler.py
(Playwright) (Ollama HTTP) (Playwright)
│ │ │
▼ ▼ ▼
Job page Gemma 2B Fill fields
HTML/DOM local LLM + submit
Project Structure
Job_Apply_Agent-/
├── agent.py # Main orchestrator – run this
├── config.py # Env-var configuration loader
├── scraper.py # Playwright scraper (JD + form fields)
├── llm_client.py # Ollama HTTP client (Gemma)
├── prompt_builder.py # Builds LLM prompt, parses JSON response
├── form_filler.py # Fills fields + clicks Submit
├── test_pipeline.py # Integration test with mock HTML page
├── requirements.txt
├── setup.sh
└── .env.example
Quick Start
1. Install dependencies
bash setup.sh
2. Configure your profile
cp .env.example .env
# Edit .env with your name, email, resume…How I Built It
Core files breakdown:
agent.py: The main controller that connects everything together.
scraper.py: Looks at the webpage and finds all the text boxes and questions using Playwright.
llm_client.py: Talks to your local AI (Gemma) to figure out the best answers based on your resume.
form_filler.py: Types the answers into the form and clicks submit.
Playwright: A browser automation tool that acts like a robot hand, clicking buttons and typing into fields on web pages.
Ollama & Gemma 2B: A lightweight, open-weight AI model running locally on your computer. It reads the job description and form questions, then generates custom answers based on your profile.
Python Architecture: Built in modular pieces so the scraper, AI client, and form filler operate independently.
Why Does Open Innovation Matter?
Why Does Open Innovation Matter?
Privacy first: Your resume, phone number, and personal details stay on your own computer instead of being sent to a third-party cloud server.
No API costs: Running an open-source model locally via Ollama means you don't pay subscription fees or per-token API costs.
Total control: You can modify the code, swap out models, or adjust safety flags (DRY_RUN=true) easily without depending on closed platform rules.
The Lazy Payoff
Time saved: Instead of spending 5 to 10 minutes filling out every single job form manually, the agent fills it out in seconds.
Safety net: With DRY_RUN=true and non-headless mode, you always stay in control to review the answers before anything gets submitted.

Top comments (0)