The problem
Most job searching is triage by gut feel. A candidate scans thirty listings, applies to twelve, and hears back from one - with no real signal, going in, about which ones were ever likely to call.
The information needed to fix this already exists: it's sitting in the job description and the resume. Nobody reads both carefully enough, at scale, to act on it. That's a matching problem, and matching problems are exactly what's tractable to solve with an LLM that can actually read both documents and reason about the gap between them - not just keyword-match them.
The idea
Signal turns a resume into a live scanner: paste it once, and every open role in the search gets ranked by realistic call-likelihood, not recency or keyword luck. Open any role and the gap is explained in plain language - what matches, what's missing, and the exact resume line that would close it.
The visual language leans into that literally: signal bars stand in for match strength everywhere, and the one accent color in the whole palette is reserved for the moments that matter - a strong match, a call to action, the brand mark.
What it looks like
Matches tab - ranked by call-likelihood, freshness always visible on the card.
Try it live
Fully interactive - same file that ships alongside this page. Paste a resume, browse ranked matches, and open a role to run the live AI deep-dive.
Not rendering? Open the prototype directly.
Where it fits, where it doesn't
Matched
React, TypeScript, Jest, and dashboard-building experience carried straight across from the resume to roles asking for exactly that.
Gap
GraphQL and formal design-system experience were missing - the kind of gap a rewritten bullet can partially close, and a real one worth naming honestly instead of hiding.
Design decisions that mattered
Show the reasoning, not just the number
A percentage alone trains distrust. Every score ships with matched/missing skill chips and a plain-language reason, because the product only works if people are willing to act on what it tells them.
Split cheap ranking from deep analysis
The list uses a fast, free heuristic score so browsing feels instant. Opening a role unlocks a real model call that reads the full description and resume and writes a tailored gap analysis - expensive reasoning spent only where someone has shown intent.
No scraping, by constraint not oversight
Recruiter and hiring-manager contact data is the most sensitive part of this concept. The design explicitly rules out scraping LinkedIn or any board that prohibits it - production sourcing is API partnerships and licensed data only, even where that means showing fewer contacts.
Tailoring, never fabricating
Resume rewrites reorder and rephrase real experience in the target role's vocabulary. The system doesn't invent metrics or claims that weren't in the source resume - the person approves every change via a visible before/after.
Visual system
The whole palette is built around one idea: a phone that might ring. Signal bars measure match strength everywhere a score shows up; a warm amber is the single accent color, reserved so it stays meaningful; and a serif with old-style numerals gives every score a bit of typographic weight against the plain grotesk used for everything else.
What I'd validate next
The score is only as good as its honesty over time. The real test isn't whether people open the detail view - it's whether resumes tailored through Signal actually get more callbacks than a person's own baseline, which means shipping outcome tracking and being willing to publish the number even if it's underwhelming at first. I'd also want to pressure-test the freshness signal against real posting data - a 2-day-old listing means very different things at a startup versus a slow-moving enterprise employer, and the current design treats them the same.