diff --git a/web/wwwroot/css/myai.css b/web/wwwroot/css/myai.css
index 14ba18c..bf4a8d1 100644
--- a/web/wwwroot/css/myai.css
+++ b/web/wwwroot/css/myai.css
@@ -1 +1,735 @@
-:root{--bg:#041120;--bg-soft:#0a1c34;--panel:rgba(10,22,42,.82);--panel-border:rgba(255,255,255,.1);--text:#eaf1ff;--muted:#9bb0d0;--primary:#5fa0ff;--primary-strong:#8b6cff;--card-radius:28px;--shadow:0 18px 60px rgba(0,0,0,.28)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,sans-serif;background:radial-gradient(circle at top left,#12345d 0%,#071326 35%,#030915 100%);color:var(--text)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.container{width:100%;max-width:1120px;margin:0 auto;padding-left:20px;padding-right:20px}.site-shell{overflow:hidden}.header{position:sticky;top:0;z-index:20;background:rgba(3,11,23,.76);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.08)}.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:84px}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:48px;height:48px}.ai-mark{display:inline-flex;align-items:center;justify-content:center;border-radius:16px;background:linear-gradient(135deg,var(--primary),var(--primary-strong));font-weight:900;color:#fff;box-shadow:0 18px 40px rgba(95,160,255,.24)}.brand-text{display:block;font-size:1.7rem;font-weight:800}.brand small{display:block;color:var(--muted);margin-top:2px}.nav{display:flex;align-items:center;gap:32px}.nav a{color:#d7e3fb;font-weight:600}.nav a:hover{color:#fff}.menu-toggle{display:none;background:transparent;border:0;padding:8px}.menu-toggle span{display:block;width:24px;height:2px;background:#fff;margin:5px 0}.hero{padding:72px 0 48px}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:42px;align-items:center}.eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:14px;color:#8fb8ff;text-transform:uppercase;letter-spacing:.18em;font-size:.78rem;font-weight:800}.hero h1{font-size:clamp(2.3rem,5vw,4.8rem);line-height:1.02;margin:0 0 24px;letter-spacing:-.05em}.hero-text{font-size:1.12rem;line-height:1.8;color:var(--muted);max-width:650px}.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px}.btn{border-radius:999px;padding:13px 22px;font-weight:800;border:1px solid rgba(255,255,255,.12)}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-strong));border:0;color:#fff}.btn-secondary{background:rgba(255,255,255,.06);color:#fff}.section{padding:76px 0}.section-heading{max-width:720px;margin-bottom:34px}.section-heading h2,.contact h2,.ai-panel h2{font-size:clamp(2rem,4vw,3.2rem);line-height:1.05;letter-spacing:-.04em;margin:0 0 18px}.section-heading p,.contact p{color:var(--muted);font-size:1.05rem;line-height:1.8}.ai-console-card,.ai-panel,.demo-card,.contact-form{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--card-radius);box-shadow:var(--shadow)}.ai-console-card{padding:30px}.console-line{display:flex;gap:16px;align-items:center;margin:12px 0;padding:16px 18px;border-radius:18px;background:rgba(255,255,255,.05);color:#dce8ff}.console-line span{min-width:76px;color:#8fb8ff;font-weight:900}.demo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.demo-card{display:block;padding:26px;min-height:260px;transition:transform .2s ease,border-color .2s ease}.demo-card:hover{transform:translateY(-4px);border-color:rgba(95,160,255,.45)}.demo-card h3{font-size:1.55rem;margin:18px 0 12px}.demo-card p{color:var(--muted);line-height:1.7}.muted-card{opacity:.7}.product-tag{display:inline-flex;border-radius:999px;padding:7px 12px;background:rgba(95,160,255,.12);color:#b9d4ff;border:1px solid rgba(95,160,255,.18);font-weight:800;font-size:.82rem}.matcher-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.ai-panel{padding:28px}.ai-panel label,.contact-form label{display:block;margin-bottom:18px}.ai-panel label span,.contact-form label span{display:block;margin-bottom:8px;color:#c3d4f2;font-weight:700}.ai-panel input,.ai-panel textarea,.contact-form input,.contact-form textarea{width:100%;border:1px solid rgba(255,255,255,.12);border-radius:18px;background:rgba(0,0,0,.25);color:#fff;padding:15px 16px;outline:none}.ai-panel input:focus,.ai-panel textarea:focus,.contact-form input:focus,.contact-form textarea:focus{border-color:rgba(95,160,255,.65)}.file-drop{display:block;border:1px dashed rgba(143,184,255,.45);border-radius:22px;background:rgba(95,160,255,.07);padding:22px;cursor:pointer}.file-drop input{display:none}.file-drop strong{display:block;font-size:1.1rem}.file-drop span{color:var(--muted)!important;margin-top:8px}.consent-inline{display:flex;gap:12px;align-items:flex-start;margin:18px 0 22px;color:#b7c7e4;line-height:1.6}.consent-inline input{width:auto;margin-top:5px}.consent-inline label{margin:0}.result-panel{position:sticky;top:110px}.empty-result{color:var(--muted);line-height:1.8;padding:20px;border-radius:18px;background:rgba(0,0,0,.25)}.score-badge{display:inline-flex;align-items:center;justify-content:center;width:104px;height:104px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-strong));font-size:2rem;font-weight:900;margin:10px 0 20px}.result-list{padding-left:18px;color:#d7e3fb;line-height:1.8}.contact{background:rgba(255,255,255,.03)}.contact-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:32px;align-items:start}.contact-list{display:grid;gap:14px;margin-top:24px}.contact-list div{padding:18px;border-radius:20px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}.contact-list span{display:block;color:var(--muted);font-size:.88rem}.contact-form{padding:28px}.form-message{display:block;margin-top:14px}.text-success{color:#7ef2a7!important}.text-danger{color:#ff8a8a!important}.footer{padding:26px 0;border-top:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.18)}.footer-wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;color:var(--muted)}.footer-links{display:flex;gap:18px;flex-wrap:wrap}.cookie-overlay{position:fixed;left:0;right:0;bottom:20px;z-index:50;padding:0 20px}.cookie-box{max-width:980px;margin:auto;padding:20px;border-radius:24px;background:#071326;border:1px solid rgba(255,255,255,.16);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:space-between;gap:20px}.cookie-text{color:#dce8ff;line-height:1.6}.cookie-text a{color:#9cc5ff;text-decoration:underline}.cookie-actions{display:flex;gap:10px;flex-wrap:wrap}.cookie-manage{position:fixed;right:20px;bottom:20px;z-index:40}.loader-overlay{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.55);align-items:center;justify-content:center}.loader-box{padding:20px 30px;border-radius:18px;background:#071326;border:1px solid rgba(255,255,255,.16);font-weight:800}.shake{animation:shake .35s}@keyframes shake{25%{transform:translateX(-5px)}50%{transform:translateX(5px)}75%{transform:translateX(-3px)}}@media (max-width:900px){.hero-grid,.matcher-grid,.contact-grid,.demo-grid{grid-template-columns:1fr}.result-panel{position:static}.nav{position:absolute;top:84px;left:20px;right:20px;display:none;flex-direction:column;align-items:flex-start;background:#071326;border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:20px}.nav.is-open{display:flex}.menu-toggle{display:block}.cookie-box{align-items:flex-start;flex-direction:column}}@media (max-width:560px){.hero{padding-top:46px}.section{padding:56px 0}.footer-wrap{align-items:flex-start;flex-direction:column}.hero-actions .btn{width:100%;text-align:center}}
+:root {
+ --bg: #041120;
+ --bg-soft: #0a1c34;
+ --panel: rgba(10,22,42,.82);
+ --panel-border: rgba(255,255,255,.1);
+ --text: #eaf1ff;
+ --muted: #9bb0d0;
+ --primary: #5fa0ff;
+ --primary-strong: #8b6cff;
+ --card-radius: 28px;
+ --shadow: 0 18px 60px rgba(0,0,0,.28)
+}
+
+* {
+ box-sizing: border-box
+}
+
+html {
+ scroll-behavior: smooth
+}
+
+body {
+ margin: 0;
+ font-family: Inter,sans-serif;
+ background: radial-gradient(circle at top left,#12345d 0%,#071326 35%,#030915 100%);
+ color: var(--text)
+}
+
+a {
+ color: inherit;
+ text-decoration: none
+}
+
+img {
+ max-width: 100%;
+ display: block
+}
+
+.container {
+ width: 100%;
+ max-width: 1120px;
+ margin: 0 auto;
+ padding-left: 20px;
+ padding-right: 20px
+}
+
+.site-shell {
+ overflow: hidden
+}
+
+.header {
+ position: sticky;
+ top: 0;
+ z-index: 20;
+ background: rgba(3,11,23,.76);
+ backdrop-filter: blur(16px);
+ border-bottom: 1px solid rgba(255,255,255,.08)
+}
+
+.nav-wrap {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 20px;
+ min-height: 84px
+}
+
+.brand {
+ display: flex;
+ align-items: center;
+ gap: 14px
+}
+
+.brand-mark {
+ width: 48px;
+ height: 48px
+}
+
+.ai-mark {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 16px;
+ background: linear-gradient(135deg,var(--primary),var(--primary-strong));
+ font-weight: 900;
+ color: #fff;
+ box-shadow: 0 18px 40px rgba(95,160,255,.24)
+}
+
+.brand-text {
+ display: block;
+ font-size: 1.7rem;
+ font-weight: 800
+}
+
+.brand small {
+ display: block;
+ color: var(--muted);
+ margin-top: 2px
+}
+
+.nav {
+ display: flex;
+ align-items: center;
+ gap: 32px
+}
+
+ .nav a {
+ color: #d7e3fb;
+ font-weight: 600
+ }
+
+ .nav a:hover {
+ color: #fff
+ }
+
+.menu-toggle {
+ display: none;
+ background: transparent;
+ border: 0;
+ padding: 8px
+}
+
+ .menu-toggle span {
+ display: block;
+ width: 24px;
+ height: 2px;
+ background: #fff;
+ margin: 5px 0
+ }
+
+.hero {
+ padding: 72px 0 48px
+}
+
+.hero-grid {
+ display: grid;
+ grid-template-columns: 1.05fr .95fr;
+ gap: 42px;
+ align-items: center
+}
+
+.eyebrow {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ margin-bottom: 14px;
+ color: #8fb8ff;
+ text-transform: uppercase;
+ letter-spacing: .18em;
+ font-size: .78rem;
+ font-weight: 800
+}
+
+.hero h1 {
+ font-size: clamp(2.3rem,5vw,4.8rem);
+ line-height: 1.02;
+ margin: 0 0 24px;
+ letter-spacing: -.05em
+}
+
+.hero-text {
+ font-size: 1.12rem;
+ line-height: 1.8;
+ color: var(--muted);
+ max-width: 650px
+}
+
+.hero-actions {
+ display: flex;
+ gap: 14px;
+ flex-wrap: wrap;
+ margin-top: 30px
+}
+
+.btn {
+ border-radius: 999px;
+ padding: 13px 22px;
+ font-weight: 800;
+ border: 1px solid rgba(255,255,255,.12)
+}
+
+.btn-primary {
+ background: linear-gradient(135deg,var(--primary),var(--primary-strong));
+ border: 0;
+ color: #fff
+}
+
+.btn-secondary {
+ background: rgba(255,255,255,.06);
+ color: #fff
+}
+
+.section {
+ padding: 76px 0
+}
+
+.section-heading {
+ max-width: 720px;
+ margin-bottom: 34px
+}
+
+ .section-heading h2, .contact h2, .ai-panel h2 {
+ font-size: clamp(2rem,4vw,3.2rem);
+ line-height: 1.05;
+ letter-spacing: -.04em;
+ margin: 0 0 18px
+ }
+
+ .section-heading p, .contact p {
+ color: var(--muted);
+ font-size: 1.05rem;
+ line-height: 1.8
+ }
+
+.ai-console-card, .ai-panel, .demo-card, .contact-form {
+ background: var(--panel);
+ border: 1px solid var(--panel-border);
+ border-radius: var(--card-radius);
+ box-shadow: var(--shadow)
+}
+
+.ai-console-card {
+ padding: 30px
+}
+
+.console-line {
+ display: flex;
+ gap: 16px;
+ align-items: center;
+ margin: 12px 0;
+ padding: 16px 18px;
+ border-radius: 18px;
+ background: rgba(255,255,255,.05);
+ color: #dce8ff
+}
+
+ .console-line span {
+ min-width: 76px;
+ color: #8fb8ff;
+ font-weight: 900
+ }
+
+.demo-grid {
+ display: grid;
+ grid-template-columns: repeat(3,1fr);
+ gap: 20px
+}
+
+.demo-card {
+ display: block;
+ padding: 26px;
+ min-height: 260px;
+ transition: transform .2s ease,border-color .2s ease
+}
+
+ .demo-card:hover {
+ transform: translateY(-4px);
+ border-color: rgba(95,160,255,.45)
+ }
+
+ .demo-card h3 {
+ font-size: 1.55rem;
+ margin: 18px 0 12px
+ }
+
+ .demo-card p {
+ color: var(--muted);
+ line-height: 1.7
+ }
+
+.muted-card {
+ opacity: .7
+}
+
+.product-tag {
+ display: inline-flex;
+ border-radius: 999px;
+ padding: 7px 12px;
+ background: rgba(95,160,255,.12);
+ color: #b9d4ff;
+ border: 1px solid rgba(95,160,255,.18);
+ font-weight: 800;
+ font-size: .82rem
+}
+
+.matcher-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 24px;
+ align-items: start
+}
+
+.ai-panel {
+ padding: 28px
+}
+
+ .ai-panel label, .contact-form label {
+ display: block;
+ margin-bottom: 18px
+ }
+
+ .ai-panel label span, .contact-form label span {
+ display: block;
+ margin-bottom: 8px;
+ color: #c3d4f2;
+ font-weight: 700
+ }
+
+ .ai-panel input, .ai-panel textarea, .contact-form input, .contact-form textarea {
+ width: 100%;
+ border: 1px solid rgba(255,255,255,.12);
+ border-radius: 18px;
+ background: rgba(0,0,0,.25);
+ color: #fff;
+ padding: 15px 16px;
+ outline: none
+ }
+
+ .ai-panel input:focus, .ai-panel textarea:focus, .contact-form input:focus, .contact-form textarea:focus {
+ border-color: rgba(95,160,255,.65)
+ }
+
+.file-drop {
+ display: block;
+ border: 1px dashed rgba(143,184,255,.45);
+ border-radius: 22px;
+ background: rgba(95,160,255,.07);
+ padding: 22px;
+ cursor: pointer
+}
+
+ .file-drop input {
+ display: none
+ }
+
+ .file-drop strong {
+ display: block;
+ font-size: 1.1rem
+ }
+
+ .file-drop span {
+ color: var(--muted) !important;
+ margin-top: 8px
+ }
+
+.consent-inline {
+ display: flex;
+ gap: 12px;
+ align-items: flex-start;
+ margin: 18px 0 22px;
+ color: #b7c7e4;
+ line-height: 1.6
+}
+
+ .consent-inline input {
+ width: auto;
+ margin-top: 5px
+ }
+
+ .consent-inline label {
+ margin: 0
+ }
+
+.result-panel {
+ position: sticky;
+ top: 110px
+}
+
+.empty-result {
+ color: var(--muted);
+ line-height: 1.8;
+ padding: 20px;
+ border-radius: 18px;
+ background: rgba(0,0,0,.25)
+}
+
+.score-badge {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 104px;
+ height: 104px;
+ border-radius: 50%;
+ background: linear-gradient(135deg,var(--primary),var(--primary-strong));
+ font-size: 2rem;
+ font-weight: 900;
+ margin: 10px 0 20px
+}
+
+.result-list {
+ padding-left: 18px;
+ color: #d7e3fb;
+ line-height: 1.8
+}
+
+.contact {
+ background: rgba(255,255,255,.03)
+}
+
+.contact-grid {
+ display: grid;
+ grid-template-columns: .9fr 1.1fr;
+ gap: 32px;
+ align-items: start
+}
+
+.contact-list {
+ display: grid;
+ gap: 14px;
+ margin-top: 24px
+}
+
+ .contact-list div {
+ padding: 18px;
+ border-radius: 20px;
+ background: rgba(255,255,255,.05);
+ border: 1px solid rgba(255,255,255,.08)
+ }
+
+ .contact-list span {
+ display: block;
+ color: var(--muted);
+ font-size: .88rem
+ }
+
+.contact-form {
+ padding: 28px
+}
+
+.form-message {
+ display: block;
+ margin-top: 14px
+}
+
+.text-success {
+ color: #7ef2a7 !important
+}
+
+.text-danger {
+ color: #ff8a8a !important
+}
+
+.footer {
+ padding: 26px 0;
+ border-top: 1px solid rgba(255,255,255,.08);
+ background: rgba(0,0,0,.18)
+}
+
+.footer-wrap {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 20px;
+ flex-wrap: wrap;
+ color: var(--muted)
+}
+
+.footer-links {
+ display: flex;
+ gap: 18px;
+ flex-wrap: wrap
+}
+
+.cookie-overlay {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 20px;
+ z-index: 50;
+ padding: 0 20px
+}
+
+.cookie-box {
+ max-width: 980px;
+ margin: auto;
+ padding: 20px;
+ border-radius: 24px;
+ background: #071326;
+ border: 1px solid rgba(255,255,255,.16);
+ box-shadow: var(--shadow);
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 20px
+}
+
+.cookie-text {
+ color: #dce8ff;
+ line-height: 1.6
+}
+
+ .cookie-text a {
+ color: #9cc5ff;
+ text-decoration: underline
+ }
+
+.cookie-actions {
+ display: flex;
+ gap: 10px;
+ flex-wrap: wrap
+}
+
+.cookie-manage {
+ position: fixed;
+ bottom: 20px;
+ z-index: 40
+}
+
+.loader-overlay {
+ position: fixed;
+ inset: 0;
+ z-index: 80;
+ background: rgba(0,0,0,.55);
+ align-items: center;
+ justify-content: center
+}
+
+.loader-box {
+ padding: 20px 30px;
+ border-radius: 18px;
+ background: #071326;
+ border: 1px solid rgba(255,255,255,.16);
+ font-weight: 800
+}
+
+.shake {
+ animation: shake .35s
+}
+
+@keyframes shake {
+ 25% {
+ transform: translateX(-5px)
+ }
+
+ 50% {
+ transform: translateX(5px)
+ }
+
+ 75% {
+ transform: translateX(-3px)
+ }
+}
+
+@media (max-width:900px) {
+ .hero-grid, .matcher-grid, .contact-grid, .demo-grid {
+ grid-template-columns: 1fr
+ }
+
+ .result-panel {
+ position: static
+ }
+
+ .nav {
+ position: absolute;
+ top: 84px;
+ left: 20px;
+ right: 20px;
+ display: none;
+ flex-direction: column;
+ align-items: flex-start;
+ background: #071326;
+ border: 1px solid rgba(255,255,255,.12);
+ border-radius: 20px;
+ padding: 20px
+ }
+
+ .nav.is-open {
+ display: flex
+ }
+
+ .menu-toggle {
+ display: block
+ }
+
+ .cookie-box {
+ align-items: flex-start;
+ flex-direction: column
+ }
+}
+
+@media (max-width:560px) {
+ .hero {
+ padding-top: 46px
+ }
+
+ .section {
+ padding: 56px 0
+ }
+
+ .footer-wrap {
+ align-items: flex-start;
+ flex-direction: column
+ }
+
+ .hero-actions .btn {
+ width: 100%;
+ text-align: center
+ }
+}
+
+/* MyAi brand + main-page language selector */
+.brand-mark img {
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+ filter: drop-shadow(0 16px 26px rgba(95,160,255,.24))
+}
+
+.nav-actions {
+ display: flex;
+ align-items: center;
+ gap: 12px
+}
+
+.lang-switch {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 6px;
+ border-radius: 18px;
+ background: rgba(255,255,255,.04);
+ border: 1px solid rgba(255,255,255,.1)
+}
+
+.lang-flag {
+ width: 46px;
+ height: 32px;
+ padding: 3px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid transparent;
+ border-radius: 12px;
+ background: transparent;
+ cursor: pointer;
+ opacity: .78;
+ transition: transform .2s ease,border-color .2s ease,background-color .2s ease,opacity .2s ease
+}
+
+ .lang-flag img {
+ width: 100%;
+ height: 100%;
+ display: block;
+ border-radius: 8px;
+ object-fit: cover;
+ box-shadow: 0 8px 18px rgba(0,0,0,.18)
+ }
+
+ .lang-flag:hover {
+ opacity: 1;
+ transform: translateY(-1px)
+ }
+
+ .lang-flag[aria-pressed=true] {
+ opacity: 1;
+ border-color: rgba(95,160,255,.65);
+ background: rgba(95,160,255,.1)
+ }
+
+.banner-card {
+ overflow: hidden
+}
+
+.showcase-banner {
+ width: 100%;
+ border-radius: 22px;
+ margin-bottom: 18px;
+ border: 1px solid rgba(255,255,255,.12);
+ box-shadow: 0 20px 55px rgba(0,0,0,.22)
+}
+
+.console-line b {
+ font-weight: 700;
+ color: #dce8ff
+}
+
+@media (max-width:900px) {
+ .nav-actions {
+ margin-left: auto
+ }
+
+ .nav-wrap {
+ position: relative
+ }
+
+ .menu-toggle {
+ order: 4
+ }
+
+ .nav {
+ z-index: 30
+ }
+
+ .lang-switch {
+ padding: 4px
+ }
+
+ .lang-flag {
+ width: 42px;
+ height: 30px
+ }
+}
+
+@media (max-width:560px) {
+ .brand-text {
+ font-size: 1.35rem
+ }
+
+ .brand small {
+ display: none
+ }
+
+ .brand-mark {
+ width: 42px;
+ height: 42px
+ }
+
+ .nav-actions {
+ gap: 6px
+ }
+
+ .lang-switch {
+ gap: 4px
+ }
+
+ .lang-flag {
+ width: 36px;
+ height: 27px
+ }
+
+ .showcase-banner {
+ border-radius: 18px
+ }
+}
diff --git a/web/wwwroot/cv-matcher/index.html b/web/wwwroot/cv-matcher/index.html
index 809b42c..8c60122 100644
--- a/web/wwwroot/cv-matcher/index.html
+++ b/web/wwwroot/cv-matcher/index.html
@@ -11,6 +11,8 @@
+
+
@@ -21,79 +23,177 @@
-
-
AI CV Matcher
-
Upload your CV, add a job link, and see how well they match.
-
The backend should extract text from the PDF, create RAG context from your CV, retrieve relevant experience for the job, then score strengths, gaps and next actions.
-
+
AI CV Matcher
+
Upload your CV, add a job link, and see how well they match.
+
The backend should extract text from the PDF, create RAG context from your CV, retrieve relevant experience for the job, then score strengths, gaps and next actions.
+
-
-
1 PDF text extraction
-
2 CV chunking + embeddings
-
3 Job URL/description parsing
-
4 Match score + evidence
+
+
+
+ 1
+ PDF text extraction
+
+
+ 2
+ CV chunking + embeddings
+
+
+ 3
+ Job URL/description parsing
+
+
+ 4
+ Match score + evidence
+
-
-
- Result
- Match analysis
- Upload a CV and provide a job link or description to generate a result.
+ Result
+ Match analysis
+ Upload a CV and provide a job link or description to generate a result.
-
-
-
+
-
-
- Cookies We use necessary cookies and, with your consent, analytics through Google Tag Manager.
Privacy policy .
Reject Necessary only Accept analytics
- Cookie settings
-
+
+
+
+
+
Cookies
+
+
We use necessary cookies and, with your consent, analytics through Google Tag Manager.
+
Privacy policy .
+
+
+ Reject
+ Necessary only
+ Accept analytics
+
+
+
+ Cookie settings