Skip to content

Configuration

gigai scout install writes a starter <target_root>/find-jobs.json the first time it runs (never overwrites an existing one). Edit it before starting Scout:

{
"schema_version": "find-jobs-config:1",
"roles": ["software engineer", "data engineer"],
"merged_queries": ["software engineer OR data engineer"],
"location": "Denver, CO",
"work_mode": "hybrid",
"remote": false,
"published_after": "2026-09-15T00:00:00Z",
"sources": { "exa": false, "ats": true, "hiringcafe": false },
"default_assess_cap": 10,
"default_model_target": "ollama_local",
"countries": ["US"],
"visa_sponsorship_required": false
}

work_mode is remote, hybrid, onsite or any, and it is a real filter: Remote keeps remote postings (and any whose mode can’t be told); Hybrid with an area (your location, e.g. “Denver, CO”) keeps remote postings, plus hybrid and on-site postings in that area (an on-site role elsewhere, or with no area set, stays out); Onsite with an area keeps the same set; Any keeps everything the other filters allow. A posting’s mode comes from the job board’s own field when it has one, else it is read from the location text and labelled as derived. A posting whose location says nothing usable (for example just “United States”) is kept and labelled rather than dropped. Without a work_mode, the answer saved in setup is used, else Any.

default_model_target accepts ollama_local, codex_cli, claude_cli, or openrouter_api. A new file starts on ollama_local; the setup wizard’s “Model for Scout” choice is saved here when you press Finish, and it is also the model that reads your resume in the wizard. You can set codex_cli or claude_cli here yourself (the run dialog can also pick the target for one run).

hiringcafe is defined in the schema but not a live source in this release; leave it false. countries is a list of ISO-3166 alpha-2 codes to filter postings by; a posting whose location resolves to a region-only label (e.g. AMER, EMEA) with no specific country never matches. A new profile starts on ["US"]. A location that names a region or a country outside your list (“Europe”, “Remote (Germany)”, “London / Remote”) is not listed; one that says only “Remote” or “Anywhere” is read as the US. visa_sponsorship_required says you need a visa. It is a label and never a filter: a posting that says it does not sponsor is kept and marked “No sponsorship” (or “H-1B transfer only” when it takes transfers), in a run, in the Jobs list, in ranking and in an assessment. Acquire also caps results to at most 2 postings per company for diversity, and results appear as cards on the UI as the run progresses.

You need one model target to start: Codex (codex_cli) or Claude (claude_cli), with that CLI installed. A start with only ollama_local or openrouter_api needs a gigai setup --non-interactive first (see Install), and assessing through them is not verified. Exa is an optional extra, off for a new setup. To turn it on, store a key with the command below, then tick Also search the open web with Exa (needs an Exa key) in Settings.

Terminal window
gigai secrets add exa

Or export it directly instead (environment takes precedence over a stored secret):

Terminal window
export EXA_API_KEY=...

Without either, Exa refuses to run; ATS-board acquisition is unaffected. An existing find-jobs.json keeps the Exa setting it already has.

Settings > Background updates holds what Scout does by itself while it is open. Nothing is saved until you press Save. The same settings are at GET / PUT /api/settings/background, and are stored per project in <home>/scout/<project_id>/settings.json.

Setting Default What it does
Check the company boards automatically (sources.auto_refresh) on The background check of the company boards: 8 a day on weekdays and 2 on weekend days, in your local time. Off also pauses tagging titles with the model in the background.
Check on weekdays at / on weekend days at (sources.check_times) 03:00, 07:00, 09:00, 11:00, 13:00, 15:00, 17:00, 19:00 on weekdays; 09:00, 18:00 on weekend days When the background checks run: 1 to 12 times a day for each kind of day, as 24-hour HH:MM times on this machine’s clock, separated by commas. Use the default times puts both lists back. The page shows what is in effect now, and a saved change decides the very next check.
Tag titles with the model (tagging.model_enabled) on Sends titles the built-in rules cannot place to the model Scout is set up with, only for the roles your profiles search for.
Tag the rest in the background (tagging.backfill_enabled) off Also tags every other stored title, a few at a time. tagging.tag_backfill_model picks the model: configured (the model Scout is set up with) or haiku (Claude Haiku through the Claude CLI).
Use the shared starter snapshot (snapshot.enabled) on Update sources first downloads the starter snapshot. snapshot.manifest_url (under “Advanced”) is where it is read from; leave it empty for the default address.

An environment variable overrides the saved value while it is set, and the page says so beside the setting: GIGAI_SCOUT_AUTO_REFRESH, GIGAI_SCOUT_MODEL_TAGS and GIGAI_SCOUT_SNAPSHOT take 0 or 1; GIGAI_SCOUT_SNAPSHOT_MANIFEST_URL takes an address. If the settings file cannot be read, every background job is off and the page will not save over it: fix or remove the file.

Scout always lives in <home>/scout (~/.gigai/scout by default): every gigai scout ... command uses it, whichever folder you run the command from, and creates it the first time. --target <dir> is the only way to use another folder. A Scout project you set up somewhere else with an earlier version is left untouched; Scout names it once and you open it with --target <dir>.