Repository navigation
fix: give job sources 30 seconds instead of 10 - #18
Closed
berkayturk wants to merge 1 commit into
Closed
berkayturk wants to merge 1 commit into
berkayturk wants to merge 1 commit into
Conversation
JSearch often takes more than 10 seconds to answer a search it hasn't run before. In a fresh instance, the first try of both a Geneva search and a remote France search timed out with "JSearch isn't answering right now", and the second try of each worked. On Find jobs this costs one extra click. For the job agent it costs the whole day: it searches once per run, and a JobSearchError ends the run. That leaves at most three runs in 24 hours to retry by hand. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AienTech
added a commit
that referenced
this pull request
Oct 29, 2026
FreeHire as a fourth job source, free and without a key, a line about the company or role under each job on your resumes, and fixes for importing a resume with Anthropic, for DeepSeek's answers getting cut off, for JSearch searches that took too long, and for servers without a time zone. ## What's new - **FreeHire as a job source (#33):** choose FreeHire in Settings → Job search to search its open catalogue: millions of postings read straight from companies' own career pages (Greenhouse, Lever, Workday and many more), in most countries, each with its whole text. It needs no key and no account, and the job agent can search it too. It has no distance filter: the place you enter puts postings there first, so **Within** is off while FreeHire is chosen. If you run your own FreeHire, `DOSSIER_FREEHIRE_URL` points Dossier at it. FreeHire's free use is for your own job search; a Dossier you host for other people needs one of [its API plans](https://freehire.me/terms). Thanks to @navaneeth-algorithm, who sent it. - **A line about the company or role (#15):** each role in Profile → Experience has **About the company or role**, for a line like "Series B fintech, 40 people" that would otherwise sit in the first bullet, where it reads as something you did. Resumes show it under the role's title, in italics, smaller and muted, in every theme. Tailoring never rewrites it, the AI reads it as background about the employer, and importing a resume reads it when the resume has such a line. Thanks to @VictoriaDom for asking for it. ## Fixes - **Importing a resume with Anthropic (#24):** with Anthropic chosen, it always failed with "The AI provider ran into a problem": Anthropic refuses the shape of answer Dossier asks for as too complex, and trying again sent the same. Dossier now asks once more with that shape in the instructions instead, and remembers to for that model. Thanks to @berkayturk, who sent the fix (#16), and to @ruchindwd for reporting it. - **DeepSeek's answers cut off (#34):** with DeepSeek's API as the OpenAI-compatible server, creating an application failed with "The model's answer was cut off before it was finished": DeepSeek's models think before they answer unless told not to, and the thinking used up the room left for the answer. Dossier now tells DeepSeek's API (any address at deepseek.com) to answer without thinking first. Other servers get the same requests as before. Thanks to @raghav-sec for reporting it. - **"JSearch isn't answering right now" (#18):** JSearch searches Google for Jobs while it answers, which can take longer than the 10 seconds Dossier waited, outside the US especially, so Find jobs, Test connection and the job agent gave up. JSearch now gets 45 seconds; the other sources keep 10. Thanks to @berkayturk, who sent the fix. - **"Invalid time zone specified: Etc/Unknown" (#24):** without `TZ` in `.env`, `compose.production.yml` gave the container an empty time zone, and the job agent's schedule, the Google sync and Settings failed with that error until a browser had told Dossier its own. `TZ` now defaults to UTC, and Dossier uses UTC whenever the server's time zone isn't one it knows. Thanks to @ruchindwd for reporting it. - **`DOSSIER_JOBS_ARBEITSAGENTUR=off` with Compose:** `compose.production.yml` didn't pass it on, so the Bundesagentur für Arbeit stayed on offer. It does now, and passes on the new `DOSSIER_FREEHIRE_URL` too. - **Buttons named by what they show:** for voice control, the theme thumbnails, an application's **Theme** menu and the next interview on the dashboard are now named by the words they show. - **Updates:** Next.js 16.4, the Anthropic SDK 1.3 (Dossier still sends the key as `X-Api-Key`, for gateways that only read that), Ollama 0.40.10 in the compose file, and others. ## Upgrading Take a backup, then deploy `ghcr.io/aientech/dossier:v1.10.0` (see [Upgrading](https://github.com/AienTech/dossier/wiki/Upgrading) in the wiki). If you use `compose.production.yml`, take the new one: it defaults `TZ` to UTC and passes on `DOSSIER_FREEHIRE_URL` and `DOSSIER_JOBS_ARBEITSAGENTUR`. On its first start, Dossier adds the line about the company or role to each role, empty, and FreeHire to the job sources; nothing else changes in your data or configuration. Exports now include the line about the company or role, so a 1.10.0 export can't be imported into an older version. Exports from older versions import as before.
Owner
|
Thanks, @berkayturk! I took this into Dossier with you as co-author, and it's out in 1.10.0, with one change: JSearch gets 45 seconds, since it searches Google for Jobs while it answers, and the other sources keep their 10. Closing in favour of the release. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
JSearch often needs more than 10 seconds to answer a search it hasn't run before. On a fresh instance, these two searches both failed on the first try with "JSearch isn't answering right now":
The app log showed
[job search] Error: JSEARCH: /jsearch/search-v2: timed out. The second try of each search worked.On Find jobs, this costs one extra click. The job agent is hit harder:
runAgentends the run on anyJobSearchError.Fix
REQUEST_TIMEOUT_MSinsrc/lib/job-search/http.tsgoes from 10 s to 30 s.Tests
src/lib/job-search/http.test.tschecks that a request's timeout signal is 30 s. It failed before the change.src/lib/job-search/pass: 93 passed, 3 skipped (the live tests).eslintpasses on the changed files.This is separate from #16, the Anthropic schema fallback.
🤖 Generated with Claude Code