Skip to content

Releases

Dossier 1.13.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 13:54
Immutable release. Only release title and notes can be modified.

Dossier 1.13.0

Up to three searches for the job agent, the resume or the letter on its own, bold in your bullets, links that open on resumes, a score for each tailored resume, and Gmail, Calendar and MCP apps in the desktop app On this computer. The one-page trimmer is gone. Fixes for How you match and certifications, for resume imports and letters that added what your file doesn't say, for PDFs that job portals read wrongly, for an outside call when the container starts, and for old suggestions that moved an application backwards.

What's new

  • Several searches for the job agent (#11): the job agent ran one search. Settings → Job agent now keeps up to three, each with a name, which you can turn off without deleting it or put in another order. Once a day it runs the ones that are on, one after another, and the Agent screen shows how each went and which searches found each posting; the name stays with a posting when you rename or delete its search. The searches share the limits the agent had: at most three requests to your job source in any 24 hours, failed ones included, so a run waits until all its searches fit, and at most 15 postings scored and 3 drafts a run, across all of them. Your search becomes the first one, "My search". Thanks to @hschaefer, who built it.
  • The resume, the letter, or both (#84): New application wrote both before you could use either, though many job sites ask for only one. Its Tailoring card now has Write: Resume and letter, Resume, or Cover letter, and Settings → Documents → Documents to write sets which it starts with. The application is made with what you chose, and the other one's tab has Write the cover letter (or resume) for when you need it after all. Applications the job agent prepares still get both. Thanks to @shuklamanan for asking for it.
  • Bold in your bullets (#85): select words in a role's or project's "What you did" and press B (or Ctrl+B) to set them in bold, like a result: "Scaled the system by 40%". Resumes show it in every theme, and the PDF's text reads without the asterisks. Tailored resumes keep the bold on the words they keep. Thanks to @shuklamanan for asking for it.
  • Links that open (#87): on resumes, your email address, website, LinkedIn and projects' links were plain text. They now open when clicked, in the PDF too, with the address as the text, since job sites read it. A phone number or a place stays text. Thanks to @shuklamanan for asking for it.
  • A score for the tailored resume (#88): the Resume tab has Score: how well the resume, as it is now, fits the posting, with the band and the reasons, by the scorer in Settings → Scoring (Jev, or your AI model). Score again after you've edited it. It's never scored on its own. The Applications board and table show the score too, and the table sorts by it. Thanks to @suleman1412 for asking for it.
  • Gmail, Calendar and MCP apps in the desktop app (#80): On this computer there's no password, so a sign-in that has to happen in your browser got stuck: Google doesn't allow its sign-in inside an app, and an MCP app such as Claude's command-line app opens its page to allow it in the browser. Now the app signs your browser in when it's needed, with a link that works once. Connect Google account in Settings → Google opens in your browser, already signed in; your Google client's redirect address is http://127.0.0.1:47318/api/google/callback. For an MCP app, choose Help → Sign in my browser in the app when its page asks you to sign in, and the page carries on. With On my server, Connect Google opens in your browser too, where you sign in to your server as usual. Thanks to @ndrdrmn for reporting it.

Changed

  • No more trimming to one page (#83): with Resume length set to one or two pages, a new tailored resume that ran over was cut until it fitted, older roles first, and the AI wrote fewer bullets. That cut internships to make room for projects, and how old a role is says little about what matters to a job. Resume length is gone: tailored resumes are written in full, and nothing is cut. Leave out on the Resume tab still takes off what you don't want, and Fit to one page on the base resume still fits it by tightening the spacing and type. Parts that were trimmed before stay listed on their applications, with Put back. Thanks to @KrishKoria for showing what it cut.

Fixes

  • How you match and certifications (#90): a posting asking for a certification such as CEH showed it as missing, with your CEH under Certifications, since only skills and languages were compared. Your certifications count now, by the names on your profile, with the certification as the evidence; one that has expired counts as partly there. Thanks to @trailblazergt for reporting it.
  • An outside call at start (#89): the database tool checked in with checkpoint.prisma.io whenever the container started and applied its migrations, which the Privacy page doesn't list. It's switched off, in the image, the dev stack and the Node.js way. Thanks to @endoftheline818 for finding it.
  • Resume imports adding what the file doesn't say (#89): a model gave an education line with only "2021" a start year of 2017, and put "Portland, Oregon" into Street address and "Oregon" into Country. A year that isn't in the file is now left out, and so are a name, email, phone, website, street, city, country or LinkedIn the file doesn't say word for word, a street address without a number, and a country that isn't one. The import's review lists what it left out and why. Thanks to @endoftheline818 for reporting it.
  • The letter giving the company your city (#89): the AI writes the letter's address block, and it once gave the company the candidate's own city for a remote posting. The company's place now comes from the posting, or is left out for a remote job. How you match no longer says it'll address every gap in the letter, which talks about the ones that matter. Thanks to @endoftheline818 for reporting it.
  • "fi" and "fl" in PDFs (#82): many fonts print "fi", "fl" and "ffi" as one joined letter, and job portals' parsers read "workflow" and "profile", or "efficient" as "eicient" with the Signal theme, so a search for those words didn't find them. They print as separate letters now, in resumes and letters; the documents look the same. Thanks to @KrishKoria, who sent the fix.
  • The connector with a posting's text and link (#81): when an app gave both, Dossier fetched the link anyway, and a page it couldn't read (Indeed, some company career sites) failed the call with "Paste the posting's text instead", which it had. It now uses the text and keeps the link. Thanks to @KrishKoria, who sent the fix.
  • An old reply moving an application backwards: a reply's "Move to Screening?" stayed on offer after the application had moved on to Interview, and taking it moved the application back. Suggestions now show only while they move an application forward, and taking one checks again.
  • Google access that was taken back: when Google stopped accepting Dossier's access, every check asked Google again and failed. The checks now stop, and Settings → Google says why, with Connect again.
  • The MCP connector's sign-in message told every app "Connect Claude to Dossier first." It now says "Connect this app to Dossier first."

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.13.0 (see Upgrading in the wiki). On its first start, Dossier adds the tables for the job agent's searches and turns your search into the first of them, "My search", and makes room for each application's resume score. Your Resume length setting is no longer used; nothing else changes in your data or configuration. In the desktop app, download the new version from this release and install it over the old one.

Exports now include the job agent's searches and the resume scores, so a 1.13.0 export can't be imported into an older version. Exports from older versions import as before, with their job agent search as "My search".

Dossier 1.12.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 23:49
Immutable release. Only release title and notes can be modified.

Dossier 1.12.0

Your own resume sections, sections in the order you want, resumes that stay as you sent them, certifications and volunteering, cards in the order you want on the board, skills in your order, a base resume that fits one page, a level in Find jobs, a score before you apply, a Usage screen with the tokens each kind of AI work used, and SQLite as an alternative to PostgreSQL. Fixes for PDFs that other viewers and job portals read wrongly, for OpenAI's newest models, for the Gmail check giving up when Google asks it to slow down, for mail linked to the wrong application, for impossible dates in the calendar's address, for the arrows in drop-down menus, and for text that took a long time to read.

What's new

  • A desktop app for Windows and Linux: download it from this release, under Assets. On this computer runs Dossier inside the app, with your data in one file on your computer: no server, no Docker and no password. On my server opens the Dossier you host, in a window of its own. It doesn't update itself: when a new version is out, the sidebar says so, and you install it over the old one. The app isn't signed yet, so Windows asks before it runs it the first time. Gmail and Calendar don't work On this computer yet, and there's no version for macOS yet. See Desktop app in the wiki.
  • Your own sections: Profile → + Add a section makes a section of your own, such as Awards, Courses, Talks or Interests. Give it a name and pick how it looks: Entries like a role, with a title, dates and bullets; Lines like a publication, free text with a link; or Inline like skills, all on one line. You fill it in on its own page there, and delete it there too, with Undo. You can switch its format later and your profile keeps everything; drafts that have the section get its text again in the new format, which replaces any edits you made to it there. These sections go on resumes word for word: the AI reads them, without their links, but never rewrites them, and a tailored resume gives them Edit and Leave out only. When a resume has to be shortened to fit its pages, they go first. Headings print as you wrote them, so they aren't translated. Replacing your profile from a resume keeps these sections, since a resume can't bring them back.
  • Sections in your order: on the Profile page, drag any section to where you want it, or use the arrows. Skills can come first, for example. That's the order your resumes start with, and each heading on a resume now has its own row: Summary, Languages and Volunteering have their own pages. Base resume → Sections shows the same order next to the preview, and its Remove takes a section off your resumes and keeps what's in it, and the AI doesn't read it for new applications. With a sidebar theme, Skills and Languages stay in the sidebar, and so do Inline sections. Your resumes look the same until you move something; the Profile page's list follows them, so Skills starts further down than it used to.
  • Sections per resume: an application's Sections menu, next to the theme, reorders and removes sections for that one resume, and can rename a heading on it, say "Experience" to "Relevant experience". It also lists what your profile has that this resume hasn't, to Add. Drafts follow the base resume's order until you give them their own, but a section you make later never appears on an existing resume by itself.
  • A resume you've sent stays as you sent it: until now, a sent resume still changed with your profile: deleting a role took it off, and renaming one renamed it. Now, the first time an application moves past Draft (Declined doesn't count), it keeps its own copy of your profile, theme, paper size and date format, so the resume and cover letter stay as they were, on the page and in the PDF. A role you delete from your profile stays in that copy until you delete the application. You can still edit it, reorder it, change its theme or add a section yourself. Moving it back to Draft keeps it that way; undoing the send with Undo doesn't. Your photo is the exception: a new one shows on sent resumes too. When you do want your profile's changes on a sent resume, such as a corrected job title, Update from profile in its Sections menu brings in titles, dates, contact details and new items in the sections it has. The text on the resume stays, nothing leaves it, and Undo puts it back. Drafts have the button too, for new items.
  • Certifications (#42): a certificate was entered under Education, where it got lost among degrees. Profile → Certifications is a section of its own, after Education: each one has its name, who issued it, when you got it, when it runs out (or not), a credential ID and a link to verify it, and Show on resumes. Resumes list them after Education with the issuer and date, "Valid until …", the credential ID and the link, clickable in the PDF. They go on every resume as you wrote them: the AI never renames, rewrites or leaves one out, and a tailored resume gives them Edit and Leave out only. The AI reads their names, issuers and dates, never the link or credential ID. Importing a resume reads certificates into Certifications now, and Education is for degrees and courses. Certificates you already entered under Education stay there until you move them. Thanks to @Shredder5262 for asking for it.
  • Volunteering (#44): volunteering could only go in Experience, where it read as a paid job. Profile → Volunteering has a page of its own, and Move to Volunteering takes a role there from Experience. Resumes show it under its own Volunteering heading, after Experience, and tailoring words it for each posting like your roles. It doesn't count towards your years of experience, which scoring and the match use, or towards Profile strength. When a resume has to be shortened to fit its pages, volunteering goes first. Open source already has its place under Projects. Thanks to @caveman210 for asking for it.
  • Cards in your order (#60): each column on the board was sorted by last update, so editing an application moved it to the top. Now you can drag a card up or down within its column, or use Move up and Move down in its ⋯ menu, and it stays there when you edit it. Reordering doesn't change a card's Updated date. A column you've never reordered stays newest first. A new application, or a card moved in from another column, goes on top; Undo on a move puts the card back in its place. While you're searching or have archived cards hidden, the cards you can't see keep their places. The table sorts as before. Thanks to @jithinzac for asking for it and to @akshatshahh, who built it.
  • Skills in your order (#62): skills came on resumes in the order you added them, so one you thought of later came last. In Profile → Skills, drag a skill within its list, or use Move left and Move right in its menu, and resumes follow. Once you've set your own order, tailored resumes keep it too, leaving out what doesn't help, instead of putting the most relevant first; Most relevant first goes back to that. Thanks to @beeglebug for asking for it.
  • Fit to one page (#69): a profile that ran a few lines over a page gave a two-page base resume, and only a theme's density or deleting things from your profile could help. Fit to one page on the Base resume screen tightens the page margins and the gaps first, then the line height, then the type, never below 9.25 points, until the resume fits, and the PDF does the same. When it still runs over at its tightest, the screen says so. Off, nothing changes. Thanks to @Guts1005 for asking for it.
  • A level in Find jobs (#59): a search found every level, and only reading each posting told you it wanted eight years. Find jobs and the job agent's search have a Level: internship, entry level, mid level, senior, or lead or director. JSearch and the Bundesagentur are told as far as they can filter, and whatever the source, Dossier reads each posting's title and the years it asks for and leaves out the ones clearly for another level; a posting that doesn't say stays. Searches from before have no level, as before. Thanks to @jain-arihant-2002 for asking for it.
  • Score a posting before applying (#66): New application showed how you match the requirements, but not the score Find jobs and the job agent give. Score it, under the match, scores the pasted posting the same way, with the scorer from Settings → Scoring: the band, why it fits and what gives pause, so you can decide before anything is written. The score isn't kept. Thanks to @suleman1412 for asking for it.
  • ARM processors (#77): the image was built for Intel and AMD processors only, so on an ARM server it didn't start ("exec format error"), and Apple Silicon Macs ran it under emulation. It's now built for arm64 too, and Docker picks the right one by itself. Thanks to @jreed1701 for reporting it.
  • Usage: a new Usage screen in the sidebar shows every kind of AI work Dossier does and the tokens it used: requests, input, output and total, for the last 30 or 90 days or all time, the biggest first. The counts are the ones your AI server reports with each answer, the numbers providers bill by, including retries and answers that ended in an error. A server that sends no count shows Not reported; Dossier doesn't estimate, and shows no prices. Scoring with Jev and connection checks have their own rows. Only the counts are kept, with the task, provider, model and time, never what was asked or answered; Delete everything clears them, and exports leave them out.
  • SQLite instead of PostgreSQL (#17): Dossier can keep its data in a single file, so it runs as one container without a database server. Set DATABASE_URL=file:/data/dossier.db and run the image on its own with a volume on /data, as the RE...
Read more

Dossier 1.11.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:22
Immutable release. Only release title and notes can be modified.

Dossier 1.11.0

Skill groups on resumes, Jev by TypeSafe as a second way to score postings, the MCP connector for apps besides Claude, such as n8n, and OpenRouter and OpenCode through OpenAI-compatible. Fixes for Ollama's cloud, for summaries losing their paragraphs, for scores that liked postings far below your level, and for mail and pages that took a long time to read.

What's new

  • Skill groups (#38): with 30 or 50 skills, the resume's Skills section was one long paragraph. In Profile → Skills, New group adds a group with its own field, a skill's menu moves it to another, and Rename renames a group along with its skills. Resumes print one labelled line per group ("Technical SEO: Crawl budget · Log analysis"), in every theme. Skills without a group stay on a line of their own, so nothing changes if you don't use groups. Tailoring keeps the groups. Thanks to @ratnakar-seo for asking for it.

  • Jev by TypeSafe for scoring: the new Settings → Scoring section chooses what Score in Find jobs and the job agent use: your AI model, as before, or Jev, TypeSafe's model for typed judgements, with a TypeSafe key of your own. Jev reads each line of the posting, and the reasons quote them: "Covers: …" for what your profile shows and "Missing: …" for what it doesn't. The job agent still writes its drafts with your AI model. Jev reads English best, so it judges postings in other languages less well. Jev gets the posting and your profile without your name, contact details or references; PRIVACY.md lists exactly what's sent. DOSSIER_SCORER and DOSSIER_TYPESAFE_KEY set the defaults.

  • The MCP connector, for other apps too (#41): Settings → Claude connector is now Settings → MCP connector. Under Other apps, add the callback address an MCP app shows you, such as n8n's OAuth Redirect URL, and that app can sign in the way Claude does. Addresses must be https, or http on your own computer or a private network. Disconnect all apps (formerly Disconnect Claude) signs every app out. Nothing changes for Claude: it stays connected, and its steps are the same. Thanks to @divyeaah for asking for it.

  • OpenRouter and OpenCode (#36): both now work as the OpenAI-compatible server. Enter https://openrouter.ai, and Dossier uses OpenRouter's API at /api/v1. For OpenCode Go or Zen, the …/openai/v1 address works too. Changes for every OpenAI-compatible server:

    • Without a key, Dossier no longer sends a made-up one, which some servers refused even for their public model list.
    • A server that refuses Dossier's answer format as too complex gets the format in the instructions instead, as Anthropic's API already does.
    • A gateway that can't do one way of asking for JSON gets the next one, instead of failing.
    • When a thinking model leaves no room for its answer, it's asked once more with 12,000 tokens more, and from then on gets that room.

    Thanks to @akrista, who sent it.

Fixes

  • "The model's answer didn't come back in the expected shape" with Ollama's cloud (#40): with https://ollama.com as the OpenAI-compatible server, or a …-cloud model through your own Ollama, creating an application failed at matching your profile. Ollama's cloud accepts a JSON schema but doesn't hold its answers to it, and the model never saw the schema. Dossier now puts the schema in the instructions for Ollama's cloud, and when an answer misses, the second try shows the schema too. An answer that misses twice is logged with the model and the fields that didn't fit, never the answer itself. Thanks to @trailblazergt for reporting it.
  • The summary's paragraphs (#37): the resume's Profile section printed the summary as one block, on screen and in the PDF. It now keeps the paragraph breaks you typed in Profile → Basics, in every theme. Thanks to @ratnakar-seo for reporting it.
  • Postings far below your level scored as a fit (#39): with 10+ years and a "Head of" role, a "3+ years" posting scored 80, and the reasons counted the extra years as a plus. A large seniority gap in either direction now scores below 70, as a possible fit at best, with a red flag. The AI model also gets your years of experience, worked out from your roles' dates. Thanks to @ratnakar-seo for reporting it.
  • Slow mail and pages: some text took far too long to read. A specially written email could hold up the inbox check for tens of seconds per message, a broken startup page took over a minute, and a model answer ending in thousands of blank lines took 40 seconds to check. All of these now take milliseconds.
  • Addresses in sent mail: an address with a line break inside its <…> could add a header, such as Bcc, to mail Dossier sent. Line breaks in an address are now spaces. A sender name with quotes inside (Anna "AK" Keller) now keeps its name instead of being read as the address.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.11.0 (see Upgrading in the wiki). If you want to set the scoring defaults in .env, take the new compose.production.yml, which passes on DOSSIER_SCORER and DOSSIER_TYPESAFE_KEY; otherwise choose in Settings → Scoring. On its first start, Dossier gives every skill an empty group. Nothing else changes in your data or configuration, and scoring stays with your AI model until you choose Jev.

Exports now include skill groups, so a 1.11.0 export can't be imported into an older version. Exports from older versions import as before, without groups. The TypeSafe key is never exported, not even with Include my API keys, and an import keeps this server's. The same goes for the MCP connector's other apps.

Dossier 1.10.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 18:21
Immutable release. Only release title and notes can be modified.

Dossier 1.10.0

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. 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 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.

Dossier 1.9.2

Choose a tag to compare

@github-actions github-actions released this 27 Oct 08:55
Immutable release. Only release title and notes can be modified.

Dossier 1.9.2

A small release: the Gmail inbox check works again after mail it was about to read got deleted.

Fixes

  • "Google couldn't find that. It may have been deleted." in the inbox and in Settings: when a message arrived and was deleted before Dossier's next inbox check read it, spam for example, the check stopped at that message. It never got past it, so every check after that failed with the same message and no new mail came in. Dossier now skips mail that's gone and carries on; the next check after upgrading clears the message.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.9.2 (see Upgrading in the wiki). Nothing changes in the database or in your configuration.

Dossier 1.9.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 10:59
Immutable release. Only release title and notes can be modified.

Dossier 1.9.1

A small release: local models on Ollama that think before they answer, such as Qwen 3.5, work now.

Fixes

  • Thinking models on Ollama (#12): with a model that thinks before it answers, such as qwen3.5:4b, reading a posting and writing documents ended in "The model's answer was cut off" or "didn't come back in the expected shape": the model used up all its room thinking and never wrote the answer, and on a CPU it could run out of time first. Dossier now has Ollama's models answer without thinking first, and gives them the shape of the answer in their instructions as well. Reading a posting also copes with a small model leaving out a requirement's details that don't apply, and reads the posting once more when the answer names no company, role or title. Thanks to @Beirutii, who sent the fix.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.9.1 (see Upgrading in the wiki). Nothing changes in the database or in your configuration.

Dossier 1.9.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 11:41
Immutable release. Only release title and notes can be modified.

Dossier 1.9.0

Publications on your profile and resumes, a photo on your resumes, a theme menu on each application, Dossier in Claude through a connector, startups that are hiring with the address they publish for applications, a way to leave any part off a tailored resume, a profile strength that only counts what a profile needs, and resumes of up to two pages by default.

What's new

  • Publications (#7): a new, optional section in your profile for papers, articles, books and chapters. Write each citation in the style your field uses: select words and press B or I (or Ctrl+B and Ctrl+I) to set your name in bold or the journal in italics, and a preview under the field shows how it looks. Add a link, or paste just the DOI and it becomes its doi.org link, and put them in your own order. Resumes show them after Education, word for word, with the link clickable in the PDF. Turn off Show on resumes to keep one in your profile but off every resume. The AI can mention them in your summary and letters, but never rewrites, picks or reorders them, and never sees their links. Importing a resume reads them too. Thanks to @VictoriaDom for asking for them.
  • A photo on your resumes (#8): add one in Profile → Basics and crop it: drag it or use the arrow keys, and zoom with the slider. Each theme shows it in its own shape and place: a circle, a rounded or plain square, or a 3:4 portrait, at the end or start of the header, above your name, or at the top of the sidebar. Choose both under Customize on the Base resume screen, and they're saved in exported themes. Turn off Show on resumes to keep it off, and each application's Resume tab has a Photo switch, for places where photos are expected or not. It stays on your server, is never sent to the AI, and your photo file's details, such as where it was taken, are left behind when it's cropped. Thanks to @hakimh02 for asking for it.
  • A theme for each application (#10): the Resume and Cover letter tabs have a Theme menu. Pick another theme and that application's resume and cover letter both change to it, in the preview and the PDF, without writing anything again. A new base theme is still what new applications start with. Thanks to @beeglebug for asking for it.
  • Use Dossier from Claude: turn on Settings → Claude connector, add the address it shows in Claude as a custom connector, sign in and press Allow. Then Claude, on claude.ai, in the Desktop and mobile apps or in Claude's command-line app, can search for jobs, score them against your profile, read your profile and applications, and save the resume and cover letter it writes as a Draft, checked like Dossier's own AI's, on your own Claude plan. It never sends or deletes anything, and never sees your contact details or notes. Without an AI model of Dossier's own, Write it with Claude in New application and Score in Find jobs hand the work to a new Claude chat. Disconnect Claude signs it out. Claude on the web needs Dossier at a public HTTPS address; see Connecting Claude. Thanks to @anirudhsharma-2000, whose fork it comes from.
  • Startups: a new screen of startups that are hiring: YC startups' job posts and the posts in Hacker News' monthly “Who is hiring?” thread, kept to the ones that hire in your city or country, or remotely and open to your country. Each is ranked against your profile, with the reasons, and shows the address it publishes for applications, read from its own site. That's addresses like jobs@ by default; people's own only when you press Look for people's addresses, and those go after 14 days unless you write to that startup. Dossier follows each site's robots.txt, says who it is, and leaves alone a startup whose site says it takes no unsolicited applications. Write to them starts a new application from what's known about the startup, without its addresses, and fills in the email's recipient for you. Nothing is fetched until you press Refresh; after that it refreshes once a day while you use the screen. Save, dismiss, keep notes, or Remove for good. PRIVACY.md says what it reads and keeps. Thanks to @anirudhsharma-2000, whose fork it comes from.
  • Leave out: every part of a tailored resume has Leave out in its toolbar, for a role, project, publication or degree that doesn't help with this job, or even the summary. It's listed above the resume with Put back, together with anything cut to fit the page limit.
  • What your profile needs, and what's optional: Profile strength now counts only your name, headline, email, city, country and summary, your experience, education and skills. Projects, Publications, References, Facts about me and Languages are marked optional, and so are phone, date of birth, street address, website and LinkedIn, so a profile reaches 100% without them.
  • The Bundesagentur für Arbeit is your own choice: it has no official API, and its terms of use don't allow automated access, so choosing it in Settings → Job search now shows a note saying so, and it's saved only once you tick I understand. The job agent no longer searches it; choose JSearch or Adzuna for the agent. Each of its postings links to its ad on arbeitsagentur.de, next to the employer's own link. A server can take it out with DOSSIER_JOBS_ARBEITSAGENTUR=off.
  • Up to two pages by default: unless you've chosen a Resume length in Settings → Documents, tailored resumes now aim for and are trimmed to two pages instead of one. A length you chose stays as it is.

Fixes

  • Adzuna's label: Adzuna's terms ask for a linked "Adzuna" on each posting shown. Postings from Adzuna now carry a Jobs by Adzuna badge that opens Adzuna's site for the posting's country, on each card in Find jobs, on the open posting and on the job agent's scored postings. Until now it was plain text, on the open posting only.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.9.0 (see Upgrading in the wiki). On its first start, Dossier adds a table for publications, the photo's settings for themes and applications, a table for postings handed to Claude, and tables for Startups; nothing else changes in your data or configuration.

If you search the Bundesagentur für Arbeit, its searches wait until you tick I understand under the note, in Find jobs or Settings → Job search, and the job agent stops until you choose JSearch or Adzuna for it.

Exports now include your publications and Startups, so a 1.9.0 export can't be imported into an older version, and neither can a theme exported from 1.9.0. Exports and themes from older versions import as before.

Dossier 1.8.1

Choose a tag to compare

@github-actions github-actions released this 22 Oct 21:31
Immutable release. Only release title and notes can be modified.

Dossier 1.8.1

Facts about you for the AI, and two fixes: editing a document no longer crashes Chrome on macOS, and JSearch works again with a RapidAPI key.

What's new

  • Facts about me: a new last section in your profile for what the AI should know about you that the rest of your profile doesn't say, such as why you're changing careers, a work permit, or when you can start. Add, edit and remove them one by one. They never appear on a resume as written: the AI reads them whenever it writes your resumes, cover letters and emails, rewrites or refines a part, drafts a reply to an employer or scores a posting, and uses the ones that help with the job in its own words. With Never invent experience on, what your facts say doesn't get flagged as check this.
  • Facts for one application: the Job posting tab of an application has its own facts, for what matters to that job only, such as having met the team or a reason you want to work there. The AI uses them on top of your profile's facts the next time it writes or rewrites something for that application. What you type in Anything I should know? when you create an application becomes its first fact, so you can now see and change it later.

Fixes

  • Editing in Chrome on macOS (#5): clicking Edit on a part of a tailored resume or cover letter crashed the tab in Chrome and other Chromium browsers on macOS, with error code 5. The editor now keeps its size without the CSS that set off the crash, and looks as before. Thanks to @commander55 for the report and for finding which part of the page caused it.
  • JSearch with a RapidAPI key: RapidAPI retired JSearch's old search address, so every search and Test connection with a RapidAPI key said JSearch's service may have changed. Dossier now asks the new address, as it already did with an OpenWeb Ninja key. Thanks to @dharaniprabhus, who sent the fix (#6).

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.8.1 (see Upgrading in the wiki). On its first start, Dossier adds a table for facts and moves each application's Anything I should know? note into it as that application's first fact; nothing is lost. Nothing changes in your configuration.

Exports now include your facts, so a 1.8.1 export can't be imported into an older version. Exports from older versions import as before, with each application's note as its first fact.

Dossier 1.8.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:31
Immutable release. Only release title and notes can be modified.

Dossier 1.8.0

A job agent that looks for postings while you're away, projects on your profile and your resumes, resumes that may run to two pages, Mistral and LM Studio as AI providers, a quicker way to try Dossier on your own computer, and a usage ping that's only sent if you agree. The job agent started in @avinashbatchala's fork, and projects, two pages and the quick start came from people who tried Dossier and wrote back: thank you.

What's new

  • Job agent: turn it on in the new Settings → Job agent, give it one search, and once a day it asks your job source for new postings, skips the ones you've saved, dismissed or applied for, and scores the rest against your profile. The best wait on the new Agent screen with why they fit and what gives pause. Prepare draft writes a tailored resume and cover letter for one; with Prepare drafts on its own on (off by default), a run does that for its best few. Drafts stay on the Agent screen until you Approve them into Applications, and Dismiss keeps a posting from ever coming back. It never sends or applies, and it keeps to a free plan: one search a run, at most three runs in 24 hours. Thanks to @avinashbatchala, whose fork it builds on.
  • Score a posting: in Find jobs, Score on the open posting, or the Score pill on an unscored one in the list, rates how well it fits your profile, from 0 to 100, with why and what gives pause, the same way the job agent does. The score stays with the posting, in later searches too, and the agent's scores show there as well.
  • Projects: a new Projects section in your profile, between Experience and Education, for side, open-source, course or thesis projects: a name, a link, dates, what you did (one point per line) and the skills you used, like a role. They show on your base resume and on every tailored one, in all twelve themes, with the heading in the resume's language. Tailoring rewrites each project's bullets for the job like it does for roles, and you can edit, regenerate or refine them the same way. Importing a resume now reads its projects too. This helps most when your job titles don't show what you can do yet, for example when you're moving into a new field.
  • Resume length: "Keep resumes to one page" in Settings → Documents is now Resume length: One page, Up to two pages, or No limit. The AI writes to the length you pick, and a new application's resume that still runs longer is trimmed (oldest roles first, then the oldest projects), with the opening message saying what was cut. When your base resume runs over, its notice links to the setting.
  • Calendar on the dashboard: the Calendar screen is now a card on the dashboard, beside the other cards when the window is wide enough and after them when it isn't. It shows the month, with dots on the days that have an interview or another event, and what's on in the week from the day you pick. Old links to the Calendar screen open the dashboard on their day.
  • Mistral: a new card in Settings → AI provider for Mistral's models with your own API key. The address and a model are filled in, and the model list shows one name for each model your plan includes. When your plan doesn't include a model, or your Mistral workspace isn't allowed any requests yet, Test connection says so instead of blaming the key.
  • LM Studio: a new card for models you run in LM Studio, on your computer or your network. The address is filled in for Dossier in Docker, the model list leaves out embedding models, and the API token is only needed if you've turned on authentication in LM Studio. Dossier loads the model you pick with enough context for its prompts (16,384 tokens), and reads postings with the model's thinking off, so that's quick. And Local model no longer mistakes LM Studio for Ollama.
  • Run it on your computer: the README starts with a three-step quick start for running Dossier locally with Docker, and links to the installation guide for the other ways to install.
  • Documentation in the wiki: the wiki now has what comes after installing, next to the installation guide: AI providers, job sources, Gmail and Calendar, backups, upgrading, troubleshooting, privacy and the environment variables. The README keeps the overview and the quick start.
  • The usage ping is opt-in: Dossier now asks once, after you sign in, whether to send its daily usage ping (a random install ID and the version number), and sends nothing until you agree. Both answers are one click, and closing the question counts as no. Change your answer any time with the new switch in Settings → About; saying no forgets the install ID. DOSSIER_TELEMETRY=on or off still answers for the server, and it's no longer on when unset. PRIVACY.md now says who receives the ping and on what basis, who hosts it (Hetzner, in Germany), and your rights.
  • Star on GitHub: the sidebar now links to Dossier's repository, under the theme switch, if you'd like to star it, report a problem or follow along.

Fixes

  • Your password stays out of the address bar: when the sign-in form was sent before the page's scripts had loaded, for example on a slow connection or when you pressed Enter right away, the password ended up in the address (/login?password=…), and from there in your browser's history and any proxy's logs. The form now always posts it, and signing in works with JavaScript turned off too. Thanks to @cladkins, whose fork fixed it first.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.8.0 (see Upgrading in the wiki). On its first start, Dossier adds tables for projects and the job agent; your data isn't touched. Nothing changes in your configuration. If you had turned "Keep resumes to one page" off, Resume length starts at No limit; otherwise it's One page.

The usage ping stops until you answer. If you ran 1.4 to 1.7 without DOSSIER_TELEMETRY=off, your server sent the usage ping. After the upgrade it sends nothing and asks once, after you sign in. If you say no, the install ID is deleted from your database. To have what was already sent deleted, note the install ID in Settings → About first and send it to dossier.app@pm.me. With DOSSIER_TELEMETRY set, nothing is asked and the variable decides, as before.

Exports now include your projects and the job agent's finds, so a 1.8.0 export can't be imported into an older version. Exports from older versions import as before, with no projects.

Dossier 1.7.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:25

Dossier 1.7.1

A small release: documents in other languages get their headings in that language too, and the calendar keeps to the window.

What's new

  • Base resume language: a new setting in Settings → Documents picks the language of your base resume's headings and dates. It's English unless you change it. Tailored documents keep using their application's language.

Fixes

  • Headings and labels in the document's language (#4): a resume written in German had German content under English headings and labels: PROFILE, EXPERIENCE, "Present", "Native". In the 21 built-in languages, the section headings, "Present", month names, language levels and your age are now in the document's language, and so are a cover letter's recipient, greeting and date where the AI didn't write them. In a language added with Other language… they stay in English. Thanks to @cti-leon for the report.
  • Calendar: the week and the month now fill the window instead of letting the page scroll past them, like the board. The week's hours scroll on their own, and each day of the month shows as many events as it has room for, with "+N more" next to its date.

Upgrading

Take a backup, then deploy ghcr.io/aientech/dossier:v1.7.1 (see Upgrading in the README). Nothing changes in the database or in your configuration. A tailored resume written before 1.7.1 keeps its language levels in English (for example "Native") until you rewrite it or edit its languages.