Skip to content
Back to blog
ProductJuly 22, 2026

Why we built RoleScan to run entirely on your device

The easy version of this product sends the job posting text to a server, calls an LLM API, and streams back a structured result. It would have taken a fraction of the time to build. We didn't do that.

Job postings and the fact that you're looking at them are exactly the kind of data that shouldn't need to leave your browser to be useful. Parsing title, salary, requirements, and skills out of a page's text doesn't require a model call — a well-tuned heuristic extractor handles it instantly, locally, and it works the same whether you're signed in or not, because there's nothing to sign in to.

There's a practical upside too, not just a privacy one: a local extractor has no API latency, no rate limit, and no per-call cost, so it can run on every job posting you glance at without any of us thinking about the bill. That's the difference between a tool you use freely and one you ration.

It also means the extension works the same on a plane, a flaky coffee-shop connection, or a corporate network that blocks outbound calls to third-party APIs — situations where a server round trip would just silently fail or hang.

The tradeoff is real: a local heuristic won't handle every edge case an LLM would. We think that tradeoff is worth it for what this tool is — something you click on a page you're already reading, not a service you hand your browsing history to.