★ Open-source & local-first. Help us grow:Star Oppy on GitHub
Oppyv1.0.7

Automate the search.
Filter the noise.
Score the fit.

A local-first career scraper and resume compatibility auditor designed to help active tech developers, students, and personal knowledge base managers.

View Repository
oppy --interactive
Oppy - Terminal-Native Opportunity Scout & Indexer
────────────────── Main Menu ──────────────────
[1] Synchronize Opportunities (Index Feeds)
[2] Browse Opportunities Ledger (Query & Filter)
[3] Configure Scan Settings (Filter Toggles)
[4] Help & Repository Details
[5] Exit Console
Press key [1-5] to select... █

“If you don't apply for internships, will internships apply to you?”

— Developer's Mother

Most career portals are bloated with advertisements, popups, and opaque algorithms. We designed Oppy to automate the discovery pipeline locally on your own host machine. By crawling listings silently in the background, formatting them, and exporting clean markdown databases, Oppy lets you track active opportunities directly inside your offline notes without clutter.

Built for Devs & Researchers

Oppy bypasses the friction of traditional web job portals to give you full local ownership of your search.

01 / SQLite

Local SQLite Cache

All opportunities are parsed and stored in a local SQLite database in WAL mode. Your search history remains private, offline, and permanent, even if listings are deleted from the web.

02 / Match

Resume Skill Auditor

Pass your resume file locally to check your compatibility. Oppy uses case-insensitive keyword boundaries to cross-examine skills like FastAPI, React, or C++ and list exact missing requirements.

03 / Export

Markdown, PDF & CSV Exporter

Compile crawled and filtered listings into clean, structured Markdown tables for your Obsidian vault, or export directly to standalone PDF and CSV spreadsheets with zero external dependencies.

Local Resume Compatibility Auditor

Pass your plain-text resume file locally to check your compatibility score against crawled listings. Oppy parses requirement profiles completely offline using word boundary matching. It lists matching technologies and flags exact missing skills, helping you target the right openings without sharing your personal data.

oppy -a --rankings
Analyzed 336 opportunities against your resume (~/.config/oppy/resume.txt)
Detected Resume Skills: aws, c++, docker, fastapi, git, go, javascript, next.js, python, react, sql, sqlite, typescript
Oppy AI Resume Audit Rankings
FitType & PlatformOpportunity & CompanyMatching SkillsMissing Skills
100%INTERNSHIP
'WEWORKREMOTELY'
Full-Stack Engineer (Python + Temporal)
Toptal • Remote (LATAM & Europe)
pythonNone
100%INTERNSHIP
'WEWORKREMOTELY'
AI Engineer - AWS Bedrock & Agentic Systems
Toptal • Remote (LATAM & Europe)
awsNone
100%INTERNSHIP
'WEWORKREMOTELY'
AI Technical Lead - C++ Ecosystem
JetBrains • Remote
c++None

The Job-Hunting Loop

We have all been there: keeping 20 tabs open, copying details manually, missing deadlines.

Drake Hotline Bling Meme: Rejecting manual browser scouring, approving Oppy terminal Obsidian sync

Get Started Instantly

No installers, no databases to configure. Bootstrap Oppy straight from your terminal.

terminal
$ npx @dshenoyh/oppy-cli
$ npm install -g @dshenoyh/oppy-cli

Frequently Asked Questions

Where is the cached database stored?+

Oppy caches all data in a local SQLite database in WAL mode at ~/.config/oppy/opportunities.db. Your data remains fully offline on your own machine.

Does the resume auditor send my file to any server?+

No. The auditor parses your local plain-text resume completely offline using fuzzy string boundary matches. No network queries or API keys are required.

How do I configure headless automation?+

Run oppy --headless to trigger a silent scraper cycle and update your markdown tables. This can be scheduled easily using crontabs or systemd timers.