The first job board I ever used had a checkbox for "Remote". By the end of the year it had sixteen: Remote, Remote (country), Remote (region), Hybrid-2, Hybrid-3, Hybrid-flex… Each one a small lie the marketplace was telling itself about what candidates wanted.
The filter is a nineteenth-century idea dressed in JSON. You pre-commit to a taxonomy, then hope reality fits. When it doesn't — and it doesn't, because job postings are marketing copy written by PMs at 4pm — you miss the role that would've changed your life.
The thing filters can't do
A filter can tell you that a posting says "Python". It can't tell you that the posting says Python but spends three paragraphs on Elixir observability and a sentence on "you'll pair with our backend team to modernise a Rails monolith." That's not Python. That's "we're hoping a Python person will tolerate this."
Scoring gets at that. Forte reads the whole posting, the whole résumé, and asks: given who this person actually is, does this role make sense for them? The output is a number 0–100 with receipts: three fit highlights, three honest gaps, up to three red flags.
Why the red flags matter
The last seven senior roles I scored for myself had a red flag I wouldn't have spotted from skimming — one wanted "someone scrappy" (read: solo, no support), two wanted 10+ years for a salary band starting at $95k (read: ghost posting), four had "wearing many hats" in the first paragraph (read: no specialisation path). None of these would trip a keyword filter. All of them matter.
The tradeoff we accepted
Scoring is expensive. Every posting costs an LLM call; a daily scan for one user is ~60–200 calls depending on fan-out. We pay that, gladly, because the alternative is what LinkedIn gives you: a feed where "90% match" means "also has Python on their profile."
We'd rather tell you "63, worth a closer look, watch out for paragraph 4" than "94% match — apply now!" to something that'll ghost you.