Lattice
연구를 위한 작업공간
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Local job-search engine: aggregate 500+ career boards, keyword + model fit scoring, resume tailoring and form filling through your own Claude subscription
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A local, single-user job-search engine: aggregate → score → tailor → apply, all on your machine.
JobScout pulls postings from ~530 company career boards and a few aggregators, scores each one
twice (a fast keyword score, then a model-judged fit score that knows the difference between
"SRE who runs Kafka" and "Kafka internals expert"), tailors a two-page ATS-safe resume per job,
builds the application plan from your profile, and fills the employer's form in your own
Chrome for you to review or submit. It learns from your thumbs-up/down and from the answers you
give while tailoring.README 전문 보기 ↗A local, single-user job-search engine: aggregate → score → tailor → apply, all on your machine.
JobScout pulls postings from ~530 company career boards and a few aggregators, scores each one twice (a fast keyword score, then a model-judged fit score that knows the difference between "SRE who runs Kafka" and "Kafka internals expert"), tailors a two-page ATS-safe resume per job, builds the application plan from your profile, and fills the employer's form in your own Chrome for you to review or submit. It learns from your thumbs-up/down and from the answers you give while tailoring.
It is built around one person's search (SRE / DevOps / observability roles, Austin TX or US-remote) and is honest about that — see Who this is for.
| Stage | What happens | Where |
|---|---|---|
| Find | Fetches from direct ATS boards (Greenhouse, Lever, Ashby, SmartRecruiters, Workday, Oracle HCM, Phenom, iCIMS, Recruitee, Workable, BambooHR, Breezy) plus Adzuna, Remotive, RemoteOK, The Muse, Hacker News. Boards fetch 8 at a time with a live progress strip. Runs on demand or on a clock (06:00 / 11:00 / 18:00 / 23:00 by default). | fetchers.py, config/companies.yaml |
| Score | Keyword score from config/skills.yaml (instant prefilter) and a fit score 0–100 with a one-line reason and the gaps, from a cheap Claude model through your Claude subscription (claude -p, no API key). | scoring.py, fit.py |
| Learn | Thumbs on fit scores accumulate; after five, a stronger model rewrites your judgement rules (resume/fit-profile.md) and affected jobs re-score. Answers you give while tailoring update your skills inventory. | fit.py, inventory.py |
| Tailor | Two-phase Claude Code skill: analyze (asks only about requirements your inventory can't answer) → generate (two-page DOCX, cover letter long + short, Q&A answers). Worker pool, per-job folders. | tailor.py, .claude/skills/tailor-resume/ |
| Apply | Reads the employer's form (Greenhouse / Ashby / Lever), resolves every field from resume/profile.yaml, shows you the plan, then a Claude session with the Chrome extension fills it in your Chrome — prefill leaves the tab for your Submit; unattended submits only when the live form matches the approved plan exactly. Never captchas, never logins, never account creation. | apply.py, .claude/skills/apply-queue/ |
| Alert | "New this refresh" filter and an optional Discord digest of new jobs above your score bar. | notify.py |
Everything stays on your machine: SQLite database, your resume files, your keys. The only outbound calls are to the job boards and to Claude through your own subscription.
pipclaude -p) for fit scoring and resume tailoring. Not needed for find/score-by-keyword.git clone https://github.com/vikaspalakurthi/jobscout.git
cd jobscout
pip install -r requirements.txt
python server.py # http://localhost:8765
Click Refresh. The first full refresh of ~530 boards takes 10–15 minutes; the Jobs page shows progress. You now have a scored, filterable inbox — that part needs nothing else.
config/skills.yaml — titles, skill weights, location points,
flags — then Rescore (instant). Relevance/search-term changes apply on the next Refresh.config/companies.yaml lists the companies fetched directly. Add one from the
Companies page ("Add a company" probes which ATS it uses), or by hand:
python detect.py "Company Name" / python detect.py --url <careers page> "Company".config/local.yaml (gitignored).Copy the templates and fill them in — these files are gitignored and never leave your machine except through your own Claude subscription:
cp templates/resume/*.example.* resume/ # then rename: drop ".example"
| File | What it holds | Used by |
|---|---|---|
resume/profile.yaml | Contact, location, work authorization, salary policy, EEO answers, consents | apply (form filling) |
resume/master-resume.md | Your full, truthful resume in Markdown | tailor |
resume/skills-inventory.md | Every skill with status have / familiar / dont-have and real depth | tailor, fit |
resume/preferences.md | Layout and tone rules for generated documents | tailor |
resume/fit-profile.md | Judgement rules for fit scoring — created automatically, learns from your thumbs | fit |
Then: cd .claude/skills/tailor-resume && npm install (DOCX builder), and on the Settings page
press Test under Resume tailoring to confirm claude is reachable.
For the filler: open a Claude Code session with the Chrome extension connected and type
/apply-queue. It drains the queue of plans you approved on the Resumes tab.
python refresh.py # fetch all sources + rescore
python detect.py "Company" # which ATS? prints the companies.yaml line
python discover.py --names list.txt --fingerprint # bulk board discovery (review the output by hand)
python tailor.py run <job_id> # tailor one job
python apply.py plan <job_id> # build/inspect an application plan
python fit.py score <id> [...] # fit-score jobs synchronously; `fit.py profile` folds feedback in
python notify.py test # Discord test post
python perf.py # endpoint timings; run when the UI feels slow
Anyone running a focused search. Two settings make it yours:
home, home_state,
remote_us, …) and the Adzuna sweeps follow it.config/presets/) — see CONTRIBUTING. config/skills.yaml stays editable for anything finer.Work-authorization answers and the citizenship/clearance exclusion come from your
resume/profile.yaml; the two Claude Code skills read the candidate's name and facts from
resume/, so they work for anyone once those files exist.
Docs site: https://vikaspalakurthi.github.io/jobscout/ — installation, quickstart,
terminology (ATS, categories, scores), architecture diagrams, page-by-page guide,
configuration and API reference, upgrading, troubleshooting, privacy. Built from docs/
with MkDocs (pip install -r requirements-docs.txt && mkdocs serve).
Maintainer notes, also on the site under Internals:
docs/ARCHITECTURE.md — data flow, schema, scoring, every endpoint,
the three categories of employer (documented APIs / undocumented JSON / never)docs/LEARNINGS.md — the gotchas: board quirks, classifier traps, filler
behaviour on real formsdocs/STATUS.md — current state and next stepsCLAUDE.md — conventions for AI coding sessions (the repo is built with them)Issues and PRs welcome — role presets, new board fetchers and classifier fixes are the best entry points. See CONTRIBUTING.md (includes the branching and release process); the Code of Conduct applies. Security concerns: SECURITY.md.
Versioned releases are tags on main (v0.1.0, …) with notes in CHANGELOG.md
and on the Releases page. main is
always runnable if you prefer to track it; see the docs site → Upgrading.
MIT.