ferret.

A job search that keeps its own evidence.

Ferret watches the organizations you care about, pulls their real postings, scores them against what you actually want next, researches employers with citations, and drafts tailored résumés and cover letters into Google Docs.

It will also research a subject you name and write it up with its sources, keep the notes you write, and save a posting before the board takes it down. All of it lands in one folder in your own Drive, so every document is readable and editable without this application.

What happens to a posting

  1. ingestATS APIs and searches, deduplicated and reconciled
  2. prefilterrules, free, with a readable verdict on every refusal
  3. scorethe survivors only, batched against a cached profile
  4. dossierlive research, cited, refusing to write without sources
  5. draftrésumé and letter, every claim traced to something you wrote
  6. keepdrafts, research and the posting itself, as Google Docs in your own folder
  7. learnwhat you always turn down, put back to you as a filter with its counts
  8. managea board from interested to applied to interviewing, with what each one still needs

Why it is built this way

A job board is proven, never guessed

Adding an organization crawls its careers pages, extracts any applicant-tracking token, and then calls that board's API to confirm it returns postings. If the page renders its board in the browser - which is common - likely tokens are tried instead, and again only a response containing real postings is accepted. A source that cannot be demonstrated is not connected.

Two stages, so the model reads almost nothing

A prefilter made of rules handles geography, compensation floor, title level, and topic - free, deterministic, and it records why it turned each posting down, so a rule that is wrong is visible rather than silent. Only what survives costs a model call. Compensation and location are parsed by rules and never by the model: a salary that drives a hard filter must not be invented, and one that cannot be parsed reads as "not stated".

A résumé bullet that cannot cite you is dropped

Bullets are rewritten from highlights you supplied, and each must carry the index of the one it came from. Any bullet whose index does not resolve is discarded before the document is assembled, as is any skill absent from your profile. Fabrication is prevented structurally rather than discouraged in a prompt, and everything dropped is reported back to you.

It learns what to stop showing you, and asks before it does

Once you have worked through the postings waiting for you, a kind of job you have turned down again and again, never kept, and that the model scores low, is put back to you with those counts: rejected this many times, never kept, scored this on average, and nothing like it in your experience or target roles. Filtering it out is your decision and reversible, and a posting ruled out by your own requirements is never counted as evidence, because that is the rules arguing with themselves.

Everything it writes is a document you keep

Drafts, research reports, notes you write in the application, and a saved copy of the posting itself are all Google Docs in one folder in your Drive, listed in one place and openable without this application. Because that copy may be the one you are working on, a document edited in Docs is never written over silently: the application says what would be replaced and waits for an answer.

Research that admits what it could not find

Employer dossiers are built from pages actually fetched. Any citation that does not match one is removed, and the pass refuses to write at all if research retrieved nothing. What could not be established is listed as an open question instead of asserted - which is the failure mode that matters when the document exists to prepare you for a conversation.