Last week I had a traumatic jobseeking experience. I failed at the screening step, the first interview. Yes, the “are you human? do you speak English?” one.

The reasons are not very clear to me. I suspect that my camera not working played a big role. Microsoft Teams uses gmpopenh264, which decided to crash when called by firefox.

If this bug report is the same issue, using firejail with firefox caused it. But I won’t get to know that unless any other company uses Teams to do the interviews.

But maybe it was something else. Maybe it was what I said, or maybe the “AI notetaking assistant” discriminated me for not being close enough to the statistically average candidate in whichever way it was trained or prompted.

I decided to spend some time to get a local harness and a local model a go, and see if it can review my CV to a more statistically conforming shape. That way it will stand out.

Ideally I would not use any LLM at all, but as time passes getting a job gets more important. I have no doubts that things will go to the new normal when the tokens stop getting subsidies. But for now it is too cheap for companies and other candidates to use it.

So to get to see what I am missing out, I decided to use ollama with pi with my desktop computer.

The setup

I own a i3-10100 cpu with 32gb of DDR ram. I have a radeon card with 2gb of vram and no drivers for LLMs. I consider this a modest computer, although I think this is a byproduct of my circumnstances. (Simon Willison also thinks that a £6.6k macbook pro with unified memory is reasonably specced)

I ran ollama and pi directly from nix:

nix-shell -p ollama pi-coding-agent
firejail ollama serve # terminal 1
ollama run llama3.2 # terminal 2, starts download
firejail pi --provider ollama # terminal 3, runs the coding
harness

I added firejail to avoid unnecessary privileges, although in theory ollama should not attempt to read any files other than its directory.

$ cat .config/firejail/ollama.profile
whitelist ${HOME}/.ollama

pi is far more dangerous. It will try to read files without asking

$whitelist ${HOME}/.ollama
$whitelist ${HOME}/.pi
$blacklist ${HOME}/doc
$blacklist ${HOME}/.ssh
$blacklist ${HOME}/.config

I downloaded a few models, but the only model that was effective enough was qwen3.6:27b. Unfortunatelly qwen3.8 was not compatible with my ollama version.

$ cat .pi/agent/models.json
{
  "providers": {
    "ollama": {
      "baseUrl": "http://localhost:11434/v1",
      "api": "openai-completions",
      "apiKey": "ollama",
      "models": [
        { "id": "llama3.2" },
        { "id": "qwen3.5:4b" },
        { "id": "qwen3.5:9b" },
        { "id": "deepseek-coder-v2" },
        { "id": "phi4-mini" },
        { "id": "mistral-small" },
        { "id": "qwen3.6:27b" }
      ]
    }
  }
}

I needed to disable timeouts from both pi

$ cat .pi/agent/settings.json
{
  "lastChangelogVersion": "0.75.4",
  "defaultProvider": "ollama",
  "defaultModel": "qwen3.6:27b",
  "theme": "light",
  "httpIdleTimeoutMs": 0,
  "enableInstallTelemetry": false
}
$ 

and ollama server:

firejail --env=OLLAMA_REQUEST_TIMEOUT=3000s --env=OLLAMA_KEEP_ALIVE=150m ollama serve

The outcomes

As a first task, I tried matching my resume directly from the web with a job description also directly from the web.

No model could read the job description as it was served with some javascript, so I passed it as text.

Some models (particularly qwen) managed to download the resume using curl. I tried adding skills, but the agent ignored the file. Other models did not seem to understand that the path referred to a file, or try to read it from some other file.

For the succesfull models, it seems like the model parsed the html of the CV and then forgot the original task. They seemed not to recall that I passed the text of the job description.

So I decided to convert my CV to markdown using the LLM instead of the obvious choice (pandoc). None of the model managed to write the CV as markdown in a file. I believe I was hitting one of the timeouts from llama as it was taking too long.

I ran the command manually and asked qwen 3.6 to evaluate a markdown file with the CV and a text file with the job description. 23 minutes later, I got the answer.

I also asked to review my CV, which took 17 minutes.

Observations

To run a harness a model needs to manage a considerable amount of context. At the same time CPU only models are very slow:

  • 7-8b parameters are slow but almost real time. Not enough for harness to be coherent
  • 27b is ok for harness, but too slow. I was getting 1 token per second

Downloading these giant files took hours with my internet connection too. And lastly: energy consumption. The CPU can consume up to 65W

I don’t know exactly how much does it consume when idle, but I would assume around 20W. I do not use the turbo mode nor hyperthreading, so that helps a bit. 45W for a few hours is not a lot compared with the cost of manufacturing or running the hardware that the frontier models require.

I still wish I didn’t need to run it at all.