PageSourceSearch

https://shortli.ai/features/how-we-read-cvs

html shortli.ai collected 2026-10-05 12:37:24 UTC 324,592 bytes, 1 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/338f51773dfbfd75.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/7924b9b5ecdfc660.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/2b0fc73f03331c2a.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/6e3f8fd0aa1f833a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49"/>
1<script src="/_next/static/chunks/c1e86ff4ada35f7a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/8f8176af4e71c7d9.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/d91d1b6e344615b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/b74479d3951b43fd.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/turbopack-1183daba02b2dee1.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/2ec103d6780bda31.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/e2977e5685d76259.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/5ca310a8c945c313.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/8bbc4f17651863b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/9d8d713028288af4.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<script src="/_next/static/chunks/cdec1a59724e7eb1.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" async=""></script>
1<link rel="preload" href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css" as="style" type="text/css"/><meta name="next-size-adjust" content=""/><title>How we read CVs · Shortli</title><meta name="description" content="From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli."/><meta name="application-name" content="Shortli"/><link rel="manifest" href="/manifest.webmanifest"/><link rel="canonical" href="https://shortli.ai/features/how-we-read-cvs"/><meta property="og:title" content="How we read CVs · Shortli"/><meta property="og:description" content="From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli."/><meta property="og:url" content="https://shortli.ai/features/how-we-read-cvs"/><meta property="og:site_name" content="Shortli"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://shortli.ai/opengraph-image"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Shortli"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="How we read CVs · Shortli"/><meta name="twitter:description" content="From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli."/><meta name="twitter:image" content="https://shortli.ai/twitter-image"/><link rel="icon" href="/icon.png?icon.71e9e690.png" sizes="511x473" type="image/png"/><link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css"/>
1<script src="/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" noModule=""></script>
1</head><body class="inter_5901b7c6-module__ec5Qua__variable nunito_1108b859-module__PeczNG__variable font-sans antialiased"><div hidden=""><!--$--><!--/$--></div>
1<script>((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","dark",null,["light","dark"],null,true,true)</script>
1<div class="site min-h-screen bg-(--site-bg) text-(--site-fg)"><div class="min-h-screen bg-(--site-bg) text-(--site-fg) flex flex-col overflow-x-clip"><header class="relative border-b border-(--site-border)"><div class="max-w-6xl mx-auto px-6 py-4 flex items-center justify-between gap-3"><a class="flex items-center gap-2 shrink-0" aria-label="Shortli" href="/home"><img alt="Shortli" loading="lazy" width="32" height="32" decoding="async" data-nimg="1" style="color:transparent" srcSet="/_next/image?url=%2Fshortli-logo.png&amp;w=32&amp;q=75&amp;dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49 1x, /_next/image?url=%2Fshortli-logo.png&amp;w=64&amp;q=75&amp;dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49 2x" src="/_next/image?url=%2Fshortli-logo.png&amp;w=64&amp;q=75&amp;dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49"/><span class="text-lg font-extrabold text-(--site-fg)" style="font-family:var(--font-nunito)">Short<span class="text-(--site-primary)">li</span></span></a><nav class="hidden items-center lg:flex" aria-label="Site"><span class="flex items-center"><a class="px-1 py-1 text-sm font-medium tracking-wide transition-colors hover:text-(--site-fg) text-(--site-muted-fg)" href="/home">Home</a></span><span class="flex items-center"><span aria-hidden="true" class="mx-5 h-4 w-px bg-(--site-border)"></span><a aria-current="page" class="px-1 py-1 text-sm font-medium tracking-wide transition-colors hover:text-(--site-fg) text-(--site-fg)" href="/features/how-we-read-cvs">How we read CVs</a></span><span class="flex items-center"><span aria-hidden="true" class="mx-5 h-4 w-px bg-(--site-border)"></span><a class="px-1 py-1 text-sm font-medium tracking-wide transition-colors hover:text-(--site-fg) text-(--site-muted-fg)" href="/features/skill-map">Skill Map</a></span><span class="flex items-center"><span aria-hidden="true" class="mx-5 h-4 w-px bg-(--site-border)"></span><a class="px-1 py-1 text-sm font-medium tracking-wide transition-colors hover:text-(--site-fg) text-(--site-muted-fg)" href="/home#pricing">Pricing</a></span></nav><div class="flex items-center gap-2 shrink-0"><label class="relative items-center gap-1.5 rounded-md text-sm text-(--site-muted-fg) transition-colors hover:text-(--site-fg) focus-within:text-(--site-fg) h-9 px-2 focus-within:ring-2 focus-within:ring-(--site-ring)/40 hidden lg:inline-flex"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe h-4 w-4 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg><span class="font-medium uppercase">en</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3.5 w-3.5" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg><select aria-label="Language" class="cursor-pointer bg-transparent text-sm outline-none absolute inset-0 h-full w-full opacity-0"><option value="en" class="bg-(--site-bg) text-(--site-fg)" selected="">English</option><option value="it" class="bg-(--site-bg) text-(--site-fg)">Italiano</option><option value="fr" class="bg-(--site-bg) text-(--site-fg)">Français</option><option value="de" class="bg-(--site-bg) text-(--site-fg)">Deutsch</option><option value="es" class="bg-(--site-bg) text-(--site-fg)">Español</option></select></label><a class="hidden sm:block" href="/auth/signin"><button class="inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-[3px] focus-visible:ring-(--site-ring)/50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 border border-(--site-input) bg-(--site-input)/30 hover:bg-(--site-input)/50 text-(--site-fg) h-8 gap-1.5 px-3">Sign in</button></a><a href="/auth/signin"><button class="inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-[3px] focus-visible:ring-(--site-ring)/50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;
1size-&#x27;])]:size-4 bg-(--site-primary) text-(--site-primary-fg) hover:bg-(--site-primary)/90 h-8 gap-1.5 px-3">Start free</button></a><button class="inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-[3px] focus-visible:ring-(--site-ring)/50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 hover:bg-(--site-accent)/50 hover:text-(--site-accent-fg) size-9 lg:hidden" aria-label="Open menu" aria-expanded="false" aria-controls="site-mobile-nav"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></header><section class="px-6 pt-14 pb-12 sm:pt-20 sm:pb-16"><div class="max-w-6xl mx-auto flex flex-col items-center text-center"><div class="inline-flex items-center gap-2.5 rounded-full border border-(--site-primary)/40 bg-(--site-primary)/10 px-4 py-1.5 text-center text-sm font-semibold tracking-wide text-(--site-primary) sm:px-5 sm:py-2 sm:text-base " style="box-shadow:0 0 28px rgba(57, 224, 196, 0.26)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-4 w-4 shrink-0 sm:h-5 sm:w-5" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg>Under the hood</div><h1 class="mt-6 text-3xl sm:text-4xl md:text-5xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">Every CV, read the way a recruiter would</h1><p class="mt-4 max-w-2xl text-base sm:text-lg text-(--site-fg)/90 leading-relaxed">Drop your PDFs in and Shortli turns each one into a structured, searchable candidate profile: role, seniority, skills, experience, summary. You review what matters, we do the rest.</p><a class="mt-7" href="/auth/signin"><button class="inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-[3px] focus-visible:ring-(--site-ring)/50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 bg-(--site-primary) text-(--site-primary-fg) hover:bg-(--site-primary)/90 h-10 px-7">Try it on your CVs</button></a></div></section><section class="px-6 pb-20 sm:pb-28"><div class="max-w-5xl mx-auto flex flex-col items-center"><div class="inline-flex items-center gap-2.5 rounded-full border border-(--site-primary)/40 bg-(--site-primary)/10 px-4 py-1.5 text-center text-sm font-semibold tracking-wide text-(--site-primary) sm:px-5 sm:py-2 sm:text-base " style="box-shadow:0 0 28px rgba(57, 224, 196, 0.26)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-4 w-4 shrink-0 sm:h-5 sm:w-5" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg>Live replay</div><h2 class="mt-5 mb-8 text-2xl sm:text-3xl font-extrabold text-(--site-fg) text-center tracking-tight" style="font-family:var(--font-nunito)">This is what you see while your CVs are being read</h2><div class="relative h-[470px] w-full overflow-hidden"><div class="grid h-full gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 transition-opacity duration-300" aria-hidden="false"><div class="relative h-full rounded-xl site-intake-drop"><div aria-hidden="true" class="site-chrome-glow pointer-events-none absolute inset-0 z-0 rounded-xl transition-opacity duration-700 opacity-0" style="animation-duration:4s"></div><div class="relative z-10 flex h-full flex-col overflow-hidden rounded-xl border border-(--site-primary)/20 bg-[#0e1414] text-(--site-card-fg) pb-4 shadow-md transition-colors duration-700"><div class="flex items-start justify-between gap-3 px-5 pt-4"><div class="min-w-0"><div class="truncate text-base font-semibold">Giulia Ferrante</div><div class="text-xs text-(--site-muted-fg)">IT &amp; Digital</div></div><span class="inline-flex shrink-0 items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-medium transition-colors duration-500 bg-(--site-muted) text-(--site-muted-fg)"><span class="h-1.5 w-1.5 animate-pulse rounded-full bg-(--site-muted-fg)/50"></span>Waiting</span></div><ul class="mt-3 flex flex-col gap-y-1.5 px-5 text-sm"><li class="flex min-w-0 items-center gap-2"><span class="shrink-0 text-(--site-muted-fg) transition-opacity opacity-30"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages h-3.5 w-3.5" aria-hidden="true"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg></span><span class="h-3 w-24 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex min-w-0 items-center gap-2"><span class="shrink-0 text-(--site-muted-fg) transition-opacity opacity-30"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase h-3.5 w-3.5" aria-hidden="true"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg></span><span class="h-3 w-24 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex min-w-0 items-center gap-2"><span class="shrink-0 text-(--site-muted-fg) transition-opacity opacity-30"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-map-pin h-3.5 w-3.5" aria-hidden="true"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path><circle cx="12" cy="10" r="3"></circle></svg></span><span class="h-3 w-24 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex min-w-0 items-center gap-2"><span class="shrink-0 text-(--site-muted-fg) transition-opacity opacity-30"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-gauge h-3.5 w-3.5" aria-hidden="true"><path d="m12 14 4-4"></path><path d="M3.34 19a10 10 0 1 1 17.32 0"></path></svg></span><span class="h-3 w-24 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex min-w-0 items-center gap-2"><span class="shrink-0 text-(--site-muted-fg) transition-opacity opacity-30"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles h-3.5 w-3.5" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 
11.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg></span><span class="h-3 w-24 site-intake-skeleton rounded" aria-hidden="true"></span></li></ul><div class="mt-3 border-t px-5 pt-3"><div class="flex items-start gap-2 text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench mt-0.5 h-3.5 w-3.5 shrink-0 text-(--site-muted-fg) opacity-30" aria-hidden="true"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z"></path></svg><span class="h-3 w-40 site-intake-skeleton rounded" aria-hidden="true"></span></div><ul class="mt-2 flex flex-col gap-y-1.5 text-sm"><li class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar-clock h-3.5 w-3.5 shrink-0 text-(--site-muted-fg) opacity-30" aria-hidden="true"><path d="M16 14v2.2l1.6 1"></path><path d="M16 2v4"></path><path d="M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5"></path><path d="M3 10h5"></path><path d="M8 2v4"></path><circle cx="16" cy="16" r="6"></circle></svg><span class="h-3 w-28 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-graduation-cap h-3.5 w-3.5 shrink-0 text-(--site-muted-fg) opacity-30" aria-hidden="true"><path d="M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z"></path><path d="M22 10v6"></path><path d="M6 12.5V16a6 3 0 0 0 12 0v-3.5"></path></svg><span class="h-3 w-32 site-intake-skeleton rounded" aria-hidden="true"></span></li><li class="flex items-start gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-message-square-text mt-0.5 h-3.5 w-3.5 shrink-0 text-(--site-muted-fg) opacity-30" aria-hidden="true"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"></path><path d="M7 11h10"></path><path d="M7 15h6"></path><path d="M7 7h8"></path></svg><span class="flex flex-col gap-1.5" aria-hidden="true"><span class="h-3 w-56 site-intake-skeleton rounded"></span><span class="h-3 w-44 site-intake-skeleton rounded"></span></span></li></ul></div></div><div aria-hidden="true" class="site-chrome-border pointer-events-none absolute inset-0 z-20 rounded-xl transition-opacity duration-700 opacity-0" style="animation-duration:4s"></div></div><div aria-hidden="true"></div><div aria-hidden="true"></div></div></div><p class="mt-4 text-sm text-(--site-muted-fg) text-center">Simulated candidates, real choreography: the same cards fill up in the app on every import.</p></div></section><section class="border-t border-(--site-border) py-20 sm:py-28"><div class="max-w-6xl mx-auto px-6 flex flex-col items-center text-center"><h2 class="text-2xl sm:text-3xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">The whole IT &amp; Digital sector, skill by skill</h2><p class="mt-3 max-w-2xl text-(--site-muted-fg)">1,929 skills in our vocabulary: languages, frameworks, databases, cloud, tooling, methodologies and roles. Every way a CV can spell a skill maps to one name, so your filters match every time.</p><p class="inline-flex items-start gap-2 text-left text-sm text-(--site-muted-fg) mt-5 max-w-2xl"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-info mt-0.5 h-4 w-4 shrink-0 text-(--site-primary)" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 16v-4"></path><path d="M12 8h.01"></path></svg><span>This version covers the IT &amp; Digital sector.<!-- --> <!-- -->Finance &amp; Admin, Sales &amp; Marketing, Engineering, Healthcare and Legal &amp; HR are next.</span></p></div><div class="site-marquee flex flex-col gap-3 mt-12" aria-hidden="true"><div class="overflow-hidden"><div class="site-marquee-track flex w-max gap-3" style="animation-duration:140s"><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-javascript-plain colored text-lg leading-none"></i>JavaScript</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-csharp-plain colored text-lg leading-none"></i>C#</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ruby-plain colored text-lg leading-none"></i>Ruby</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-kotlin-plain colored text-lg leading-none"></i>Kotlin</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-r-plain colored text-lg leading-none"></i>R</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-clojure-plain colored text-lg leading-none"></i>Clojure</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bash-plain colored text-lg leading-none"></i>Bash</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-angular-plain colored text-lg leading-none"></i>Angular</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nextjs-plain colored text-lg leading-none"></i>Next.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-backbonejs-plain colored text-lg leading-none"></i>Backbone.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-solidjs-plain colored text-lg leading-none"></i>SolidJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-less-plain-wordmark colored text-lg leading-none"></i>Less</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bulma-plain colored text-lg leading-none"></i>Bulma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nodejs-plain colored text-lg leading-none"></i>Node.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-django-plain colored text-lg leading-none"></i>Django</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rails-plain colored text-lg leading-none"></i>Ruby on Rails</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cakephp-plain colored text-lg leading-none"></i>CakePHP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-phoenix-plain colored text-lg leading-none"></i>Phoenix</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-xamarin-original colored text-lg leading-none"></i>Xamarin</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sqlite-plain colored text-lg leading-none"></i>SQLite</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-couchdb-plain colored text-lg leading-none"></i>CouchDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-microsoftsqlserver-plain colored text-lg leading-none"></i>SQL Server</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-docker-plain colored text-lg leading-none"></i>
1Docker</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-googlecloud-plain colored text-lg leading-none"></i>GCP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-gitlab-plain colored text-lg leading-none"></i>GitLab</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-circleci-plain colored text-lg leading-none"></i>CircleCI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vercel-original colored text-lg leading-none"></i>Vercel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vagrant-plain colored text-lg leading-none"></i>Vagrant</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-grafana-plain colored text-lg leading-none"></i>Grafana</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-yarn-plain colored text-lg leading-none"></i>Yarn</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-webpack-plain colored text-lg leading-none"></i>Webpack</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jest-plain colored text-lg leading-none"></i>Jest</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-selenium-original colored text-lg leading-none"></i>Selenium</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-figma-plain colored text-lg leading-none"></i>Figma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-slack-plain colored text-lg leading-none"></i>Slack</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pycharm-plain colored text-lg leading-none"></i>PyCharm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-woocommerce-plain colored text-lg leading-none"></i>WooCommerce</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-numpy-plain colored text-lg leading-none"></i>NumPy</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-scikitlearn-plain colored text-lg leading-none"></i>scikit-learn</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rabbitmq-original colored text-lg leading-none"></i>RabbitMQ</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-prisma-original colored text-lg leading-none"></i>Prisma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mobx-plain colored text-lg leading-none"></i>MobX</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-debian-plain colored text-lg leading-none"></i>Debian</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-unrealengine-original colored text-lg leading-none"></i>Unreal Engine</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-xd-plain colored text-lg leading-none"></i>Adobe XD</span></div><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-javascript-plain colored text-lg leading-none"></i>JavaScript</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-csharp-plain colored text-lg leading-none"></i>C#</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ruby-plain colored text-lg leading-none"></i>Ruby</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-kotlin-plain colored text-lg leading-none"></i>Kotlin</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-r-plain colored text-lg leading-none"></i>R</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-clojure-plain colored text-lg leading-none"></i>Clojure</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bash-plain colored text-lg leading-none"></i>Bash</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-angular-plain colored text-lg leading-none"></i>Angular</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nextjs-plain colored text-lg leading-none"></i>Next.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-backbonejs-plain colored text-lg leading-none"></i>Backbone.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-solidjs-plain colored text-lg leading-none"></i>SolidJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-less-plain-wordmark colored text-lg leading-none"></i>Less</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bulma-plain colored text-lg leading-none"></i>Bulma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nodejs-plain colored text-lg leading-none"></i>Node.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-django-plain colored text-lg leading-none"></i>Django</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rails-plain colored text-lg leading-none"></i>Ruby on Rails</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cakephp-plain colored text-lg leading-none"></i>CakePHP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-phoenix-plain colored text-lg leading-none"></i>Phoenix</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-xamarin-original colored text-lg leading-none"></i>Xamarin</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sqlite-plain colored text-lg leading-none"></i>SQLite</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-couchdb-plain colored text-lg leading-none"></i>CouchDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-microsoftsqlserver-plain colored text-lg leading-none"></i>SQL Server</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-docker-plain colored text-lg leading-none"></i>
1Docker</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-googlecloud-plain colored text-lg leading-none"></i>GCP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-gitlab-plain colored text-lg leading-none"></i>GitLab</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-circleci-plain colored text-lg leading-none"></i>CircleCI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vercel-original colored text-lg leading-none"></i>Vercel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vagrant-plain colored text-lg leading-none"></i>Vagrant</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-grafana-plain colored text-lg leading-none"></i>Grafana</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-yarn-plain colored text-lg leading-none"></i>Yarn</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-webpack-plain colored text-lg leading-none"></i>Webpack</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jest-plain colored text-lg leading-none"></i>Jest</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-selenium-original colored text-lg leading-none"></i>Selenium</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-figma-plain colored text-lg leading-none"></i>Figma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-slack-plain colored text-lg leading-none"></i>Slack</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pycharm-plain colored text-lg leading-none"></i>PyCharm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-woocommerce-plain colored text-lg leading-none"></i>WooCommerce</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-numpy-plain colored text-lg leading-none"></i>NumPy</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-scikitlearn-plain colored text-lg leading-none"></i>scikit-learn</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rabbitmq-original colored text-lg leading-none"></i>RabbitMQ</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-prisma-original colored text-lg leading-none"></i>Prisma</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mobx-plain colored text-lg leading-none"></i>MobX</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-debian-plain colored text-lg leading-none"></i>Debian</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-unrealengine-original colored text-lg leading-none"></i>Unreal Engine</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-xd-plain colored text-lg leading-none"></i>Adobe XD</span></div></div></div><div class="overflow-hidden"><div class="site-marquee-track flex w-max gap-3 site-marquee-reverse" style="animation-duration:164s"><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-typescript-plain colored text-lg leading-none"></i>TypeScript</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cplusplus-plain colored text-lg leading-none"></i>C++</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-go-plain colored text-lg leading-none"></i>Go</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap">
1<i class="devicon-dart-plain colored text-lg leading-none"></i>Dart</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-lua-plain colored text-lg leading-none"></i>Lua</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-erlang-plain colored text-lg leading-none"></i>Erlang</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-powershell-plain colored text-lg leading-none"></i>PowerShell</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-angularjs-plain colored text-lg leading-none"></i>AngularJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nuxtjs-plain colored text-lg leading-none"></i>Nuxt</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jquery-plain colored text-lg leading-none"></i>jQuery</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-html5-plain colored text-lg leading-none"></i>HTML</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-tailwindcss-original colored text-lg leading-none"></i>Tailwind CSS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-foundation-plain colored text-lg leading-none"></i>Foundation</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-express-original colored text-lg leading-none"></i>Express</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-flask-original colored text-lg leading-none"></i>Flask</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-laravel-original colored text-lg leading-none"></i>Laravel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dot-net-plain colored text-lg leading-none"></i>.NET</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-flutter-plain colored text-lg leading-none"></i>Flutter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mongodb-plain colored text-lg leading-none"></i>MongoDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-redis-plain colored text-lg leading-none"></i>Redis</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dynamodb-plain colored text-lg leading-none"></i>DynamoDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-neo4j-plain colored text-lg leading-none"></i>Neo4j</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-kubernetes-plain colored text-lg leading-none"></i>Kubernetes</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-terraform-plain colored text-lg leading-none"></i>Terraform</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-github-original colored text-lg leading-none"></i>GitHub</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nginx-original colored text-lg leading-none"></i>Nginx</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-netlify-plain colored text-lg leading-none"></i>Netlify</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pulumi-plain colored text-lg leading-none"></i>Pulumi</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-datadog-plain colored text-lg leading-none"></i>Datadog</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pnpm-plain colored text-lg leading-none"></i>pnpm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vitejs-plain colored text-lg leading-none"></i>Vite</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mocha-plain colored text-lg leading-none"></i>Mocha</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-postman-plain colored text-lg leading-none"></i>Postman</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jira-plain colored text-lg leading-none"></i>Jira</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vscode-plain colored text-lg leading-none"></i>
1VS Code</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-wordpress-plain colored text-lg leading-none"></i>WordPress</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-tensorflow-original colored text-lg leading-none"></i>TensorFlow</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jupyter-plain colored text-lg leading-none"></i>Jupyter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apachespark-plain colored text-lg leading-none"></i>Spark</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-graphql-plain colored text-lg leading-none"></i>GraphQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mongoose-original colored text-lg leading-none"></i>Mongoose</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-linux-plain colored text-lg leading-none"></i>Linux</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fedora-plain colored text-lg leading-none"></i>Fedora</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-blender-original colored text-lg leading-none"></i>Blender</span></div><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-typescript-plain colored text-lg leading-none"></i>TypeScript</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cplusplus-plain colored text-lg leading-none"></i>C++</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-go-plain colored text-lg leading-none"></i>Go</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dart-plain colored text-lg leading-none"></i>Dart</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-lua-plain colored text-lg leading-none"></i>Lua</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-erlang-plain colored text-lg leading-none"></i>Erlang</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-powershell-plain colored text-lg leading-none"></i>PowerShell</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-angularjs-plain colored text-lg leading-none"></i>AngularJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nuxtjs-plain colored text-lg leading-none"></i>Nuxt</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jquery-plain colored text-lg leading-none"></i>jQuery</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-html5-plain colored text-lg leading-none"></i>HTML</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-tailwindcss-original colored text-lg leading-none"></i>Tailwind CSS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-foundation-plain colored text-lg leading-none"></i>Foundation</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-express-original colored text-lg leading-none"></i>Express</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-flask-original colored text-lg leading-none"></i>Flask</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-laravel-original colored text-lg leading-none"></i>Laravel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dot-net-plain colored text-lg leading-none"></i>.NET</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-flutter-plain colored text-lg leading-none"></i>Flutter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mongodb-plain colored text-lg leading-none"></i>MongoDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-redis-plain colored text-lg leading-none"></i>Redis</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dynamodb-plain colored text-lg leading-none"></i>DynamoDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-neo4j-plain colored text-lg leading-none"></i>Neo4j</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-kubernetes-plain colored text-lg leading-none"></i>Kubernetes</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-terraform-plain colored text-lg leading-none"></i>Terraform</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-github-original colored text-lg leading-none"></i>GitHub</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nginx-original colored text-lg leading-none"></i>Nginx</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-netlify-plain colored text-lg leading-none"></i>Netlify</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pulumi-plain colored text-lg leading-none"></i>Pulumi</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-datadog-plain colored text-lg leading-none"></i>Datadog</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pnpm-plain colored text-lg leading-none"></i>pnpm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vitejs-plain colored text-lg leading-none"></i>Vite</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mocha-plain colored text-lg leading-none"></i>Mocha</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-postman-plain colored text-lg leading-none"></i>Postman</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jira-plain colored text-lg leading-none"></i>Jira</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vscode-plain colored text-lg leading-none"></i>
1VS Code</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-wordpress-plain colored text-lg leading-none"></i>WordPress</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-tensorflow-original colored text-lg leading-none"></i>TensorFlow</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jupyter-plain colored text-lg leading-none"></i>Jupyter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apachespark-plain colored text-lg leading-none"></i>Spark</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-graphql-plain colored text-lg leading-none"></i>GraphQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mongoose-original colored text-lg leading-none"></i>Mongoose</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-linux-plain colored text-lg leading-none"></i>Linux</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fedora-plain colored text-lg leading-none"></i>Fedora</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-blender-original colored text-lg leading-none"></i>Blender</span></div></div></div><div class="overflow-hidden"><div class="site-marquee-track flex w-max gap-3" style="animation-duration:132s"><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-python-plain colored text-lg leading-none"></i>Python</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-c-plain colored text-lg leading-none"></i>C</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rust-original colored text-lg leading-none"></i>Rust</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-scala-plain colored text-lg leading-none"></i>Scala</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-elixir-plain colored text-lg leading-none"></i>Elixir</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fsharp-plain colored text-lg leading-none"></i>F#</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-objectivec-plain colored text-lg leading-none"></i>Objective-C</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vuejs-plain colored text-lg leading-none"></i>Vue.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-gatsby-plain colored text-lg leading-none"></i>Gatsby</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-alpinejs-original colored text-lg leading-none"></i>Alpine.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-css3-plain colored text-lg leading-none"></i>CSS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bootstrap-plain colored text-lg leading-none"></i>Bootstrap</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-antdesign-plain colored text-lg leading-none"></i>Ant Design</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nestjs-original colored text-lg leading-none"></i>NestJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fastapi-plain colored text-lg leading-none"></i>FastAPI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-symfony-original colored text-lg leading-none"></i>Symfony</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dotnetcore-plain colored text-lg leading-none"></i>.NET Core</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-android-plain colored text-lg leading-none"></i>Android</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mysql-original colored text-lg leading-none"></i>MySQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-elasticsearch-plain colored text-lg leading-none"></i>Elasticsearch</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mariadb-original colored text-lg leading-none"></i>MariaDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-firebase-plain colored text-lg leading-none"></i>Firebase</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-amazonwebservices-plain-wordmark colored text-lg leading-none"></i>AWS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ansible-plain colored text-lg leading-none"></i>Ansible</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-githubactions-plain colored text-lg leading-none"></i>GitHub Actions</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apache-plain colored text-lg leading-none"></i>
1Apache</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-digitalocean-plain colored text-lg leading-none"></i>DigitalOcean</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-argocd-plain colored text-lg leading-none"></i>Argo CD</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-git-plain colored text-lg leading-none"></i>Git</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bun-plain colored text-lg leading-none"></i>Bun</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-babel-plain colored text-lg leading-none"></i>Babel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cypressio-plain colored text-lg leading-none"></i>Cypress</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-swagger-plain colored text-lg leading-none"></i>Swagger</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-confluence-plain colored text-lg leading-none"></i>Confluence</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-intellij-plain colored text-lg leading-none"></i>IntelliJ</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-drupal-plain colored text-lg leading-none"></i>Drupal</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pytorch-plain colored text-lg leading-none"></i>PyTorch</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-matplotlib-plain colored text-lg leading-none"></i>Matplotlib</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apachekafka-original colored text-lg leading-none"></i>Kafka</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-grpc-plain colored text-lg leading-none"></i>gRPC</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sequelize-plain colored text-lg leading-none"></i>Sequelize</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ubuntu-plain colored text-lg leading-none"></i>Ubuntu</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-salesforce-plain colored text-lg leading-none"></i>
1Salesforce</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-photoshop-plain colored text-lg leading-none"></i>Photoshop</span></div><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-python-plain colored text-lg leading-none"></i>Python</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-c-plain colored text-lg leading-none"></i>C</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-rust-original colored text-lg leading-none"></i>Rust</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-scala-plain colored text-lg leading-none"></i>Scala</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-elixir-plain colored text-lg leading-none"></i>Elixir</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fsharp-plain colored text-lg leading-none"></i>F#</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-objectivec-plain colored text-lg leading-none"></i>Objective-C</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-vuejs-plain colored text-lg leading-none"></i>Vue.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-gatsby-plain colored text-lg leading-none"></i>Gatsby</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-alpinejs-original colored text-lg leading-none"></i>Alpine.js</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-css3-plain colored text-lg leading-none"></i>CSS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bootstrap-plain colored text-lg leading-none"></i>Bootstrap</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-antdesign-plain colored text-lg leading-none"></i>Ant Design</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-nestjs-original colored text-lg leading-none"></i>NestJS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fastapi-plain colored text-lg leading-none"></i>FastAPI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-symfony-original colored text-lg leading-none"></i>Symfony</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-dotnetcore-plain colored text-lg leading-none"></i>.NET Core</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-android-plain colored text-lg leading-none"></i>Android</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mysql-original colored text-lg leading-none"></i>MySQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-elasticsearch-plain colored text-lg leading-none"></i>Elasticsearch</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-mariadb-original colored text-lg leading-none"></i>MariaDB</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-firebase-plain colored text-lg leading-none"></i>Firebase</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-amazonwebservices-plain-wordmark colored text-lg leading-none"></i>AWS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ansible-plain colored text-lg leading-none"></i>Ansible</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-githubactions-plain colored text-lg leading-none"></i>GitHub Actions</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apache-plain colored text-lg leading-none"></i>
1Apache</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-digitalocean-plain colored text-lg leading-none"></i>DigitalOcean</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-argocd-plain colored text-lg leading-none"></i>Argo CD</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-git-plain colored text-lg leading-none"></i>Git</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bun-plain colored text-lg leading-none"></i>Bun</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-babel-plain colored text-lg leading-none"></i>Babel</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cypressio-plain colored text-lg leading-none"></i>Cypress</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-swagger-plain colored text-lg leading-none"></i>Swagger</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-confluence-plain colored text-lg leading-none"></i>Confluence</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-intellij-plain colored text-lg leading-none"></i>IntelliJ</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-drupal-plain colored text-lg leading-none"></i>Drupal</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pytorch-plain colored text-lg leading-none"></i>PyTorch</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-matplotlib-plain colored text-lg leading-none"></i>Matplotlib</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apachekafka-original colored text-lg leading-none"></i>Kafka</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-grpc-plain colored text-lg leading-none"></i>gRPC</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sequelize-plain colored text-lg leading-none"></i>Sequelize</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ubuntu-plain colored text-lg leading-none"></i>Ubuntu</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-salesforce-plain colored text-lg leading-none"></i>
1Salesforce</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-photoshop-plain colored text-lg leading-none"></i>Photoshop</span></div></div></div><div class="overflow-hidden"><div class="site-marquee-track flex w-max gap-3 site-marquee-reverse" style="animation-duration:180s"><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-java-plain colored text-lg leading-none"></i>Java</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-php-plain colored text-lg leading-none"></i>PHP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-swift-plain colored text-lg leading-none"></i>Swift</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-perl-plain colored text-lg leading-none"></i>Perl</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-haskell-plain colored text-lg leading-none"></i>Haskell</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-groovy-plain colored text-lg leading-none"></i>Groovy</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-react-original colored text-lg leading-none"></i>React</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-svelte-plain colored text-lg leading-none"></i>Svelte</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ember-original-wordmark colored text-lg leading-none"></i>Ember</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-astro-plain colored text-lg leading-none"></i>Astro</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sass-original colored text-lg leading-none"></i>Sass</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-materialui-plain colored text-lg leading-none"></i>Material UI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-chakraui-plain colored text-lg leading-none"></i>Chakra UI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fastify-plain colored text-lg leading-none"></i>Fastify</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-spring-original colored text-lg leading-none"></i>Spring</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-codeigniter-plain colored text-lg leading-none"></i>CodeIgniter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-blazor-original colored text-lg leading-none"></i>Blazor</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apple-original colored text-lg leading-none"></i>iOS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-postgresql-plain colored text-lg leading-none"></i>PostgreSQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cassandra-plain colored text-lg leading-none"></i>Cassandra</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-oracle-original colored text-lg leading-none"></i>Oracle</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-supabase-plain colored text-lg leading-none"></i>Supabase</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-azure-plain colored text-lg leading-none"></i>Azure</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jenkins-plain colored text-lg leading-none"></i>Jenkins</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bitbucket-original colored text-lg leading-none"></i>Bitbucket</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-heroku-plain colored text-lg leading-none"></i>Heroku</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cloudflare-plain colored text-lg leading-none"></i>Cloudflare</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-prometheus-original colored text-lg leading-none"></i>Prometheus</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-npm-original-wordmark colored text-lg leading-none"></i>npm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-denojs-original colored text-lg leading-none"></i>Deno</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-eslint-plain colored text-lg leading-none"></i>ESLint</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-playwright-plain colored text-lg leading-none"></i>Playwright</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-storybook-plain colored text-lg leading-none"></i>Storybook</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-trello-plain colored text-lg leading-none"></i>Trello</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-webstorm-plain colored text-lg leading-none"></i>WebStorm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-magento-original colored text-lg leading-none"></i>Magento</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pandas-plain colored text-lg leading-none"></i>pandas</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-opencv-plain colored text-lg leading-none"></i>OpenCV</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-hadoop-plain colored text-lg leading-none"></i>Hadoop</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-socketio-original colored text-lg leading-none"></i>Socket.IO</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-redux-original colored text-lg leading-none"></i>Redux</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-centos-plain colored text-lg leading-none"></i>CentOS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-unity-plain colored text-lg leading-none"></i>Unity</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-illustrator-plain colored text-lg leading-none"></i>Illustrator</span></div><div class="flex shrink-0 gap-3 pr-3"><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-java-plain colored text-lg leading-none"></i>Java</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-php-plain colored text-lg leading-none"></i>PHP</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-swift-plain colored text-lg leading-none"></i>
1Swift</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-perl-plain colored text-lg leading-none"></i>Perl</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-haskell-plain colored text-lg leading-none"></i>Haskell</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-groovy-plain colored text-lg leading-none"></i>Groovy</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-react-original colored text-lg leading-none"></i>React</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-svelte-plain colored text-lg leading-none"></i>Svelte</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-ember-original-wordmark colored text-lg leading-none"></i>Ember</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-astro-plain colored text-lg leading-none"></i>Astro</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-sass-original colored text-lg leading-none"></i>Sass</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-materialui-plain colored text-lg leading-none"></i>Material UI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-chakraui-plain colored text-lg leading-none"></i>Chakra UI</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-fastify-plain colored text-lg leading-none"></i>Fastify</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-spring-original colored text-lg leading-none"></i>Spring</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-codeigniter-plain colored text-lg leading-none"></i>CodeIgniter</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-blazor-original colored text-lg leading-none"></i>Blazor</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-apple-original colored text-lg leading-none"></i>iOS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-postgresql-plain colored text-lg leading-none"></i>PostgreSQL</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cassandra-plain colored text-lg leading-none"></i>Cassandra</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-oracle-original colored text-lg leading-none"></i>Oracle</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-supabase-plain colored text-lg leading-none"></i>Supabase</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-azure-plain colored text-lg leading-none"></i>Azure</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-jenkins-plain colored text-lg leading-none"></i>Jenkins</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-bitbucket-original colored text-lg leading-none"></i>Bitbucket</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-heroku-plain colored text-lg leading-none"></i>Heroku</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-cloudflare-plain colored text-lg leading-none"></i>Cloudflare</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-prometheus-original colored text-lg leading-none"></i>Prometheus</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-npm-original-wordmark colored text-lg leading-none"></i>npm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-denojs-original colored text-lg leading-none"></i>Deno</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-eslint-plain colored text-lg leading-none"></i>ESLint</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-playwright-plain colored text-lg leading-none"></i>Playwright</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-storybook-plain colored text-lg leading-none"></i>Storybook</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-trello-plain colored text-lg leading-none"></i>Trello</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-webstorm-plain colored text-lg leading-none"></i>WebStorm</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-magento-original colored text-lg leading-none"></i>Magento</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-pandas-plain colored text-lg leading-none"></i>pandas</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-opencv-plain colored text-lg leading-none"></i>OpenCV</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-hadoop-plain colored text-lg leading-none"></i>Hadoop</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-socketio-original colored text-lg leading-none"></i>Socket.IO</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-redux-original colored text-lg leading-none"></i>Redux</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-centos-plain colored text-lg leading-none"></i>CentOS</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-unity-plain colored text-lg leading-none"></i>Unity</span><span class="inline-flex shrink-0 items-center gap-2 rounded-full border border-(--site-border) bg-(--site-card) px-3.5 py-1.5 text-sm text-(--site-fg) whitespace-nowrap"><i class="devicon-illustrator-plain colored text-lg leading-none"></i>Illustrator</span></div></div></div></div><div class="max-w-6xl mx-auto px-6 mt-24 sm:mt-28 flex flex-col items-center"><div class="w-full max-w-3xl"><div class="mb-4 hidden grid-cols-[1fr_auto_1fr] items-center gap-4 text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg) sm:grid"><span class="text-right">Written in the CV</span><span class="w-16"></span><span class="text-left">Read by Shortli</span></div><ul class="flex flex-col gap-7 sm:gap-5"><li class="grid grid-cols-1 items-center gap-1 sm:grid-cols-[1fr_auto_1fr] sm:gap-4"><div class="flex flex-wrap items-center justify-center gap-2 sm:justify-end"><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">ReactJS</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">React.js</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">react js</span></div><span class="hidden items-center text-(--site-primary) sm:flex" aria-hidden="true"><span class="h-px w-12 border-t border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -ml-1.5 h-5 w-5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="flex flex-col items-center text-(--site-primary) sm:hidden" aria-hidden="true"><span class="h-5 w-px border-l border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -mt-1.5 h-5 w-5 rotate-90" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><div class="flex justify-center sm:justify-start"><span class="inline-flex items-center gap-2 rounded-full border border-(--site-primary)/40 bg-(--site-primary)/10 px-3.5 py-1.5 text-sm font-semibold text-(--site-fg)" style="box-shadow:0 0 22px rgba(57, 224, 196, 0.18)"><i class="devicon-react-original colored text-lg leading-none"></i>React</span></div></li><li class="grid grid-cols-1 items-center gap-1 sm:grid-cols-[1fr_auto_1fr] sm:gap-4"><div class="flex flex-wrap items-center justify-center gap-2 sm:justify-end"><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">Postgres</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">pgsql</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">postgress</span></div><span class="hidden items-center text-(--site-primary) sm:flex" aria-hidden="true"><span class="h-px w-12 border-t border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -ml-1.5 h-5 w-5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="flex flex-col items-center text-(--site-primary) sm:hidden" aria-hidden="true"><span class="h-5 w-px border-l border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -mt-1.5 h-5 w-5 rotate-90" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><div class="flex justify-center sm:justify-start"><span class="inline-flex items-center gap-2 rounded-full border border-(--site-primary)/40 bg-(--site-primary)/10 px-3.5 py-1.5 text-sm font-semibold text-(--site-fg)" style="box-shadow:0 0 22px rgba(57, 224, 196, 0.18)"><i class="devicon-postgresql-plain colored text-lg leading-none"></i>PostgreSQL</span></div></li><li class="grid grid-cols-1 items-center gap-1 sm:grid-cols-[1fr_auto_1fr] sm:gap-4"><div class="flex flex-wrap items-center justify-center gap-2 sm:justify-end"><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">k8s</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">kubectl</span><span class="rounded-md border border-dashed border-(--site-muted-fg)/40 px-2 py-0.5 font-mono text-sm text-(--site-muted-fg)">kube</span></div><span class="hidden items-center text-(--site-primary) sm:flex" aria-hidden="true"><span class="h-px w-12 border-t border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -ml-1.5 h-5 w-5" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><span class="flex flex-col items-center text-(--site-primary) sm:hidden" aria-hidden="true"><span class="h-5 w-px border-l border-dashed border-(--site-primary)/60"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right -mt-1.5 h-5 w-5 rotate-90" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span><div class="flex justify-center sm:justify-start"><span class="inline-flex items-center gap-2 rounded-full border border-(--sit
1e-primary)/40 bg-(--site-primary)/10 px-3.5 py-1.5 text-sm font-semibold text-(--site-fg)" style="box-shadow:0 0 22px rgba(57, 224, 196, 0.18)"><i class="devicon-kubernetes-plain colored text-lg leading-none"></i>Kubernetes</span></div></li></ul></div><p class="mt-14 max-w-xl text-center text-base text-(--site-muted-fg)">Every skill in your database, on one map.<!-- --> <a class="inline-flex items-center gap-1 font-semibold text-(--site-primary) hover:underline" href="/features/skill-map">Explore the Skill Map<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></p></div></section><section class="border-t border-(--site-border) bg-(--site-muted)/20 px-6 py-20 sm:py-28"><div class="max-w-6xl mx-auto"><div class="flex flex-col items-center text-center"><h2 class="text-2xl sm:text-3xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">Six steps, one upload</h2><p class="mt-3 max-w-2xl text-(--site-muted-fg)">Everything starts the moment you drop the files. Here is what happens, in order.</p></div><ol class="mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3"><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-upload h-5 w-5" aria-hidden="true"><path d="M12 3v12"></path><path d="m17 8-5-5-5 5"></path><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">01</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">Upload</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Drop one PDF or a hundred at once, whether they came straight from candidates or through a supplier. Files are checked on the spot, and likely duplicates are flagged before any reading starts.</p></li><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-scan-search h-5 w-5" aria-hidden="true"><path d="M3 7V5a2 2 0 0 1 2-2h2"></path><path d="M17 3h2a2 2 0 0 1 2 2v2"></path><path d="M21 17v2a2 2 0 0 1-2 2h-2"></path><path d="M7 21H5a2 2 0 0 1-2-2v-2"></path><circle cx="12" cy="12" r="3"></circle><path d="m16 16-1.9-1.9"></path></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">02</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">First read</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Within seconds, each file gets a first pass: is this actually a CV? If so, we pick up the name, sector, document language, latest role, city and seniority, and the candidate card takes shape.</p></li><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user-check h-5 w-5" aria-hidden="true"><path d="m16 11 2 2 4-4"></path><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">03</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">Your review</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Before going any further you see the whole batch on one screen. Correct a name, drop a file that is not a CV, and decide for every duplicate whether to update the existing profile or keep both.</p></li><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-book-open-text h-5 w-5" aria-hidden="true"><path d="M12 7v14"></path><path d="M16 12h2"></path><path d="M16 8h2"></path><path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"></path><path d="M6 12h2"></path><path d="M6 8h2"></path></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">04</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">Full read</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Now the entire CV is read end to end: skills, specialization, years of experience, education, spoken languages and a short professional summary, all extracted and structured.</p></li><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tags h-5 w-5" aria-hidden="true"><path d="M13.172 2a2 2 0 0 1 1.414.586l6.71 6.71a2.4 2.4 0 0 1 0 3.408l-4.592 4.592a2.4 2.4 0 0 1-3.408 0l-6.71-6.71A2 2 0 0 1 6 9.172V3a1 1 0 0 1 1-1z"></path><path d="M2 7v6.172a2 2 0 0 0 .586 1.414l6.71 6.71a2.4 2.4 0 0 0 3.191.193"></path><circle cx="10.5" cy="6.5" r=".5" fill="currentColor"></circle></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">05</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">Clean-up</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Skills are mapped to a shared vocabulary for the sector, so &quot;ReactJS&quot; and &quot;React&quot; are the same thing when you search. Each candidate gets a unique code.</p></li><li class="rounded-2xl border border-(--site-border) bg-(--site-card) p-6 flex flex-col"><div class="flex items-center gap-3"><span class="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-(--site-primary)/10 text-(--site-primary)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check h-5 w-5" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg></span><span class="text-xs font-semibold uppercase tracking-wider text-(--site-muted-fg)">06</span></div><h3 class="mt-4 text-lg font-bold text-(--site-fg)">Anonymised versions</h3><p class="mt-2 text-sm text-(--site-muted-fg) leading-relaxed">Two extra versions of the CV are produced automatically: one without contact details and one fully anonymised, ready to be shared with a client without exposing personal data.</p></li></ol></div></section><section class="px-6 py-20 sm:py-28"><div class="max-w-6xl mx-auto grid gap-12 lg:grid-cols-2 lg:gap-16"><div><h2 class="text-2xl sm:text-3xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">What ends up in the profile</h2><p class="mt-3 text-(--site-muted-fg)">Every field is extracted from the CV itself, never typed into a form.</p><ul class="mt-6 flex flex-wrap gap-2"><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Name and contact details</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Sector and specialization</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Latest role and seniority</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Skills, grouped by type</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Years of experience</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Education</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Spoken languages</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Location</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">Document language</li><li class="rounded-full border border-(--site-primary)/30 bg-(--site-primary)/5 px-3.5 py-1.5 text-sm text-(--site-fg)">A short professional summary</li></ul></div><div><h2 class="text-2xl sm:text-3xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">What stays in your hands</h2><ul class="mt-6 space-y-4"><li class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big mt-0.5 h-5 w-5 shrink-0 text-(--site-primary)" aria-hidden="true"><path d="M21.801 10A10 10 0 1 1 17 3.335"></path><path d="m9 11 3 3L22 4"></path></svg><span class="text-sm sm:text-base text-(--site-fg)/90 leading-relaxed">The review step: nothing is saved until you have looked at the batch.</span></li><li class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big mt-0.5 h-5 w-5 shrink-0 text-(--site-primary)" aria-hidden="true"><path d="M21.801 10A10 10 0 1 1 17 3.335"></path><path d="m9 11 3 3L22 4"></path></svg><span class="text-sm sm:text-base text-(--site-fg)/90 leading-relaxed">
1Duplicates: you decide whether to update the existing profile or keep both.</span></li><li class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big mt-0.5 h-5 w-5 shrink-0 text-(--site-primary)" aria-hidden="true"><path d="M21.801 10A10 10 0 1 1 17 3.335"></path><path d="m9 11 3 3L22 4"></path></svg><span class="text-sm sm:text-base text-(--site-fg)/90 leading-relaxed">Every field: edit the profile at any time, your version wins over the extracted one.</span></li><li class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-check-big mt-0.5 h-5 w-5 shrink-0 text-(--site-primary)" aria-hidden="true"><path d="M21.801 10A10 10 0 1 1 17 3.335"></path><path d="m9 11 3 3L22 4"></path></svg><span class="text-sm sm:text-base text-(--site-fg)/90 leading-relaxed">Anonymised versions: you choose which one to send to which client.</span></li></ul></div></div></section><section class="border-t border-(--site-border) px-6 py-20 sm:py-24"><div class="max-w-6xl mx-auto flex flex-col items-center text-center"><h2 class="text-2xl sm:text-3xl font-extrabold text-(--site-fg) tracking-tight" style="font-family:var(--font-nunito)">See it on your own CVs</h2><p class="mt-3 max-w-xl text-(--site-muted-fg)">Start your free trial, upload your first CVs and watch the scene run for real.</p><a class="mt-6" href="/auth/signin"><button class="inline-flex shrink-0 cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all disabled:pointer-events-none disabled:opacity-50 focus-visible:ring-[3px] focus-visible:ring-(--site-ring)/50 [&amp;_svg]:pointer-events-none [&amp;_svg]:shrink-0 [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 bg-(--site-primary) text-(--site-primary-fg) hover:bg-(--site-primary)/90 h-10 px-7">Get started</button></a></div></section><footer class="border-t border-(--site-border)"><div class="max-w-6xl mx-auto px-6 py-6 flex flex-col sm:flex-row items-center justify-between gap-2 text-sm text-(--site-muted-fg)"><span>© <!-- -->2026<!-- --> Medicalware S.r.l.</span><div class="flex flex-wrap items-center justify-center gap-x-4 gap-y-1"><a href="mailto:[email protected]" class="hover:text-(--site-fg) transition-colors">Contact</a><a class="hover:text-(--site-fg) transition-colors" href="/tos">Terms of Service</a><a class="hover:text-(--site-fg) transition-colors" href="/privacy">Privacy Policy</a><label class="relative inline-flex items-center gap-1.5 rounded-md text-sm text-(--site-muted-fg) transition-colors hover:text-(--site-fg) focus-within:text-(--site-fg) h-10 px-1"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-globe h-4 w-4 shrink-0" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg><select aria-label="Language" class="cursor-pointer bg-transparent text-sm outline-none rounded-md py-1 pr-1 focus-visible:ring-2 focus-visible:ring-(--site-ring)/40"><option value="en" class="bg-(--site-bg) text-(--site-fg)" selected="">English</option><option value="it" class="bg-(--site-bg) text-(--site-fg)">Italiano</option><option value="fr" class="bg-(--site-bg) text-(--site-fg)">Français</option><option value="de" class="bg-(--site-bg) text-(--site-fg)">Deutsch</option><option value="es" class="bg-(--site-bg) text-(--site-fg)">Español</option></select></label></div></div></footer></div><!--$--><!--/$--><!--$--><!--/$--><!--$--><!--/$--></div><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
1<script src="/_next/static/chunks/6e3f8fd0aa1f833a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49" id="_R_" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[339756,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n4:I[837457,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n5:I[302355,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/2ec103d6780bda31.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"Analytics\"]\n6:I[957215,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/2ec103d6780bda31.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"SpeedInsights\"]\n7:I[214931,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/2ec103d6780bda31.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/e2977e5685d76259.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/5ca310a8c945c313.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/8bbc4f17651863b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n8:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"ViewportBoundary\"]\nd:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"MetadataBoundary\"]\nf:I[253348,[\"/_next/static/chunks/9d8d713028288af4.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n10:I[153339,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n12:I[175696,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n18:I[363178,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"ThemeProvider\"]\n19:I[408821,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/cdec1a59724e7eb1.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/8bbc4f17651863b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"default\"]\n1a:I[203484,[\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"Toaster\"]\n1b:I[27201,[\"/_next/static/chunks/d96012bcfc98706a.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"/_next/static/chunks/73e3194f06db260e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/338f51773dfbfd75.css?dp"])</script>
1<script>self.__next_f.push([1,"l=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"style\"]\n:HL[\"/_next/static/chunks/7924b9b5ecdfc660.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"style\"]\n:HL[\"/_next/static/chunks/2b0fc73f03331c2a.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"style\"]\n:HL[\"/_next/static/media/07454f8ad8aaac57-s.p.fc65572f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css\",\"style\",{\"type\":\"text/css\"}]\n"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"EdKJwDbJq6lG_6SIuGEqD\",\"c\":[\"\",\"features\",\"how-we-read-cvs\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(site)\",{\"children\":[\"features\",{\"children\":[\"how-we-read-cvs\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/338f51773dfbfd75.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/7924b9b5ecdfc660.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ea8ef1893efb835e.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/746c01f06655970b.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/bdb02ae6b14d528f.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2b0fc73f03331c2a.css?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2ec103d6780bda31.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"div\",null,{\"className\":\"site min-h-screen bg-(--site-bg) text-(--site-fg)\",\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L5\",null,{}],[\"$\",\"$L6\",null,{}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"skillCount\":1929}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/e2977e5685d76259.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/5ca310a8c945c313.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}
1],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/8bbc4f17651863b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":false}\n"])</script>
1<script>self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"link\",null,{\"rel\":\"stylesheet\",\"type\":\"text/css\",\"href\":\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css\"}]}],[\"$\",\"body\",null,{\"className\":\"inter_5901b7c6-module__ec5Qua__variable nunito_1108b859-module__PeczNG__variable font-sans antialiased\",\"children\":[\"$\",\"$L10\",null,{\"children\":\"$L11\"}]}]]}]\n13:T78a,"])</script>
1<script>self.__next_f.push([1,"For every CV uploaded, the Service automatically produces Pseudonymised Versions intended for sharing with your clients and other external recipients. These versions are rebuilt from the original CV by artificial intelligence (Anthropic Claude) combined with deterministic detection rules: email addresses, phone numbers, postal addresses, date and place of birth, social profile links, identification numbers (such as tax codes or IBANs), the photo, document metadata and the branding of the original source are removed. At the higher level, the candidate's name is also replaced by the Candidate Code. AI-written texts shown to external recipients (summaries, strengths, rankings) are subject to the same rules.\n\nPseudonymisation, not anonymisation. Since you retain the link between the Candidate Code and the candidate's identity, Pseudonymised Versions remain personal data under the GDPR. The term \"anonymised\" used in the Service interface refers to these Pseudonymised Versions.\n\nBest-effort process. Detection and rebuilding are automated and may fail or be incomplete, in particular on poorly structured, scanned, multi-column or protected PDFs. Shortli does not guarantee that every identifying element is removed, nor that a Pseudonymised Version reproduces the original CV in full. You must review each Pseudonymised Version before sharing it, and you remain solely responsible for choosing the sharing level, for the lawful basis of the disclosure to each recipient and for the content shared. External recipients act as independent data controllers for their own processing of what they receive.\n\nPseudonymised Versions are stored together with the CV, regenerated when the candidate's name or contact details are edited, and deleted together with the CV. If an external recipient uploads shared documents to third-party tools, including AI services, such use is outside the scope of the Service and of these Terms."])</script>
1<script>self.__next_f.push([1,"14:T55d,"])</script>
1<script>self.__next_f.push([1,"We collect and process the following categories of personal data:\n\nAccount Data: name, email address, profile picture (obtained via Google OAuth).\n\nCandidate Data (uploaded by Users): full name, email, phone number, date of birth, location, LinkedIn/GitHub URLs, work experience, skills, education, languages, salary information, availability, work preferences, full CV text and, where present in it, identification numbers such as tax codes or IBANs.\n\nDerived Candidate Data (generated by the Service): a Candidate Code assigned to each CV within the Organization, a structured version of the CV rebuilt by artificial intelligence, Pseudonymised Versions of the CV file at two levels (without contact details, photo and source branding; and additionally without the candidate's name), and AI-written summaries and evaluations of the candidate.\n\nBilling Data: fiscal entity type, business name or personal name, VAT number, tax ID (codice fiscale), SDI code, PEC email, billing address. Payment card details are processed exclusively by Stripe and never stored on our servers.\n\nUsage Data: API operations performed, AI model usage (tokens consumed), search queries, email sending logs (recipient, subject, timestamp, status), activity history on candidates.\n\nTechnical Data: IP address, browser type, device information collected automatically during access to the Service."])</script>
1<script>self.__next_f.push([1,"15:T582,"])</script>
1<script>self.__next_f.push([1,"For every CV uploaded by a User, the Service automatically generates Pseudonymised Versions intended for sharing with external recipients. The text of the CV is processed by Anthropic Claude models, which rebuild it in a structured form and identify contact details; deterministic rules then remove email addresses, phone numbers, postal addresses, date and place of birth, social profile links, identification numbers, the photo, document metadata and the branding of the original source. At the higher level, the candidate's name is also replaced by the Candidate Code. Texts written by AI about the candidate (summaries, strengths, rankings) are filtered by the same rules before being stored.\n\nThese versions are pseudonymised, not anonymised: the User retains the link between the Candidate Code and the candidate's identity, so they remain personal data and are protected in the same way as the original CV. The process is automated and best-effort: residual identifying elements may remain, and the User reviews the result before sharing it. The User decides, for each shortlist, which level is disclosed to which recipient. Shortli never discloses Candidate Data to third parties on its own initiative.\n\nPseudonymised Versions and the rebuilt structured version are stored alongside the original CV, regenerated when the candidate's name or contact details are edited, and deleted together with the CV."])</script>
1<script>self.__next_f.push([1,"16:T458,We share personal data with the following third-party processors, each bound by data processing agreements:\n\nAnthropic, LLC (USA): CV text analysis, candidate ranking, natural language processing, structured rebuilding of CVs and detection of contact details for pseudonymisation via Claude AI models.\n\nGoogle Cloud Platform (USA): secure storage of uploaded CV files and of their Pseudonymised Versions; authentication via Google OAuth; email sending via Gmail API.\n\nStripe, Inc. (USA): payment processing and subscription management. Stripe is PCI-DSS certified.\n\nResend, Inc. (USA): delivery of system transactional emails.\n\nFattureInCloud / TeamSystem (Italy): electronic invoice generation and SDI submission.\n\nHugging Face, Inc. (USA): generation of text embedding vectors for semantic search.\n\nMongoDB, Inc. (USA/EU): database hosting via MongoDB Atlas.\n\nVercel Inc. (USA): hosting of the Service and of the public website; cookieless audience and performance measurement on the public website (Vercel Web Analytics and Speed Insights), based on aggregated data that does not identify individual visitors."])</script>
1<script>self.__next_f.push([1,"11:[\"$\",\"$L12\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"common\":{\"save\":\"Save\",\"cancel\":\"Cancel\",\"delete\":\"Delete\",\"create\":\"Create\",\"edit\":\"Edit\",\"close\":\"Close\",\"back\":\"Back\",\"next\":\"Next\",\"search\":\"Search\",\"reset\":\"Reset\",\"loading\":\"Loading...\",\"loadingEllipsis\":\"Loading…\",\"saving\":\"Saving...\",\"deleting\":\"Deleting...\",\"creating\":\"Creating...\",\"processing\":\"Processing...\",\"confirm\":\"Confirm\",\"discard\":\"Discard\",\"remove\":\"Remove\",\"select\":\"Select\",\"send\":\"Send\",\"yes\":\"Yes\",\"no\":\"No\",\"error\":\"Error\",\"success\":\"Success\",\"warning\":\"Warning\",\"updated\":\"Updated\",\"deleted\":\"Deleted\",\"sent\":\"Sent\",\"resent\":\"Resent\",\"discarded\":\"Discarded\",\"removed\":\"Removed\",\"name\":\"Name\",\"email\":\"Email\",\"role\":\"Role\",\"date\":\"Date\",\"status\":\"Status\",\"actions\":\"Actions\",\"total\":\"Total\",\"or\":\"or\",\"copy\":\"Copy\",\"copied\":\"Copied\",\"use\":\"use\",\"current\":\"current\",\"abort\":\"Abort\",\"selectAll\":\"Select all\",\"deselectAll\":\"Deselect all\",\"selected\":\"{count} selected\",\"deleteSelected\":\"Delete selected\",\"confirmDeletion\":\"Confirm deletion\",\"cannotBeUndone\":\"This action cannot be undone.\",\"noResults\":\"No results\",\"page\":\"Page {current} of {total}\",\"failedToDelete\":\"Failed to delete\",\"updatingPlan\":\"Updating plan…\",\"canceling\":\"Canceling…\",\"openPdfTooltip\":\"Open PDF\",\"downloadPdfTooltip\":\"Download PDF\",\"viewCvTooltip\":\"View CV\",\"downloadCvTooltip\":\"Download CV\",\"removeTooltip\":\"Remove\",\"noClient\":\"No client\",\"moreInfo\":\"More info\",\"viewLinkedJdTooltip\":\"View linked JD\",\"searchClientPlaceholder\":\"Search client…\",\"filterBySkillPlaceholder\":\"Filter by skill (e.g. React, Python)…\"},\"errorBoundary\":{\"title\":\"Something went wrong\",\"rootDescription\":\"An unexpected error occurred. Try again, or refresh the page.\",\"orgDescription\":\"An unexpected error occurred while loading this page. Try again, or navigate to a different section.\",\"reference\":\"Reference: {digest}\",\"tryAgain\":\"Try again\",\"goHome\":\"Go home\",\"backToCvList\":\"Back to CV list\"},\"suppliers\":{\"title\":\"Suppliers\",\"subtitle\":\"Companies that send you CVs of resources that are not yours\",\"newSupplier\":\"New supplier\",\"editSupplier\":\"Edit supplier\",\"newSupplierButton\":\"New supplier\",\"companyName\":\"Company name\",\"companyNamePlaceholder\":\"e.g. Smart Shaped Software\",\"website\":\"Website\",\"websitePlaceholder\":\"e.g. smartshaped.com\",\"emailAddresses\":\"Email addresses\",\"emailPlaceholder\":\"[email protected]\",\"addEmail\":\"Add email\",\"phoneNumbers\":\"Phone numbers\",\"phonePlaceholder\":\"+39 02 1234567\",\"addPhone\":\"Add phone\",\"notes\":\"Notes\",\"notesPlaceholder\":\"Contact person, terms, anything worth remembering\",\"contactsHint\":\"Contacts are optional and stay internal. CVs from a supplier are cleaned of every contact they contain, whether or not it matches what you enter here.\",\"nameRequired\":\"Company name is required\",\"createdSuccessfully\":\"{name} added\",\"updatedSuccessfully\":\"{name} updated\",\"deletedSuccessfully\":\"{name} moved to trash\",\"confirmDelete\":\"Move \\\"{name}\\\" to trash?\",\"failedToLoad\":\"Failed to load suppliers\",\"noSuppliersFound\":\"No suppliers yet\",\"addFirstSupplier\":\"Add the first supplier\",\"tableHeaderName\":\"Name\",\"tableHeaderContacts\":\"Contacts\",\"tableHeaderCreated\":\"Created\",\"totalFooter\":\"{count} suppliers\",\"editSupplierAction\":\"Edit {name}\",\"deleteSupplierAction\":\"Delete {name}\"},\"nav\":{\"cv\":\"CV\",\"jd\":\"JD\",\"shortlist\":\"Shortlist\",\"clients\":\"Clients\",\"suppliers\":\"Suppliers\",\"skillMap\":\"Skill MAP\",\"sandbox\":\"Sandbox\",\"pipelines\":\"Pipelines\",\"newPipeline\":\"New Pipeline\",\"noPipelinesYet\":\"No pipelines yet\",\"analytics\":\"Analytics\",\"trash\":\"Trash\",\"orgSettings\":\"Org Settings\",\"settings\":\"Settings\",\"signOut\":\"Sign out\",\"switchOrganization\":\"Switch organization\",\"newOrganization\":\"New Organization\",\"quickList\":\"Quick List\",\"clearQuickList\":\"Clear Quick List\",\"removeFromQuickList\":\"Remove from Quick List\",\"addToQuickList\":\"Add to Quick List\",\"createPipeline\":\"New Pipeline\",\"pipelineName\":\"Name\",\"pipelineNamePlaceholder\":\"e.g. Frontend Senior Q2 2026\",\"createNew\":\"New {section}\"},\"pipelineWizard\":{\"errorCreatePipeline\":\"Failed to create pipeline\",\"title\":\"New Pipeline\",\"stepInfo\":\"Pipeline Info\",\"stepMethod\":\"Populate Method\",\"pipelineName\":\"Pipeline Name\",\"pipelineNamePlaceholder\":\"e.g. Frontend Senior Q2 2026\",\"pipelineNameRequired\":\"Pipeline name is required.\",\"client\":\"Client\",\"noClient\":\"No client\",\"jobDescription\":\"Job Description\",\"noJd\":\"No JD\",\"notes\":\"Notes\",\"notesPlaceholder\":\"General notes about this pipeline, search strategy, requirements...\",\"chooseMethod\":\"How do you want to populate the pipeline?\",\"chooseMethodDesc\":\"You can add candidates manually or let AI find the best matches for you.\",\"manualTitle\":\"Manual\",\"manualDesc\":\"Add CVs from your database, upload new ones, or create placeholders. Full control over who enters the pipeline.\",\"aiTitle\":\"AI Search\",\"aiDesc\":\"Let AI analyze the job description and find the best matching candidates from your CV database.\",\"aiRequiresJd\":\"AI Search requires a Job Description to be associated.\",\"aiRequiresJdOrNotes\":\"AI Search requires a Job Description or detailed notes (min. 250 characters).\",\"noJdNotice\":\"Without a Job Description, the Notes below must contain at least 250 characters to enable AI Search. Otherwise you'll need to add CVs manually.\",\"notesCount\":\"{count}/{min} characters\",\"createAndOpen\":\"Create Pipeline\",\"createAndSearch\":\"Create \u0026 Start AI Search\",\"duplicateWarning\":\"{count, plural, one {# open pipeline already exists} other {# open pipelines already exist}} with the same client and/or JD:\"},\"pipelinesPage\":{\"title\":\"Pipelines\",\"subtitle\":\"{count, plural, one {# pipeline} other {# pipelines}}\",\"newPipeline\":\"New Pipeline\",\"searchPlaceholder\":\"Search pipelines…\",\"loading\":\"Loading pipelines…\",\"emptyTitle\":\"No pipelines yet\",\"emptyDescription\":\"Create your first pipeline to start tracking candidates through your hiring process.\",\"emptyCta\":\"Create your first pipeline\",\"noResults\":\"No pipelines match your search.\",\"colName\":\"Name\",\"colClient\":\"Client\",\"colJd\":\"Job Description\",\"colCvCount\":\"Total CVs\",\"colProposedCount\":\"Proposed\",\"colLastShortlist\":\"Last shortlist\",\"colUpdatedAt\":\"Last update\",\"none\":\"None\",\"sortBy\":\"Sort by\",\"sortName\":\"Name\",\"sortUpdatedAt\":\"Last update\",\"sortCvCount\":\"Total CVs\",\"sortProposedCount\":\"Proposed\",\"sortAsc\":\"Ascending\",\"sortDesc\":\"Descending\",\"confirmDeletePipeline\":\"Are you sure you want to delete the pipeline \\\"{name}\\\"? This action cannot be undone.\"},\"billingWidget\":{\"trial\":\"TRIAL\",\"daysLeft\":\"{days}d left\",\"expired\":\"EXPIRED\",\"subscribeNow\":\"Subscribe now\",\"uploads\":\"Uploads\",\"searches\":\"Searches\"},\"billingBanner\":{\"subscriptionCanceled\":\"Your subscription has been canceled. Subscribe to unlock uploads, AI search, and more.\",\"trialExpired\":\"Your trial has expired. Subscribe to unlock uploads, AI search, and more.\",\"cvDatabaseLimit\":\"You've reached the CV database limit ({used}/{limit}).\",\"monthlyUploadLimit\":\"You've reached the monthly upload limit ({used}/{limit}).\",\"monthlySearchLimit\":\"You've used all {limit} AI searches this month.\",\"jobBoardUnavailable\":\"Job Board is available from the Professional plan.\",\"composerUnavailable\":\"Composer is available from the Starter plan.\",\"subscribeNow\":\"Subscribe now →\",\"upgradePlan\":\"Upgrade plan →\",\"contactOwner\":\"Contact your organization owner to upgrade.\",\"fiscalDataMissing\":\"We couldn't issue your invoice: some billing details are missing.\",\"completeFiscalData\":\"Complete billing details →\",\"fiscalDataMissingShort\":\"Billing details missing →\"},\"cv\":{\"title\":\"Curriculum Vitae\",\"uploadButton\":\"+ Upload CV\",\"searchPlaceholder\":\"Search by name, specialization, keywords or candidate code (SL-…)...\",\"advancedFilters\":\"Advanced filters\",\"skillsLabel\":\"Skills\",\"skillsPlaceholder\":\"Filter by skill (e.g. React, Python)...\",\"seniorityLabel\":\"Seniority\",\"seniorityUnknown\":\"Unknown\",\"specializationFilterLabel\":\"Specialization\",\"specializationAll\":\"All specializations\",\"specializationSearchPlaceholder\":\"Filter specializations...\",\"employmentFilterLabel\":\"Employment status\",\"employmentColHeader\":\"Status\",\"employmentAll\":\"All statuses\",\"employed\":\"Employed\",\"freelance\":\"Freelance\",\"unemployed\":\"Unemployed\",\"searchResults\":\"Search results: \\\"{query}\\\"\",\"filteredBy\":\"Filtered by {filters} — {count} results\",\"skillCount\":\"{count} skill(s)\",\"totalCvs\":\"Total: {count} CVs\",\"totalFooter\":\"Total: {count, plural, one {# CV} other {# CVs}}\",\"showingRange\":\"Showing {start}–{end} of {total}\",\"pageIndicator\":\"Page {page} of {pages}\",\"prevPage\":\"Previous page\",\"nextPage\":\"Next page\",\"noCvsMatch\":\"No CVs match the current search criteria\",\"noCvsUploaded\":\"No CVs uploaded\",\"uploadFirstCv\":\"Upload your first CV\",\"tableHeaderName\":\"Name\",\"tableHeaderSpecialization\":\"Specialization\",\"tableHeaderSkills\":\"Skills\",\"tableHeaderCreated\":\"Created\",\"tableHeaderSeniority\":\"Seniority\",\"o
1penPdf\":\"Open PDF\",\"downloadPdf\":\"Download PDF\",\"deleteCv\":\"Delete CV\",\"confirmDeleteCv\":\"Are you sure you want to permanently delete the CV of {name}? This action cannot be undone.\",\"confirmBulkDelete\":\"Are you sure you want to permanently delete {count} CV(s)? This action cannot be undone.\",\"deleteBulkButton\":\"Delete {count} CV(s)\",\"deletedMessage\":\"Deleted: {name}\",\"deletedBulkMessage\":\"Deleted: {count} CV(s)\",\"failedToDeleteCv\":\"Failed to delete the CV\",\"failedToDeleteSelected\":\"Failed to delete the selected CVs\",\"checkDuplicates\":\"Check Duplicates\",\"duplicateCvs\":\"Duplicate CVs\",\"noDuplicatesFound\":\"No duplicates found.\",\"copies\":\"{count} copies\",\"yearsAbbrev\":\"{years, plural, one {# yr} other {# yrs}}\",\"confirmBulkDeletion\":\"Confirm bulk deletion\"},\"cvUpload\":{\"title\":\"Upload CVs\",\"stepUpload\":\"Upload\",\"stepReview\":\"Review\",\"stepExtract\":\"Extract\",\"stepDone\":\"Done\",\"dragDropMessage\":\"Drag and drop PDF files here, or click to select\",\"maxFilesMessage\":\"Max {max} files, 4MB each\",\"filesSelected\":\"{count, plural, one {# file selected} other {# files selected}}\",\"potentialDuplicates\":\"{count, plural, one {# potential duplicate} other {# potential duplicates}}\",\"duplicate\":\"Duplicate\",\"matches\":\"Matches: {names}\",\"analyzeWithAi\":\"Analyze with AI\",\"confirmExtractFull\":\"Confirm \u0026 Extract Full Data\",\"selectAtLeastOne\":\"Select at least one PDF file\",\"noValidCvs\":\"No valid CVs to process\",\"fileRejectedPdf\":\"{count} file rejected: only PDF files are allowed\",\"fileRejectedSize\":\"{count} file rejected: exceeds 4MB limit\",\"couldNotReadFile\":\"Could not read file — please re-select it\",\"analysisFailed\":\"Analysis failed for {filename}\",\"failedToProcess\":\"Failed to process {filename}\",\"checkingDuplicates\":\"Checking for duplicates...\",\"analyzingCv\":\"Analyzing CV {current} of {total}...\",\"cvsAnalyzed\":\"{current} / {total} CVs analyzed\",\"reviewDescription\":\"Review and correct the AI-extracted data ({valid} of {total} files will be processed)\",\"notACv\":\"Not a CV — will be skipped\",\"detectedAsSector\":\"This CV was detected as {sector}. This version of Shortli only processes {enabledSector} CVs. Please select \\\"{enabledSector}\\\" from the dropdown to proceed. Note: the CV will be forcefully classified under {enabledSector}. Other sectors will be available in future releases.\",\"firstName\":\"First Name\",\"lastName\":\"Last Name\",\"sector\":\"Sector\",\"duplicateExists\":\"A CV with this name already exists:\",\"updateExisting\":\"Update\",\"uploadAsNew\":\"Upload as new (homonym)\",\"missingNameSurname\":\"Missing name/surname for {filename}\",\"selectDuplicateAction\":\"Select an action for duplicate CV: {filename}\",\"selectCvToUpdate\":\"Select which CV to update for {filename}\",\"extractingWithSonnet\":\"Extracting detailed skills and metadata with Sonnet...\",\"extractingCvs\":\"Extracting CVs {start}–{end} of {total}...\",\"cvsExtracted\":\"{current} / {total} CVs extracted\",\"cvsSaved\":\"{current} / {total} CVs saved\",\"uploadingCv\":\"Uploading CV {current} of {total}...\",\"extractionPatience\":\"Each CV undergoes multiple rounds of AI analysis and cross-validation to ensure accurate data extraction. The quality of search results depends on this thoroughness — please be patient.\",\"newCvsUploaded\":\"{count} new CV(s) uploaded\",\"cvsUpdated\":\"{count} CV(s) updated\",\"successMessage\":\"{message} successfully!\",\"uploadingFiles\":\"Uploading {current} of {total}...\",\"uploadDurable\":\"Files are safe on the server. You can close this page and come back later.\",\"processingCvs\":\"Processing {done} of {total} CVs...\",\"batchWaiting\":\"Large import: the AI is analyzing {total, plural, one {# CV} other {# CVs}} in a single batch. Results arrive all together, usually within a few minutes, sometimes longer. You can close this page.\",\"resumeBanner\":\"You have an import in progress ({done}/{total}).\",\"resumeAction\":\"Resume\",\"resumingImport\":\"Resuming your import…\",\"discardAction\":\"Discard\",\"discardConfirm\":\"Discard this import? The uploaded files are deleted.\",\"discardKeep\":\"Keep\",\"itemSkippedQuota\":\"Not imported: plan limit reached\",\"itemSkippedUser\":\"Skipped\",\"itemFailedRetryable\":\"Failed — can be retried\",\"itemFailedPermanent\":\"Failed: {reason}\",\"retryFailed\":\"Retry failed CVs\",\"cancelImport\":\"Cancel import\",\"importDone\":\"{saved} CVs imported.\",\"fileTooLarge\":\"{filename} exceeds the 4 MB limit\",\"orgDailyLimit\":\"Daily import limit reached. Try again tomorrow.\",\"uploadSlotsLeft\":\"{slots} uploads left on your plan\",\"uploadSlotsExceeded\":\"Your plan has {slots} uploads left: {discarded} files were not added.\",\"uploadLimitReached\":\"You have reached your plan's monthly upload limit.\",\"importDoneWithSkipped\":\"{saved} CVs imported, {skipped} skipped.\",\"supplierDropTitle\":\"CVs from a supplier\",\"supplierDropHint\":\"Drop them here: references to the company that sent them are removed too\",\"supplierMixError\":\"Your own CVs and a supplier’s CVs must be uploaded separately. Empty the list, or start this upload first.\",\"supplierSelectLabel\":\"Supplier\",\"supplierCreateFirst\":\"Add a supplier\",\"supplierManage\"
1:\"Manage suppliers\",\"supplierBatchBadge\":\"From {name}\",\"supplierBatchBadgeUnknown\":\"From a supplier\",\"supplierGuideTitle\":\"What a supplier is in Shortli\",\"supplierGuideWhat\":\"A supplier is a company — or anyone — that proposes candidates who are not yours: staffing partners, consultancies, body rental.\",\"supplierGuideSameBatch\":\"One upload, one supplier: CVs coming from different suppliers go in separate uploads.\",\"supplierGuideInternal\":\"The supplier stays internal to your team. The client never sees it.\",\"supplierGuideNameLabel\":\"Which supplier are these CVs from?\",\"supplierGuidePlaceholder\":\"e.g. Smart Shaped Software\",\"supplierGuideCreate\":\"Add supplier\",\"supplierGuideSkip\":\"Not now\",\"supplierGuideNameRequired\":\"Type the supplier name\",\"supplierGuideFailed\":\"Could not add the supplier\",\"supplierGuideInfo\":\"What is a supplier?\",\"supplierAddNew\":\"Add new supplier\",\"supplierAddCancel\":\"Cancel\",\"originLockedHint\":\"Remove the files to switch upload type.\",\"internalLabel\":\"Internal label\",\"internalLabelHint\":\"No first and last name found. A name only you see, to tell this CV apart. Clients never see it.\",\"nameOrLabelRequired\":\"{filename}: enter first and last name, or an internal label\",\"supplierOfUpload\":\"Supplier: {name}\",\"supplierNotSpecified\":\"Supplier not specified\",\"supplierRequired\":\"Choose the supplier before uploading: for CVs from a supplier it is required.\",\"supplierChoose\":\"Choose a supplier\",\"supplierInvalid\":\"The selected supplier no longer exists. Choose another one.\",\"goToList\":\"Go to CV list\",\"leaveImportHint\":\"Your files stay on the server: you can come back later to review and confirm them. Aborting discards them and frees your upload slots.\",\"leaveImport\":\"Leave, keep files\",\"abortImport\":\"Abort import\",\"continueInBackground\":\"Continue in background\",\"backgroundHint\":\"Nothing stops: the work goes on and your candidates will show up in the list when ready.\",\"abortImportHint\":\"The uploaded files will be discarded and your upload slots freed. No CV has been saved yet.\"},\"jd\":{\"title\":\"Job Descriptions\",\"newJdButton\":\"+ New JD\",\"searchPlaceholder\":\"Search by description...\",\"allClients\":\"All clients\",\"noClient\":\"No client\",\"tableHeaderDate\":\"Date\",\"tableHeaderCode\":\"Code\",\"tableHeaderClient\":\"Client\",\"tableHeaderJd\":\"JD\",\"draft\":\"Draft\",\"newShortlist\":\"New Shortlist\",\"noJdsMatch\":\"No JDs match the current filters\",\"noJdsYet\":\"No job descriptions yet\",\"createFirstJd\":\"Create your first JD\",\"confirmDeleteJd\":\"Are you sure you want to delete {code}?\",\"linkedSearches\":\"This JD has {count} linked search(es). They will become orphaned.\",\"jdDeleted\":\"JD deleted\",\"jdDeletedMessage\":\"{code} has been deleted.\",\"jdSaved\":\"JD saved\",\"jdSavedMessage\":\"Job description has been saved successfully.\",\"failedToDeleteJd\":\"Failed to delete the JD\",\"totalJds\":\"Total: {count, plural, one {# JD} other {# JDs}}\",\"pagination\":\"Page {page} of {totalPages} ({total, plural, one {# JD} other {# JDs}})\"},\"shortlist\":{\"title\":\"Shortlist\",\"newShortlistButton\":\"+ New Shortlist\",\"composeEmail\":\"Compose Email\",\"closeWizardTitle\":\"Close shortlist wizard?\",\"unsavedChanges\":\"You have unsaved changes. Would you like to save as draft before closing?\",\"saveDraftAndClose\":\"Save Draft \u0026 Close\"},\"clients\":{\"title\":\"Clients\",\"newClientButton\":\"New Client\",\"totalClients\":\"Total: {count} clients\",\"totalFooter\":\"{count} clients\",\"noClientsFound\":\"No clients found\",\"addFirstClient\":\"Add your first client\",\"newClient\":\"New Client\",\"editClient\":\"Edit Client\",\"editClientAction\":\"Edit {name}\",\"deleteClientAction\":\"Delete {name}\",\"companyName\":\"Company name\",\"companyNamePlaceholder\":\"e.g. Acme Corp\",\"emailAddresses\":\"Email addresses\",\"emailPlaceholder\":\"[email protected]\",\"addEmail\":\"Add email\",\"nameRequired\":\"Name is required\",\"emailRequired\":\"At least one email address is required\",\"clientCreated\":\"Client created\",\"clientUpdated\":\"Client updated\",\"clientDeleted\":\"Client deleted\",\"addedSuccessfully\":\"{name} added successfully\",\"updatedSuccessfully\":\"{name} updated successfully\",\"deletedSuccessfully\":\"{name} deleted successfully\",\"failedToLoadClients\":\"Failed to load clients\",\"confirmDeleteClient\":\"Delete the client {name}? It moves to the Trash, where you can restore it.\",\"tableHeaderName\":\"Name\",\"tableHeaderEmail\":\"Email\",\"tableHeaderCreated\":\"Created\",\"language\":\"Language\",\"languageNone\":\"Not set\",\"languageHint\":\"Presets the language of the email, PDF and shared report when you send a shortlist to this client. You can still change it for each send.\"},\"billing\":{\"title\":\"Billing\",\"accessDenied\":\"Access Denied\",\"onlyOwnersCanManage\":\"Only organization owners can manage billing.\",\"backToOverview\":\"← Back to overview\",\"subscriptionActivated\":\"Subscription activated successfully!\",\"subscription\":\"Subscription\",\"plan\":\"Plan\",\"billedMonthly\":\"billed monthly\",\"billedYearly\":\"b
1illed yearly\",\"nextBillingDate\":\"Next billing date\",\"activeUntil\":\"Active until\",\"usage\":\"Usage\",\"cvsInDb\":\"CVs in DB\",\"uploads\":\"Uploads\",\"aiSearches\":\"AI Searches\",\"trialDaysRemaining\":\"Trial: {days} days remaining\",\"trialSubscribePrompt\":\"Subscribe to a plan to continue after the trial ends.\",\"subscribe\":\"Subscribe\",\"paymentFailed\":\"Payment failed — {message}\",\"gracePeriodRemaining\":\"{days} days of grace period remaining\",\"accessSuspended\":\"access suspended\",\"updatePaymentPrompt\":\"Update your payment method to avoid service interruption.\",\"updateCard\":\"Update card\",\"canceledAccess\":\"Canceled. Access continues until {date}.\",\"subscriptionCanceled\":\"Your subscription has been canceled.\",\"reactivate\":\"Reactivate\",\"trialExpiredSubscribe\":\"Trial expired. Subscribe to a plan to regain access.\",\"planSection\":\"Plan\",\"paymentMethod\":\"Payment Method\",\"noPaymentMethod\":\"No payment method on file.\",\"endingIn\":\"ending in {last4}\",\"expDate\":\"exp {month}/{year}\",\"invoices\":\"Invoices\",\"noInvoices\":\"No invoices yet.\",\"invoiceDate\":\"Date\",\"invoiceAmount\":\"Amount\",\"invoiceStatus\":\"Status\",\"paid\":\"Paid\",\"failed\":\"Failed\",\"fiscalData\":\"Fiscal Data\",\"noFiscalData\":\"No fiscal data on file.\",\"addNow\":\"Add now\",\"type\":\"Type\",\"company\":\"Company\",\"address\":\"Address\",\"cancelSubscription\":\"Cancel Subscription\",\"cancelDescription\":\"Your data will be preserved. Access continues until {date}.\",\"cancelDescriptionDefault\":\"Your data will be preserved. Access continues until the end of the billing period.\",\"cancelPlan\":\"Cancel plan\",\"cancelConfirmTitle\":\"Cancel your subscription?\",\"cancelConfirmDescription\":\"You'll keep access until {date}. You can reactivate anytime.\",\"cancelConfirmDescriptionDefault\":\"You'll keep access until the end of the billing period. You can reactivate anytime.\",\"keepSubscription\":\"Keep subscription\",\"yesCancel\":\"Yes, cancel\",\"planChangeTitle\":\"{action} to {plan}?\",\"planChangeUpgrade\":\"Upgrade\",\"planChangeDowngrade\":\"Downgrade\",\"planChangeGeneric\":\"Change\",\"planChangeDescription\":\"Your plan will change immediately. Any difference in price will be prorated on your next invoice.\",\"confirmChange\":\"Confirm change\",\"failedToChangePlan\":\"Failed to change plan\",\"stateActive\":\"Active\",\"stateTrial\":\"Trial\",\"statePastDue\":\"Past Due\",\"stateCanceled\":\"Canceled\",\"stateExpired\":\"Expired\",\"stateUnknown\":\"Unknown\"},\"billingOnboarding\":{\"chooseYourPlan\":\"Choose your plan\",\"billingDetails\":\"Billing Details\",\"entityType\":\"Entity type\",\"companyAzienda\":\"Company (Azienda)\",\"professionalProfessionista\":\"Professional (Professionista)\",\"individualPrivato\":\"Individual (Privato)\",\"companyNameLabel\":\"Company name (Ragione Sociale) *\",\"firstNameLabel\":\"First name *\",\"lastNameLabel\":\"Last name *\",\"vatNumberLabel\":\"VAT number (Partita IVA) *\",\"vatPlaceholder\":\"IT12345678901\",\"taxCodeLabel\":\"Tax code (Codice Fiscale) *\",\"taxCodePlaceholder\":\"RSSMRA80A01H501U\",\"sdiCodeLabel\":\"SDI code\",\"sdiPlaceholder\":\"0000000\",\"pecEmailLabel\":\"PEC email\",\"pecPlaceholder\":\"[email protected]\",\"sdiOrPecRequired\":\"At least one of SDI code or PEC is required.\",\"addressLabel\":\"Address *\",\"zipLabel\":\"ZIP *\",\"cityLabel\":\"City *\",\"provinceLabel\":\"Province *\",\"provincePlaceholder\":\"RM\",\"paymentMethod\":\"Payment Method\",\"calculatingVat\":\"Calculating VAT...\",\"subtotal\":\"Subtotal\",\"vat\":\"VAT\",\"tax\":\"Tax\",\"totalAmount\":\"Total\",\"subscribeWithVat\":\"Subscribe — €{total} (incl. VAT)\",\"subscribeToPlan\":\"Subscribe to {plan} + VAT\",\"subscriptionActivated\":\"Subscription activated!\",\"planNowActive\":\"Your {plan} plan is now active.\",\"validationVatRequired\":\"VAT number is required for businesses and professionals\",\"validationCompanyRequired\":\"Company name is required for businesses\",\"validationNameRequired\":\"First and last name are required\",\"validationTaxCodeRequired\":\"Tax code (Codice Fiscale) is required\",\"validationAddressRequired\":\"Address is required\",\"validationZipRequired\":\"ZIP c
1ode is required\",\"validationCityRequired\":\"City is required\",\"validationProvinceRequired\":\"Province is required\",\"validationSdiOrPec\":\"Either SDI code or PEC email is required\",\"choosePlanFirst\":\"Choose a plan to continue\"},\"planSelector\":{\"monthly\":\"Monthly\",\"yearlySave\":\"Yearly (save ~20%)\",\"perMonth\":\"/mo + VAT\",\"billedYearly\":\"Billed €{amount}/year + VAT\",\"noYearlyDiscount\":\"no annual discount\",\"currentPlan\":\"Current plan\",\"selectedPlan\":\"Selected\",\"upgrade\":\"Upgrade\",\"downgrade\":\"Downgrade\",\"select\":\"Select\",\"currentBadge\":\"CURRENT\",\"selectedBadge\":\"SELECTED\",\"soloName\":\"Solo\",\"starterName\":\"Starter\",\"professionalName\":\"Professional\",\"businessName\":\"Business\",\"feature350Cvs\":\"350 CVs in database\",\"featureUnlimitedCvs\":\"Unlimited CVs\",\"feature100Uploads\":\"100 uploads/month\",\"feature250Uploads\":\"250 uploads/month\",\"feature600Uploads\":\"600 uploads/month\",\"feature15Searches\":\"15 AI searches/month\",\"feature200Cvs\":\"200 CVs in database\",\"feature50Uploads\":\"50 uploads/month\",\"feature8Searches\":\"8 AI searches/month\",\"feature50Searches\":\"50 AI searches/month\",\"feature100Searches\":\"100 AI searches/month\",\"featureFullJdHistory\":\"Full JD history\",\"featureJobBoard\":\"Job board\",\"featurePrioritySupport\":\"Priority support\"},\"settings\":{\"title\":\"Settings\",\"orgTitle\":\"Organization Settings\",\"accessDenied\":\"Access Denied\",\"onlyOwnersCanAccess\":\"Only organization owners can access settings.\",\"general\":\"General\",\"organizationName\":\"Organization name\",\"orgNamePlaceholder\":\"Organization name\",\"nameChangeWarning\":\"Changing the name will also update the organization URL. All existing links and bookmarks will stop working.\",\"orgNameEmpty\":\"Organization name cannot be empty\",\"orgNameUpdated\":\"Organization name updated successfully\",\"members\":\"Members\",\"loadingMembers\":\"Loading members...\",\"memberName\":\"Name\",\"memberEmail\":\"Email\",\"memberRole\":\"Role\",\"memberJoined\":\"Joined\",\"removeMember\":\"Remove member\",\"removeMemberConfirm\":\"Are you sure you want to remove {name} from the organization? This action cannot be undone.\",\"memberRemoved\":\"{name} has been removed\",\"memberRoleUpdated\":\"Member role updated successfully\",\"failedToRemoveMember\":\"Failed to remove member\",\"failedToChangeRole\":\"Failed to change role\",\"invitations\":\"Invitations\",\"emailAddress\":\"Email address\",\"emailPlaceholder\":\"[email protected]\",\"roleMember\":\"Member\",\"roleOwner\":\"Owner\",\"loadingInvitations\":\"Loading invitations...\",\"invitationEmail\":\"Email\",\"invitationRole\":\"Role\",\"invitationExpires\":\"Expires\",\"resendInvitation\":\"Resend invitation\",\"discardInvitation\":\"Discard invitation\",\"discardInvitationConfirm\":\"Are you sure you want to discard the invitation to {email}? They will no longer be able to join using this link.\",\"invitationSent\":\"Invitation sent to {email}\",\"invitationResent\":\"Invitation resent to {email}\",\"invitationDiscarded\":\"Invitation to {email} discarded\",\"failedToSendInvitation\":\"Failed to send invitation\",\"failedToResendInvitation\":\"Failed to resend\",\"failedToDiscardInvitation\":\"Failed to discard\",\"noPendingInvitations\":\"No pending invitations.\",\"emailIntro\":\"Email Intro\",\"emailIntroDescription\":\"Customize the introductory paragraph used in outgoing shortlist emails.\",\"unsolicitedLabel\":\"Unsolicited application (no JD)\",\"jdMatchLabel\":\"Job Description match\",\"saveIntro\":\"Save Intro\",\"emailIntroSaved\":\"Email intro saved successfully\",\"emailSignature\":\"Email Signature\",\"emailSignatureDescription\":\"This signature will be appended to all outgoing emails sent from this organization. You can also paste a pre-existing signature from Gmail or Outlook.\",\"loadingSignature\":\"Loading signature...\",\"saveSignature\":\"Save Signature\",\"signatureSaved\":\"Email signature saved successfully\",\"sidebarFeatures\":\"Sidebar Features\",\"sidebarFeaturesDescription\":\"Choose which extra features to show in the sidebar. Disabled features are hidden for all members of this organization.\",\"featureSkillMap\":\"Skill MAP\",\"featureSkillMapDesc\":\"Visual skill mapping and analysis\",\"featurePipeline\":\"Pipeline\",\"featurePipelineDesc\":\"Candidate pipeline board (beta)\",\"featureSandbox\":\"Sandbox\",\"featureSandboxDesc\":\"Development and testing tools\",\"sidebarFeaturesSaved\":\"Sidebar features saved. Refresh to see changes in the sidebar.\",\"logoTitle\":\"Organization logo\",\"logoDescription\":\"Printed on the candidate profiles sent to clients. Without one, the Shortli symbol is used.\",\"logoDefaultInUse\":\"Using the default Shortli symbol\",\"logoCustomInUse\":\"Custom logo in use\",\"logoUpload\":\"Upload logo\",\"logoReplace\":\"Replace logo\",\"logoRemove\":\"Remove logo\",\"logoHint\"
1:\"PNG, JPEG or WebP, up to 512 KB. SVG is not accepted.\",\"logoUploaded\":\"Logo saved\",\"logoRemoved\":\"Logo removed. The Shortli symbol is back in use.\",\"logoErrorNotImage\":\"The file is not a PNG, JPEG or WebP image\",\"logoErrorTooLarge\":\"The file is larger than 512 KB\",\"logoErrorGeneric\":\"Could not save the logo. Please try again.\"},\"userSettings\":{\"pageTitle\":\"Settings\",\"title\":\"Settings\",\"organizations\":\"Organizations\",\"newOrganization\":\"New Organization\",\"newOrg\":\"New Organization\",\"openOrg\":\"Open\",\"organizationName\":\"Organization name\",\"orgName\":\"Organization name\",\"orgNamePlaceholder\":\"e.g. Acme Corp\",\"orgNameRequired\":\"Organization name is required\",\"failedToLoadOrgs\":\"Failed to load organizations\",\"noOrgsYet\":\"No organizations yet\",\"noOrganizations\":\"No organizations yet\",\"createFirstOrg\":\"Create your first organization\",\"createOrgTitle\":\"New Organization\",\"tableHeaderName\":\"Name\",\"tableHeaderSlug\":\"Slug\",\"tableHeaderRole\":\"Role\",\"tableHeaderMembers\":\"Members\",\"orgCount\":\"{count, plural, one {# organization} other {# organizations}}\",\"members\":\"{count} members\",\"language\":\"Language\",\"languageDescription\":\"Choose your preferred language for the interface.\",\"appearance\":\"Appearance\",\"theme\":\"Theme\",\"themeDescription\":\"Choose your preferred color scheme.\",\"themeLight\":\"Light\",\"themeDark\":\"Dark\",\"themeSystem\":\"System\",\"profile\":\"Profile\",\"signedInWith\":\"Signed in with {provider}\",\"profileManaged\":\"Profile is managed by your OAuth provider\",\"google\":\"Google\",\"microsoft\":\"Microsoft\",\"emailNotifications\":\"Email Notifications\",\"notificationsDescription\":\"Choose which emails you'd like to receive\",\"trialReminders\":\"Trial reminders\",\"trialRemindersDesc\":\"Notifications about your trial period\",\"paymentAlerts\":\"Payment alerts\",\"paymentAlertsDesc\":\"Notifications when a payment fails\",\"productUpdates\":\"Product updates\",\"productUpdatesDesc\":\"New features, tips, and Shortli news\",\"emailSending\":\"Email sending\",\"emailSendingDescription\":\"Where outgoing emails to candidates come from\",\"emailSendingConnected\":\"Connected to {provider} ({email})\",\"emailSendingConnectedDesc\":\"Emails sent to candidates will appear from your address.\",\"emailSendingFallback\":\"Not connected to your mailbox\",\"emailSendingFallbackDesc\":\"Emails will be sent from [email protected]. Replies still reach your address.\",\"emailSendingDisabled\":\"Mailbox sending paused for {provider} ({email})\",\"emailSendingDisabledDesc\":\"Emails are sent from [email protected] until you reactivate. Replies still reach your address.\",\"emailSendingProviderGoogle\":\"Gmail\",\"emailSendingProviderMicrosoft\":\"Outlook\",\"connectGmail\":\"Connect Gmail\",\"connectOutlook\":\"Connect Outlook\",\"disconnectGmail\":\"Disconnect Gmail\",\"disconnectOutlook\":\"Disconnect Outlook\",\"reactivateGmail\":\"Reactivate Gmail\",\"reactivateOutlook\":\"Reactivate Outlook\",\"dangerZone\":\"Danger Zone\",\"deleteAccount\":\"Delete Account\",\"deleteAccountDesc\":\"Permanently delete your account and all associated data\",\"deleteConfirmTitle\":\"Delete your account?\",\"deleteConfirmDesc\":\"This action cannot be undone. All your data, including CVs, JDs, and shortlists, will be permanently deleted.\",\"transferOwnershipWarning\":\"Transfer ownership of {orgNames} before deleting your account\",\"deleting\":\"Deleting...\"},\"auth\":{\"tagline\":\"Your shortlist in seconds\",\"signInWithGoogle\":\"Sign in with Google\",\"signInPrompt\":\"Sign in with your company account to continue\",\"agreeToTerms\":\"By signing in, you agree to our \u003cterms\u003eTerms of Service\u003c/terms\u003e and \u003cprivacy\u003ePrivacy Policy\u003c/privacy\u003e.\",\"dividerOr\":\"or\"},\"wizard\":{\"closeWizard\":\"Close wizard?\",\"unsavedProgress\":\"You have unsaved progress. If you close now, your changes will be lost.\",\"unsavedChanges\":\"You have unsaved changes. Would you like to save as draft before closing?\",\"saveDraftAndClose\":\"Save Draft \u0026 Close\",\"saveDraft\":\"Save Draft\",\"continue\":\"Continue\",\"back\":\"Back\",\"backToParameters\":\"Back to Parameters\"},\"aiErrors\":{\"overloaded\":\"The AI service is briefly overloaded due to a traffic spike on Anthropic. Try again in 1-2 minutes. The public Anthropic status page may still show green during these short capacity dips — they affect single requests, not the whole service.\",\"rateLimited\":\"The AI service has briefly hit its concurrent-request limit. Try again in a few moments.\",\"connection\":\"Could not reach the AI service. Check your internet connection or try again in a few minutes.\",\"
1internal\":\"The AI service returned an internal error. Try again in a few moments.\",\"auth\":\"AI service configuration error. Please contact support.\",\"unknown\":\"An unexpected error occurred. Please try again.\",\"checkStatus\":\"Check AI service status\",\"quotaSearches\":\"You've used all {limit} AI searches included in your plan this month. Upgrade your plan to run more.\",\"quotaUploads\":\"You've used all {limit} CV uploads included in your plan this month. Upgrade your plan to add more.\",\"quotaCvs\":\"Your database has reached the {limit} CVs included in your plan. Upgrade your plan to store more.\",\"subscriptionRequired\":\"Your plan is no longer active. Subscribe to continue using this feature.\"},\"jdWizard\":{\"title\":\"New Job Description\",\"stepPurpose\":\"Purpose\",\"stepJobDescription\":\"Job Description\",\"stepReview\":\"Review \u0026 Confirm\",\"analyzeWithAI\":\"Analyze with AI\",\"confirmAndSave\":\"Confirm \u0026 Save\",\"noMatchingCvs\":\"No matching CVs\",\"noMatchingCvsDescription\":\"There are currently no CVs in your database matching these criteria. You can still save this Job Description and use it later when new CVs are uploaded.\",\"goBack\":\"Go back\",\"saveAnyway\":\"Save anyway\",\"tooShort\":\"Job description is too short (min 250 characters)\",\"jdTooLong\":\"The job description exceeds the 10,000 character limit. Shorten the text and try again.\",\"jdTruncatedPaste\":\"Text was truncated to 10,000 characters. Shorten the JD before continuing.\",\"analysisTemporarilySuspended\":\"To ensure fair use of the platform, AI job-description analysis is temporarily suspended. Try again in about {minutes, plural, =1 {1 minute} other {# minutes}}.\",\"analysisTemporarilySuspendedHours\":\"To ensure fair use of the platform, AI job-description analysis is temporarily suspended. Try again in about {hours, plural, =1 {1 hour} other {# hours}}.\",\"clientChoiceTitle\":\"Who is this JD for?\",\"clientChoiceSubtitle\":\"Choose whether this job description is for a client or for internal use.\",\"forAClient\":\"For a Client\",\"forAClientDesc\":\"The shortlist will be sent to the client via email\",\"internalMyself\":\"Internal / Myself\",\"internalMyselfDesc\":\"For internal research — the shortlist will be saved without sending\",\"selectClient\":\"Select Client\",\"chooseClient\":\"Choose a client...\",\"noClientsFound\":\"No clients found. Create a client first from the Clients page.\",\"pasteJdTitle\":\"Paste the Job Description\",\"pasteJdSubtitle\":\"Paste the full JD text below. The AI will generate a title and extract key parameters for you.\",\"jdTextLabel\":\"Job Description Text\",\"jdTextPlaceholder\":\"Paste the full Job Description here...\",\"checkAiStatus\":\"Check AI service status\",\"reviewTitle\":\"Review \u0026 Confirm Metadata\",\"reviewSubtitle\":\"The AI has analyzed your job description and extracted the following metadata. Please review each field and make any necessary adjustments before confirming.\",\"nonItSector\":\"Non-IT sector detected\",\"nonItSectorDesc\":\"The AI detected this JD as \\\"{sector}\\\", but this version only supports the IT \u0026 Digital sector. The sector has been set to IT \u0026 Digital — please pick a specialization below before proceeding.\",\"generalInfo\":\"General Info\",\"iconLabel\":\"Icon\",\"titleLabel\":\"Title\",\"titlePlaceholder\":\"e.g. Senior Backend Developer\",\"descBriefLabel\":\"Description Brief\",\"macroSectorLabel\":\"Macro Sector\",\"specializationsTitle\":\"Specializations\",\"specializationsSubtitle\":\"Select one or more\",\"experienceTitle\":\"Experience Requirements\",\"minSeniority\":\"Minimum Seniority\",\"notSpecified\":\"Not specified\",\"minYears\":\"Minimum Years\",\"skillsTitle\":\"Skills\",\"skillsSubtitle\":\"The AI has classified skills as must-have or nice-to-have. Review the split and drag skills between columns to adjust.\",\"skillsHelpTitle\":\"Skills — must-have vs nice-to-have\",\"skillsHelpIntro\":\"The AI has classified detected skills as \u003cstrong\u003emust-have\u003c/strong\u003e or \u003cstrong\u003enice-to-have\u003c/strong\u003e. Drag skills between columns to refine the split.\",\"skillsHelpMustHave\":\"\u003cstrong\u003eMu
1st-have\u003c/strong\u003e skills act as a strict requirement at the database level: only candidates who have \u003cem\u003eall\u003c/em\u003e of them will be included in the matching CV count and passed to the AI ranking.\",\"skillsHelpNiceToHave\":\"\u003cstrong\u003eNice-to-have\u003c/strong\u003e skills do not affect the filter — they are used only by the AI during ranking to boost the score of candidates who have them (including semantically equivalent technologies, e.g. a nice-to-have \\\"React\\\" is also rewarded for a candidate who has \\\"Next.js\\\").\",\"skillsHelpCountNote\":\"That is why adding or removing a nice-to-have \u003cstrong\u003edoes not change\u003c/strong\u003e the live CV count below: it only influences the final score assigned once the AI Search is executed.\",\"iconSearchPlaceholder\":\"Search technology...\",\"removeIcon\":\"Remove icon\",\"matchingCvsPreview\":\"Matching CVs Preview\",\"matchingCvsPreviewDesc\":\"Live count of CVs matching the criteria above. Updates as you edit.\",\"counting\":\"Counting...\",\"cvsMatch\":\"CVs match\",\"noCvsToPreview\":\"No CVs to preview.\"},\"shortlistWizard\":{\"newShortlist\":\"New Shortlist\",\"editShortlist\":\"Edit Shortlist\",\"quickList\":\"Quick List\",\"loadingDraft\":\"Loading draft...\",\"stepPurpose\":\"Purpose\",\"stepSelectClients\":\"Select Clients\",\"stepSelectCvs\":\"Select CVs\",\"stepPrepareCvs\":\"Prepare CVs\",\"stepSendEmail\":\"Send Email\",\"stepJobDescription\":\"Job Description\",\"stepMethod\":\"Method\",\"stepAiSearch\":\"AI Search\",\"stepResults\":\"Results\",\"stepAiRanking\":\"AI Ranking\",\"stepRanking\":\"Ranking\",\"purposeTitle\":\"What is the purpose of this shortlist?\",\"purposeSubtitle\":\"Choose whether to propose candidates directly or start from a job description.\",\"continue\":\"Continue\",\"selfCandidacy\":\"Self-candidacy\",\"selfCandidacyDesc\":\"Propose candidates directly to one or more clients, without a specific job description\",\"fromJd\":\"Start from a Job Description\",\"fromJdDesc\":\"Select a job description to find and match the best candidates for a client\",\"methodTitle\":\"How do you want to build the shortlist?\",\"methodSubtitle\":\"Choose whether to manually pick CVs or let AI search and rank the best candidates.\",\"manualLabel\":\"Select CVs manually\",\"manualDesc\":\"Manually select candidates to create the shortlist and send it\",\"aiLabel\":\"AI Search\",\"aiDesc\":\"AI will filter, rank and score candidates based on the job description\",\"manualAiLabel\":\"Manual + AI Ranking\",\"manualAiDesc\":\"Manually select CVs, then let AI rank and score them against the job description\",\"chooseJdTitle\":\"Choose a Job Description\",\"chooseJdSubtitle\":\"Select a job description to build the shortlist from.\",\"addJd\":\"Add JD\",\"noJdsFound\":\"No confirmed job descriptions found.\",\"createFirstJd\":\"Create your first JD\",\"internal\":\"Internal\",\"selected\":\"Selected\",\"selectClientTitle\":\"Select Client\",\"selectClientSubtitle\":\"Choose the client to send your candidate proposals to.\",\"noClientsFound\":\"No clients found. Create a client first.\",\"clientSelected\":\"1 client selected\",\"emailCount\":\"{count, plural, one {# email} other {# emails}}\",\"selectCvsTitle\":\"Select CVs\",\"selectCvsSubtitle\":\"Choose candidates for this shortlist.\",\"prepareCvsTitle\":\"Prepare CVs\",\"prepareCvsSubtitle\":\"Select CVs to include in the email. Drag to reorder.\",\"prepareCvsSubtitleNoCheckbox\":\"Drag to reorder, set availability and rate for each candidate.\",\"skillMatch\":\"Skill Match:\",\"strengths\":\"Strengths:\",\"gaps\":\"Gaps:\",\"availability\":\"Availability\",\"rate\":\"Rate\",\"removeCvFromList\":\"Remove from list\",\"removeCvTitle\":\"Remove CV from list?\",\"removeCvDescription\":\"This will remove {name} from this shortlist. The CV is not deleted from your database.\",\"cvsSelectedSummary\":\"{selected}/{max} CVs selected for email · {total} total\",\"cvsReadySummary\":\"{count, plural, one {# CV ready} other {# CVs ready}} (max {max})\",\"loadingCvs\":\"Loading CVs...\",\"aiResultsTitle\":\"Results ({count} candidates)\",\"aiResultsSubtitle\":\"Top candidates ranked by AI. Review scores, skill matches, and detailed evaluations.\",\"noRankingResults\":\"No ranking results available.\",\"jobDescriptionLabel\":\"Job Description\",\"showMore\":\"Show more\",\"showLess\":\"Show less\",\"scoreLabel\":\"score\",\"rerunAiSearch\":\"Re-run AI Search\",\"rerunRanking\":\"Re-run Ranking ({count} CVs)\",\"rerunTitle\":\"Re-run AI Search?\",\"rerunDescription\":\"A ranking has already been generated for this shortlist. Re-running the AI search will replace the current results. Continue only if you have changed the search parameters.\",\"rerunConfirm\":\"Re-run Search\",\"skipToResults\":\"Skip to Results\",\"loading\":\"Loading...\",\"proceed\":\"Proceed\",\"startRanking\":\"Start Ranking ({count} CVs)\",\"startAiRanking\":\"Start AI Ranking\",\"backToParams\":\"Back to Parameters\",\"cvsToRanking\":\"CVs to send to ranking\",\"continueToEmail\":\"Continue to Email\",\"saveShortlist\":\"Save Shortlist\",\"sendShortlist\":\"Send Shortlist\",\"howToUseCvs\":\"How do you want to use these CVs?\",\"howToUseCvsSubtitle\":\"Choose whether to send the CVs as-is or let AI rank them against the job description.\",\"useAsIs\":\"Use as-is\",\"useAsIsDesc\":\"Send the CVs from your Quick List directly, without AI ranking\",\"rankWithAi\":\"Rank with AI\",\"rankWithAiDesc\":\"Let AI rank and score your Quick List CVs against the job description\",\"nameHeader\":\"Name\",\"specializationHeader\":\"Specialization\",\"levelHeader\":\"Level\",\"yrsHeader\":\"Yrs\",\"yourShortlist\":\"Your Shortlist\",\"cvsSelected\":\"{count} selected\",\"clearAll\":\"Clear all\",\"clickToAdd\":\"Click on a candidate above to add them.\",\"noMatchingFilters\":\"No CVs match the current filters.\",\"allSelected\":\"All matching CVs have been selected.\",\"cvsOfTotal\":\"{count} of {total} CVs\",\"totalCvs\":\"{count} CVs\",\"aiSearchParamsTitle\":\"AI Search Parameters\",\"aiSearchParamsSubtitle\":\"Review and adjust the search f
1ilters pre-populated from the job description.\",\"filteredCvsTitle\":\"Filtered CVs ({count} of {total})\",\"filteredCvsSubtitle\":\"Uncheck CVs to exclude them from the ranking.\",\"addCv\":\"Add CV\",\"addCvToList\":\"Add CV to List\",\"searchByName\":\"Search by name...\",\"noCvsFoundSearch\":\"No CVs found\",\"noMatchCriteria\":\"No CVs match the selected criteria. Try adjusting the parameters.\",\"cvsExcluded\":\"{count, plural, one {# CV excluded} other {# CVs excluded}}\",\"cvLimitWarning\":\"The number of CVs exceeds the maximum limit (100). Exclude some CVs to proceed.\",\"rankingCvsWithAi\":\"Ranking CVs with AI...\",\"step1of2\":\"Step 1 of 2\",\"step2of2\":\"Step 2 of 2\",\"matchingDescription\":\"We are matching the job description against all the CVs you selected.\",\"matchingDescriptionCount\":\"We are matching the job description against the {count} CVs you selected.\",\"pleaseDoNotClose\":\"Please do not close or leave this tab.\",\"generatingEvaluations\":\"Generating detailed evaluations...\",\"cvsEvaluated\":\"{current} / {total} CVs evaluated\",\"avgScore\":\"Avg Score\",\"above70\":\"Above 70\",\"best\":\"Best\",\"unableToCount\":\"Unable to count CVs\",\"cvCountOverMax\":\"Found {count} CVs. The maximum that can be processed is {max}: narrow your filters (specializations, seniority, must-have skills) before proceeding.\",\"cvCountOverPrefilter\":\"Found {count} CVs: only the first {prefilter} best matching your skills and specializations will be evaluated, and you'll be proposed a ranking of the top {rank}.\",\"gateBasePoolEmpty\":\"No candidate matches even the base filters.\",\"gateCollapsedTitle\":\"No candidate meets all must-have requirements at once.\",\"gateRemoveRequirement\":\"Remove «{raws}» → {count} candidates\",\"gateBlockersZero\":\"To get results you must relax more than one requirement. Those at the top have no candidates at all: remove them or move them to nice-to-have.\",\"gateQuantityCollapse\":\"Each requirement has candidates on its own, but no one meets them all together. Relax more than one, starting from the top (the rarest).\",\"gateRequirementDetail\":\"{canonical}: {count} CVs\",\"gateRequirementNone\":\"{canonical}: no candidates\",\"gateLiteralMatch\":\"(matched as literal text, not from the vocabulary)\",\"gateBreakdownHeading\":\"Requirement impact\",\"cvsMatchCriteria\":\"{count} CVs match these criteria\",\"hidePreview\":\"Hide preview\",\"showPreview\":\"Show preview\",\"andMore\":\"...and {count} more\",\"goBackAndAdjust\":\"Go Back and Adjust\",\"anyOption\":\"Any\",\"nYearsPlus\":\"{n}+ years\",\"macroSector\":\"Macro Sector\",\"specializations\":\"Specializations\",\"minSeniority\":\"Minimum Seniority\",\"minYearsExperience\":\"Minimum Years of Experience\",\"skills\":\"Skills\",\"skillsDragHint\":\"Skills are inherited from the JD. Drag the ones critical for the role to must-have — those will be applied as a hard DB filter.\",\"emailPreviewTitle\":\"Email Preview\",\"emailPreviewSubtitle\":\"Review recipients and preview the email before sending. A PDF report and a shared link will be generated automatically.\",\"senderLabel\":\"Sender\",\"recipientsLabel\":\"Recipients\",\"toLabel\":\"To\",\"ccLabel\":\"Cc\",\"cvAttachmentsLabel\":\"CV Attachments ({count} selected)\",\"skillMatchLabel\":\"Skill Match:\",\"strengthsLabel\":\"Strengths:\",\"gapsLabel\":\"Gaps:\",\"availabilityPlaceholder\":\"Availability\",\"ratePlaceholder\":\"Rate\",\"subjectLabel\":\"Subject\",\"outputLanguageLabel\":\"Output language\",\"outputLanguageHint\":\"Language of the email, PDF and shared report sent to the client.\",\"emailBodyLabel\":\"Email Body\",\"regenerateBtn\":\"Regenerate\",\"fallbackBannerTitle\":\"This email will be sent from [email protected]\",\"fallbackBannerBody\":\"Replies will still reach your address. Connect Gmail to send from your own account.\",\"fallbackBannerCta\":\"Connect Gmail\",\"optedOutBannerTitle\":\"Sending from your mailbox is paused\",\"optedOutBannerBody\":\"This email will go out from [email protected]. Replies still reach your address. Reactivate to send from your own account.\",\"optedOutBannerCta\":\"Reactivate\",\"viewFullReport\":\"View Full Report\",\"mailReportIntro\":\"We've prepared a report with the candidates we found\",\"mailDefaultSubject\":\"Candidate Proposal\",\"mailDefaultClient\":\"Client\",\"mailDraftSaved\":\"Draft saved\",\"mailDraftSaveFailed\":\"Failed to save draft\",\"mailPreviewFailed\":\"Failed to generate preview\",\"mailTestEmailRequired\":\"Enter a test email address\",\"mailUnknownCandidate\":\"Unknown\",\"mailReportPdfFilename\":\"Candidate_Report.pdf\",\"mailOverviewPdfFilename\":\"Candidate_Overview.pdf\",\"candidatesCount\":\"{count, plural, one {# candidate} other {# candidates}}\",\"mailSharedReportDesc\":\"Shared report page (valid 30 days, with CV downloads)\",\"generating\":\"Generating...\",\"attachmentsReportLabel\":\"Attachments \u0026 Shared Report\",\"previewPdf\":\"Preview PDF\",\"openPage\":\"Open Page\",\"generatePdfPage\":\"Generate PDF \u0026 shared page\",\"regeneratePdfPage\":\"Regenerate PDF \u0026 shared page\",\"sendEmailTitle\":\"Send email?\",\"sendEmailDesc\":\"This will send the email to {recipients} with {count, plural, one {# candidate} other {# candidates}} and a shared report link.\",\"sendBtn\":\"Send\",\"sendTestBtn\":\"Send Test\",\"testEmailPlaceholder\":\"Test email address...\",\"addEmailPlaceholder\":\"Add email address...\",\"sendingEmail\":\"Sending email...\",\"regeneratingLanguage\":\"Translating content...\",\"emailSent\":\"Email sent!\",\"emailSentDesc\":\"The email has been sent successfully to {recipients}.\",\"closeBtn\":\"Close\",\"atLeastOneRecipient\":\"At least one recipient is required\",\"outputLevelLabel\":\"Candidate identity\",\"outputLevelNamed\":\"Full name\",\"outputLevelAnonymous\":\"Anonymous (candidate code)\",\"outputLevelHint\":\"Applies to the whole shortlist: email, PDF report, shared page and CV downloads.\",\"bodyPreparing\":\"Preparing content…\",\"testEmailSent\":\"Test email sent!\",\"testEmailSentDesc\":\"The test email has been sent successfully to {email}.\",\"sendReadinessTitle\":\"Anonymised versions of the selected CVs\",\"sendBlockedNotReady\":\"Sending is blocked until every selected CV has its anonymised versions ready: the client would otherwise get a download that fails.\",\"notReadyMark\":\"Anonymised versions not ready yet\",\"outputSettingsLabel\":\"Sending options\",\"outputLevelNamedDesc\":\"The client sees first and last name; CVs are sent without contact details.\",\"outputLevelAnonymousDesc\":\"Names are replaced by the candidate code everywhere: email, report, shared page, CV files.\"}
1,\"cvDetail\":{\"tabCv\":\"CV\",\"tabRecruiting\":\"Recruiting\",\"tabAttachments\":\"Attachments\",\"loading\":\"Loading...\",\"editMode\":\"Edit\",\"saveChanges\":\"Save changes\",\"cancelEdit\":\"Cancel\",\"failedToLoad\":\"Failed to load CV\",\"confirmSaveTitle\":\"Save changes?\",\"confirmSaveDesc\":\"Review your changes before saving.\",\"skills\":\"Skills\",\"specialization\":\"Specialization\",\"seniority\":\"Seniority\",\"sector\":\"Sector\",\"yearsOfExperience\":\"Years of experience\",\"lastRole\":\"Last role\",\"education\":\"Education\",\"languages\":\"Languages\",\"location\":\"Location\",\"addLanguage\":\"Add language\",\"shortDescription\":\"Short description\",\"dateOfBirth\":\"Date of birth\",\"contacts\":\"Contacts\",\"emails\":\"Emails\",\"phones\":\"Phones\",\"links\":\"Links\",\"addLink\":\"Add link\",\"employment\":\"Employment\",\"employmentType\":\"Employment type\",\"employed\":\"Employed\",\"freelance\":\"Freelance\",\"unemployed\":\"Unemployed\",\"currentCompany\":\"Current company\",\"currentRal\":\"Current RAL (€)\",\"dailyRate\":\"Daily rate (€)\",\"noticePeriod\":\"Notice period\",\"availability\":\"Availability\",\"desiredRal\":\"Desired RAL (€)\",\"desiredRate\":\"Desired rate (€)\",\"workMode\":\"Work mode\",\"remote\":\"Remote\",\"hybrid\":\"Hybrid\",\"onsite\":\"On-site\",\"openToRelocation\":\"Open to relocation\",\"yes\":\"Yes\",\"no\":\"No\",\"toEvaluate\":\"To evaluate\",\"recruitingNotes\":\"Recruiting notes\",\"addNote\":\"Add note\",\"timeline\":\"Timeline\",\"addEvent\":\"Add event\",\"eventType\":\"Event type\",\"eventTitle\":\"Title\",\"eventDescription\":\"Description (optional)\",\"saveEvent\":\"Save\",\"cancelEvent\":\"Cancel\",\"deleteEvent\":\"Delete event\",\"confirmDeleteEvent\":\"Are you sure you want to delete this event?\",\"noEventsYet\":\"No events yet.\",\"attachments\":\"Attachments\",\"noAttachments\":\"No attachments yet.\",\"dropOrClick\":\"Drop files here or click to upload\",\"deleteAttachment\":\"Delete attachment\",\"confirmDeleteAttachment\":\"Are you sure you want to delete this attachment?\",\"rename\":\"Rename\",\"tags\":\"Tags\",\"openPdf\":\"Open PDF\",\"downloadPdf\":\"Download PDF\"},\"jdDetail\":{\"loading\":\"Loading...\",\"failedToLoad\":\"Failed to load JD\",\"jdDetails\":\"JD Details\",\"client\":\"Client\",\"noClient\":\"No client\",\"sector\":\"Sector\",\"specializations\":\"Specializations\",\"seniorityYears\":\"Seniority / Years\",\"mustHaveSkills\":\"Must Have Skills\",\"niceToHaveSkills\":\"Nice to Have Skills\",\"none\":\"None\",\"seniority\":\"Min. seniority\",\"years\":\"Min. years\",\"searches\":\"AI searches\",\"searchCount\":\"{count} search(es)\",\"originalJdText\":\"Original JD Text\",\"copy\":\"Copy\",\"copyText\":\"Copy text\",\"copied\":\"Copied\",\"delete\":\"Delete\",\"deleteJd\":\"Delete JD\",\"confirmDelete\":\"Confirm deletion\",\"confirmDeleteDesc\":\"Are you sure you want to delete {code}?\",\"linkedSearchesWarning\":\"This JD has {count} linked search(es). They will become orphaned.\",\"created\":\"Created: {date}\",\"newShortlist\":\"New Shortlist\",\"close\":\"Close\"},\"cvFilter\":{\"searchPlaceholder\":\"Search by name or specialization...\",\"searchBtn\":\"Search\",\"advancedFilters\":\"Advanced filters\",\"skillsLabel\":\"Skills\",\"seniorityLabel\":\"Seniority\",\"skillsPlaceholder\":\"Filter by skill (e.g. React, Python)...\",\"resetBtn\":\"Reset\"},\"trash\":{\"title\":\"Trash\",\"items\":\"{count} items\",\"tabCvs\":\"CVs\",\"tabJds\":\"Job Descriptions\",\"tabClients\":\"Clients\",\"tabSuppliers\":\"Suppliers\",\"tabShortlists\":\"Shortlists\",\"tabPipelines\":\"Pipelines\",\"noItems\":\"No items in trash\",\"colName\":\"Name\",\"colSpecialization\":\"Specialization\",\"colDeletedOn\":\"Deleted on\",\"colCode\":\"Code\",\"colTitle\":\"Title\",\"colClient\":\"Client\",\"colEmails\":\"Emails\",\"colJd\":\"JD\",\"colCvs\":\"CVs\",\"colActions\":\"Actions\",\"restore\":\"Restore\",\"deletePermanently\":\"Delete permanently\",\"confirmPermanentDelete\":\"Permanently delete this item? This cannot be undone.\"},\"skillMap\":{\"title\":\"Skill MAP\",\"loading\":\"Loading...\",\"candidates\":\"{count} candidates\",\"uniqueSkillsCount\":\"{count} unique skills\",\"avgSkills\":\"{avg} avg skills/candidate\",\"sectorLabel\":\"Sector\",\"searchSkillLabel\":\"Search skill\",\"minFrequencyLabel\":\"Min frequency\",\"filterColumns\":\"Filter columns...\",\"filteringBy\":\"Filtering by:\",\"clearAll\":\"Clear all\",\"matchingCandidates\":\"{count, plural, one {# matching candidate} other {# matching candidates}}\",\"candidateHeader\":\"Candidate\",\"total\":\"Total\",\"skillsCount\":\"{candidates} candidates · {skills} skills (max 350)\",\"noCvsYet\":\"No CVs uploaded yet.\",\"totalCvs\":\"Total CVs\",\"uniqueSkills\":\"Unique skills\",\"filterBySector\":\"Filter by sector\",\"allSectors\":\"All sectors\",\"filterBySkill\":\"Filter by skill\",\"allSkills\":\"All skills\",\"searchCvs\":\"Search CVs...\",\"noData\":\"No data available.\",\"addToQuickList\":\"Add to Quick List\",\"removeFromQuickList\":\"Remove from Quick List\",\"openPdf\":\"Open PDF\",\"downloadPdf\":\"Download PDF\"}
1,\"invite\":{\"title\":\"Organization Invitation\",\"loading\":\"Loading invitation...\",\"invitedToJoin\":\"You have been invited to join {orgName} as:\",\"expires\":\"This invitation expires on {date}\",\"decline\":\"Decline\",\"accept\":\"Accept\",\"accepted\":\"Welcome to {orgName}!\",\"acceptedRedirecting\":\"Redirecting...\",\"declined\":\"Invitation declined\",\"declinedMessage\":\"You have declined the invitation to {orgName}.\",\"goToHomepage\":\"Go to homepage\",\"notFound\":\"Invitation not found\",\"failedToLoad\":\"Failed to load invitation\",\"failedToProcess\":\"Failed to process invitation\"},\"founderInvite\":{\"badge\":\"Founding member\",\"title\":\"You're invited as a Founding member\",\"intro\":\"Shortli is opening to a small group of recruiters first. This invitation is personal and works once.\",\"perkTrial\":\"{days} days free on the {plan} plan\",\"perkLimits\":\"{cvs} CVs, {uploads} uploads and {searches} AI searches per month\",\"perkNoCard\":\"No credit card. When the trial ends, you decide whether to subscribe.\",\"cta\":\"Activate with Google\",\"ctaSignedIn\":\"Activate on my account\",\"codeLabel\":\"Code\",\"goBack\":\"Go back\",\"errors\":{\"invalid\":{\"title\":\"This code isn't valid\",\"body\":\"Check the link you received. If it still doesn't work, reply to the message that brought you here.\"},\"used\":{\"title\":\"This code has already been used\",\"body\":\"Each Founder code works only once. If you think this is a mistake, reply to the message that brought you here.\"},\"not_owner\":{\"title\":\"Only the organization owner can activate it\",\"body\":\"Your account belongs to an organization owned by someone else. Ask the owner to open this link.\"},\"already_subscribed\":{\"title\":\"Your organization already has a subscription\",\"body\":\"The Founder code applies to the free trial, so it can't be added to an active or past subscription.\"},\"already_founder\":{\"title\":\"You're already a Founding member\",\"body\":\"Your organization has already activated a Founder code. Keep this one for someone else.\"}}},\"shortlistArchive\":{\"statusRanking\":\"Ranking\",\"statusDraft\":\"Draft\",\"statusSent\":\"Sent\",\"sourceAI\":\"AI\",\"sourceManualAI\":\"Manual + AI\",\"sourceQuickList\":\"Quick List\",\"sourceManual\":\"Manual\",\"noShortlists\":\"No shortlists yet\",\"noShortlistsFiltered\":\"No shortlists match the current filters\",\"createFirst\":\"Create your first shortlist\",\"compose\":\"Compose\",\"resume\":\"Resume\",\"editDraft\":\"Edit draft\",\"shareLink\":\"Share link\",\"deleteShortlist\":\"Delete shortlist\",\"confirmDelete\":\"Are you sure you want to delete this shortlist?\",\"confirmDeleteDesc\":\"Are you sure you want to delete {code}?\",\"deleteFailed\":\"Failed to delete shortlist\",\"searchPlaceholder\":\"Search shortlists...\",\"filterStatus\":\"All statuses\",\"filterSource\":\"All sources\",\"allStatuses\":\"All\",\"allClients\":\"All clients\",\"noClient\":\"No client\",\"assignClient\":\"Assign client\",\"clientAssigned\":\"Client assigned: {name}\",\"failedToAssignClient\":\"Failed to assign client\",\"totalShortlists\":\"Total: {count} shortlists\",\"colSource\":\"Source\",\"colStatus\":\"Status\",\"colLink\":\"Link\",\"viewLinkedCvs\":\"View linked CVs\",\"linkedCvsTitle\":\"{count, plural, one {# CV} other {# CVs}} in this shortlist\",\"linkedPipelineBadge\":\"Pipeline: {name}\",\"linkedPipelineTooltip\":\"Open the linked pipeline\",\"linkCopied\":\"Link copied!\",\"copyLink\":\"Copy shared link\",\"paginationInfo\":\"Page {page} of {totalPages} ({count} shortlists)\",\"emailSection\":\"Email\",\"recipients\":\"Recipients\",\"subject\":\"Subject\",\"body\":\"Body\",\"sentAt\":\"Sent: {date}\",\"aiRankingTitle\":\"AI Ranking ({count} candidates, {evaluated} evaluated)\",\"strengths\":\"Strengths\",\"gaps\":\"Gaps\",\"continueToCompose\":\"Continue to Compose\",\"editAndSend\":\"Edit \u0026 Send\",\"failedToLoadDetails\":\"Failed to load shortlist details.\"},\"composeWizard\":{\"stepClient\":\"Client\",\"stepSelectCvs\":\"Select CVs\",\"stepPreview\":\"Preview\",\"clientRecipientsTitle\":\"Client \u0026 Recipients\",\"clientLabel\":\"Client\",\"selectClient\":\"Select a client\",\"noClient\":\"No client\",\"emailRecipients\":\"Email Recipients\",\"addEmailPlaceholder\":\"Add email address...\",\"toLabel\":\"To\",\"ccLabel\":\"Cc\",\"toCcLabel\":\"To / Cc\",\"saveDraft\":\"Save Draft\",\"draftSaved\":\"Draft saved\",\"failedToSaveDraft\":\"Failed to save draft\",\"atLeastOneRecipient\":\"At least one recipient is required\",\"enterTestEmail\":\"Enter a test email address\",\"testEmailPlaceholder\":\"Test email address...\",\"testEmailSentTo\":\"Test email sent to {email}\",\"emailSentSuccess\":\"Email sent successfully!\",\"errorSending\":\"Error sending email\",\"sendEmailTitle\":\"Send email?\",\"sendEmailDesc\":\"This will send the email to {recipients} with {count} CV attachments.\",\"selectCvsTitle\":\"Select CVs ({count}
1 selected)\",\"searchCvsPlaceholder\":\"Search CVs...\",\"availability\":\"Availability\",\"rate\":\"Rate\",\"skillMatch\":\"Skill Match:\",\"strengths\":\"Strengths:\",\"gaps\":\"Gaps:\",\"previewEmail\":\"Preview Email\",\"emailPreviewTitle\":\"Email Preview\",\"subjectLabel\":\"Subject\",\"attachments\":\"Attachments ({count} CVs)\",\"emailBody\":\"Email Body\",\"sendTest\":\"Send Test\"},\"composeStep\":{\"composeEmail\":\"Compose Email\",\"emailSent\":\"Email Sent\",\"toLabel\":\"To\",\"ccLabel\":\"CC\",\"subjectLabel\":\"Subject\",\"bodyLabel\":\"Body\",\"saveDraft\":\"Save Draft\",\"draftSaved\":\"Draft saved\",\"failedToSaveDraft\":\"Failed to save draft\",\"confirmSendTitle\":\"Confirm send\",\"confirmSendDesc\":\"Send email to {name} ({emails})? This will attach {count} CVs.\",\"enterTestEmail\":\"Enter a test email address\",\"testEmailPlaceholder\":\"Test email address...\",\"testSend\":\"Test Send\",\"sendTo\":\"Send to {name}\",\"emailSentTo\":\"Email sent to {name}\",\"testEmailSentTo\":\"Test email sent to {email}\",\"errorSending\":\"Error sending email\",\"sendError\":\"Send error\",\"doneBackToList\":\"Done — Back to List\"},\"quickListModal\":{\"title\":\"Quick List\",\"clearAll\":\"Clear all\",\"noCvsAdded\":\"No CVs added yet\",\"cvsSelected\":\"{count} CVs selected\",\"emptyStateDesc\":\"Go to the CV section and use the + button to add CVs to your Quick List.\",\"colName\":\"Name\",\"colSpecialization\":\"Specialization\",\"colSkills\":\"Skills\",\"colSeniority\":\"Seniority\",\"removeTitle\":\"Remove from Quick List\",\"total\":\"Total: {count} CVs\"},\"quickListPage\":{\"title\":\"Quick List\",\"noCvsAdded\":\"No CVs added yet\",\"cvsSelected\":\"{count, plural, one {# CV selected} other {# CVs selected}}\",\"clearAll\":\"Clear all\",\"backToCvs\":\"Back to CVs\",\"emptyStateDesc\":\"Go to the CV section and use the + button to add CVs to your Quick List.\",\"browseCvs\":\"Browse CVs\",\"total\":\"Total: {count, plural, one {# CV} other {# CVs}}\",\"nameHeader\":\"Name\",\"remove\":\"Remove\"},\"aiSearch\":{\"title\":\"AI Search\",\"totalSearches\":\"Total: {count, plural, one {# search} other {# searches}}\",\"searchDesc\":\"Find the best matching candidates using AI-powered search.\",\"newSearch\":\"+ New Search\",\"backToList\":\"Back to List\",\"deletingOverlay\":\"Deleting...\",\"analyzingOverlay\":\"Analyzing Job Description...\",\"loadingCvsOverlay\":\"Loading CVs...\",\"confirmDeleteTitle\":\"Confirm deletion\",\"confirmDeleteDesc\":\"Are you sure you want to delete search {code}? This action cannot be undone.\",\"cancelBtn\":\"Cancel\",\"deleteBtn\":\"Delete\",\"deletingBtn\":\"Deleting...\",\"loadingJd\":\"Loading Job Description...\",\"step1Title\":\"Paste JD\",\"step1Desc\":\"Job description\",\"step2Title\":\"Parameters\",\"step2Desc\":\"Confirm filters\",\"step3Title\":\"Filter CVs\",\"step3Desc\":\"Select candidates\",\"step4Title\":\"Results\",\"step4Desc\":\"AI ranking\",\"pasteJdTitle\":\"Paste Job Description\",\"pasteJdPlaceholder\":\"Paste the full Job Description here...\",\"charsToGo\":\"{count, plural, =1 {1 more character} other {# more characters}} before the AI can analyse this job description.\",\"clientOptional\":\"Client (optional):\",\"noClient\":\"No client\",\"checkAiStatus\":\"Check AI service status\",\"analyzingBtn\":\"Analyzing...\",\"analyzeJdBtn\":\"Analyze JD\",\"nonItSectorTitle\":\"Non-IT sector detected\",\"nonItSectorDesc\":\"The AI detected this JD as \\\"{sector}\\\", but this version only supports the IT \u0026 Digital sector. The sector has been set to IT \u0026 Digital — please verify the specializations below.\",\"confirmParamsTitle\":\"Confirm Search Parameters\",\"labelTitle\":\"Title\",\"labelTitlePlaceholder\":\"e.g. Senior Backend Developer\",\"labelDescBrief\":\"Description Brief\",\"labelMacroSector\":\"Macro Sector\",\"labelSpecializations\":\"Specializations (select one or more)\",\"labelMinSeniority\":\"Minimum Seniority\",\"anySeniority\":\"Any\",\"labelMinYears\":\"Minimum Years of Experience\",\"anyYears\":\"Any\",\"yearsPlus\":\"{n}+ years\",\"labelSkillsDetected\":\"Skills Detected (for reference)\",\"counting\":\"Counting...\",\"cvsMatchCriteria\":\"CVs match these criteria\",\"unableToCount\":\"Unable to count 
1CVs\",\"hidePreview\":\"Hide preview\",\"showPreview\":\"Show preview\",\"andMore\":\"...and {count} more\",\"backBtn\":\"Back\",\"resetBtn\":\"Reset\",\"proceedBtn\":\"Proceed\",\"loadingBtn\":\"Loading...\",\"filteredCvsTitle\":\"Filtered CVs ({active} of {total})\",\"fromJdBadge\":\"From JD\",\"addCvBtn\":\"Add CV\",\"addCvDialogTitle\":\"Add CV to List\",\"searchByNamePlaceholder\":\"Search by name...\",\"noCvsFound\":\"No CVs found\",\"noCvsMatchCriteria\":\"No CVs match the selected criteria. Try adjusting the parameters.\",\"uncheckToExclude\":\"Uncheck CVs to exclude them from the ranking.\",\"cvsExcluded\":\"{count, plural, one {# CV excluded} other {# CVs excluded}}\",\"tooManyCvsWarning\":\"The number of CVs exceeds the maximum limit (100). Refine the filters to get more precise results.\",\"startOver\":\"Start Over\",\"startRankingBtn\":\"Start Ranking ({count} CVs)\",\"analyzingCvs\":\"Analyzing CVs...\",\"errorTitle\":\"Error\",\"resultsTitle\":\"Results ({count} candidates)\",\"hideJd\":\"Hide JD\",\"viewJd\":\"View JD\",\"rankingStep1\":\"Ranking CVs with AI...\",\"rankingStep1Desc\":\"Step 1 of 2\",\"rankingStep1Hint\":\"We are matching the job description against all the CVs you selected.\\nPlease do not close or leave this tab — this may take a moment.\",\"generatingEvals\":\"Generating detailed evaluations...\",\"generatingStep2\":\"Step 2 of 2\",\"cvsEvaluated\":\"{current} / {total} CVs evaluated\",\"rankingHint\":\"We are matching the job description against all the CVs you selected.\\nPlease do not close or leave this tab — this may take a moment.\",\"goBackAdjust\":\"Go Back and Adjust Filters\",\"failedToSaveSearch\":\"Failed to save search\",\"noResultsAvailable\":\"No results available.\",\"score\":\"score\",\"pdfLabel\":\"PDF\",\"openPdf\":\"Open PDF\",\"downloadPdf\":\"Download PDF\",\"skillMatch\":\"Skill Match:\",\"strengths\":\"Strengths:\",\"gaps\":\"Gaps:\",\"allClientsFilter\":\"All clients\",\"withoutClient\":\"Without client\",\"resetFilter\":\"Reset\",\"tableView\":\"Table\",\"flowView\":\"Flow\",\"noSearches\":\"No searches yet\",\"noSearchesFiltered\":\"No searches match the current filter\",\"startFirstSearch\":\"Start your first search\",\"colDate\":\"Date\",\"colJobDescription\":\"Job Description\",\"colClient\":\"Client\",\"colCode\":\"Code\",\"topCandidates\":\"Top candidates:\",\"cvsEvaluatedCount\":\"{count} CVs evaluated\",\"viewLinkedJd\":\"View linked JD\",\"noClientLabel\":\"No client\",\"lookingFor\":\"looking for\",\"sendTo\":\"Send to\",\"sendToClient\":\"Send to {name}\",\"sendShortlistTo\":\"Send shortlist to\",\"compose\":\"Compose\",\"addClientToSend\":\"Add a client to\\nsend this shortlist\",\"addClientBtn\":\"Add\",\"assignClient\":\"Assign client\",\"searchClientPlaceholder\":\"Search client...\",\"paginationInfo\":\"Page {current} of {total} ({count, plural, one {# search} other {# searches}})\",\"cvsEvaluatedCount2\":\"{count} CVs evaluated\",\"rankedResults\":\"{count} ranked results\",\"viewOriginalJd\":\"View Original JD\",\"originalJdTitle\":\"Original Job Description\",\"rerunSearch\":\"Re-run Search\",\"rerunSearchTitle\":\"Re-run Search\",\"rerunSearchDesc\":\"This will start a new AI-powered search using the original JD text. Do you want to proceed?\",\"confirmRerun\":\"Confirm Re-run\",\"inComposer\":\"In Composer\",\"noRankingData\":\"No ranking data available.\",\"deletedMsg\":\"Deleted: {code}\",\"failedToDeleteSearch\":\"Failed to delete search\",\"loadingView\":\"Loading...\",\"avgScore\":\"Avg Score\",\"above70\":\"Above 70\",\"best\":\"Best\",\"mostCovered\":\"Most covered:\",\"least\":\"Least:\",\"viewCv\":\"View CV\",\"downloadCv\":\"Download CV\"},\"cvDetailModal\":{\"loading\":\"Loading...\",\"cvDetails\":\"CV Details\",\"errorLoadCv\":\"Failed to load CV\",\"errorSave\":\"Failed to save\",\"yearExample\":\"e.g. 2015\",\"salaryExample\":\"e.g. 45000\",\"dailyRateExample\":\"e.g. 350\",\"desiredSalaryExample\":\"e.g. 55000\",\"desiredRateExample\":\"e.g. 400\",\"openPdf\":\"Open PDF\",\"downloadPdf\":\"Download PDF\",\"anonLevelLabel\":\"L{level}
1\",\"anonL1Hint\":\"L1 — contact details and photo removed, name kept\",\"anonL2Hint\":\"L2 — fully anonymized: no name, photo or contact details\",\"openAnonPdf\":\"Open L{level} PDF\",\"downloadAnonPdf\":\"Download L{level} PDF\",\"anonGenerating\":\"Generating anonymized versions…\",\"anonFailed\":\"Anonymization failed\",\"anonRegenerate\":\"Regenerate anonymized versions\",\"cvCodeHint\":\"Candidate code: identifies the candidate in anonymized (L2) documents\",\"tabCvInfo\":\"CV Info\",\"tabRecruitingInfo\":\"Recruiting Info\",\"tabAttachments\":\"Attachments\",\"tabAttachmentsCount\":\"Attachments ({count})\",\"fullName\":\"Full Name\",\"firstName\":\"First Name\",\"lastName\":\"Last Name\",\"macroSector\":\"Macro Sector\",\"specialization\":\"Specialization\",\"editBtn\":\"Edit\",\"lastRole\":\"Last Role\",\"shortDescription\":\"Short Description\",\"shortDescPlaceholder\":\"Brief professional summary...\",\"noDescription\":\"No description available\",\"startingYear\":\"Starting Year\",\"yearsOfExperience\":\"Years of Experience\",\"yrsOfExp\":\"{years} yrs (since {since})\",\"notAvailable\":\"N/A\",\"seniority\":\"Seniority\",\"education\":\"Education\",\"location\":\"Location\",\"locationPlaceholder\":\"e.g. Milan, Italy\",\"notSpecified\":\"Not specified\",\"contactInfo\":\"Contact Info\",\"emails\":\"Emails\",\"phones\":\"Phones\",\"dateOfBirth\":\"Date of Birth\",\"invalidEmail\":\"Invalid email format\",\"addEmail\":\"Add email\",\"addPhone\":\"Add phone\",\"links\":\"Links\",\"skills\":\"Skills\",\"addSkillPlaceholder\":\"Add skill...\",\"languages\":\"Languages\",\"addLanguagePlaceholder\":\"Add language...\",\"notDetected\":\"Not detected — to verify\",\"educationStatusInProgress\":\"In progress\",\"educationStatusCompleted\":\"Completed\",\"educationLevelLabel\":\"Level\",\"educationFieldLabel\":\"Field\",\"educationFieldPlaceholder\":\"e.g. Computer Science\",\"educationInstitutionLabel\":\"Institution\",\"educationInstitutionPlaceholder\":\"e.g. University of Milan\",\"educationYearLabel\":\"Year\",\"educationStatusLabel\":\"Status\",\"addEducation\":\"Add qualification\",\"languageNamePlaceholder\":\"Language\",\"languageLevelNone\":\"No level\",\"added\":\"Added: {date}\",\"updated\":\"Updated: {date}\",\"cancelBtn\":\"Cancel\",\"saveChanges\":\"Save Changes\",\"fixEmailsTitle\":\"Fix invalid emails before saving\",\"recruitingInfo\":\"Recruiting Info\",\"employmentStatus\":\"Employment Status\",\"employed\":\"Employed\",\"freelance\":\"Freelance\",\"unemployed\":\"Unemployed\",\"currentCompany\":\"Current Company\",\"companyPlaceholder\":\"Company name...\",\"currentRal\":\"Current RAL (€)\",\"dailyRate\":\"Daily Rate (€)\",\"desiredRal\":\"Desired RAL (€)\",\"desiredRate\":\"Desired Rate (€)\",\"availability\":\"Availability\",\"immediate\":\"Immediate\",\"oneMonth\":\"1 month\",\"twoMonths\":\"2 months\",\"threePlusMonths\":\"3+ months\",\"toDiscuss\":\"To discuss\",\"noticePeriod\":\"Notice Period\",\"noticePlaceholder\":\"e.g. 30 days\",\"workMode\":\"Work Mode\",\"remote\":\"Remote\",\"hybrid\":\"Hybrid\",\"onsite\":\"On-site\",\"openToRelocation\":\"Open to Relocation\",\"toEvaluate\":\"To evaluate\",\"recruitingNotes\":\"Recruiting Notes\",\"recruitingNotesPlaceholder\":\"Internal notes about this candidate...\",\"savingBtn\":\"Saving...\",\"saveBtn\":\"Save\",\"statusLabel\":\"Status\",\"companyLabel\":\"Company\",\"currentRalLabel\":\"Current RAL\",\"dailyRateLabel\":\"Daily Rate\",\"desiredRalLabel\":\"Desired RAL\",\"desiredRateLabel\":\"Desired Rate\",\"availabilityLabel\":\"Availability\",\"noticePeriodLabel\":\"Notice Period\",\"workModeLabel\":\"Work Mode\",\"relocationLabel\":\"Relocation\",\"noRecruitingInfo\":\"No recruiting info yet. Click \\\"Edit\\\" to add.\",\"notesLabel\":\"Notes\",\"clickToRename\":\"Click to rename\",\"openFile\":\"Open\",\"deleteAttachment\":\"Delete attachment\",\"uploading\":\"Uploading...\",\"dropOrBrowse\":\"Drop files here or click to browse\",\"storyboard\":\"Storyboard\",\"addEventBtn\":\"Add\",\"eventTitlePlaceholder\":\"Title...\",\"eventDescPlaceholder\":\"Description (optional)...\",\"noEvents\":\"No events yet\",\"clickToEdit\":\"Click to edit\",\"deleteEvent\":\"Delete event\",\"confirmSaveTitle\":\"Confirm Save\",\"confirmSaveDesc\":\"Are you sure you want to save the changes to this CV?\",\"confirmSaveNote\":\"Note: These changes will only affect the data stored in Shortli and will not modify the original PDF file.\",\"eventCreated\":\"Created\",\"eventNote\":\"Note\",\"eventStatusChange\":\"Status Change\",\"eventContact\":\"Contact\",\"eventInterview\":\"Interview\",\"eventOther\":\"Other\",\"eventPipelineProposed\":\"Proposed to Client\",\"eventPipelineIntroScheduled\":\"Intro Scheduled\",\"eventPipelineIntroOutcome\":\"Intro Outcome\",\"eventPipelineTechScheduled\":\"Tech Interview Scheduled\",\"eventPipelineTechOutcome\":\"Tech Interview Outcome\",\"eventPipelineOfferSent\":\"Offer Sent\",\"eventPipelinePlaced\":\"Placed\",\"eventPipelineRejected\":\"Rejected\",\"noClientRecorded\":\"No client recorded\",\"supplierBadgeHint\":\"CV re
1ceived from this supplier. Internal information: the client never sees it.\",\"supplierUnknown\":\"Supplier not specified\",\"supplierField\":\"Supplier\",\"supplierFieldNone\":\"None — our own CV\",\"supplierFieldUnspecified\":\"From a supplier, not specified\",\"supplierFieldHint\":\"Internal information: the client never sees it. Changing it regenerates the L1 and L2 versions.\",\"alias\":\"Internal label\",\"aliasHint\":\"A name only you see, to tell this CV apart. Clients never see it.\"},\"mailComposer\":{\"title\":\"Mail Composer\",\"totalCompositions\":\"Total: {count, plural, one {# composition} other {# compositions}}\",\"composeDesc\":\"Compose and send emails with attached CVs\",\"composeNew\":\"+ Compose New\",\"backToList\":\"Back to List\",\"filterAll\":\"All\",\"filterDrafts\":\"Drafts\",\"filterSent\":\"Sent\",\"noDraftsYet\":\"No drafts yet. Compose and send an email to see it here.\",\"colDate\":\"Date\",\"colClientJd\":\"Client / JD\",\"colSource\":\"Source\",\"colCvs\":\"CVs\",\"colRecipients\":\"Recipients\",\"colStatus\":\"Status\",\"noJd\":\"no JD\",\"viewJdDetails\":\"View JD details\",\"sourceAI\":\"AI\",\"sourceManual\":\"Manual\",\"statusSent\":\"Sent\",\"statusDraft\":\"Draft\",\"deleteTitle\":\"Delete\",\"footerDrafts\":\"{count, plural, one {# draft} other {# drafts}}\",\"pageIndicator\":\"Page {current}/{total}\",\"confirmDeleteTitle\":\"Confirm deletion\",\"confirmDeleteDesc\":\"Are you sure you want to delete draft \u003cstrong\u003e{code}\u003c/strong\u003e? This action cannot be undone.\",\"confirmDeleteDescPlain\":\"Are you sure you want to delete draft {code}? This action cannot be undone.\",\"cancelBtn\":\"Cancel\",\"deleteBtn\":\"Delete\",\"deletingBtn\":\"Deleting...\",\"loadingOverlay\":\"Loading...\",\"deletingOverlay\":\"Deleting...\",\"step1Title\":\"Clients\",\"step1Desc\":\"Select recipients\",\"step2Title\":\"CV\",\"step2Desc\":\"Choose profiles\",\"step3Title\":\"Preview\",\"step3Desc\":\"Review \u0026 send\",\"selectRecipientsHeading\":\"Select recipient clients\",\"searchClientsPlaceholder\":\"Search clients by name or email...\",\"selectedCount\":\"Selected: {count}\",\"noClientsFound\":\"No clients found. Go to the Clients page to add some.\",\"nextBtn\":\"Next\",\"selectCvsHeading\":\"Select CVs to attach\",\"searchCvsPlaceholder\":\"Search CVs by name or title...\",\"cvCount\":\"{count} CVs\",\"availabilityPlaceholder\":\"Availability...\",\"ratePlaceholder\":\"Rate...\",\"skillMatch\":\"Skill Match:\",\"strengths\":\"Strengths:\",\"gaps\":\"Gaps:\",\"score\":\"score\",\"noScore\":\"no-score\",\"saveDraftBtn\":\"Save Draft\",\"generatePreviewBtn\":\"Generate Preview\",\"backBtn\":\"Back\",\"previewHeading\":\"Email preview ({count})\",\"allEmailsRemoved\":\"All emails have been removed.\",\"sentOverlay\":\"Sent\",\"sendingOverlay\":\"Sending...\",\"toLabel\":\"To:\",\"ccLabel\":\"CC:\",\"subjectLabel\":\"Subject\",\"emailBodyLabel\":\"Email body\",\"attachmentsLabel\":\"Attachments ({count})\",\"removePreview\":\"Remove\",\"testPlaceholder\":\"[email protected]\",\"testBtn\":\"Test\",\"sendConfirmQuestion\":\"Send to {recipients}?\",\"cancelSendBtn\":\"Cancel\",\"confirmSendBtn\":\"Confirm Send\",\"sendBtn\":\"Send\",\"draftLoaded\":\"Draft loaded\",\"draftLoadedMsg\"
1:\"Draft {code} loaded\",\"deleted\":\"Deleted\",\"deletedMsg\":\"Deleted: {code}\",\"saved\":\"Saved\",\"savedMsg\":\"{count, plural, one {# draft saved} other {# drafts saved}}\",\"errorTitle\":\"Error\",\"failedToLoadClients\":\"Failed to load clients\",\"failedToLoadCvs\":\"Failed to load CVs\",\"failedToLoadDrafts\":\"Failed to load drafts\",\"failedToLoadDraft\":\"Failed to load draft\",\"failedToDeleteDraft\":\"Failed to delete draft\",\"enterTestEmail\":\"Enter a test email address\",\"testEmailSentTo\":\"Test email sent to {email}\",\"emailSentTo\":\"Email sent to {name}\",\"testEmailSent\":\"Test email sent\",\"emailSent\":\"Email sent\",\"sendError\":\"Send error\",\"cannotRemoveEmail\":\"Cannot remove\",\"atLeastOneEmail\":\"At least one email is required\"},\"talentPool\":{\"errorLoadJd\":\"Failed to load JD.\",\"errorNoJdOrNotes\":\"No JD associated and no notes written. Please associate a JD or add notes with at least 250 characters to describe the search criteria.\",\"errorNotesTooShort\":\"Notes are too short (min 250 characters). Please add more details about the search criteria.\",\"errorParseNotes\":\"Failed to parse notes\",\"errorLoadParameters\":\"Failed to load parameters\",\"errorRankCvs\":\"Failed to rank CVs\",\"errorGenerateMotivations\":\"Failed to generate motivations\",\"errorAiRanking\":\"AI ranking failed\",\"errorFilterCvs\":\"Failed to filter CVs\",\"errorAiSearch\":\"AI search failed\",\"appointmentPastTooltip\":\"This appointment is in the past — click to reschedule\",\"appointmentEditTooltip\":\"Click to edit date \u0026 time\",\"aiSearchRequiresJdOrNotes\":\"Associate a JD or write at least 250 characters in notes to run AI Search\",\"aiSearchNoLongerAvailable\":\"AI Search is no longer available: at least one candidate has reached the interview stage.\",\"firstNameExample\":\"Mario\",\"lastNameExample\":\"Rossi\",\"errorNoValidCvs\":\"No valid CVs to save.\",\"errorFirstLastNameRequired\":\"First name and last name are required for {filename}\",\"errorSelectDuplicateAction\":\"Please choose duplicate action for {filename}\",\"errorSaveCv\":\"Failed to save CV\",\"errorCreatePipeline\":\"Failed to create pipeline\",\"skillsHelpTitle\":\"Skills — must-have vs nice-to-have\",\"skillsHelpDrag\":\"Drag skills between the two columns to classify them.\",\"skillsHelpMustHaveLabel\":\"Must-have\",\"skillsHelpMustHaveDesc\":\"skills act as a strict requirement at the database level: only candidates who have all of them will be included in the matching CV count and passed to the AI ranking.\",\"skillsHelpNiceToHaveLabel\":\"Nice-to-have\",\"skillsHelpNiceToHaveDesc\":\"skills do not affect the filter — they are used only by the AI during ranking to boost the score of candidates who have them (including semantically equivalent technologies).\",\"addTalent\":\"Add Talent\",\"addTalentTitle\":\"Add Candidates\",\"aiSearch\":\"AI Search\",\"aiSearchTitle\":\"AI Search Candidates\",\"uploadCv\":\"Upload CV\",\"noResults\":\"No results found.\",\"selected\":\"{count} selected\",\"addSelected\":\"Add {count} selected\",\"searchPlaceholder\":\"Search by name or specialization...\",\"confirmRemove\":\"Remove this candidate from the pipeline?\",\"movedToStage\":\"Moved to {stage}\",\"failedToMove\":\"Failed to move candidate\",\"addNote\":\"Add note\",\"noteTitle\":\"Note\",\"notePlaceholder\":\"Add a note about this candidate...\",\"saveNote\":\"Save note\",\"availableTalents\":\"Available Talents\",\"noAvailableTalents\":\"No available talents.\",\"rejected\":\"Rejected ({count})\",\"cvNotUploadedYet\":\"CV not uploaded yet\",\"uploadCvBtn\":\"Upload CV\",\"removeFromPool\":\"Remove from pool\",\"removeFromBoard\":\"Remove from board\",\"restoreToAvailable\":\"Restore to Available Talents\",\"deletePermanently\":\"Delete permanently\",\"startBuildingPipeline\":\"Start building your pipeline\",\"startBuildingDesc\":\"Add candidates from your CV database, upload new CVs, or let AI Search find the best matches for this role.\",\"addFromCvs\":\"Add from CVs\",\"newTalent\":\"New Talent\",\"noJd\":\"No JD\",\"noClient\":\"No client\",\"noClientAssociated\":\"No client associated\",\"noJdAssociated\":\"No JD associated\",\"jdLocked\":\"JD is locked because the talent list is not empty.\",\"client\":\"Client\",\"jobDescription\":\"Job Description\",\"notes\":\"Notes\",\"noNotesYet\":\"No notes yet.\",\"editNotes\":\"Edit\",\"addNotesCta\":\"Add notes\",\"notesPlaceholder\":\"General notes about this pipeline, search strategy, requirements...\",\"showPipelineDetails\":\"Show pipeline details\",\"hidePipelineDetails\":\"Hide pipeline details\",\"deletePool\":\"Delete pool?\",\"pipeline\":\"Pipeline:\",\"clickToRename\":\"Click to rename\",\"failedToLoadPipeline\":\"Failed to load pipeline.\",\"pipelineDescription\":\"This is your Pipeline workspace — the place where every scouting activity comes together before producing the final shortlist to send to your client. Associate a client and a job description, add notes, build your talent list from your CV database or by adding names manually, and track each candidate's journey from first contact to interview. As candidates progress through your evaluation process, the most suitable ones will become the shortlist you ultimately deliver to the client.\",\"gotIt\":\"Got it\",\"addFromCvsTitle\":\"Add Talents from CV Database\",\"noCvsFound\":\"No CVs found\",\"cvsFound\":\"{count} CVs found\",\"scheduleIntroInterview\":\"Schedule Intro Interview\",\"scheduleTechInterview\":\"Schedule 1st Technical Interview\",\"offerDetails\":\"Offer Details\",\"introInterviewOutcome\":\"Intro Interview Outcome\",\"techInterviewOutcome\":\"1st Technical Interview Outcome\",\"dateLabel\":\"Date\",\"timeLabel\":\"Time\",\"interviewDate\"
1:\"Interview date\",\"outcomeLabel\":\"Outcome\",\"outcomePlaceholder\":\"Outcome...\",\"offerDetailsLabel\":\"Offer details\",\"offerDetailsPlaceholder\":\"Describe the offer: role, compensation, start date, conditions...\",\"removeScheduledAppointment\":\"Remove scheduled appointment?\",\"removeScheduledDesc\":\"This candidate has a scheduled appointment in the current stage. Moving the card will delete that scheduled date and time. Do you want to continue?\",\"moveAndDeleteAppointment\":\"Move and delete appointment\",\"rejectTalent\":\"Reject talent\",\"rejectTalentDesc\":\"This talent will be moved to the Rejected list. Add a short reason so you remember why later.\",\"rejectReason\":\"Reason\",\"rejectBtn\":\"Reject\",\"addTalentWithoutCv\":\"Add talent without CV\",\"addTalentWithoutCvDesc\":\"Add a candidate to the pool whose CV you don't have yet. The card will be highlighted and you can upload the CV later.\",\"firstName\":\"First name\",\"lastName\":\"Last name\",\"addTalentBtn\":\"Add talent\",\"uploadCvForPlaceholder\":\"Upload CV for placeholder talent\",\"aiSearchReviewHint\":\"Review and adjust the search parameters, then click \\\"Start AI Search\\\".\",\"macroSector\":\"Macro Sector\",\"specializations\":\"Specializations\",\"specializationsSelectHint\":\"Select one or more\",\"experienceRequirements\":\"Experience Requirements\",\"minimumSeniority\":\"Minimum Seniority\",\"minimumYears\":\"Minimum Years\",\"skillsSection\":\"Skills\",\"skillsDragHint\":\"Drag the ones critical for the role to the must-have column.\",\"matchingCvsPreview\":\"Matching CVs Preview\",\"matchingCvsPreviewDesc\":\"Live count of CVs matching the criteria above. Updates as you edit.\",\"counting\":\"Counting...\",\"cvsMatch\":\"CVs match\",\"noCvsToPreview\":\"No CVs to preview.\",\"startAiSearch\":\"Start AI Search\",\"aiSearchScoreHeader\":\"Score\",\"specializationHeader\":\"Specialization\",\"seniorityHeader\":\"Seniority\",\"summaryHeader\":\"Summary\",\"anySeniority\":\"Any\",\"anyYears\":\"Any\",\"yearsPlus\":\"{n}+ years\",\"aiSearchDisabled\":\"AI Search disabled\",\"whyDisabled\":\"Why is this disabled?\",\"failedToUpdateBoard\":\"Failed to update board\",\"addLabel\":\"Add\",\"uploadLabel\":\"Upload\",\"aiLabel\":\"AI\",\"aiStartLabel\":\"Start AI\",\"aiViewLabel\":\"View AI\",\"resetRanking\":\"Reset Ranking\",\"resetRankingConfirm\":\"This will remove all AI scores and ranking data. You can re-run the AI ranking afterwards.\",\"sendShortlist\":\"Send Shortlist\",\"sendShortlistDisabledNoClient\":\"Associate a client to send a shortlist.\",\"sendShortlistDisabledNoCvs\":\"Add at least one candidate to send a shortlist.\",\"sendShortlistDisabledBoardActive\":\"Candidates have already been moved on the board. Send is only available before manual progression.\",\"preparingShortlist\":\"Preparing shortlist...\",\"newLabel\":\"New\",\"uploadCvToPipeline\":\"Upload CVs to Pipeline\",\"dropPdfHere\":\"Drop PDF file here or click to browse\",\"maxFileSize\":\"Max 10MB\",\"dropPdfFilesHere\":\"Drop PDF files here or click to browse\",\"maxFileSizePerFile\":\"Max 4MB per file\",\"analyzeWithAi\":\"Analyze with AI\",\"reviewExtractedData\":\"Review the extracted data and confirm.\",\"sectorLabel\":\"Sector\",\"selectSector\":\"Select a sector\",\"possibleDuplicateFound\":\"Possible duplicate found\",\"possibleDuplicatesFound\":\"Possible duplicates found\",\"duplicateExistsDesc\":\"A CV with a similar name already exists. You can update the existing CV or add as new.\",\"updateExisting\":\"Update\",\"addAsNew\":\"Add as new CV\",\"differentPerson\":\"(different person)\",\"confirmAndSave\":\"Confirm \u0026 Save\",\"tryAgain\":\"Try again\",\"filesCount\":\"{count, plural, one {# file} other {# files}}\",\"processing\":\"processing...\",\"uploadAndAdd\":\"Upload \u0026 Add\",\"cvsAddedToPool\":\"CVs added to pool\",\"uploadingFor\":\"Uploading CV for:\",\"dateTimeRequired\":\"Date and time are required\",\"dateTimeMustBeFuture\":\"Date and time must be in the future\",\"offerDetailsRequired\":\"Offer details are required\",\"outcomeRequired\":\"Outcome is required\",\"interviewDateRequired\":\"Interview date and time are required\",\"interviewDateCannotBeFuture\":\"Interview date cannot be in the future\",\"selectTime\":\"Select time\",\"slots\":\"slots\",\"customTime\":\"Custom time...\",\"firstLastNameRequired\":\"First name and last name are required.\",\"talentAlreadyExists\":\"A talent with this name already exists in the pool.\",\"cvAlreadyExistsInDb\":\"A CV with this name already exists in the database. Use \\\"Add from CVs\\\" instead.\",\"failedToCreateTalent\":\"Failed to create talent.\",\"clickToEdit\":\"Click to edit\",\"deletePipeline\":\"Delete pipeline\",\"notSuitable\":\"Not suitable\",\"noCv\":\"No CV\",\"cannotMoveCompletedBack\":\"A completed interview cannot be moved back. Use the X to reject.\",\"cannotMovePendingOfferBack\":\"A pending offer cannot be moved back. Use the X to reject if needed.\",\"cannotMovePlacedBack\":\"A placed candidate cannot be moved back. Use the X to reject if needed.\",\"cannotMovePlacedBackward\":\"A placed candidate cannot be moved backward. Use the X to reject if needed.\",\"cannotMovePendingOfferBackward\":\"A pending offer cannot be moved backward. Use the X to reject, or drag to Placed.\",\"cannotMoveCompletedBackward\":\"A completed interview cannot be moved backward. Use the X to reject, or drag forward.\",\"skipped\":\"Skipped: {stages}\",\"cvInTrash\":\"CV moved to trash\",\"restoreCv\":\"Restore\",\"removeCard\":\"Remove\",\"cvRestored\":\"CV restored successfully\",\"cvRestoreFailed\":\"Failed to restore CV\",\"aiChoiceTitle\":\"AI Ranking\",\"aiChoiceDescription\":\"How would you like to run the AI ranking?\",\"aiChoicePoolOnly\":\"Rank pool candidates only\",\"aiChoicePoolOnlyDesc\":\"Run AI ranking on the {count} candidates already in this pipeline.\",\"aiChoiceExtendSearch\":\"Extend search to full database\",\"aiChoiceExtendSearchDesc\":\"Search the entire CV database to find and add more candidates, then rank them all.\",\"aiRankingPoolTitle\":\"AI Ranking — Pool Candidates\",\"sentShortlistsTitle\":\"Sent shortlists\",\"sentShortlistsEmpty\":\"No shortlists have been sent from this pipeline yet.\",\"sentShortlistsRecipients\":\"{count, plural, one {# recipient} other {# recipients}}\",\"sentShortlistsCvs\":\"{count, plural, one {# CV} other {# CVs}}\",\"sentShortlistsOpen\":\"Open in archive\",\"shortlistLinkedToast\":\"Pipeline {name} {created, select, true {created} other {updated}}\",\"shortlistLinkedToastView\":\"View\",\"uploadingFiles\":\"Uploading file {current} of {total}...\",\"analyzingCvs\":\"Analyzing CVs...\",\"analyzingProgress\":\"{done} of {total} CVs analyzed\",\"extractingProgress\":\"{done} of {total} CVs processed\",\"savedCount\":\"{count} CVs saved\",\"importIntakeFailed\":\"Could not upload {filename}\",\"itemFailed\":\"Could not read this CV: {reason}\",\"uploadSlotsLeft\":\"{slots} uploads left on your plan\",\"uploadSlotsExceeded\":\"Your plan has {slots} uploads left: {discarded} files were not added.\",\"uploadLimitReached\":\"You have reached your plan's monthly upload limit.\",\"savedCountWithSkipped\":\"{count} CVs saved, {skipped} skipped\",\"placementOutcomeQuestion\":\"What happened to the placement?\",\"placementEnded\":\"The assignment ended\",\"placementEndedDesc\":\"The placement stays in the CV history with this end date.\",\"placementEndDate\":\"End date\",\"placementCancelled\":\"The placement fell through\",\"placementCancelledDesc\":\"The placement is deleted, as if it never happened.\",\"placementEndedReason\":\"Assignment ended\",\"placementCancelledReason\":\"Placement fell through\",\"placementEndBeforeStart\":\"The end date can't be before the start of the placement.\",\"placementUpdateFailed\":\"Couldn't update the placement. The card hasn't moved.\",\"internalLabel\":\"Internal label\",\"internalLabelHint\":\"No first and last name found. A name only you see, to tell this CV apart. Clients never see it.\",\"errorNameOrLabelRequired\":\"{filename}: enter first and last name, or an internal label\",\"board\":{\"groupProposed\":\"Proposed to Client\",\"groupIntro\":\"Intro Interview\",\"groupTech\":\"1st Technical Interview\",\"groupOffer\":\"Offer\",\"groupPlaced\":\"Placed\",\"stageProposed\":\"Proposed\",\"stageScheduled\":\"Scheduled\",\"stageOutcome\":\"Outcome\",\"stageOfferSent\":\"Offer Sent\",\"stagePlaced\":\"Placed\",\"subProposed\":\"CV sent to client\",\"subScheduled\":\"date \u0026 time set\",\"subOutcome\":\"after the call\",\"subOfferSent\":\"waiting for response\",\"subPlaced\":\"offer accepted\"}}
1,\"authError\":{\"title\":\"Authentication Error\",\"configurationError\":\"There is a problem with the server configuration.\",\"accessDeniedError\":\"You do not have permission to access this resource.\",\"verificationError\":\"The verification token has expired or has already been used.\",\"defaultError\":\"An error occurred during authentication.\",\"tryAgain\":\"Try again\",\"loading\":\"Loading...\"},\"signatureEditor\":{\"convertingImages\":\"Converting images...\",\"tip\":\"Tip: you can paste your existing email signature directly from Gmail or Outlook. Images will be automatically converted.\",\"imageTooLarge\":\"Image must be under 200KB\",\"logoBtn\":\"Logo\",\"clearBtn\":\"Clear\",\"lineHeightPrefix\":\"LH\",\"customTime\":\"Custom time...\"},\"search\":{\"title\":\"AI Search\",\"jdStep\":\"Job Description\",\"resultsStep\":\"Results\",\"pasteJd\":\"Paste Job Description\",\"analyzeWithAi\":\"Analyze with AI\",\"searching\":\"Searching...\",\"noResults\":\"No results found.\",\"candidatesFound\":\"{count} candidates found\",\"score\":\"Score\",\"sendShortlist\":\"Send Shortlist\"},\"mail\":{\"title\":\"Compose Email\",\"recipients\":\"Recipients\",\"subject\":\"Subject\",\"body\":\"Body\",\"send\":\"Send\",\"saveDraft\":\"Save Draft\",\"preview\":\"Preview\",\"sending\":\"Sending...\",\"sent\":\"Email sent!\",\"failedToSend\":\"Failed to send email\",\"addRecipient\":\"Add recipient\",\"testSend\":\"Test send\"},\"email\":{\"trialMidpointSubject\":\"Your Shortli trial: {daysLeft} days remaining\",\"trialMidpointHeading\":\"Making the most of your trial?\",\"trialMidpointBody\":\"Hi! Your trial for {orgName} is halfway through — you still have {daysLeft} days.\",\"trialMidpointBodyExtra\":\"To keep using Shortli after the trial, add a payment method and billing details.\",\"trialMidpointCta\":\"Complete payment details\",\"trialWeekLeftSubject\":\"One week left of your Shortli trial\",\"trialWeekLeftHeading\":\"{daysLeft} days left of your trial\",\"trialWeekLeftBody\":\"The trial for {orgName} ends in a week. Your CVs, searches and shortlists stay where they are — add a payment method and nothing stops.\",\"trialWeekLeftCta\":\"Complete payment details\",\"trialEndingSubject\":\"Urgent: your Shortli trial expires in {daysLeft} days\",\"trialEndingHeading\":\"Your trial expires in {daysLeft} days\",\"trialEndingBody\":\"The trial for {orgName} is ending soon. Add your card and billing details to keep your access.\",\"trialEndingCta\":\"Complete details now\",\"trialLastDaySubject\":\"Last day of your Shortli trial!\",\"trialLastDayHeading\":\"Last day!\",\"trialLastDayBody\":\"The trial for {orgName} expires today. Complete your payment details to keep access to all your CVs and searches.\",\"trialLastDayCta\":\"Complete details now\",\"trialExpiredSubject\":\"Your Shortli trial has ended\",\"trialExpiredHeading\":\"Your trial has expired\",\"trialExpiredBody\":\"The trial for {orgName} has ended, but your data is still safe.\",\"trialExpiredPrompt\":\"Choose a plan to pick up right where you left off:\",\"trialExpiredCta\":\"Choose a plan\",\"paymentFailedSubject\":\"Payment failed for {orgName}\",\"paymentFailedHeading\":\"Payment failed\",\"paymentFailedBody\":\"The payment of €{amount} for {orgName} could not be processed.\",\"paymentFailedRetry\":\"We will automatically retry on {date}.\",\"paymentFailedUpdatePrompt\":\"Update your payment method to avoid service interruption:\",\"paymentFailedCta\":\"Update payment method\",\"adminAlertSubject\":\"[Shortli Billing Alert] {count} issues detected\",\"adminAlertHeading\":\"Billing Alert\",\"adminAlertStuckEvents\":\"{count} stuck events (pending \u003e 1h)\",\"adminAlertRecentFailures\":\"{count} failed events (last 24h)\",\"adminAlertStuckSdi\":\"{count} invoices not sent to SDI (\u003e 48h)\",\"adminAlertUrgentDisputes\":\"{count} urgent disputes (deadline \u003c 48h)\",\"adminAlertAwaitingFiscalData\":\"{count} invoices awaiting billing details (\u003e 7 days)\",\"adminAlertStuckInvoices\":\"{count} invoices stuck in processing (\u003e 1h)\",\"adminAlertFooter\":\"Check the admin dashboard for details.\",\"disputeAlertSubject\":\"[URGENT] New dispute: €{amount} — {orgName}\",\"disputeAlertHeading\":\"New Dispute\",\"disputeOrganization\":\"Organization:\",\"disputeAmount\":\"Amount:\",\"disputeReason\":\"Reason:\",\"disputeDeadline\":\"Response deadline:\",\"disputeFooter\":\"Log in to the Stripe dashboard to respond.\",\"
1invitationSubject\":\"Invitation to join {orgName} on Shortli\",\"invitationHeading\":\"Invitation to {orgName}\",\"invitationBody\":\"{inviterName} has invited you to join the organization {orgName} on Shortli as {roleLabel}.\",\"invitationAcceptButton\":\"Accept invitation\",\"invitationExpiryNote\":\"This invitation expires on {expiryDate}.\",\"invitationIgnoreNote\":\"If you don't know who sent this invitation, you can ignore this email.\",\"invitationFooter\":\"Shortli — Recruiting SaaS\",\"footerTagline\":\"Shortli — Recruiting made simple\",\"welcomeSubject\":\"Welcome to Shortli\",\"welcomeHeading\":\"Welcome to Shortli\",\"welcomeIntro\":\"Your account is ready. Here is how to get from a folder of CVs to a shortlist in your client's inbox.\",\"welcomeStepsTitle\":\"Four steps to your first shortlist\",\"welcomeStep1\":\"Upload your CVs: each one becomes a searchable profile.\",\"welcomeStep2\":\"Paste a job description: it becomes a clear list of must-haves and nice-to-haves.\",\"welcomeStep3\":\"Let the AI rank your candidates against it, with a reason for every choice.\",\"welcomeStep4\":\"Send the shortlist to your client: an email, a PDF report and a page to browse, no login needed.\",\"welcomeCta\":\"Open Shortli\",\"welcomeLearnMore\":\"Want to know more?\",\"welcomeLinkHowWeRead\":\"How we read CVs\",\"welcomeLinkSkillMap\":\"Skill Map: who knows what, at a glance\",\"welcomeHelp\":\"Questions? Just reply to this email.\",\"welcomeSignoff\":\"The Shortli team\",\"desktopLinkSubject\":\"Your Shortli link\",\"desktopLinkBody\":\"Here is the link you asked for. Open it on your computer to pick up where you left off.\",\"desktopLinkCta\":\"Open Shortli\"},\"featureShowcase\":{\"search\":{\"badge\":\"Search\",\"title\":\"Finding the right candidate in your database shouldn't take hours.\",\"lead\":\"Every CV you upload is read by AI and turned into a structured profile, with no manual tagging.\",\"bullets\":[\"Years of experience, seniority, specialization and skills extracted automatically.\",\"Filter by skill, seniority or experience and find the right person in seconds.\",\"No more folders full of PDFs nobody remembers opening.\"]}},\"anonymization\":{\"badge\":\"Anonymisation\",\"title\":\"Send the candidate, keep the contact\",\"lead\":\"Every CV you upload gets two client-ready versions, automatically. The original stays with you.\",\"bullets\":[\"Without contacts: the name stays, while email, phone, address, photo and links are removed.\",\"Anonymous: the name is replaced by a candidate code like SL-7KQ2M9, so the client can't reach the candidate without you.\",\"CVs from suppliers lose the supplier's logo and references: the client only sees your brand.\",\"For each shortlist you choose the level, and the email, PDF report and shared page follow it.\"],\"learnMore\":\"How we read CVs\",\"tabsLabel\":\"CV version\",\"tabs\":{\"original\":\"Original\",\"l1\":\"Without contacts\",\"l2\":\"Anonymous\"}
1,\"audience\":{\"original\":\"Stays with you\",\"client\":\"What your client sees\"},\"yourBrand\":\"Your agency\",\"profileLabel\":\"Candidate profile\",\"photo\":\"Candidate photo\",\"removedL1\":\"Contacts, photo and supplier removed\",\"removedL2\":\"Name, contacts, photo and supplier removed\",\"experienceLabel\":\"Experience\"},\"faq\":{\"badge\":\"FAQ\",\"title\":\"Questions recruiters ask us\",\"items\":{\"data\":{\"q\":\"Where is my data stored, and who processes it?\",\"a\":\"Your data is stored and processed by established cloud and AI providers bound by data processing agreements; transfers outside the EU rely on the EU Standard Contractual Clauses. The full list of providers is in the Privacy Policy.\"},\"gdpr\":{\"q\":\"Who is responsible for candidate data under the GDPR?\",\"a\":\"Your organization is the data controller for the candidate data you upload. Shortli acts as data processor and processes it only on your instructions. For your account data, Shortli is the controller.\"},\"trialEnd\":{\"q\":\"What happens when the free trial ends?\",\"a\":\"Nothing is charged. Your data stays in your account for at least 90 days, so if you subscribe you find everything as you left it.\"},\"formats\":{\"q\":\"Which CV formats can I upload?\",\"a\":\"PDF files. The CV can be written in any language: Shortli reads it and builds the profile in a consistent structure.\"},\"languages\":{\"q\":\"Which languages does Shortli support?\",\"a\":\"The interface is available in English, Italian, German, French and Spanish. CVs and job descriptions can be in any language.\"},\"sectors\":{\"q\":\"Which sectors does Shortli cover?\",\"a\":\"Today it is built for IT \u0026 Digital roles: developers, engineers, data, cloud, security, product and design. More sectors are coming.\"},\"cancel\":{\"q\":\"How do I cancel?\",\"a\":\"From the billing page, at any time. The subscription stays active until the end of the period you paid for; you can also ask us for a pro-rata refund of the unused part by writing to [email protected].\"}}},\"trust\":{\"title\":\"Made in Italy, designed for the GDPR\",\"gdpr\":{\"title\":\"Designed for the GDPR\",\"body\":\"You are the controller of your candidates' data, Shortli is the processor. CVs sent to clients are pseudonymised.\"},\"company\":{\"title\":\"An Italian company\",\"body\":\"Shortli is developed and run by Medicalware S.r.l., based in Rome.\"},\"contact\":{\"title\":\"A person to talk to\",\"body\":\"Questions before you start? Write to \u003cemail\u003e\u003c/email\u003e.\"},\"footerContact\":\"Contact\"},\"alsoIncluded\":{\"badge\":\"And also\",\"title\":\"Everything else a recruiting agency needs\",\"items\":{\"suppliers\":{\"title\":\"Suppliers\",\"desc\":\"Track which partner sent each CV. The supplier is never shown to your clients.\"},\"placements\":{\"title\":\"Clients and placements\",\"desc\":\"See who is working at which client and when they become free again, so you can propose them in time.\"},\"mailbox\":{\"title\":\"Integrated mailbox\",\"desc\":\"Read and send email from Shortli with your Gmail account, next to your candidates.\"},\"duplicates\":{\"title\":\"Duplicates caught\",\"desc\":\"The same candidate uploaded twice is flagged before it clutters your database.\"},\"review\":{\"title\":\"You review before saving\",\"desc\":\"Check what the AI extracted from each CV and correct it before it goes into your database.\"},\"languages\":{\"title\":\"Any language\",\"desc\":\"CVs in any language, interface in English, Italian, German, French and Spanish.\"}}},\"deliverable\":{\"badge\":\"The final step\",\"title\":\"What your client receives when you send a shortlist\",\"lead\":\"Shortli turns your shortlist into a polished deliverable, ready to send.\",\"bullets\":[\"An AI summary of each candidate, with how well they match the job description.\",\"A detailed PDF report and an interactive shared page, attached to the email.\",\"No accounts or logins for your client: just the candidates, clearly presented.\"],\"previewIntro\":\"Here's an example of the PDF report and shared page\",\"pdfTitle\":\"PDF report\",\"pdfDesc\":\"A clean, branded summary of the shortlist: each candidate scored and matched against the role, with strengths, gaps and key skills at a glance.\",\"pdfButton\":\"View the PDF report\",\"sharedTitle\":\"Shared page\",\"sharedDesc\":\"An interactive web page your client can browse anytime — download each CV, grab the whole set as a ZIP, and explore the AI analysis. Always up to date.\",\"sharedButton\":\"Open the shared page\",\"emailNote\"
1:\"This is exactly what lands in your client's inbox.\"},\"legal\":{\"backToHome\":\"Back to home\",\"termsOfService\":\"Terms of Service\",\"privacyPolicy\":\"Privacy Policy\",\"lastUpdated\":\"Last updated: {date}\",\"tableOfContents\":\"Table of Contents\",\"agreePrefix\":\"By signing in, you agree to our \",\"and\":\" and \",\"agreeSuffix\":\".\"},\"tos\":{\"title\":\"Terms of Service\",\"intro\":{\"title\":\"1. Introduction\",\"body\":\"These Terms of Service (\\\"Terms\\\") govern your access to and use of Shortli, a recruiting SaaS platform operated by Medicalware S.r.l., with registered office at Via della Ricerca Scientifica, Rome, Italy, VAT number IT12651051000 (\\\"we\\\", \\\"us\\\", \\\"our\\\"). By accessing or using the Service, you agree to be bound by these Terms. If you do not agree to these Terms, you must not use the Service.\"},\"definitions\":{\"title\":\"2. Definitions\",\"body\":\"\\\"Service\\\": the Shortli web application and all related APIs and services.\\n\\\"User\\\": any individual or legal entity who registers for and uses the Service.\\n\\\"Organization\\\": a workspace created within Shortli by a User to manage recruiting activities.\\n\\\"Candidate Data\\\": personal data of job candidates uploaded or processed through the Service by Users.\\n\\\"Subscription\\\": a paid plan granting access to Service features according to the selected tier.\\n\\\"Pseudonymised Versions\\\": the copies of a CV that the Service generates automatically for sharing with external recipients, with contact details, photo and the branding of the original source removed and, at the higher level, the candidate's name replaced by the Candidate Code.\\n\\\"Candidate Code\\\": the identifier (in the form SL-XXXXXX) assigned to each CV within an Organization and used in place of the candidate's name in Pseudonymised Versions.\"},\"registration\":{\"title\":\"3. Account Registration and Access\",\"body\":\"To use the Service, you must sign in via Google OAuth. By authenticating, you authorize Shortli to access your basic profile information (name, email, profile picture) and, if granted, email sending capabilities through your account. You are responsible for maintaining the security of your authentication credentials and for all activities that occur under your account.\"},\"serviceDescription\":{\"title\":\"4. Description of the Service\",\"body\":\"Shortli provides a recruiting platform that enables Users to:\\n- Upload and manage candidate CVs and resumes\\n- Analyze CVs using artificial intelligence (Anthropic Claude) for metadata extraction, skill identification, and semantic search\\n- Create and manage job descriptions\\n- Generate AI-powered shortlists ranking candidates against job requirements\\n- Send personalized emails to candidates via connected email accounts\\n- Manage clients, talent pools, and candidate pipelines\\n- Share candidate shortlists with external recipients via expiring links\\n- Manage team members within Organizations\\n- Automatically generate Pseudonymised Versions of each uploaded CV at two levels: without contact details, photo and source branding, or additionally with the candidate's name replaced by the Candidate Code\\n- Choose, for each shortlist, which level is disclosed to external recipients (email, PDF report, shared page and downloads)\"},\"pseudonymisation\":{\"title\":\"5. Pseudonymised CV Versions\",\"body\":\"$13\"},\"subscriptions\":{\"title\":\"6. Subscriptions and Payments\",\"body\":\"The Service offers a 30-day free trial on the Solo plan (200 CVs, 50 uploads/month, 8 AI searches/month) that requires no credit card. Users who receive a personal invitation code from us may instead run the trial on the Starter plan (350 CVs, 100 uploads/month, 15 AI searches/month), for 30 days from the redemption of the code; invitation codes are single-use, non-transferable and have no cash value. Only one trial is available per User. After the trial, continued use requires a paid Subscription.\\n\\nAvailable plans:\\n- Solo: €9/month (or €108/year, no discount)\\n- Starter: €19/month (or €15/month billed yearly)\\n- Professional: €49/month (or €39/month billed yearly)\\n- Business: €79/month (or €69/month billed yearly)\\n\\
1nPayments are processed securely through Stripe. Subscriptions automatically renew at the end of each billing period unless cancelled. Prices may change with 30 days' prior notice.\"},\"refunds\":{\"title\":\"7. Refund Policy\",\"body\":\"If you cancel your Subscription, you are entitled to a pro-rata refund for the unused portion of the current billing period. Refunds are processed to the original payment method within 10 business days. To request a refund, contact us at [email protected].\"},\"acceptableUse\":{\"title\":\"8. Acceptable Use\",\"body\":\"You agree to use the Service only for lawful recruiting purposes. You must not:\\n- Send unsolicited bulk emails (spam) to candidates\\n- Upload candidate data without a lawful basis under applicable data protection laws\\n- Use the Service for discriminatory hiring practices\\n- Attempt to circumvent usage limits, access controls, or security measures\\n- Share your account credentials or allow unauthorized access\\n- Use the Service to store or process data unrelated to recruiting activities\\n\\nViolation of these rules may result in immediate suspension or termination of your account.\"},\"dataRoles\":{\"title\":\"9. Data Processing Roles\",\"body\":\"With respect to Candidate Data uploaded by Users, the User acts as the Data Controller and Shortli acts as the Data Processor under GDPR. Users are responsible for ensuring they have a lawful basis to collect and process Candidate Data, including obtaining any necessary consent. Shortli processes Candidate Data solely on behalf of and according to the instructions of the User.\\n\\nThe same roles apply to Pseudonymised Versions: Shortli generates them on the User's instruction, and the User decides whether, at which level and to whom they are disclosed. Recipients of shared shortlists process the data they receive as independent Data Controllers.\\n\\nFor User account data, Shortli acts as the Data Controller. See our Privacy Policy for full details on data processing.\"},\"thirdParty\":{\"title\":\"10. Third-Party Services\",\"body\":\"The Service integrates with the following third-party providers to deliver its functionality:\\n- Anthropic (Claude AI): CV analysis, candidate ranking, natural language processing, and rebuilding of CVs into Pseudonymised Versions (structured extraction and detection of contact details)\\n- Google Cloud Storage: secure storage of uploaded CV files\\n- Google OAuth \u0026 Gmail API: authentication and email sending\\n- Stripe: payment processing and subscription management\\n- Resend: system transactional emails\\n- FattureInCloud: Italian electronic invoicing (SDI)\\n- HuggingFace: embedding generation for semantic search\\n\\nEach third-party service is governed by its own terms and privacy policies. Shortli is not responsible for the practices of third-party providers.\"},\"ip\":{\"title\":\"11. Intellectual Property\",\"body\":\"The Service, including its design, features, code, and documentation, is the exclusive property of Medicalware S.r.l. and is protected by applicable intellectual property laws. Users retain full ownership of their data, including uploaded CVs and created content. The use of the Service does not grant Users any rights over the platform's intellectual property beyond the limited license to use the Service as intended.\"},\"liability\":{\"title\":\"12. Limitation of Liability\",\"body\":\"To the maximum extent permitted by applicable law, Shortli shall not be liable for:\\n- Indirect, incidental, or consequential damages arising from use of the Service\\n- Loss of data due to circumstances beyond our reasonable control\\n- Inaccuracies in AI-generated analyses, rankings, or suggestions\\n- Actions taken by Users based on AI-generated content\\n- Identifying information that remains in, or original content that is missing from, a Pseudonymised Version\\n- Disclosure of Candidate Data to third parties made by Users through the Service, including the choice of sharing level\\n- Failures or interruptions of third-party services\\n- Unauthorized access to your account due to your failure to secure credentials\\n\\
1nOur total liability for any claim shall not exceed the amount paid by you for the Service in the 12 months preceding the claim.\"},\"termination\":{\"title\":\"13. Termination\",\"body\":\"You may cancel your Subscription at any time from your account settings. Upon cancellation, your access continues until the end of the current billing period. You may delete your data at any time through the Service interface.\\n\\nWe may suspend or terminate your account if you violate these Terms, fail to pay, or if required by law. In case of termination for violation, no refund is owed for the remaining period.\"},\"law\":{\"title\":\"14. Governing Law and Jurisdiction\",\"body\":\"These Terms are governed by and construed in accordance with the laws of Italy. Any dispute arising from or in connection with these Terms shall be subject to the exclusive jurisdiction of the Court of Rome, Italy.\"},\"changes\":{\"title\":\"15. Changes to These Terms\",\"body\":\"We reserve the right to modify these Terms at any time. Material changes will be communicated via email or through a notice within the Service at least 30 days before taking effect. Continued use of the Service after changes take effect constitutes acceptance of the updated Terms.\"},\"contact\":{\"title\":\"16. Contact\",\"body\":\"For questions about these Terms, contact us at:\\n\\nMedicalware S.r.l.\\nVia della Ricerca Scientifica, Rome, Italy\\nVAT: IT12651051000\\nEmail: [email protected]\"}},\"privacy\":{\"title\":\"Privacy Policy\",\"intro\":{\"title\":\"1. Introduction\",\"body\":\"This Privacy Policy explains how Medicalware S.r.l. (\\\"Shortli\\\", \\\"we\\\", \\\"us\\\") collects, uses, shares, and protects personal data when you use our recruiting SaaS platform. We are committed to protecting your privacy in accordance with the General Data Protection Regulation (GDPR - EU Regulation 2016/679) and applicable Italian data protection laws.\"},\"controller\":{\"title\":\"2. Data Controller\",\"body\":\"The Data Controller is:\\n\\nMedicalware S.r.l.\\nVia della Ricerca Scientifica, Rome, Italy\\nVAT: IT12651051000\\nEmail: [email protected]\\n\\nFor Candidate Data uploaded by Users, the User is the Data Controller and Shortli acts as Data Processor.\"},\"dataCollected\":{\"title\":\"3. Data Collected\",\"body\":\"$14\"},\"legalBasis\":{\"title\":\"4. Legal Basis for Processing\",\"body\":\"We process personal data based on the following legal grounds:\\n\\nContract performance (Art. 6(1)(b) GDPR): processing necessary to provide the Service, manage your account, process payments, and fulfill our contractual obligations.\\n\\nLegitimate interest (Art. 6(1)(f) GDPR): improving the Service, preventing fraud, ensuring security, and sending service-related communications.\\n\\nLegal obligation (Art. 6(1)(c) GDPR): compliance with tax, accounting, and invoicing requirements under Italian law.\\n\\nConsent (Art. 6(1)(a) GDPR): where specifically required, such as for optional email permissions via OAuth.\"},\"purposes\":{\"title\":\"5. Purposes of Processing\",\"body\":\"We process personal data for the following purposes:\\n- Providing and maintaining the Service\\n- User authentication and account management\\n- CV analysis using artificial intelligence (metadata extraction, skill identification, candidate matching)\\n- Generating semantic embeddings for candidate search functionality\\n- Generating Pseudonymised Versions of CVs (removal of contact details, photo and identifying data; replacement of the name with a Candidate Code) for sharing with the User's clients and other external recipients\\n- Sending emails on behalf of Users to candidates\\n- Processing payments and managing subscriptions\\n- Generating and submitting electronic invoices (Italian SDI system)\\n- Sending system notifications (trial reminders, billing alerts, team invitations)\\n- Monitoring service usage and enforcing plan limits\\n- Improving and developing new features\"},\"pseudonymisation\":{\"title\":\"6. Pseudonymisation of CVs\",\"body\":\"$15\"},\"thirdParty\":{\"title\":\"7. Third-Party Data Processors\",\"body\":\"$16\"},\"googleUserData\":{\"title\":\"8. Google User Data and Limited Use\",\"body\":\"The use of raw or derived user data received from Workspace APIs will adhere to the Google User Data Policy, including the Limited Use requirements.\\n\\nShortli requests only the https://www.googleapis.com/auth/gmail.send scope, which is send-only and grants no access to read, retrieve, or store Gmail messages or other Google user data. It is used solely to send emails on the user's behalf.\\n\\nShortli does not use, transfer, or sell Google user data — raw, aggregated, or derived — to create, train, or improve foundational or generalized machine learning or artificial intelligence models. No Google user data is transferred to our third-party AI provider. Our AI features operate exclusively on recruiting data (job descriptions and candidate CVs) provided directly by users within Shortli.\"},\"transfers\":{\"title\":\"9. International Data Transfers\",\"body\":\"Some of our third-party processors are located in the United States. For these transfers, we rely on:\\n- EU Standard Contractual Clauses (SCCs) approved by the European Commission\\n- The processor's certification under recognized frameworks\\n- Supplementary technical and organizational measures to ensure adequate protection\\n\\nYou may request a copy of the applicable transfer safeguards by contacting us at [email protected].\"},\"retention\":{\"title\":\"10. Data Retention\",\"body\":\"Active account data: retained for the duration of your active account and Subscription.\\n\\nDeleted data: when you delete items (CVs, shortlists, job descriptions, clients), they are moved to a trash folder. Data remains in the trash until you permanently delete it manually. Once permanently deleted, data is removed from our systems and cannot be recovered. The Pseudonymised Versions, the Candidate Code and the rebuilt structured version of a CV follow the CV and are deleted together with it.\\n\\nBilling records: retained for 10 years as required by Italian tax law.\\n\\nUsage logs: retained for 24 months for service improvement and dispute resolution.\\n\\nUpon account deleti
1on, all associated personal data is permanently removed, except where retention is required by law.\"},\"rights\":{\"title\":\"11. Your Rights Under GDPR\",\"body\":\"Under the GDPR, you have the following rights regarding your personal data:\\n\\nRight of access: obtain confirmation of whether your data is being processed and receive a copy.\\n\\nRight to rectification: correct inaccurate or incomplete data.\\n\\nRight to erasure: request deletion of your personal data when it is no longer necessary for the purposes collected.\\n\\nRight to data portability: receive your data in a structured, machine-readable format.\\n\\nRight to restriction: request limitation of processing in certain circumstances.\\n\\nRight to object: object to processing based on legitimate interest.\\n\\nRight to withdraw consent: where processing is based on consent, withdraw it at any time without affecting prior processing.\\n\\nRight to lodge a complaint: file a complaint with the Italian Data Protection Authority (Garante per la Protezione dei Dati Personali) at www.garanteprivacy.it.\\n\\nTo exercise your rights, contact us at [email protected]. We will respond within 30 days.\"},\"cookies\":{\"title\":\"12. Cookies\",\"body\":\"Shortli uses only essential cookies required for the Service to function:\\n\\nSession cookie (next-auth.session-token): maintains your authenticated session. This is a technical cookie strictly necessary for the Service.\\n\\nLocale cookie (NEXT_LOCALE): stores your language preference (English, Italian, German, French or Spanish).\\n\\nWe do not use advertising cookies or third-party tracking cookies. On the public website we measure visits and page performance with Vercel Web Analytics and Speed Insights, which do not use cookies and do not identify individual visitors. No consent banner is required.\"},\"security\":{\"title\":\"13. Security Measures\",\"body\":\"We implement appropriate technical and organizational measures to protect personal data, including:\\n- Encryption of data in transit (TLS/HTTPS)\\n- OAuth-based authentication (no passwords stored)\\n- JWT token-based sessions with expiration and refresh rotation\\n- Access controls and organization-level data isolation\\n- Signed webhook verification for payment processing\\n- Regular security monitoring\\n- Principle of least privilege for service accounts\\n- Pseudonymisation of CVs shared with external recipients (contact details, photo and, at the higher level, name removed)\"},\"children\":{\"title\":\"14. Children's Privacy\",\"body\":\"The Service is not intended for use by individuals under the age of 16. We do not knowingly collect personal data from children. If we become aware that we have collected data from a child under 16, we will take steps to delete it promptly.\"},\"changes\":{\"title\":\"15. Changes to This Policy\",\"body\":\"We may update this Privacy Policy from time to time. Material changes will be communicated via email or through a notice within the Service at least 30 days before taking effect. The \\\"Last updated\\\" date at the top of this page indicates when the policy was last revised.\"},\"contact\":{\"title\":\"16. Contact\",\"body\":\"For any questions or requests regarding this Privacy Policy or your personal data, contact us at:\\n\\nMedicalware S.r.l.\\nVia della Ricerca Scientifica, Rome, Italy\\nVAT: IT12651051000\\nEmail: [email protected]\"}},\"metadata\":{\"appDescription\":\"AI-powered recruiting software that turns job descriptions and resumes into ranked shortlists.\",\"homeTitle\":\"Shortli · AI shortlists for IT recruiters\",\"homeDescription\":\"Upload your CVs, paste a job description and get a ranked shortlist with the reasons for every candidate. Anonymised CVs, pipeline and client-ready deliverables. 30 days free, no credit card.\",\"homeKeywords\":\"recruiting software, AI recruiting, candidate shortlist, CV parsing, resume screening, IT recruiting, recruitment agency software, anonymised CV, talent pool\",\"tosDescription\":\"The terms that govern the use of Shortli: accounts, free trial, subscriptions, data roles and liability.\",\"privacyDescription\":\"How Shortli processes personal data: what we collect, why, where it is stored and your rights under the GDPR.\",\"teaserName\":\"Shortli demo: from job description to shortlist\",\"teaserDe
1scription\":\"A one-minute tour of Shortli: upload CVs, paste a job description, get a ranked shortlist with the reasons for every candidate and send it to the client.\"},\"skillBlocks\":{\"niceToHave\":\"Nice to Have\",\"mustHave\":\"Must Have\",\"niceToHaveDesc\":\"Bonus skills — boost AI ranking, not required.\",\"mustHaveDesc\":\"Hard requirements — applied as DB filter.\",\"niceToHaveEmpty\":\"Drop skills here or add below\",\"mustHaveEmpty\":\"Drop critical skills here or add below\",\"moveAllToMust\":\"Move all to Must Have\",\"moveAllToNice\":\"Move all to Nice to Have\",\"addNicePlaceholder\":\"Add nice-to-have skill...\",\"addMustPlaceholder\":\"Add must-have skill...\",\"remove\":\"Remove\"},\"sharedReport\":{\"loading\":\"Loading report…\",\"networkError\":\"Network error. Please try again.\",\"downloadCvFailed\":\"Failed to download CV. Please try again.\",\"downloadZipFailed\":\"Failed to download ZIP. Please try again.\",\"linkExpired\":\"Link Expired\",\"linkExpiredBody\":\"Please contact the sender for a new link.\",\"notFound\":\"Report Not Found\",\"notFoundBody\":\"This report does not exist or has been removed.\",\"errorHeading\":\"Something went wrong\",\"candidateReport\":\"Candidate Report\",\"candidateOverview\":\"Candidate Overview\",\"sentDate\":\"Sent {date}\",\"expiresDate\":\"Expires {date}\",\"expiresOnDate\":\"This link expires on {date}\",\"showLess\":\"Show less\",\"showMore\":\"Show more\",\"downloadCv\":\"Download CV\",\"skillMatch\":\"Skill Match\",\"strengths\":\"Strengths\",\"gaps\":\"Gaps\",\"availabilityLabel\":\"Availability:\",\"rateLabel\":\"Rate:\",\"downloads\":\"Downloads\",\"allCvsZip\":\"All CVs (ZIP)\",\"jobDescriptionTxt\":\"Job Description (TXT)\",\"aiAnalysis\":\"AI Analysis\",\"aiAnalysisDesc\":\"Download a complete TXT file with the Job Description and all candidate CVs, then open your preferred AI tool to start the analysis.\",\"downloadCvBundle\":\"Download CV Bundle\",\"analyzeWith\":\"Analyze with {tool}\",\"aiAnalysisPrompt\":\"I have a file with multiple anonymized candidate CVs. Please help me analyze the candidates: compare skills, experience, and suitability. I will upload the file now.\",\"anonymizationNotice\":\"Candidate data is pseudonymised: contact details, photo and the source of each CV are removed before sharing, and names are either kept or replaced by a candidate code depending on the level chosen by the sender.\",\"footerText\":\"Powered by Shortli · This content is confidential\"},\"pricing\":{\"badge\":\"Pricing\",\"title\":\"Simple, transparent pricing\",\"trialLine\":\"30 days free on the Solo plan, no credit card.\",\"mostPopular\":\"Most popular\",\"startFree\":\"Start free\",\"startFreeOnSolo\":\"Start free on Solo\",\"afterTrial\":[\"When the trial ends nothing is charged, and your data stays in your account for at least 90 days.\",\"If you subscribe during the trial, the paid plan starts right away and the remaining trial days are not carried over.\",\"Only the owner of the organization can subscribe and manage payments.\"],\"soloLead\":\"Just getting started?\",\"everyPlanTitle\":\"Every Shortli plan is hassle-free\",\"plan\":{\"monthly\":\"Monthly\",\"yearlySave\":\"Yearly (save ~20%)\",\"perMonth\":\"/mo + VAT\",\"billedYearly\":\"Billed €{amount}/year + VAT\",\"noYearlyDiscount\":\"no annual discount\",\"soloName\":\"Solo\",\"starterName\":\"Starter\",\"professionalName\":\"Professional\",\"businessName\":\"Business\",\"feature200Cvs\":\"200 CVs in database\",\"feature50Uploads\":\"50 uploads/month\",\"feature8Searches\":\"8 AI searches/month\",\"feature350Cvs\":\"350 CVs in database\",\"feature100Uploads\":\"100 uploads/month\",\"feature15Searches\":\"15 AI searches/month\",\"featureUnlimitedCvs\":\"Unlimited CVs\",\"feature250Uploads\":\"250 uploads/month\",\"feature50Searches\":\"50 AI searches/month\",\"feature600Uploads\":\"600 uploads/month\",\"feature100Searches\":\"100 AI searches/month\",\"featurePrioritySupport\":\"Priority support\"}},\"noFriction\":{\"freeMonth\":\"Free first month\",\"noCard\":\"No credit card\",\"noPassword\":\"No password\",\"noForms\":\"No forms\",\"freeMonthDesc\":\"Your first 30 days are on us, on the Solo plan, no strings. Load your real CVs and run searches before paying a cent.\",\"noCardDesc\":\"Start without entering any card details. We only ask for payment when you decide to continue after the free month.\",\"noPasswordDesc\":\"No password to create or remember. Sign in securely with your Google account in a single click.\",\"noFormsDesc\":\"No long sign-up forms. One 
1click and you're inside Shortli, ready to upload your first CVs.\"},\"home\":{\"tagline\":\"Shortlist in seconds\",\"heroAudience\":\"For IT recruiting agencies and freelance recruiters\",\"subtitle\":\"Upload a job description, AI picks the best IT CVs from your database and delivers a ranked shortlist ready to send.\",\"getStarted\":\"Start free\",\"videoSubtitle\":\"Watch how Shortli turns a job description into a ranked shortlist in under a minute.\",\"videoPlay\":\"Watch the demo\",\"demoBadge\":\"Live demo\",\"ctaTitle\":\"Ready to build your next shortlist?\",\"demo\":{\"jdLabel\":\"Job Description\",\"jdTitle\":\"Senior React Developer\",\"jdDescription\":\"We're hiring a Senior React Developer to own product features end-to-end. Strong experience required with the modern React ecosystem (Next.js, TypeScript, React Testing Library, Jest), state management (Redux, Zustand) and bundler/tooling (Vite, Webpack). Bonus points for performance optimization and React Native.\",\"scoreLabel\":\"score\",\"skillMatch\":\"Skill match\",\"strengths\":\"STRENGTHS\",\"gaps\":\"GAPS\",\"c1Role\":\"Senior React Developer\",\"c1S1\":\"Excellent coverage of nice-to-have skills: Next.js, React Native, Jest, React Testing Library, Redux, Vite, Webpack\",\"c1S2\":\"Modern, complete tech stack with 8 years as Senior React Developer\",\"c1S3\":\"Advanced testing skills (Jest, Cypress, React Testing Library) and modern tooling\",\"c1G1\":\"React Hooks not explicitly mentioned (minor, likely implicit in React usage)\",\"c1G2\":\"Babel not listed in skills (minor)\",\"c1G3\":\"Performance Optimization not explicitly indicated (minor)\",\"c1Summary\":\"Excellent candidate with near-perfect match. Has 16 of 19 required nice-to-have skills, with strong specialization in the React ecosystem and testing. Ideal profile for the position.\",\"c2Role\":\"Freelance Sr. Frontend Engineer\",\"c2S1\":\"Senior seniority with 9 years of experience and multi-framework skills (React, Angular, Vue.js, Flutter)\",\"c2S2\":\"Strong nice-to-have coverage: Next.js, React Native, Jest, Redux, Vite, TypeScript\",\"c2S3\":\"Versatile profile with testing experience (Jest, Cypress) and advanced state management (Redux Saga, Redux Thunk, Zustand)\",\"c2G1\":\"React Testing Library not present (minor)\",\"c2G2\":\"Node.js not explicitly indicated (minor)\",\"c2G3\":\"Webpack and Babel not present (minor)\",\"c2G4\":\"React Hooks not explicitly mentioned (minor)\",\"c2Summary\":\"Strong Senior candidate with 13 of 19 nice-to-have skills. Broad and versatile experience across multiple frontend technologies. Excellent fit for the position.\",\"c3Role\":\"Frontend Developer\",\"c3S1\":\"Solid React foundation with Next.js, TypeScript, Redux and API Integration\",\"c3S2\":\"Good testing experience (Jest) and modern tooling (Vite)\",\"c3S3\":\"5 years of experience as Frontend Developer in agile contexts\",\"c3G1\":\"React Testing Library not present (moderate)\",\"c3G2\":\"React Native not indicated — web only (moderate)\",\"c3G3\":\"Webpack and Babel not mentioned (minor)\",\"c3G4\":\"Performance Optimization not documented (minor)\",\"c3Summary\":\"Mid-level profile with good match and a solid technical foundation. Has 13 of 19 nice-to-have skills, lacking advanced testing and mobile experience. Valid candidate with room to grow.\",\"c1Name\":\"Emma Johnson\",\"c2Name\":\"James Miller\",\"c3Name\":\"Olivia Brown\",\"aiRanking\":\"AI Ranking\"},\"heroReassurance\":\"Free first month, no credit card.\",\"heroScope\":\"Built for IT \u0026 Digital today. More sectors are coming.\"},\"sectorScope\":{\"current\":\"This version covers the IT \u0026 Digital sector.\",\"next\":\"Finance \u0026 Admin, Sales \u0026 Marketing, Engineering, Healthcare and Legal \u0026 HR are next.\"},\"skillMapShowcase\":{\"badge\":\"Skill Map\",\"title\":\"Your whole talent pool, mapped by skill\",\"link\":\"Explore the Skill Map\",\"lead\":\"The Skill Map turns your whole database, or any group of candidates, into one matrix of who knows what.\",\"bullets\":[\"Every skill is extracted by AI from each CV, with no manual tagging.\",\"Filter by sector, search a skill or set a minimum frequency to cut the noise.\",\"See at once who matches, without spreadsheets.\"]},\"jdShowcase\":{\"badge\":\"Job Description\",\"title\":\"Paste a job description, get a searchable profile\",\"lead\":\"Paste the brief you got from your client: the AI turns it into a structured profile.\",\"bullets\":[\"Sector, specialization, seniority, must-have and nice-to-have skills, on the same vocabulary used for CVs.\",\"You review and adjust every field before saving.\",\"Must-haves act as a gate and nice-to-haves as a score, so the ranking reflects what the role needs.\"],\"jdTitle\":\"Senior React Developer\",\"jdCode\":\"JBD-260926-101532\",\"jdBrief\":\"Senior React Developer owning product features end-to-e
1nd, with solid experience of the modern React ecosystem, state management and build tooling. Performance optimization and React Native are a plus.\",\"sector\":\"Sector\",\"specializations\":\"Specializations\",\"seniority\":\"Seniority / years\",\"mustHave\":\"Must-have skills\",\"niceToHave\":\"Nice-to-have skills\"},\"pipelineShowcase\":{\"badge\":\"Pipeline\",\"title\":\"Every hire, tracked from search to signature\",\"imageAlt\":\"Pipeline board with candidates moving across hiring stages\",\"lead\":\"The candidates you pick land on a pipeline board, ready to move forward.\",\"bullets\":[\"Start from a job description or a free-text brief.\",\"Drag each candidate through the stages: presentation to the client, intro call, technical interviews, offer, placement.\",\"The whole process at a glance, so nothing slips through the cracks.\"]},\"adminAnalytics\":{\"pageTitle\":\"Analytics\",\"tabs\":{\"product\":\"Product\",\"revenue\":\"Revenue\",\"orgs\":\"Organizations\",\"summary\":\"Summary\"},\"period\":{\"7d\":\"7d\",\"30d\":\"30d\",\"90d\":\"90d\",\"mtd\":\"This month\",\"lastMonth\":\"Last month\",\"all\":\"All\"},\"periodNote\":\"Follows the selected period\",\"snapshotNote\":\"Snapshot of today — does not change with the period\",\"fxNote\":\"AI costs converted at {rate} €/$\",\"trend\":{\"vsPrevious\":\"vs previous {days}d\",\"vsSameOfLastMonth\":\"vs the same stretch of last month\",\"vsMonthBefore\":\"vs the month before\",\"noComparison\":\"no period to compare\",\"fromZero\":\"from zero\"},\"kpi\":{\"totalOrgs\":\"Total orgs\",\"activeOrgs\":\"Active orgs\",\"activeUsers\":\"Active users\",\"usersWithActivity\":\"Users with activity\",\"cvsUploaded\":\"CVs uploaded\",\"aiSearches\":\"AI searches\",\"netRevenue\":\"Net cash in\",\"aiCost\":\"AI cost\",\"margin\":\"Margin\",\"mrr\":\"MRR\",\"arpa\":\"Revenue per org\",\"mrrAtRisk\":\"MRR at risk\",\"churn\":\"Churn\",\"trialToPaid\":\"Trial → Paid\"},\"kpiHint\":{\"newOrgs\":\"{count} new\",\"ofTotal\":\"of {total} total\",\"cvsInDb\":\"{count} in archive\",\"arr\":\"ARR {value}\",\"payingOrgs\":\"{count} paying orgs\",\"marginPct\":\"{pct}% of revenue\",\"unitCosts\":\"{perCv} per CV · {perSearch} per search\",\"ofDecided\":\"{converted} of {decided} ended trials\",\"noDecidedTrials\":\"no trial has ended yet\",\"atRisk\":\"{cancelling} cancelling · {pastDue} unpaid\",\"churnBase\":\"{count} of {base} at period start\",\"notComputable\":\"not computable\"},\"activation\":{\"title\":\"Activation of new orgs\",\"detail\":\"{activated} of {cohort} new orgs uploaded a CV and ran a search within {days} days\",\"cohortNote\":\"Only orgs old enough to have had the full window are counted\",\"empty\":\"No org is old enough to be measured yet\"},\"retention\":{\"title\":\"Retention\",\"detail\":\"{retained} of {previous} orgs active in the previous period are still active\",\"empty\":\"Needs a previous period to compare\"},\"signals\":{\"title\":\"Who to call\",\"upsellLabel\":\"Near plan limit\",\"dormantLabel\":\"Paying, barely using\",\"inactiveLabel\":\"No activity for {days}d\",\"filterHint\":\"Click a number to filter the table\",\"clear\":\"Show all\"},\"charts\":{\"activityOverTime\":\"Activity over time\",\"featureAdoption\":\"Feature adoption\",\"revenueOverTime\":\"Cash in over time\",\"planDistribution\":\"Plan distribution\",\"subscriptionLifecycle\":\"Subscription lifecycle\",\"founderVsRegular\":\"Founder vs regular\",\"mrrMovement\":\"MRR movement\",\"paymentHealth\":\"Payment health\"},\"features\":{\"cvUpload\":\"CV upload\",\"aiSearch\":\"AI search\",\"shortlists\":\"Shortlists\",\"emailSend\":\"Email send\",\"jdBoard\":\"JD board\",\"talentPools\":\"Talent pools\"},\"featureAdoptionMeta\":{\"detail\":\"{count} orgs · {percentage}%\",\"denominator\":\"Share of orgs active in the period\"},\"orgTable\":{\"organizations\":\"Organizations\",\"organization\":\"Organization\",\"plan\":\"Plan\",\"members\":\"Members\",\"cvsInDb\":\"Archive\",\"cvsUploaded\":\"CVs\",\"searches\":\"Searches\",\"shortlists\":\"Shortlists\",\"aiCost\":\"AI cost\",\"revenue\":\"Cash in\",\"margin\":\"Margin\",\"quota\":\"Quota\",\"lastActive\":\"Last active\",\"inactive\":\"inactive\",\"noOrganizationsFound\":\"No organizations foun
1d\",\"columnsNote\":\"All columns cover the selected period, except Archive, which is a current count\",\"filtered\":\"{count} of {total} organizations\",\"recurring\":\"Recurring\",\"marginNote\":\"Margin compares AI cost with the customer’s recurring value for the period, not with invoices that happen to fall inside it\",\"search\":\"Search by name or email\",\"showing\":\"Showing {from}–{to} of {total}\",\"prev\":\"Previous\",\"next\":\"Next\",\"noMatch\":\"No organization matches the search\"},\"quotaState\":{\"saturated\":\"Near limit\",\"healthy\":\"Healthy\",\"dormant\":\"Barely used\"},\"planBadge\":{\"trial\":\"Trial\",\"trialOn\":\"Trial · {plan}\",\"expired\":\"Expired\",\"canceled\":\"Canceled\",\"pastDue\":\"Past due\",\"solo\":\"Solo\",\"starter\":\"Starter\",\"professional\":\"Professional\",\"business\":\"Business\",\"none\":\"None\"},\"lifecycle\":{\"totalOrgs\":\"Total\",\"onTrial\":\"On trial\",\"paying\":\"Paying\",\"pastDue\":\"Past due\",\"churned\":\"Churned\",\"expired\":\"Expired\"}
1,\"founder\":{\"founderOrgs\":\"Founder orgs\",\"regularOrgs\":\"Regular orgs\"},\"mrrMovement\":{\"new\":\"New MRR\",\"lost\":\"Lost MRR\",\"net\":\"Net MRR\",\"newSubs\":\"{count} new subscriptions\",\"canceledSubs\":\"{count} cancellations\"},\"health\":{\"pastDue\":\"Unpaid subscriptions\",\"openDisputes\":\"Open disputes\",\"stuckInvoices\":\"Invoices not issued\",\"stuckInvoicesHint\":\"Cash collected whose e-invoice never went out\"},\"orgDetail\":{\"orgDetails\":\"Org details\",\"usageStats\":\"Usage\",\"usageLimits\":\"Limits\",\"activity\":\"Activity\",\"billing\":\"Money\",\"members\":\"Members\",\"featureUsage\":\"Features used\",\"cvsInDb\":\"CVs in archive\",\"uploadsThisPeriod\":\"Uploads this period\",\"searchesThisPeriod\":\"Searches this period\",\"shortlistsSent\":\"Shortlists sent\",\"emailsSent\":\"Emails sent\",\"monthlyUploads\":\"Monthly uploads\",\"monthlySearches\":\"Monthly searches\",\"cvsInDatabase\":\"CVs in database\",\"unlimited\":\"Unlimited\",\"plan\":\"Plan\",\"billingInterval\":\"Billing interval\",\"status\":\"Status\",\"startDate\":\"Start date\",\"invoicesPaid\":\"Payments\",\"revenue\":\"Cash in\",\"aiCost\":\"AI cost\",\"margin\":\"Margin\",\"monthlyValue\":\"Monthly value\",\"founder\":\"Founder\",\"cancelling\":\"Cancelling at period end\",\"activation\":\"Activation\",\"activated\":\"Activated within {days} days\",\"notActivated\":\"Never activated\",\"firstCv\":\"First CV\",\"firstSearch\":\"First search\",\"name\":\"Name\",\"email\":\"Email\",\"role\":\"Role\",\"joined\":\"Joined\",\"openOrganization\":\"Open organization →\",\"close\":\"Close\",\"monthly\":\"monthly\",\"yearly\":\"yearly\",\"yes\":\"Yes\",\"no\":\"No\",\"loadFailed\":\"Failed to load organization data.\",\"memberCount\":\"{count, plural, one {# member} other {# members}}\",\"createdOn\":\"Created on {date}\",\"dialogDescription\":\"Usage, money and activation detail for this organization\",\"recurring\":\"Recurring\"},\"funnel\":{\"title\":\"Where organizations stop\",\"byOrg\":\"By organization\",\"byEvent\":\"By action, this period\",\"cohort\":\"Cohort: {c
1ount} organizations created in the period\",\"notSequential\":\"Each step is counted on its own: a shortlist can be built without an AI search, so a later step can be higher than an earlier one.\",\"medianDays\":\"median {days}d\",\"noMedian\":\"—\",\"empty\":\"No organization was created in this period\",\"steps\":{\"signup\":\"Signed up\",\"firstCv\":\"Uploaded a CV\",\"firstSearch\":\"Ran a search\",\"firstShortlist\":\"Built a shortlist\",\"firstSent\":\"Sent it to a client\"}},\"eventFunnel\":{\"searches\":\"Searches\",\"shortlists\":\"Shortlists\",\"sent\":\"Sent\",\"fromAi\":\"{count} of {total} born from an AI search\",\"ofShortlists\":\"{pct}% of shortlists\",\"noBase\":\"no base to compare\"},\"imports\":{\"title\":\"CV import queue\",\"jobsLabel\":\"Imports\",\"done\":\"Completed\",\"failed\":\"Failed\",\"cancelled\":\"Cancelled\",\"stuck\":\"Stuck\",\"stuckHint\":\"Running for over an hour: the lease lasts minutes, so these are jammed\",\"filesFailed\":\"{failed} of {total} files never made it in\",\"filesSkipped\":\"{count} skipped\",\"allGood\":\"Every file in this period made it in\"},\"anonymizer\":{\"title\":\"CV anonymization\",\"l1Ready\":\"L1 ready\",\"l2Ready\":\"L2 ready\",\"failed\":\"Failed\",\"pending\":\"Pending\",\"orgsUsing\":\"Used by {count} of {total} organizations\",\"never\":\"Nobody has used it yet\",\"ofArchive\":\"{pct}% of the archive\"},\"summary\":{\"stateTitle\":\"How the business is doing\",\"growthTitle\":\"Where growth comes from\",\"deliveredTitle\":\"Value delivered\",\"deliveredLabel\":\"Shortlists sent to clients\",\"deliveredHint\":\"The moment the product produces something outside the customer’s own company. Everything else sits upstream of this.\",\"concentrationTitle\":\"Revenue concentration\",\"concentrationTop\":\"The largest customer is {pct}% of recurring revenue\",\"concentrationTop3\":\"The top three are {pct}%\",\"concentrationCustomers\":\"across {count} paying customers\",\"concentrationRisk\":\"Losing one customer would take a painful share with it\",\"concentrationEmpty\":\"No paying customer yet\",\"marginByPlanTitle\":\"Margin by plan\",\"planColumn\":\"Plan\",\"orgsColumn\":\"Orgs\",\"recurringColumn\":\"Recurring\",\"aiCostColumn\":\"AI cost\",\"marginColumn\":\"Margin\",\"attentionTitle\":\"Worth looking at today\",\"allClear\":\"Nothing needs attention in this period\",\"netMrr\":\"{value} net this period\",\"arpa\":\"{value} per customer\",\"marginPct\":\"{pct}% of recurring revenue\",\"churnBase\":\"{count} of {base} at period start\",\"activationOf\":\"{activated} of {cohort} new orgs\",\"conversionOf\":\"{converted} of {decided} decided\",\"mrrHistoryTitle\":\"MRR over time\",\"mrrHistoryHint\":\"Rebuilt from when each subscription started and ended. Plan changes leave no history, so a subscription counts at its current value for every month.\",\"mrrGrowth\":\"{pct}% vs {value} at period start\",\"mrrGrowthNoBase\":\"no recurring revenue at period start\"},\"attention\":{\"importFailed\":\"CV files that never made it in\",\"importStuck\":\"imports jammed\",\"anonFailed\":\"CVs whose anonymization failed\",\"inactiveOrgs\":\"organizations with no activity\",\"dormantPaying\":\"paying customers barely using the product\",\"pastDue\":\"unpaid subscriptions\",\"disputes\":\"open disputes\",\"unissuedInvoices\":\"invoices collected but never issued\",\"goTo\":\"Look\"},\"info\":{\"mrr\":\"Sum of the monthly value of ACTIVE subscriptions. An annual plan counts at its per-month price, not the one-off charge. Unpaid subscriptions are excluded and live under “MRR at risk”: conservative, because that money hasn’t arrived.\",\"netMrr\":\"New minus lost in the period. New = value of subscriptions started in the window; lost = value of those cancelled. Plan changes are not measured: upgrades and downgrades leave no history in the database.\",\"paying\":\"Organizations with an active subscription right now. A failed payment doesn’t count here — it sits under unpaid, because the customer isn’t lost yet but isn’t paying either.\",\"arpa\":\"MRR divided by paying organizations. Per organization, not per user: an org with five people counts once.\",\"margin\":\"Recurring value for the peri
1od minus AI cost. Recurring is the subscription value prorated over the period’s days, NOT the invoices that happen to fall inside the window: an annual customer is billed once a year and would look like pure cost for eleven months. AI cost is estimated from tokens consumed, not billed by Anthropic, and converted to euro at a fixed rate.\",\"atRisk\":\"Recurring revenue that could disappear soon: active subscriptions already set to cancel at period end, plus those with a failed payment. The only line still recoverable with a phone call.\",\"churn\":\"Cancellations in the period over the base at period start. The base is reconstructed — active today, minus those started in the period, plus those cancelled — because we keep no daily history of active subscriptions. Exact unless a subscription changes state twice in the same window.\",\"totalOrgs\":\"Every organization ever created, paying or not. Below, how many were born in the selected period.\",\"activeOrgs\":\"Organizations that left at least one trace in the period: a CV, a search, a shortlist, an email. The rest exist but don’t use the product.\",\"activeUsers\":\"Distinct people who did something in the period. AI searches don’t count here: the usage log records which organization ran them, not who.\",\"cvs\":\"CVs uploaded in the period, excluding trashed ones. Below, how many are in the archive right now.\",\"searches\":\"AI searches actually run, counted from ranking calls in the usage log. NOT from saved searches: one abandoned halfway consumes quota and costs money but leaves no saved record. Logs are kept for 365 days, so older ones are missing under “All”.\",\"activation\":\"How many new organizations uploaded a CV AND ran a search within the window. Together those two gestures show the product was understood: uploading without searching is an archive, searching without uploading is a demo. The cohort only includes orgs old enough to have had the full window, so it is smaller than the funnel’s.\",\"retention\":\"Organizations active in the previous period that are still active in the current one. Needs a previous period to compare: there is none under “All”.\",\"trialConversion\":\"Who subscribed, among those who decided. Deciding means subscribing — during the trial too, which is the normal case — or reaching the end of the trial. Orgs still on trial are excluded: they haven’t had the chance to choose.\",\"delivered\":\"Shortlists that actually reached a client, counted from their “sent” status. This is the moment the product produces something outside the customer’s own company: everything else in the journey sits upstream of it.\",\"concentration\":\"How much the largest customer weighs on total recurring revenue, and how much the top three do. MRR alone doesn’t say it: the same figure from three customers or from thirty is a completely different risk.\",\"marginByPlan\":\"Recurring revenue and AI cost grouped by plan. It answers “do the plan limits hold?”: a plan whose margin thins out is giving work away. Rows without a plan gather trials and expired accounts, which cost without earning.\",\"attention\":\"Only non-zero things you can act on. A list of zeros doesn’t reassure — it hides the line that matters. Each entry opens the tab where that problem is examined.\",\"funnel\":\"How many organizations in the cohort reached each gesture, and after how many days (median, not mean: one very slow org shouldn’t move the typical case). The steps are NOT a waterfall — a shortlist can be built by hand, without an AI search — so a later step can be higher than an earlier one.\",\"eventFunnel\":\"Counts of actions in the period, not of organizations. Shortlists are not a subset of searches, so no percentage is given for them: instead we say how many were born from an AI search. Sent shortlists ARE a subset of shortlists, and there the percentage means something.\",\"activity\":\"Volumes over time, grouped by day, week or month depending on the peri
1od. CVs have their own axis on the left: they run one or two orders of magnitude above the other two series, which on a single axis would stay flat.\",\"adoption\":\"Share of organizations ACTIVE in the period that touched each feature. The denominator is active orgs and not all of them: mixing in those who never opened the app would lower every bar by the same amount without adding information. How much the dormant part weighs is read from “Active orgs of total”.\",\"imports\":\"Outcome of the CV import queue in the period. Mind the distinction: the tiles count IMPORTS, the line below counts the FILES inside them — an import can be marked complete and still have left almost every file out. “Stuck” means running for over an hour, when the lease lasts minutes.\",\"anonymizer\":\"Status of the anonymized versions of CVs: L1 removes contact details and photo and keeps the name, L2 also removes the name. Read from the status stored on the CV, not from logs: that’s where the outcome lives. “Pending” means claimed but not yet produced.\",\"netRevenue\":\"Money actually collected in the period, refunds already subtracted. Every invoice document matches a real movement: failed payments create none, credit notes carry a negative amount. The e-invoice status is irrelevant here: it concerns compliance, not collection.\",\"aiCost\":\"Spend on model calls in the period, estimated from tokens and converted to euro at a fixed rate. Below, cost per unit produced: spend is split by kind of work, so cost per CV looks only at CV operations and cost per search only at search ones.\",\"mrrMovement\":\"How much recurring revenue came in and how much went out in the period. Plan changes are not included: moving from Starter to Business leaves no history, so it appears neither as an increase nor as a decrease.\",\"revenueOverTime\":\"Collected cash spread over time, at the same granularity as the selected period. Short windows may show a single bar: that’s the rhythm of renewals, not a defect.\",\"planDistribution\":\"How ALL organizations are distributed, not just paying ones: trials and expired included. A snapshot of today that does not change with the period.\",\"paymentHealth\":\"Money stuck or at risk. “Invoices not issued” are collected payments whose e-invoice never went out: not a revenue problem — that money is counted anyway — but a compliance one.\",\"founder\":\"How much recurring revenue comes from organizations that joined with a Founder code. Founders pay the regular price: the code only gives them the trial on Starter.\",\"signals\":\"Three c
1all lists, each for a different reason: who is about to hit their plan ceiling, who pays and barely uses, who has vanished. Click a number to see exactly those organizations.\",\"orgTable\":\"One row per organization. Every column covers the selected period except “Archive”, which is how many CVs exist right now. “Recurring” is the subscription value prorated over the period, not cash collected. Click a row for the detail.\",\"mrrHistory\":\"Value of the customer base at the end of each month, rebuilt from when each subscription started and was cancelled. The current month is measured as of now, not at month end, otherwise a subscription signed yesterday would only appear next month. Plan changes leave no history: a subscription counts at its current value for every month it was alive.\"},\"snapshotBadge\":\"today\",\"snapshotHint\":\"A snapshot of right now: it does not follow the period\"},\"adminFounderCodes\":{\"title\":\"Founder codes\",\"subtitle\":\"Personal invitation codes. Whoever redeems one gets a 30-day trial on the Starter plan.\",\"seats\":\"{used} of {total} seats used\",\"seatsLeft\":\"{count, plural, one {# seat left} other {# seats left}}\",\"notePlaceholder\":\"Note (e.g. who you're sending it to)\",\"count\":\"How many\",\"generate\":\"Generate\",\"generated\":\"{count, plural, one {# code generated} other {# codes generated}}\",\"filters\":{\"all\":\"All\",\"active\":\"Not redeemed\",\"redeemed\":\"Redeemed\",\"revoked\":\"Revoked\"},\"status\":{\"active\":\"Not redeemed\",\"redeemed\":\"Redeemed\",\"revoked\":\"Revoked\"},\"createdOn\":\"Created on {date}\",\"redeemedBy\":\"Redeemed by {who} on {date}\",\"revokedOn\":\"Revoked on {date}\",\"unknownUser\":\"unknown user\",\"copyLink\":\"Copy link\",\"copied\":\"Copied\",\"revoke\":\"Revoke\",\"revokeConfirm\":\"Revoke {code}? The link will stop working and the seat will be freed.\",\"empty\":\"No codes yet. Generate the first one above.\",\"emptyFilter\":\"No codes in this view.\",\"accessDenied\":\"Access denied\",\"accessDeniedBody\":\"App admin access required.\",\"errors\":{\"generic\":\"Something went wrong. Try again.\",\"seatsFull\":\"Not enough seats: {count} left.\",\"notRevocable\":\"This code can no longer be revoked.\"}},\"placements\":{\"newTitle\":\"Mark as placed\",\"editTitle\":\"Edit placement\",\"dialogDesc\":\"{name} will be marked as placed with the selected client.\",\"client\":\"Client\",\"selectClient\":\"Select a client\",\"noClients\":\"There are no clients yet: create one in Clients first.\",\"startDate\":\"Start date\",\"endDate\":\"End date\",\"endDateHint\":\"If the assignment has an end date, set it: the CV will become available again on its own.\",\"endBeforeStart\":\"The end date can't be before the start date.\",\"saveFailed\":\"Couldn't save the placement. Try again.\",\"sectionTitle\":\"Placements\",\"add\":\"Add\",\"empty\":\"Not placed with any client.\",\"range\":\"{start} → {end}\",\"openRange\":\"From {start}, no end date\",\"ended\":\"ended\",\"removeConfirm\":\"Delete it only if it was a mistake. If the assignment is over, set the end date instead.\",\"removeFailed\":\"Couldn't delete the placement. Try again.\",\"badgePlaced\":\"Placed\",\"badgeReleasing\":\"Available from {date}\",\"badgeTooltip\":\"Placed with {clients}\",\"availabilityLabel\":\"Availability\",\"availabilityAll\":\"All\",\"availabilityFree\":\"Available\",\"availabilityPlaced\":\"Placed\",\"availabilityReleasing\":\"Leaving within {days} days\",\"excludePlacedLabel\":\"Exclude placed CVs\",\"excludePlacedHint\":\"Anyone becoming available within {days} days stays in the results.\",\"placedExcludedCount\":\"{count, plural, one {# placed CV excluded} other {# placed CVs excluded}}\"},\"candidateName\":{\"brokenLabel\":\"Anonymised versions failed\",\"brokenHint\":\"Anonymised versions failed to generate. Open the CV to repair it before sending it to a client.\",\"supplierLabel\":\"From a supplier\",\"supplierHint\":\"Received from supplier {name}. Internal information: the client never sees it.\",\"supplierUnknownHint\":\"Received from a supplier (not specified). Internal information: the client never sees it.\"},\"importRepair\":{\"checking\":\"Checking the anonymised versions…\",\"loadError\":\"Could not read the status. Retrying…\",\"ready\":\"{count} ready\",\"working\":\"{count} generating\",\"attention\":\"{count} need attention\",\"waiting\":\"Anonymised versions are being generated. It takes a few seconds per CV.\",\"stillWorking\":\"Generation continues in the background. You can leave this page.\",\"brokenReason\":\"generation failed and the automatic retries are exhausted\",\"blockedReason\":\"the PDF cannot be processed (protected or missing): upload it again unlocked\",\"repair\":\"Repair {count} CVs\",\"repairing\":\"Repairing {done} of {total}…\",\"repairFailed\":\"Repair failed. Try again.\",\"repairNow\":\"Generate now ({count})\",\"notReadyReason\":\"not ready yet: it will not reach the client until its anonymised versions are ready\",\"checkAgain\":\"Check again\"},\"cvIntake\":{\"title\":\"Reading your candidates\",\"discarded\":\"Discarded\",\"progress\":\"Candidate {current} of {total}\",\"skip\":\"Continue in background\",\"recognized\":\"Recognized\",\"presumed\":\"presumed\",\"notDetected\":\"not detected\",\"sandbox\":{\"playing\":\"Playing…\",\"done\":\"Done\",\"skipped\":\"Skipped\",\"replay\":\"Replay\"},\"titleAnalysis\":\"Building each candidate file\",\"confirmed\":\"confirmed\",\"analyzed\":\"Analyzed\",\"analyzing\"
1:\"Analyzing\",\"waiting\":\"Waiting\",\"queued\":\"Queued\",\"anonymized\":\"Anonymized\",\"lead\":\"Lead\",\"since\":\"Since {year} · {years, plural, =1 {1 year} other {# years}}\",\"languagesCount\":\"{count, plural, =1 {1 language} other {# languages}}\",\"allAnalyzed\":\"{total, plural, =1 {1 candidate analyzed} other {# candidates analyzed}}\",\"analyzingProgress\":\"Analyzing candidate {current} of {total}\",\"phases\":{\"reading\":\"Reading the documents…\",\"skills\":\"Extracting skills…\",\"experience\":\"Assessing experience…\",\"profile\":\"Writing the profiles…\"},\"longRunHint\":\"Large batches take a few minutes: the work continues in the background.\",\"shelf\":\"{analyzed} analyzed · {anonymized} anonymized · {total} total\",\"shelfAnonymizing\":\"{ready} ready · {processing} anonymizing · {queued} queued\",\"anonymizing\":\"Anonymizing\",\"titleFinishing\":\"Generating anonymous files\",\"titleDone\":\"All candidates are ready\",\"finishingHint\":\"Alongside each original CV we are generating an anonymous version. Both are kept in your archive: the original for you, the anonymous one for clients.\",\"finishingProgress\":\"{current} of {total} ready\",\"allReady\":\"{total, plural, =1 {1 candidate ready for search} other {# candidates ready for search}}\",\"failed\":\"Failed\",\"retryScheduled\":\"Retry scheduled\",\"skipHint\":\"Nothing stops: the work goes on and your candidates will show up when ready.\",\"sidebar\":{\"title\":{\"reading\":\"Reading your CVs\",\"extracting\":\"Building candidate files\",\"anonymizing\":\"Generating anonymous versions\",\"review\":\"Waiting for your review\",\"done\":\"All done\"},\"titleDone\":\"Candidates ready\",\"gotIt\":\"Got it\",\"descriptionReview\":\"The quick pass is done. Review the candidates to start the full extraction.\",\"description\":\"Work continues in background. Until it is done, these CVs will not appear in AI search.\",\"descriptionDone\":\"All candidates from your last upload are now in the CV list and in AI search.\",\"progress\":\"{done}/{total}\"}},\"siteNav\":{\"home\":\"Home\",\"howWeReadCvs\":\"How we read CVs\",\"signIn\":\"Sign in\",\"skillMap\":\"Skill Map\",\"o
1penMenu\":\"Open menu\",\"closeMenu\":\"Close menu\",\"pricing\":\"Pricing\",\"startFree\":\"Start free\",\"language\":\"Language\"},\"howWeReadCvs\":{\"meta\":{\"title\":\"How we read CVs\",\"description\":\"From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli.\"},\"heroEyebrow\":\"Under the hood\",\"title\":\"Every CV, read the way a recruiter would\",\"subtitle\":\"Drop your PDFs in and Shortli turns each one into a structured, searchable candidate profile: role, seniority, skills, experience, summary. You review what matters, we do the rest.\",\"ctaPrimary\":\"Try it on your CVs\",\"replay\":{\"badge\":\"Live replay\",\"title\":\"This is what you see while your CVs are being read\",\"caption\":\"Simulated candidates, real choreography: the same cards fill up in the app on every import.\",\"done\":\"All CVs acquired and processed.\",\"analyzed\":\"Analyzed\",\"analyzing\":\"Analyzing\",\"waiting\":\"Waiting\",\"since\":\"Since {year} · {years, plural, =1 {1 year} other {# years}}\",\"languagesCount\":\"{count, plural, =1 {1 language} other {# languages}}\",\"lead\":\"Lead\",\"notDetected\":\"not detected\",\"confirmed\":\"confirmed\",\"presumed\":\"presumed\"},\"steps\":{\"title\":\"Six steps, one upload\",\"subtitle\":\"Everything starts the moment you drop the files. Here is what happens, in order.\",\"upload\":{\"title\":\"Upload\",\"body\":\"Drop one PDF or a hundred at once, whether they came straight from candidates or through a supplier. Files are checked on the spot, and likely duplicates are flagged before any reading starts.\"},\"quickRead\":{\"title\":\"First read\",\"body\":\"Within seconds, each file gets a first pass: is this actually a CV? If so, we pick up the name, sector, document language, latest role, city and seniority, and the candidate card takes shape.\"},\"review\":{\"title\":\"Your review\",\"body\":\"Before going any further you see the whole batch on one screen. Correct a name, drop a file that is not a CV, and decide for every duplicate whether to update the existing profile or keep both.\"},\"fullRead\":{\"title\":\"Full read\",\"body\":\"Now the entire CV is read end to end: skills, specialization, years of experience, education, spoken languages and a short professional summary, all extracted and structured.\"},\"normalise\":{\"title\":\"Clean-up\",\"body\":\"Skills are mapped to a shared vocabulary for the sector, so \\\"ReactJS\\\" and \\\"React\\\" are the same thing when you search. Each candidate gets a unique code.\"},\"anonymise\":{\"title\":\"Anonymised versions\",\"body\":\"Two extra versions of the CV are produced automatically: one without contact details and one fully anonymised, ready to be shared with a client without exposing personal data.\"}},\"extract\":{\"title\":\"What ends up in the profile\",\"subtitle\":\"Every field is extracted from the CV itself, never typed into a form.\",\"items\":[\"Name and contact details\",\"Sector and specialization\",\"Latest role and seniority\",\"Skills, grouped by type\",\"Years of experience\",\"Education\",\"Spoken languages\",\"Location\",\"Document language\",\"A short professional summary\"]},\"control\":{\"title\":\"What stays in your hands\",\"items\":[\"The review step: nothing is saved until you have looked at the batch.\",\"Duplicates: you decide whether to update the existing profile or keep both.\",\"Every field: edit the profile at any time, your version wins over the extracted one.\",\"Anonymised versions: you choose which one to send to which client.\"]},\"ctaTitle\":\"See it on your own CVs\",\"ctaSubtitle\":\"Start your free trial, upload your first CVs and watch the scene run for real.\",\"ctaButton\":\"Get started\",\"skills\":{\"title\":\"The whole IT \u0026 Digital sector, skill by skill\",\"subtitle\":\"{count} skills in our vocabulary: languages, frameworks, databases, cloud, tooling, methodologies and roles. Every way a CV can spell a skill maps to one name, so your filters match every time.\",\"exampleFrom\":\"Written in the CV\",\"exampleTo\":\"Read by Shortli\",\"hook\":\"Every skill in your database, on one map.\",\"hookLink\":\"Explore the Skill Map\"}},\"skillMapPage\":{\"meta\":{\"title\":\"Skill Map\",\"description\":\"Your whole talent pool as a single matrix of who knows what: filter by sector, search a skill, cut the noise.\"},\"heroEyebrow\":\"Talent pool\",\"title\":\"Who knows what, at a glance\",\"subtitle\":\"One matrix of candidates and skills, built from every CV you have read. Filter by sector, search a skill, set a minimum frequency and see who matches in seconds.\",\"ctaPrimary\":\"See your map\",\"ctaTitle\":\"Map your own database\",\"ctaSubtitle\":\"Start your free trial, upload your CVs and open the Skill Map.\",\"ctaButton\":\"Get started\",\"tools\":{\"title\":\"Four ways to read the map\",\"subtitle\":\"The same matrix, cut the way you need it right now.\",\"sector\":{\"title\":\"Pick a sector\",\"body\":\"Choose a sector and the map reloads with only those candidates, so every column belongs to the same trade.\"},\"search\":{\"title\":\"Search a skill\",\"body\":\"Type part of a name and only the matching columns stay: \\\"sql\\\" keeps SQL, PostgreSQL and MySQL side by side.\"},\"frequency\":{\"title\":\"Set a minimum frequency\",\"body\":\"Hide the skills only one or tw
1o candidates have and see the core of your database, from 1+ up to 10+.\"},\"pin\":{\"title\":\"Click a skill to filter\",\"body\":\"Click one or more skills and only the candidates who have all of them remain, with the count updated as you go.\"}},\"uses\":{\"title\":\"What recruiters use it for\",\"answer\":{\"title\":\"Answer a client in a minute\",\"body\":\"\\\"Do you have someone with Java, Kafka and Kubernetes?\\\" Click three columns and you have the names.\"},\"gaps\":{\"title\":\"Spot the gaps\",\"body\":\"The totals row shows how many candidates have each skill: see where your database is thin before a client asks.\"},\"strengths\":{\"title\":\"Know your strengths\",\"body\":\"Columns are sorted by how common each skill is, so your strongest areas are the first thing you see.\"}},\"act\":{\"title\":\"From the map to the shortlist\",\"items\":[\"Open or download any candidate's CV straight from their row.\",\"Add candidates to your Quick List and send them to a client together.\",\"Skills come from the same vocabulary used when your CVs are read: no manual tagging, no spelling variants.\",\"Included in every plan.\"],\"link\":\"How we read CVs\"}},\"skillMapWidget\":{\"candidates\":\"{count} candidates\",\"uniqueSkills\":\"{count} unique skills\",\"avgSkills\":\"{avg} avg skills/candidate\",\"sectorLabel\":\"Sector\",\"sectorValue\":\"IT \u0026 Digital\",\"searchLabel\":\"Search skill\",\"searchPlaceholder\":\"e.g. Java\",\"minFreqLabel\":\"Min. frequency\",\"hint\":\"Tip: click a skill to see only the candidates who have it.\",\"filteringBy\":\"Filtering by:\",\"clearAll\":\"Clear all\",\"matching\":\"{count, plural, one {# matching candidate} other {# matching candidates}}\",\"tableLabel\":\"Example Skill Map: demo candidates and their skills\",\"candidateHeader\":\"Candidate\",\"pinTitle\":\"{skill} ({count} CVs): click to filter\",\"total\":\"Total\",\"noSkills\":\"No skills match these filters.\",\"footer\":\"{candidates} candidates · {skills} skills\"},\"onboarding\":{\"narration\":{\"welcome\":\"Welcome to Shortli. Here's how it works, in four moves. [CV] First, you upload your CVs: we read each one and turn it into a searchable profile. [JD] Then you paste a job description, and it becomes a clear list of must-haves and nice-to-haves. [RANK] The AI ranks your candidates against it and explains every choice. [CLIENT] Finally, your client receives an email, a PDF report and a page to browse, with no login needed. Now, let's get you set up.\",\"name\":\"First, give your workspace a name, usually your agency or company name. It appears in the app and in its web address, and your team will see it in every invitation. You can change it later in Settings.\",\"brand\":\"Now, how your clients see you. Your logo appears on the PDF report and on the page your clients open. Your signature closes every email you send them from Shortli. Don't have them at hand? Skip this step and add them later in Settings.\",\"sendingConnected\":\"Good news: shortlists will go out from your own email address. You'll find them in your Sent folder, and client replies will come straight back to you.\",\"sendingMissing\":\"Right now, shortlists would go out from a Shortli address, and replies would still come back to you. To send them from your own address, give Shortli permission to send emails for you. It can only send, never read your mail. You can do it now or later.\",\"firstSteps\":\"You're all set. This list will guide you through your first steps, from your first CVs to your first shortlist sent. Start here: upload a few CVs and watch Shortli read them.\"}},\"mobileGate\":{\"title\":\"Shortli works on a computer for now\",\"body\":\"The app is built for a larger screen. Open it from your computer to upload CVs, search your database and send shortlists.\",\"emailLink\":\"Email me the link\",\"sent\":\"Link sent to {email}.\",\"limited\":\"You've already asked for a few links. Check your inbox.\",\"error\":\"Couldn't send the email. Try again in a moment.\",\"website\":\"Visit the website\",\"signOut\":\"Sign out\"}}
1,\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":\"$L17\"}]\n"])</script>
1<script>self.__next_f.push([1,"17:[\"$\",\"$L18\",null,{\"attribute\":\"class\",\"defaultTheme\":\"dark\",\"enableSystem\":true,\"disableTransitionOnChange\":true,\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$19\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/cdec1a59724e7eb1.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/8bbc4f17651863b6.js?dpl=dpl_EK6dPhRLyBrPYFYH3317aNzsqV49\",\"async\":true}]],\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:children:0:props:children:1:props:children:0:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:children:0:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:children:0:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:children:0:props:children:1:props:children:0:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L1a\",null,{}]]}]\n"])</script>
1<script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script>
1<script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"How we read CVs · Shortli\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"Shortli\"}],[\"$\",\"link\",\"3\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"4\",{\"rel\":\"canonical\",\"href\":\"https://shortli.ai/features/how-we-read-cvs\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"How we read CVs · Shortli\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://shortli.ai/features/how-we-read-cvs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Shortli\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://shortli.ai/opengraph-image\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:alt\",\"content\":\"Shortli\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"How we read CVs · Shortli\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"From a folder of PDFs to a searchable, anonymised talent pool: what happens to every CV you upload to Shortli.\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"https://shortli.ai/twitter-image\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/icon.png?icon.71e9e690.png\",\"sizes\":\"511x473\",\"type\":\"image/png\"}],[\"$\",\"$L1b\",\"20\",{}]]\n"])</script>
1</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.