AI-powered personal job search system
दृष्टि (Drishti) — Sanskrit for vision, insight, perspective. See through every job posting clearly: fit score, gap analysis, tailored resume — all from the command line.
| Step | You do | Drishti does |
|---|---|---|
| Find a job | Paste the URL | Scrapes the full JD |
| Evaluate fit | — | Scores 0–100, breaks down by technical/domain/seniority/stack/market fit |
| Gap analysis | — | Lists missing skills and how bridgeable they are |
| Tailored resume | Approve | Rewrites your master resume for that exact role, exports PDF |
| Track pipeline | Update status | Stores everything in local SQLite, filterable dashboard |
| Monitor companies | Add to watchlist | Scans career pages for new openings |
You are always the one who decides to apply. Drishti does the prep work.
# Clone / copy the project folder
cd drishti
# Install dependencies
npm install
# Set up your API key
cp .env.example .env
# Edit .env and add your ANTHROPIC_API_KEY
# Install globally (optional, for `drishti` to work anywhere)
npm linkdrishti analyze "https://jobs.lever.co/snowflake/some-job-id"Outputs a full breakdown: score bar, scorecard, matched/missing skills, gap analysis, apply recommendation.
drishti generate 3
# Where 3 is the job's ID from `drishti list`Creates output/punith_anumala_snowflake_data_engineer_20260409.pdf
The file is saved locally — not submitted anywhere.
drishti list # All jobs, sorted by score
drishti list --status shortlisted # Filter by status
drishti list --market india # Filter by market
drishti list --min 70 # Only strong fitsdrishti detail 3drishti status 3 shortlisted
drishti status 3 applied
drishti status 3 interview
drishti status 3 offer
drishti status 3 rejectedValid statuses: new → analysed → shortlisted → applied → interview → offer / rejected
drishti note 3 "Referral from Priya. Deadline Jan 30."# Add companies to monitor
drishti watch add Snowflake "https://careers.snowflake.com/jobs"
drishti watch add Databricks "https://www.databricks.com/company/careers/open-positions"
drishti watch add ThoughtWorks "https://www.thoughtworks.com/careers/jobs"
drishti watch add Infosys "https://career.infosys.com/joblist"
# List watched companies
drishti watch list
# Scan all pages for new openings
drishti watch scanNew postings are printed with a ready-to-run drishti analyze command.
| Dimension | Max | What it measures |
|---|---|---|
| Technical match | 30 | Core tech stack overlap |
| Domain match | 20 | Industry/domain alignment |
| Seniority match | 15 | Level fit (IC vs lead vs architect) |
| Stack overlap | 20 | Specific tools/frameworks |
| Remote/India fit | 15 | Remote-friendliness + India market signals |
Verdicts: STRONG FIT (75+) · GOOD FIT (55–74) · MODERATE FIT (40–54) · WEAK FIT (<40)
Edit src/resume.js — replace the MASTER_RESUME constant with your actual resume text.
The richer and more detailed your master resume, the better the AI tailoring.
drishti/
├── src/
│ ├── cli.js # Entry point & command router
│ ├── resume.js # Your master resume (edit this!)
│ ├── commands/ # Command implementations
│ ├── ai/ # Claude AI analysis & generation
│ ├── db/ # SQLite layer (schema + queries)
│ ├── pdf/ # PDF resume generator
│ ├── scraper/ # Job page & career page scraper
│ └── tui/ # Terminal dashboard renderer
├── data/
│ └── drishti.db # Local SQLite database (auto-created)
├── output/
│ └── *.pdf # Generated tailored resumes
├── .env.example
└── package.json
- Run
drishti analyzefirst — always. The score tells you ifgenerateis worth running. - Set status as you go —
drishti status <id> appliedkeeps your pipeline honest. - Scan weekly —
drishti watch scanevery Monday morning for fresh openings. - Review every PDF before sending — AI tailors it well but you know your story best.
- Add notes — interview dates, referral names, recruiter contacts.
Built for Punith Anumala · दृष्टि v1.0