JobScout

Your next steps — today

Loading…

Your hunt — where you stand

Loading…

Tune your search — fit map

Loading…
Loading...
Click a quadrant on the map to open its tool here.

↖ Widen · ↗ Strong · ↙ Focus · ↘ Strengthen

Your field

Roles posted per week, pooled and anonymous.

Outreach — who to contact

Everything due across your tracked jobs — cadence steps and any task with a due date — grouped by past due, today, and the window below. Cadence steps open a pre-filled Gmail draft; mark anything done when handled.

Loading…

Keep-warm network

Referral sources & contacts you're nurturing over time. Each can run a keep-warm cadence; its next touch also appears in the due list above.

Loading…

Outreach log

Every outreach touch you've logged, tied to its job and company. Log outreach from a tracker card (open a card → Outreach drafts → Log outreach) so each entry carries the job automatically.

People — everyone across your jobs & contacts

One row per person, merged across every card they appear on (matched by email, or name + company). Shows which jobs each person is linked to. Edit a person from any card via ✎ Edit; add a new one here or in Outreach → Keep-warm network.

Loading…

Developments — your wins, projects & credentials

A running record of your career developments. Each one is a reason to reconnect — log it, then notify the right keep-warm contacts with a ready-made note. (Feeding your job search and résumé comes in later phases.)

Loading…

Résumé bullet bank — reusable achievement lines, drawn from your wins

A library you build from developments (📄 Résumé bullet). Copy them into a tailored résumé when applying — they're never auto-inserted.

Two ways to capture — you only need one. Some sites JobScout can’t read on its own: anything behind a login or heavily JavaScript-rendered (ClearanceJobs, LinkedIn, Indeed, Workday portals). Both tools below read from your own logged-in browser — no password is ever stored.
  • Extension — recommended. One click on “Send to JobScout” saves a posting or a person from job boards and LinkedIn, and it helps fill out applications. Set it up in the card below.
  • Bookmarklet — no-install backup (this card). For a locked-down or borrowed computer where you can’t add an extension. Same capture, one manual click.

Bookmarklet capture

The no-install option — works on the same hard-to-read sites (login-walled, bot-blocked, or heavy JavaScript). It reads from your own logged-in browser; no password is stored. If you can install the extension, use that instead — it’s in the card below and does everything this does, plus applications.

1. Install the bookmarklet (one time)

Drag this button to your bookmarks bar — it handles both jobs and contacts, choosing what to save based on the page you’re on:

📎 Send to JobScout

2. Capture from any site

Open a search or page, then click the bookmarklet. It detects whether the page has jobs or people and asks you to confirm before sending. On a job board or careers page it saves the postings; on a LinkedIn profile it saves that one person (name, headline, company); on a search or leadership/team page it saves the people listed. Captured jobs show up in Search; captured contacts appear under a tracker card → Contacts → Import captured contacts.

Importing your own LinkedIn profile (to fill your résumé) is separate — it lives in My Profile → LinkedIn (upload your PDF, paste it, or one-click with the extension). The capture tools here save other people as contacts and jobs, never your own profile.

To paste a single posting — or a page JobScout can’t read — use the Add anything box at the top of the Search panel. It detects links, careers pages, gated sites, and pasted text in one place.

Assisted Apply extension

Fills job-application forms in your own browser from your validated profile — it never invents data, and you approve every submission. Tester install is through Chrome’s Developer mode; a one-click Web Store version will come later.

Checking for the extension…

Step 1 — Install (first time only)

  1. Download the file with the button below — it saves to your Downloads folder as jobscout-assisted-apply.zip.
  2. Unzip it. Open your Downloads folder, then right-click jobscout-assisted-apply.zipExtract All…Extract (Windows), or double-click it (Mac). You now have a folder named extension — note where it is (you’ll point Chrome at it and keep it there).
  3. Open the extensions page. In Chrome (or Edge), click the address bar, type chrome://extensions, and press Enter.
  4. Turn on Developer mode — the toggle at the top-right of that page.
  5. Load it. Click Load unpacked (top-left), select the unzipped extension folder, and click Select Folder. “JobScout Assisted Apply” now appears in your extensions list.
  6. Find it & pin it. Click the puzzle-piece �� Extensions icon at the top-right of the Chrome toolbar. In the drop-down, find JobScout Assisted Apply and click the �� pin icon next to it — its icon now stays on your toolbar for one-click access.
  7. Come back to this page and do Step 2 below.

Step 2 — Connect it to your account

The extension connects automatically while you're signed in here — nothing to paste. This button is just a manual backup if it doesn't pick up on its own. (It does not update the extension itself.)

Updating to a new version

Important: the ↻ Reload icon on chrome://extensions does not download anything — it only re-runs the files already on your disk. To actually update you must replace those files first:

  1. Click ⬇ Download extension (.zip) (in Step 1 above) to get the new version.
  2. Unzip it (right-click → Extract All, or double-click) — you get a fresh extension folder.
  3. Replace the old files: copy everything from the new extension folder into the same folder you originally loaded, choosing Replace when asked. (Or delete the old folder and re-add the new one with Load unpacked.)
  4. Go to chrome://extensions and click the ↻ reload icon on the JobScout Assisted Apply card — now it picks up the new files.
  5. Reopen this page; the status line above should read up to date ✓.
Files included:

Pipeline analytics

Loading…

Does the score predict anything?

Loading…

Fitted weights

Loading…

Add an employer job board

Pulls straight from the employer (recruiter-free). The board is validated live before saving.

Suggested from your results
Companies already in your matches that are on a supported ATS — one click adds their direct board.
Add several companies at once
Advanced — add a board by URL

Only needed when Find board can't reach the company. Paste the board URL — every field below is read off it automatically, so you never have to look these values up.

Fields read from that URL (edit only if you know the board)

Current employers

Where each board's jobs went

Four stages, from what the board handed back to what reached your list. Every drop is one of your own settings doing its job — the button next to it changes that setting. Nothing here changes on its own.

Not checked yet.

What each board is buying you

Board postings vs. how many jobs from the same company reached you only through an aggregator. A high “via middleman” count next to a healthy board usually means the board is a subset — a second Workday career site, or a second ATS.

Not checked yet.

Where your jobs came from

Sources are chosen for you from the categories in Profile. This page shows what ran on your last search, what each returned, and why it was on. You can override any of it below.

Advanced — turn individual sources on or off

An override here sticks until you reset it, and it wins over the automatic choice. Reset to baseline clears your overrides.

Suggest turning off sources that return nothing for your profile.

Capture-only sources are gated sites with no public feed — they don't run automatically; use Browser capture on their results pages.

Boards for your field

JobScout ships specialist boards for ten fields. If yours isn't one of them, it can look up the boards your field actually uses, check each one is live, and add the ones you choose. Nothing is searched until you include it.

Loading…

Relevance calibration (embeddings)

Semantic-fit (Voyage embeddings) distribution across your jobs, for tuning the blend window in scoring.py. Shows "off" until VOYAGE_API_KEY is set and a fetch has run.

Loading...
Resume-gap calibration
Distribution of requirement↔resume cosine across your stretch jobs, with the current covered/partial/gap cutoffs — for tuning them to real data. Embeds on demand.

Where the time goes

Milliseconds and queries per endpoint, since the last reset. Both, because either alone misleads: 2s over 400 queries is a per-row loop, 2s over 3 queries is one slow query — opposite fixes. Ranked by total time contributed, so an endpoint the page calls twelve times can outrank a single slow one. To read a page load: press Reset, hard-reload the app, come back and Refresh.

Loading…

Retention schema

Whether the event, sightings and fetch logs actually exist on this database, and whether anything is writing to them. Reads of these tables return empty rather than erroring, so a failed migration otherwise looks exactly like a quiet week.

Loading…

Give the event log a past

Reconstructs submitted and stage events from applications and tracker cards you already have, so response rate, silence and the funnel can see history from before the log existed. Imported rows are marked source=import — a reconstruction, not an observation — and can be removed again exactly. Nothing is written until you pick accounts.

Loading…

User activity

Who's signed in and how much they've used JobScout. Online = active in the last 5 minutes; presence and “last active” only track from when this shipped, so they're blank for earlier activity. Jobs = postings added to that user's list; AI = assistant calls and estimated cost.

Loading…

User feedback

Feedback from evaluators and users, with the auto diagnostic and any screenshot. Set a status and reply — the submitter sees your reply in their own feedback panel.

Loading…

Users & access

Grant admin, allow sign-in, and control who may use the shared API keys. Shared keys are off by default — a user without their own key and without a grant simply gets no AI features (they never spend on your token).

Loading…

Allow a new email

Allowing an email lets that person sign in. They appear in the users table above (and in group pickers) only after their first sign-in.

Groups

Named groups let you share an employer board with a specific subset of users (Employers tab → a board's share ▾ → pick a group).

Tracker flows

Define the kanban stage vocabularies. Edit the built-ins or add your own (e.g. Board seats, Consulting). Stages are in funnel order — the last stage is treated as the closed/negative end. You can't remove a stage that still has cards on it.

Maintenance

Assign any legacy unowned data rows (jobs, tracker, tasks…) to your account. Shared employer boards and global config are left untouched.

Recent admin activity

Employer boards — all users (site-wide)

Every tracked board across all users, worst health first. Dead boards (no response for 3 fetches) auto-disable themselves; use this to prune the rest — disable or remove boards site-wide. Contribution = jobs the board added on its last fetch.

Loading…

AI usage & cost — all users (global)

Estimated spend across all users (token‑based estimates), including everyone running on the shared operator key. Admin only — individual users see only their own cost in their Profile.

Loading…

Learned form adapters — global

Structure-only mappings the Assisted-Apply engine learned: which form field on a host maps to which profile key — never a value. A mapping auto-confirms after 3 agreeing AI observations or one user correction (the user's own fill matching their validated value), then is reused for everyone. Confirm, reject, or delete to curate.

Loading…

Board coverage — which fields have a verified board set

A board set is global — built once, read by every user in that field for ever. Until this has run, the search panel is a wall of “Build the board set” buttons and the first person in each field pays for a measurement everyone else then gets free. The sweep does not cover all 23 fields: a hunt for business development returns the aggregators the app already searches, because proposal and capture roles are advertised on the same general boards as the rest of business. It builds the fields whose sourcing says the general feeds under-serve them — plus any you name. Spends real AI calls and fetches.

Not checked yet.

Gate conversion — order the enrichment pass by ambiguity, or by score?

Two numbers and the rule that combines them, fixed before the data arrived: how often an unverified posting turns out to be gated once the full text lands, and whether the unread backlog is draining on its own. It states its own verdict rather than leaving the numbers to be read selectively. This has been computable for weeks and had no button — which is the same reason nobody read it.

Not read yet.

JSON-LD probe — do employer career pages emit structured postings?

Fetches each employer’s careers page once and counts JobPosting objects. Answers whether the no_jsonld enrichment failures are a parser problem or a real absence of structured data. Bounded, read-only, no AI, and it writes nothing to any job — but it does spend real fetches, so it stays a deliberate action rather than something the app does on its own.

Not run yet.

Action ladder — is it discriminating?

The ladder was inert in production and nothing said so: three readers used owner_stages()[1:] to mean “after applied”, but stage 0 is lead, so the slice started at applied — every applied job read as already advanced and every rung came back in_play. No error, no empty response: a working-looking endpoint returning a confident wrong answer. The signature of that failure is not an exception, it is a distribution — every application piled on one rung — so the app states its own verdict here rather than leaving somebody to read counts and judge.

Not checked yet.

Fetch review — what the numbers say

One AI call over the aggregate counters on this page — no job or user data leaves. It ranks the few systemic problems, quotes the numbers it reasoned from, and separates defects from expected behaviour. It only reports; nothing here changes your data. Every finding it can make was already visible in the tables below — that is the point: the McLean bug sat in these counters for weeks before a human read the CSV.

Not run yet.

Description enrichment coverage — global

On-demand full-text enrichment of truncated (Adzuna / web-search) descriptions, by resolved platform. Aggregate-only — no per-user or per-job data. Attempts counts every try; First tries excludes repeat (the same job failing the same way again), and the Rate is over first tries. Outcomes: enriched (full text recovered) · no_jsonld (employer page reached, no JobPosting — the JS-SPA tail) · text_too_short (found a JobPosting, no longer than the snippet) · gated_ats (resolved to iCIMS/Taleo/SuccessFactors/Phenom — link is good, text isn't readable) · server_unreachable (Workday 403s server IPs; needs extension capture) · no_redirect / redirect_failed / stayed_on_aggregator / landed_on_aggregator (the four distinct reasons resolution didn't reach an employer) · no_url · job_backoff / host_cooldown (skipped on purpose — nothing was fetched).

Runs the full six-tier resolver on your highest-fit jobs that still point at an aggregator. The backlog pass skips it for budget (that is what resolver_skipped counts), yet web-search has the best hit rate of any tier. Hard ceiling of 50 per pass; the AI arbiter tier runs only inside this pass and only when web-search finds nothing.
Loading…

Unplaceable locations — global

Location strings the offline gazetteer could not place, counted at fetch time. The radius filter keeps these jobs (flagged) rather than guessing another state — safe, but invisible without this list. unplaceable = a US-looking “City, ST” missing or spelled differently in us_cities.csv — these are the actionable ones, and the top row is the next alias worth adding. foreign = an explicit non-US marker; correctly unplaced, nothing to fix. Reset the tally after adding aliases so the next fetch shows what is still missing.

One call for all of them. The AI returns only a canonical “City, ST” — never coordinates — and an answer is stored only if the bundled gazetteer can place it, so a made-up town is discarded rather than believed. Learned aliases are listed below and can be forgotten.
Loading…

Learned non-requirements — global

Lines the gap classifier ruled out as not job requirements — EEO / Fair-Chance statements, anti-fraud recruiting notices, section headers, truncated fragments. Each was judged once by AI and is now filtered deterministically on every posting, for every user, at no further AI cost. The counterpart to the panel above: that one lists what the app could not decide, this one lists what it decided and no longer pays to re-decide. Forget all if a real requirement was suppressed by mistake.

Loading…

Inbox — forwarded job emails

Forward job emails to the address below. JobScout reads each one, matches it to an application, and suggests actions — you choose what to apply. It never changes your tracker on its own and never sends email for you.

Your forwarding address:
How to set up forwarding
Dedicated job inbox (recommended): forward everything to the address above — JobScout ignores non-job mail automatically.
Gmail auto-forward: Settings → Forwarding and POP/IMAP → add the address, confirm the code JobScout receives, then forward all mail or a filter of job senders.
One-off: just hit Forward on any job email — works from any provider, no setup.

Suggested actions

Loading…

Candidates from your emails

Recruiters and contacts found in your forwarded emails — candidates to review and add to Contacts, deduped across your whole search.

Loading…

Explore — fields outside your own that ask for what you already have

Reads the portable half of your résumé — the part that would still be true in another industry — and compares it against fields whose real postings have been read. Browsing costs nothing: those measurements are shared, so this is arithmetic. You pay only when you explore a field, and what you pay for is a real fetch. What travels is worked out under Profile → What travels to another field.

Where these travel
Fields you might not think of

Your explorations — each one is a saved search of its own

An exploration keeps its own résumé, its own fit bar and its own postings. Its jobs stay out of your other searches, and theirs stay out of it — a field you were curious about does not end up in the library you apply from.

Auto‑Hunt — a scheduled search that feeds your list

This is JobScout's automatic job retrieval: turn it on and, on a schedule, it fetches and scores new jobs using your parameters (interests, sources, filters), then puts the best matches into your one job list, badged hunt pick so you can see why they are there. Leave it off and jobs are only pulled when you click Fetch now. It never applies for you — each job has one‑click assisted autofill you review and submit in your own browser.

Auto‑Hunt used to keep its own separate queue of jobs on this tab. It doesn't any more: there is one list, and this tab shows what the hunt did.

Cadence Min score Max new / run

The schedule and the Daily digest below are the same once‑daily job. “Manual only” runs it only when you click Run now. Fit scoring respects your AI budget.

Last run

Loading…

Daily digest — the email version of this run

A once-a-day email of what needs your attention — past-due follow-ups, items due today, what is coming up, and any new matches the run found. It reports; it never fetches. Fetching is the Enable scheduled Auto‑Hunt switch above.


What your applications came back with

Which requirement gaps track a reply, and whether a résumé change helped — against the version you actually sent, not the one on file now.

Loading…

What should count for more?

Two things about a job that only you can weigh. Everything else in the ranking is estimated from how jobs actually turn out.

Loading…

Fit report

Patterns across your matches — the résumé gaps and hard requirements that keep coming up — each with one action. Fix a recurring gap once and it lifts every job that needs it.

Open to analyze your matches…

Application profile

Review everything JobScout will use to fill applications, and confirm it's correct. Only your own data is here — nothing is invented. Fix anything wrong before it reaches a job form.

Re-reads your uploaded résumé and all retained info and rebuilds your roles, education, skills, and summary — nothing invented. Then review the parsed result below.

Contact

Application defaults — what job forms use for current role and years of experience. Leave blank to derive from your most recent role and its dates.
Résumé variant
Keep separate résumés by job type (e.g. Investigative vs Editor). The Summary, Skills & Work history below belong to the selected variant; your Contact, Education & screening answers are shared across variants. The default variant is used for tailoring & scoring unless a saved search points at another one.
What travels to another field
Only the portable half is evidence about what you could do somewhere else. Wrote to deadline travels; wrote to AP style doesn't. Move anything that's in the wrong column — your edits outrank the automatic read and survive a résumé change.
Where these travel — and exploring a new field — is under Jobs → Explore.

Professional summary

Skills

Work history

Each role with dates and bullets — this is what fills employment history and "describe your experience".

Education

Correct anything wrong and add what's missing. This is what fills School / Degree / Field on applications.

Screening answers

Federal & veteran profile (USAJOBS federal track — expand only if targeting federal roles)

Feeds compliant federal résumés and veterans' preference. Your own data only — nothing invented.

Saved answers

Answers captured from past applications (e.g. "How did you hear about us?", notice period). JobScout reuses these automatically — edit or remove any.

Résumé source

Exactly what the app uses for your tailored résumé, ATS match, gap analysis, and job scoring — so you can confirm it's your own data.

Checking…

Résumé review — ATS & completeness

How your master résumé would fare at automated (ATS / AI) screening: what the parser can read, likely knockout exposure for your target roles, unsupported claims, and weak accomplishments — each with an honest, do-able fix. It is a diagnostic: it prompts you to add real evidence or state a real fact, and never invents anything.

Loading…

LinkedIn Optimizer — generate profile copy from your résumé, ready to paste

Turns your résumé, confirmed facts, and logged wins into copy‑ready LinkedIn sections — headline, About, per‑role Experience, and skills — each sized to LinkedIn’s limits. It uses only your real information (nothing invented) and never touches LinkedIn: you review and paste each section yourself.

Import from LinkedIn — fill your résumé & profile from your LinkedIn

Bring your LinkedIn into JobScout (About, Experience, Education, Skills) to power matching & tailoring. Nothing is posted to LinkedIn; review it under Application profile above.

Tip: on LinkedIn, More → Save to PDF gives a clean file to upload.

Optimize for LinkedIn — generate copy from your résumé to paste back

Career interests

Pick broad areas — Claude does the exact‑title matching, so you don't need precise job titles. Or describe your target in your own words and let AI fill everything in.

Reads your uploaded resume & materials and fills every field below for review.
None selected yet.

Advanced / overrides

Optional. The guided interests above fill these automatically; edit only if you want to override.

Search defaults

These pre‑fill the Search panel each session; you can still tweak them per view without changing your profile.

Preferences Claude uses to rank fit

Web searches

For roles without a job-board feed (e.g. acting/theater), add search queries. Each fetch runs them via Brave and extracts real postings. Needs a Brave Search API key (add yours under AI Settings → API keys, or the operator's shared key).

loading…

Focus from your target market

The requirements that come up most across the jobs you target but read thin on your résumé. Work them in where they're truthfully yours — there's a clear path below.

Loading…

Materials library

Upload résumés, skills lists, project write-ups, or credits. Text is extracted and feeds your tailored applications. For a demo reel, paste the link into a .txt file or your candidate summary.

loading…

Structured résumé — powers your tailored applications

checking…
Reads everything you've uploaded above — résumé, notes, or “Other” docs — and extracts your roles & skills. Prefer to control it yourself? Edit your work history in Application profile at the top of this page.

AI usage & cost

Your own estimated spend on AI features (tailoring, scoring, gap analysis, outreach, the daily digest) — token‑based estimates. AI runs on the key the operator provides, so you don't need your own key; adding one in AI Settings is optional.

Loading…

How you use the job list

The app can learn what you want from what you open, instead of asking you to configure it twice. This is everything it records, and the switch that stops it.

Loading…

Deadlines calendar

Add your application deadlines and follow‑ups to your own calendar (Google, Apple, Outlook) with a day‑before reminder.

Blocked & down-ranked

Everything you've hidden or blocked — all reversible here. Job types set aside by a knockout (clearance, degree, license) can be shown again; blocked employers can be unblocked.

Blocked employers
Blocked via 🚫 Not useful → Block (ghost-job posters, recruiter résumé-collectors) — hidden from your list and future fetches.
Loading…

Danger zone

Reset my data

Permanently delete every job on your own account — all statuses, including Applied, across all pages — along with the tracker cards, tasks, notes, and saved kits tied to those jobs. Your account, profile, résumé, saved searches, and employer boards are kept. This cannot be undone.

Reset my search profile

Clear your target roles, titles, locations and ranking preferences, bringing back the guided setup. Your résumé, contact details, saved jobs, tracker, and searches are kept. This cannot be undone.

AI tuning

API keys

Add your own keys, or leave blank to use the shared key the operator has configured. Keys are encrypted at rest and never shown back to you.

loading…

Text messaging (SMS)

Send and receive texts inside JobScout using your own Twilio number — two‑way replies thread back automatically. Your Auth Token is encrypted at rest and never shown back to you. (No Twilio? You can still tap Call / Text via device on a contact to hand off to your phone or a VoIP softphone.)

loading…

To receive replies, paste the webhook URL above into your Twilio number's “A message comes in” webhook (Messaging → your number → Configure). US A2P 10DLC: carriers require a one‑time brand/campaign registration in your Twilio console before application‑sent texts deliver reliably — that step is done in Twilio and JobScout can't do it for you.