TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Continuous discovery across 50,000+ company boards and 27 ATS providers and job feeds, honest match scoring, and tailored resumes grounded in your real experience.
ProductivityPython · HTMLGitHub @karthiklucky1OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Autonomous job-search agent: FAISS semantic ranking, LLM resume tailoring, Playwright auto-apply, human-in-the-loop via Telegram.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
SpotApply discovers real, fresh roles straight from company ATS APIs and job feeds, scores each one against your résumé with a multi-stage matching cascade, drafts tailored résumés and cover letters (fact-checked against your real experience), auto-fills application forms in your browser, and keeps you in control of the final Submit. You always click Submit. SpotApply prepares and fills — it never silently fires off applications on your behalf. The machine prepares, the human decides.Read the full README ↗
SpotApply discovers real, fresh roles straight from company ATS APIs and job feeds, scores each one against your résumé with a multi-stage matching cascade, drafts tailored résumés and cover letters (fact-checked against your real experience), auto-fills application forms in your browser, and keeps you in control of the final Submit.
Submit is always your click. By default you press Submit on the form; with the optional One-click submit setting, your "Apply & Submit" click on the dashboard approves that one application and the extension presses the form's Submit for you, only on login-free boards, only with every required field filled, never past a CAPTCHA or a sign-in. Nothing is ever fired off unattended. The machine prepares, the human decides.
It began as a single-user personal job agent and has grown into a multi-tenant web app with accounts, per-user matching, a freshness engine, a browser extension, and a Telegram review loop.
LOCAL_SCORE_FALLBACK, on by default).Discover ─▶ Match cascade ─▶ Score & enrich ─▶ Tailor (grounded) ─▶ Auto-fill ─▶ You review & Submit
Three scheduled lanes keep the pool current without redundant work:
| Lane | Cadence | Job |
|---|---|---|
| Pulse lane | every tick (~1 min) | Polls boards on their own next_poll_at schedule: followed companies & recently-posting boards every ~5 min, every live board at least hourly, dead boards daily. Unchanged boards are skipped via a posting-list signature. Brand-new jobs take a per-job fast path: role match → prescore → Claude → shortlist → fresh alert, in minutes. |
| Fresh lane | every ~2 h | Boards-only rescan of the whole registry. |
| Full discovery | every ~6 h | Boards + all aggregators/feeds, one global pass for all users. |
An independent matching lane (every ~5 min) scores each user's unscored pool so a stalled discovery can never stall matching.
Stages run cheapest-first; a job only advances if it survives the previous gate
(app/matching/pipeline.py):
| Stage | Module | What it does |
|---|---|---|
| 0. Retrieval | matching/matcher.py | BM25 + FAISS (all-MiniLM-L6-v2) over unscored jobs, newest first, with a freshness reserve so new postings always get ranked. |
| 1. Rule filter | matching/filters/ | Title/seniority/location/job-type gates, per-company cap & cooldown. |
| 2. Ghost filter | matching/filters/ | Drops postings that look inactive or fake. |
| 3. Embedding gate | matching/filters/ | Cosine-similarity floor. |
| 4. LLM cascade | matching/reranker.py | Tier 1: a cheap model (GPT-4o-mini or Claude Haiku) bulk-prescores candidates and drains clear misfits. Tier 2: Claude produces the authoritative 0–100 score with reasoning, tuned to your profile. |
| 5. Hire probability | matching/hire_probability.py | Blends fit with hiring-intent signals into a priority score. |
| 6. Senior review | intelligence/senior_reviewer.py | Independent "senior engineer" verdict, on demand. |
tailoring/grounding.py) — every bullet must be supported by
your master résumé; flagged drafts are rebuilt with reviewer feedback.tailoring/lock.py) — Education facts (degree, school, dates) are
restored verbatim from your master résumé after every draft. An altered credential
is structurally impossible, not merely detected.tailoring/doctor.py) — ATS keyword coverage, weak-bullet and
banned-word scan, integrity anchors, an AI-writing fingerprint check with a
"reads human" score, and a recruiter's-read verdict — all surfaced in the review UI.sentence-transformers (all-MiniLM-L6-v2), FAISS, rank-bm25python-docx, pypdf for résumé parsing/generationpython-telegram-bot review loopapp/
api/ # FastAPI app: all routes, dashboard, auth, admin (server.py)
db/ # SQLModel models, init/migrations, Supabase client
discovery/ # ATS scrapers + title filter + dedupe pipeline
sources/ # Aggregators & feeds (~20)
matching/ # Cascade: matcher, filters, two-tier reranker, hire_probability
tailoring/ # Tailor, ATS keywords, grounding, doctor, lock (immutable facts)
autofill/ # Playwright form filler + answer pack
intelligence/ # Sponsorship/H-1B, work auth, senior reviewer, urgency, referral,
# skill gap, job check
strategy/ # pulse_lane (freshness), hot_lane (legacy), fresh_alerts,
# adoption, daily engine
analytics/ # Funnel, cost dashboard, CRM, reporter
qa_store/ # Canonical applicant answers + memory resolver
telegram_bot/ # Async handoff / approval loop
templates/ # landing, dashboard, pricing, auth, privacy, terms, extension
extension/ # Chrome extension (MV3): background, content, popup
scripts/ # CLI entrypoints: run_discovery, run_matching, seed_registry, ...
tests/ # pytest suite
data/ # Résumé master, FAISS index, generated docs, local SQLite
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
cp .env.example .env # fill in API keys (see below)
python -m app.db.init_db # create tables
Populate and rank jobs:
python -m scripts.seed_registry # seed company boards (optional)
python -m scripts.run_discovery # pull jobs from sources
python -m scripts.run_matching # score them against your résumé
Run the app:
# Production-style: API + internal scheduler lanes
uvicorn app.api.server:app --host 0.0.0.0 --port 8000
# Local all-in-one: API + Telegram bot + harvester/report schedulers
python -m app.main
Open http://127.0.0.1:8000/ (landing) → /dashboard (your board).
Configure via .env (see .env.example for the full list):
| Group | Keys | Notes |
|---|---|---|
| Database / Auth | SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, DATABASE_URL | Leave blank for local SQLite single-user mode. |
| LLM | ANTHROPIC_API_KEY, OPENAI_API_KEY (both optional) | Best scoring quality with Claude; with neither key set, free local models score everything (LOCAL_SCORE_FALLBACK). |
| Payments | STRIPE_SECRET_KEY, STRIPE_PRICE_ID_PRO, STRIPE_WEBHOOK_SECRET, PAYMENT_BANK_DETAILS | All empty = payments off, everyone gets Pro free. Set the Stripe vars to enable the $100/mo Pro checkout (test-mode keys first); PLAN_GRANDFATHER_UNTIL keeps earlier signups on Pro once billing is live (unset = everyone with a profile); PAYMENT_BANK_DETAILS shows a manual bank-transfer option. |
| Freshness | PULSE_LANE_ENABLED, PULSE_FAST_INTERVAL_MINUTES, PULSE_FLOOR_INTERVAL_MINUTES | Defaults: on, 5 min fast lane, 60 min floor. |
| Matching | MIN_MATCH_SCORE, TOP_K_RERANK, LLM_RERANK_CAP, DAILY_APPLY_LIMIT | Cascade and volume tuning. |
| Discovery | GREENHOUSE_BOARDS, LEVER_BOARDS, ASHBY_BOARDS | Comma-separated slugs (registry-seeded boards cover the rest). |
| Telegram | TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID | Optional review loop, locked to your chat. |
extension/ is a Manifest-V3 Chrome extension that fills application forms in your own
browser — you keep the session, and you control Submit. Install it from the
Chrome Web Store
(or visit /extension in the app). Developers testing an unreleased build: remove the
Store copy first (two copies both fill), then chrome://extensions → Developer Mode →
"Load unpacked" → select extension/. Changes under extension/ reach Store users only
after a manifest version bump and a new Store review.
Dockerfile installs dependencies + Playwright Chromium and runs Uvicorn.railway.toml (Docker builder, health check at /health).nixpacks.toml and Procfile.The FastAPI server runs its scheduler lanes in-process — no external cron required.
pytest # full suite
pytest tests/test_pulse_lane.py tests/test_cascade.py -q
ruff check app # lint
The suite covers the matching cascade, dedupe, freshness scheduling, fresh alerts, tailoring quality (grounding, doctor, lock layer), autofill verification, tenant scoping, and funnel analytics.
robots.txt.Two plans, stated the same everywhere in the app: Free (5 tailored
resumes/day, 2 auto-fills/week, full discovery + scoring) and Pro (35 tailored
resumes/day, unlimited auto-fills; billed monthly, cancel any time). Pro pricing is
coming soon: every account currently has Pro limits for free, and no price is shown
or charged until PRO_PRICE_ANNOUNCED is turned on.
docs/research/ holds the strategy work: a competitive analysis, a freshness
strategy, and a user-research-driven redesign plan
(user-research-redesign-2026-07.md + appendix) that maps the roadmap —
Truth Layer, Visa Odds, Outcome Loop, Trust Economics, Recruiter Bridge.
Actively developed. Operational today: discovery across direct ATS boards + feeds, the pulse-lane freshness engine with the "My Companies" watchlist, the full matching cascade with two-tier LLM scoring, grounded tailoring with the Doctor and lock layer, per-user scoring and fresh alerts, dashboard (Pipeline / All Jobs / Ghost Jobs / Skill Gap / Boards), accounts and plans, and the Telegram review loop. Auto-fill runs under human supervision via the extension.