Skip to content

Aditya-00a/Instaply

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Instaply — job applications that happen while you sleep



🪐 Instaply

Job applications that happen while you sleep.


License: MIT Python 3.10+ Built with Playwright Local-first PRs Welcome


⚡ Get running · 🧠 How it works · 💛 Why this exists · 🛡️ Privacy · 🤝 Contributing


Tip

One command sets it up. python setup.py auto-detects your hardware, installs Ollama if you don't have it, picks the right local model for your machine, and writes your config. About 60 seconds.



⚡ Get running in 5 commands

git clone https://github.com/Aditya-00a/Instaply
cd Instaply/agent

python setup.py                                       # detect HW + install Ollama + pick model
python setup.py profile --resume ~/Desktop/cv.pdf     # build your profile from a PDF
python setup.py doctor                                # sanity-check everything
python run.py                                         # foreground first run

# Then schedule it to run unattended (one of these)
bash scripts/setup-scheduler.sh                       # macOS / Linux
.\scripts\setup-scheduler.ps1                         # Windows

Under 5 minutes on a fresh laptop. Each step is opinionated and gets out of your way:

Command What it does
python setup.py Detects your OS / RAM / GPU. Installs Ollama via brew / winget / curl. Picks the right local model for your hardware (3B → 70B). Writes config/.env.
python setup.py profile Walks ~15 questions (identity, contact, work auth, target roles, optional EEO). Pass --resume <path> to autopopulate from a PDF / DOCX. Writes data/profile.json + data/master-resume.json.
python setup.py doctor Runs 10 health checks (Python version, deps, Ollama up, model pulled, Playwright Chromium, profile valid, SQLite writable). Tells you the exact fix for any failure.
python run.py Starts the autonomous loop in the foreground. Discovers, scores, tailors, drafts. Hit Ctrl-C anytime.
setup-scheduler.{sh,ps1} Installs it as a scheduled task (macOS launchd / Linux cron / Windows Task Scheduler). Idempotent, has status / remove / start / stop subcommands.

After the scheduler is in, you sleep. The loop wakes up every 30 min, discovers fresh jobs across Greenhouse / Lever / SmartRecruiters / JobSpy sources, scores them against your profile, drafts tailored applications, and queues them. You wake up to a queue of drafts ready to review and submit.

Important

Instaply runs on your laptop, with your IP, your cookies, and your local LLM. Nothing in the apply path touches an Instaply server. There is no Instaply server.



💛 Why this exists

Sending hundreds of job applications by hand is broken. Most never reach a human. The few that do are filtered before anyone reads them. Existing automation tools want $30–80/month to fill a form on your behalf, and they do it from a datacenter IP that gets bot-detected within seconds.

Instaply takes the opposite shape. It's a local-first agent that runs on the machine you already own, fills out applications with your real browser, and pauses for you to solve the captcha and click submit. MIT licensed, no subscriptions, no telemetry, no servers in the loop. Free forever.

If it helps you land a role, open an issue titled "Got the job". That's the only metric that matters.



🧠 How it works

Instaply architecture

A typical day, end-to-end:

sequenceDiagram
    autonumber
    participant Sched as Task Scheduler
    participant Agent as Autonomous Agent
    participant Disc as Discovery
    participant Engine as Scoring + Tailoring
    participant DB as ~/.instaply/data.db
    participant Browser as Your Chrome (Playwright)
    participant ATS as Greenhouse / Lever / SmartRecruiters
    participant You

    Sched->>Agent: wake up (every N minutes)
    Agent->>Disc: scan ATS pools + JobSpy sources
    Disc-->>Agent: 200 fresh postings
    Agent->>Engine: score against profile (39 rules + LLM fallback)
    Engine-->>Agent: 12 strong matches
    Agent->>Engine: tailor resume + cover letter per match
    Agent->>DB: queue 12 drafts as packet_generated

    Note over You,Browser: When you sit down later…
    You->>DB: review the queue
    You->>Browser: approve draft #3
    Browser->>ATS: open + autofill 23 fields
    Note over Browser,You: pauses at captcha + final Submit
    You->>Browser: solve captcha and click Submit
    You->>DB: mark submitted ✓
Loading

The agent never silently submits anything. The autofill engine fills ~80% of fields with deterministic rules, falls back to your local LLM for the gnarly 20%, and always stops at the captcha + the Submit button for you to verify.



🆚 vs the alternatives

🪐 Instaply 💸 Paid SaaS agents 🪟 Browser extensions
Price $0 · MIT $30–80 / month Often free, then upsell
Captcha ✅ You solve, in your own browser ❌ Bot detection often blocks ⚠️ Inconsistent
Your data ✅ Local SQLite, zero servers ☁️ Their cloud ☁️ Their cloud
Source code ✅ MIT, on GitHub ❌ Closed ❌ Closed
Runs while you sleep ✅ Background loop ✅ But: cloud-side ❌ Only when you click
Account required ❌ None ✅ Always ✅ Usually
Picks the right LLM for your hardware ✅ Setup wizard n/a n/a


🛠️ What it does

CapabilityHow
Job discoveryPolls Greenhouse, Lever, SmartRecruiters slug pools + JobSpy aggregators (LinkedIn, Indeed, Glassdoor) on schedule
Scoring39 deterministic field rules + LLM fallback for ambiguous fits; weighted by your profile, target roles, sponsorship requirements
Resume tailoringPer-job re-ranking of bullets and projects against the JD, controlled by config/resume_rules.json
Cover letter draftingLocal LLM, conservative prompt with the candidate's grounded experience
Form autofillPlaywright opens your Chrome, fills 23+ standard fields, pauses for captcha and final submit
Queue + auditLocal SQLite at ~/.instaply/data.db — every job, every decision, every screenshot
Confirmation trackingOptional Gmail OAuth to match employer reply emails back to applications
Self-restartWatchdog script keeps the loop alive across crashes and reboots


🛡️ Privacy

What Where Who sees it
Resume + extracted profileagent/data/profile.json + master-resume.jsonOnly you, plus the ATS you apply to
Saved screening answersagent/data/jobs.dbOnly you
Application history + screenshotsagent/data/jobs.db + artifacts/Only you
LLM callsYour local Ollama (default) or your own API keyYou + your model provider

❌ What Instaply doesn't do

  • No telemetry
  • No analytics pings
  • No accounts
  • No Instaply server in the apply path (there is no Instaply server)
  • No tracking cookies
  • No third-party scripts

✅ What Instaply does

  • Stores everything in local SQLite + JSON
  • Uses your residential IP + your cookies + your real Chrome profile
  • Lets you rm -rf agent/data/ to factory-reset
  • Pauses for your captcha + your Submit click
  • Ships every line under MIT
  • Lets you read the source before you trust it


📦 Repo layout

agent/                    # 🤖 the autonomous engine
├── run.py                # ├─ the persistent discovery + apply loop
├── apply_now.py          # ├─ single-job worker (called by run.py + manually)
├── setup.py              # ├─ cross-platform setup wizard
├── find_wd_job.py        # ├─ Workday discovery (beta)
├── jobspy_search.py      # ├─ JobSpy aggregator wrapper
├── backend/              # ├─ services the loop depends on
│   ├── services/         # │  ├─ auto_apply, application_pipeline, tailor, …
│   ├── db/               # │  ├─ jobs repository
│   ├── models/           # │  ├─ pydantic schemas
│   └── prompts/          # │  └─ LLM prompt templates
├── config/               # ├─ env + design tokens + resume rules
├── data/                 # ├─ company pools (your profile lives here)
└── scripts/              # └─ scheduler setup, watchdog, gmail tracker

apps/web/                 # 🌐 instaply.asion.ai — landing page
.github/                  # 🤖 issue templates, banner, architecture diagram
LAUNCH.md                 # 🚀 launch playbook (GitHub setup + announce)


🔐 What still needs you

Three things Instaply will never do silently — by design:

🧩

Solve captcha

When hCaptcha or reCAPTCHA Enterprise pops up, the agent pauses and waits for you.

👆

Click final Submit

The last button press is always your call. Always.

📨

Confirm landing

Look for the confirmation page yourself, then mark it done so it gets logged.

Everything else (parsing forms, filling 23+ field types, remembering your saved answers, scoring jobs, scheduling the loop, tailoring per JD) is automated.



🎯 Roadmap

✅ Shipped

  • Greenhouse adapter
  • Lever adapter
  • SmartRecruiters adapter
  • Cross-platform setup wizard with hardware detection
  • Auto-install Ollama + auto-pick model
  • Windows scheduled-task install
  • Background watchdog + auto-restart
  • Resume tailoring engine (39 field rules + LLM fallback)
  • Local SQLite audit trail

🚧 In flight / planned

  • Profile wizard (replace manual JSON editing)
  • Workday adapter (in beta — Workday is hostile to automation)
  • Ashby + iCIMS adapters
  • macOS launchd + Linux cron scheduler scripts
  • Confirmation-email tracker (Gmail OAuth)
  • Local web review dashboard at localhost:3001

PRs welcome for any of these. See CONTRIBUTING.md for good first issues.



📈 Star history

Star History Chart




If Instaply helped you land a job…

Open an issue titled "Got the job" — it's the only metric that matters.

If you want to support the project…

⭐ Star the repo — it's the cheapest way to help other students find this.



📄 MIT licensed. Do whatever you want with this. See LICENSE.


Built with Python, Playwright, and a complete refusal to charge anyone $30/month to fill a form.