Zum Hauptinhalt springen
tsecurity.de LIVE
Echtzeit-Radar & Feeds
Alle RSS Feeds
👥 Community & Social
YouTube Security VideosOpenAI: “It Blew Me Away” | Box’s First Look at GPT-6 Astra(21.09.2026 um 18:13 Uhr)
YouTube Security VideosGoogle Ads: Win the holiday season in 90 seconds | Rethink Retail 2026(21.09.2026 um 18:13 Uhr)
YouTube Security VideosPC-WELT: 5 crazy Sitzpositionen, die jeder Gamer kennt 😀(21.09.2026 um 18:52 Uhr)
Videos & KonferenzenMariaDB Foundation: The Fork Series #1 - The Future of Databases(21.09.2026 um 19:18 Uhr)
Videos & KonferenzenPC-WELT: 5 crazy Sitzpositionen, die jeder Gamer kennt 😀(21.09.2026 um 18:52 Uhr)
Unix & Linux ServerSecurity: Denial of Service in Memcached (Ubuntu)(21.09.2026 um 19:21 Uhr)
YouTube Security VideosOpenAI: “It Blew Me Away” | Box’s First Look at GPT-6 Astra(21.09.2026 um 18:13 Uhr)
YouTube Security VideosGoogle Ads: Win the holiday season in 90 seconds | Rethink Retail 2026(21.09.2026 um 18:13 Uhr)
YouTube Security VideosPC-WELT: 5 crazy Sitzpositionen, die jeder Gamer kennt 😀(21.09.2026 um 18:52 Uhr)
Videos & KonferenzenMariaDB Foundation: The Fork Series #1 - The Future of Databases(21.09.2026 um 19:18 Uhr)
Videos & KonferenzenPC-WELT: 5 crazy Sitzpositionen, die jeder Gamer kennt 😀(21.09.2026 um 18:52 Uhr)
Unix & Linux ServerSecurity: Denial of Service in Memcached (Ubuntu)(21.09.2026 um 19:21 Uhr)
Intelligence View
⚡ tsecurity.de Intelligence

I Built the Resume-vs-JD Scorer Every ATS Uses — In 30 Lines of JavaScript

🌐 Live demo: https://dev48v.infy.uk/solve/day1-resume-jd-match.html Day 1 of SolveFromZero — pick a real hackathon problem, ship the working solution. Today's brief is a classic from Unstop: "Build a tool that scores a resume against a jo…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

🌐 Live demo: https://dev48v.infy.uk/solve/day1-resume-jd-match.html




Day 1 of SolveFromZero — pick a real hackathon problem, ship the working solution. Today's brief is a classic from Unstop: "Build a tool that scores a resume against a job description and surfaces the missing keywords."



Every Applicant Tracking System (Workday, Greenhouse, Lever, all of them) does some version of this before a human ever sees your resume. Most candidates have no idea their CV is competing in a 30-second word-overlap contest.



Let's build the contest judge.









The whole algorithm in 4 steps






tokenize(resume)   →   list of meaningful words
tokenize(JD) → list of meaningful words
coverage = |JD-tokens found in resume| / |JD-tokens|
jaccard = |intersection| / |union|
score = round( 0.7 × coverage + 0.3 × jaccard ) × 100






That's it. The whole thing fits in 30 lines of JavaScript. No model, no API key, no backend — runs in your browser tab.









Step 1 — Tokenize



Split on anything that's not a letter (or + or # for C++ / C#), lowercase everything, drop short words and stopwords.




const STOP = new Set(
"a an the of in on for to and or with by from as is are was were be been being have has had do does did will would can could may might must shall should i you he she it we they me him her us them my your his their our this that these those at if not but so".split(" ")
);

function tokens(text) {
return text.toLowerCase()
.split(/[^a-z+#]+/)
.filter(w => w.length > 2 && !STOP.has(w));
}






Stopwords matter. Without them, every resume scores high against every JD because both contain "the" and "a" hundreds of times. The filter is what makes the rest of the math meaningful.









Step 2 — Coverage (the important one)






const setR = new Set(tokens(resume));
const setJ = new Set(tokens(jd));

const covered = [...setJ].filter(k => setR.has(k));
const coverage = covered.length / setJ.size;






Coverage answers the question recruiters actually care about: "What fraction of what we're asking for is in this resume?" A 70 % coverage = 28 of 40 JD keywords found in the candidate's text.









Step 3 — Jaccard similarity






function jaccard(a, b) {
const A = new Set(a), B = new Set(b);
const inter = [...A].filter(x => B.has(x)).length;
const union = new Set([...A, ...B]).size;
return union ? inter / union : 0;
}






Jaccard adds nuance: if your resume has 100 unique tokens and the JD has 40, even with 100 % coverage your Jaccard is only 0.4 (the resume is "wider" than the JD). This stops a wall-of-buzzwords resume from gaming the score.









Step 4 — Blend






const score = Math.round((0.7 * coverage + 0.3 * jaccard) * 100);






70 % coverage, 30 % Jaccard. Coverage matters more because that's what the recruiter is really screening for. Tune the weights for your domain — academic CVs vs. product CVs might want different blends.









Step 5 — The actionable output: missing keywords






const missing = [...setJ].filter(k => !setR.has(k));






The score alone is useless. The list of missing words is the takeaway. Add those (where genuinely true to your experience) and your next application clears the ATS filter.









When you'd upgrade to embeddings



Word-set matching misses synonyms: "JavaScript" / "JS" / "ECMAScript" all count as different. For higher recall, swap Jaccard for cosine similarity on sentence embeddings:




import { pipeline } from "@xenova/transformers";
const embed = await pipeline("feature-extraction", "Xenova/all-MiniLM-L6-v2");

const [eR, eJ] = await Promise.all([embed(resume), embed(jd)]);
const cosine = dot(eR.data, eJ.data) / (norm(eR.data) * norm(eJ.data));






Same shape, fancier math, much better synonym recall. Costs you a 50 MB model download (cached after first load). Use this when your word-set version is missing valid matches because of vocabulary differences.









Try it now



👉 https://dev48v.infy.uk/solve/day1-resume-jd-match.html



Three tabs on the page:





  • LOOK — paste a resume + JD, score it


  • UNDERSTAND — 9 click-through steps with the WHY for each line of math


  • BUILD — copy the 30 lines, paste into an HTML file, double-click to run



Sample resume + sample JD are loadable with one click if you don't want to dig up your own.









Why this is Day 1 of SolveFromZero



This is the launch of my new series: 50 real hackathon problem statements, 50 working solutions. Sources: Smart India Hackathon, Devpost, Unstop, Devfolio.



Every day I pick a real brief that someone actually posted and ship a solution you can fork. The goal isn't to win the hackathon retroactively — it's to see the floor of what a working solution looks like, so you don't waste your first 3 hours staring at a blank repo.



Tomorrow: pothole detection from dashcam video — Smart India Hackathon classic.



🌐 All problems: https://dev48v.infy.uk/solvefromzero.php

🌐 The series umbrella: https://dev48v.infy.uk/zero-to-hero.php

Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten I Built the Resume-vs-JD Scorer Every ATS Uses — In 30 Lines of JavaScript

Thematisch verwandte Begriffe: Built, ResumevsJD, Scorer, Every · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-82412 | ntopng is a web-based network traffic monitoring application. Prior to 6…
Advisory →
TTS Reader • tsecurity.de Voice
tsecurity.de Icon
tsecurity.de App
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag
Themen-Radar & Intelligence Matrix
Echtzeit-Taxonomie nach Angriffsvektoren & Plattformen

tsecurity.de Live Threat Radar

🔴 LIVE RADAR
MONITORING
AKTIV
CVE-DATENBANK
LIVE
🔍
Community Radar & Live Chat
Sentinel Bot online • Live-Stream
Dein Cluster: Security Explorer
Match:
lädt…
Verbindung zum Community-Stream wird aufgebaut...
Bearbeitungsmodus — Senden überschreibt deine Nachricht
Community-Puls — was gerade passiert
lädt…
Aktivitäten deiner Analysten
lädt…
Neues Thema oder Eilmeldung einreichen

Reiche interessante Links, Zero-Days oder Debatten ein. Die Community entscheidet per Upvote über die Veröffentlichung.

Heiß diskutierte Einreichungen
🔖 Gespeicherte Artikel
📂 Keine gespeicherten Artikel vorhanden.
Zurück Ziehen Vor
Links: vorheriger Artikel Rechts: nächster Artikel unten: schließen
News NIS-2 Frühwarnung Tier-1 Intel ⏱️ 3 Min vor 10 Min
Artikeldaten werden geladen...

Zurück: vorheriger Vor: nächster
↗ Original-Quelle
Social Reaktionen Deine Reaktion zählt
Einstufung & Relevanz-Poll 0 Stimmen
In sozialen Netzwerken teilen 1-Klick