If you’ve recently tried running your resume through an open-source Applicant Tracking System on your Mac and watched the score swing from 90 to 74 to 88 across identical runs, you’re not imagining things. This is a widespread reported issue currently being discussed in the Apple Support Community, where users running the newly open-sourced ATS tool locally on macOS are seeing wildly inconsistent results for the exact same PDF or DOCX file. The problem isn’t your resume — it’s a combination of how the parser handles documents, how macOS renders certain file types, and how the underlying language model components behave when run without strict configuration.
This guide walks through why the scores fluctuate, how to stabilise them, and what to check on your Mac to get reliable, reproducible output every time.
What Causes This Issue
The inconsistency stems from several overlapping factors, and understanding them is the first step to fixing the behaviour.
First, most modern open-source ATS tools rely on a large language model (LLM) somewhere in the scoring pipeline — either locally via a framework like Ollama or remotely through an API. LLMs are non-deterministic by default. Without a fixed temperature setting and a locked random seed, the same input produces different outputs on each run. Users in the Apple Support Community report that this is the single biggest contributor to the 15-to-20 point score swings they’re seeing.
Second, macOS handles PDF rendering through its own PDFKit framework, which can subtly alter how text extraction libraries (like pdfplumber or PyMuPDF) read your document. If your resume was exported from Pages, Word, or a web-based builder, the embedded font metadata and text layers may parse differently each time, especially when the ATS uses optical character recognition fallback for image-based sections.
Third, Apple Silicon Macs running the tool through Rosetta 2 instead of native ARM64 binaries sometimes produce different numerical results in floating-point operations used during scoring. This is rare but documented.
Finally, background processes — Spotlight indexing, iCloud sync, or Time Machine — can throttle the model’s inference, causing timeouts that trigger retry logic with different sampling parameters.
Step-by-Step Fixes
- Lock the model’s temperature to zero. Open the ATS configuration file (usually config.yaml or .env in the project root). Set temperature: 0 and add a fixed seed value such as seed: 42. This forces deterministic output. Restart the tool after saving.
- Convert your resume to a clean PDF. Open the file in Preview, then choose File > Export as PDF. Avoid “Save As” — the Export option flattens text layers and removes hidden metadata that confuses parsers. Use this exported version as your input.
- Run the tool natively on Apple Silicon. In Terminal, check the architecture with arch. If it returns i386, your shell is running under Rosetta. Quit Terminal, right-click the app in Applications, choose Get Info, and uncheck “Open using Rosetta.” Reinstall any Python environment using a native ARM64 build of Homebrew (/opt/homebrew, not /usr/local).
- Reinstall Python dependencies cleanly. Delete the existing virtual environment folder, then recreate it with python3 -m venv venv and reinstall requirements. Mixed-architecture wheels are a common source of numerical drift.
- Pause Spotlight indexing during runs. Go to System Settings > Siri & Spotlight > Spotlight Privacy, and temporarily add the project folder. This prevents file-system contention from interrupting model inference.
- Run the scoring three times and take the median. Even with deterministic settings, minor variation can occur. If the median holds steady within one or two points, your configuration is stable.
Additional Solutions
If the steps above don’t fully stabilise the output, several deeper adjustments tend to help on macOS specifically.
Switch the embedding model to a locally cached version. Many open-source ATS projects download embeddings on first run, and intermittent network conditions can result in partial caches. Pre-download the model with ollama pull or the equivalent command for your stack, then point the config to the local path explicitly.
Disable Metal Performance Shaders acceleration if you’re using PyTorch. While MPS speeds up inference on Apple Silicon, it occasionally produces non-deterministic results compared to the CPU backend. Set the environment variable PYTORCH_ENABLE_MPS_FALLBACK=1 and force CPU execution for the scoring step by setting device=”cpu” in the model loader. The speed cost is small for resume-sized inputs.
Check your DOCX files with textutil in Terminal. Running textutil -convert txt yourfile.docx shows exactly what plain text the parser will see. If accented characters, bullet glyphs, or table contents look mangled, the ATS will score inconsistently because each run interprets the noise differently. Clean up the source document and re-export.
Users in the Apple Support Community have also noted that resumes containing emoji, custom Unicode glyphs, or two-column layouts produce especially erratic results. Single-column, standard-font resumes consistently produce tighter score ranges.
Finally, monitor memory pressure in Activity Monitor while the tool runs. If pressure goes yellow or red, the LLM may be swapping to disk, which slows inference enough to trigger internal timeouts. Close Chrome tabs, quit Docker, and rerun.
When to Contact Apple Support
This particular issue is almost always a software configuration problem rather than a hardware fault, so Apple Support typically can’t fix it directly. However, contact Apple Support if you notice any of the following: the Mac kernel panics during model inference, Terminal crashes consistently when launching Python, or PDF Preview itself fails to export documents correctly across multiple file types. These symptoms suggest a deeper issue with your macOS install, possibly related to a corrupted system framework or a failing SSD.
Before booking a Genius Bar appointment, run Apple Diagnostics by holding the Power button at startup on Apple Silicon, or D at startup on Intel Macs. If diagnostics flag memory or storage issues, that’s worth a hardware service visit. Otherwise, the ATS inconsistency is a software-side problem you can resolve yourself.
FAQ
Why does the same resume get different scores on each run? Because the underlying language model uses random sampling by default. Setting temperature to zero and fixing the seed eliminates almost all variance.
Does this only happen on Mac? No, but Mac users see it more often because Apple Silicon, Rosetta, and PDFKit all introduce additional variables that don’t exist on Linux servers where these tools are usually tested.
Should I trust the score at all? Use it as a relative signal, not an absolute one. Run the same resume three times with locked settings, compare against a reference resume you know scores well, and look at the qualitative feedback rather than the raw number.
Is converting to PDF in Preview really necessary? Yes. Pages and Word exports often embed text in ways that confuse parsers. Preview’s Export as PDF produces the cleanest, most parser-friendly output on macOS.
Can I run the ATS entirely offline? Yes, if you use a local LLM backend like Ollama with a downloaded model. This also removes API latency as a source of inconsistency.







































