DUSUNEN-AI-Lab / index.html
GoktugD's picture
Feature DUSUNEN Oku and refresh the cross-modal portfolio
f2ba87c verified
Raw
History Blame Contribute Delete
22.8 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#080b14">
<meta name="description" content="Göktuğ Düşünen — open Turkish AI, retrieval and security systems with reproducible evidence.">
<title>Göktuğ Düşünen · Turkish AI Systems</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet">
<style>
:root {
--bg: #080b14;
--surface: rgba(18, 24, 42, .72);
--surface-strong: #12182a;
--line: rgba(255, 255, 255, .09);
--text: #f5f7ff;
--muted: #9ca7bd;
--violet: #a78bfa;
--cyan: #58d5e8;
--lime: #b8f28d;
--max: 1160px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
color: var(--text);
background:
radial-gradient(circle at 10% -10%, rgba(99, 102, 241, .25), transparent 34rem),
radial-gradient(circle at 95% 20%, rgba(34, 211, 238, .13), transparent 30rem),
var(--bg);
font-family: "Manrope", sans-serif;
min-height: 100vh;
overflow-x: hidden;
}
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
opacity: .19;
background-image:
linear-gradient(var(--line) 1px, transparent 1px),
linear-gradient(90deg, var(--line) 1px, transparent 1px);
background-size: 52px 52px;
mask-image: linear-gradient(to bottom, black, transparent 75%);
}
a { color: inherit; }
.shell { width: min(var(--max), calc(100% - 40px)); margin: 0 auto; }
nav {
height: 84px;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: 11px; text-decoration: none; font-weight: 800; }
.brand-mark {
width: 32px; height: 32px; display: grid; place-items: center;
border: 1px solid rgba(167, 139, 250, .5); border-radius: 10px;
background: rgba(167, 139, 250, .1); color: var(--violet);
font-family: "DM Mono"; font-size: 13px;
}
.nav-links { display: flex; align-items: center; gap: 26px; }
.nav-links a { text-decoration: none; color: var(--muted); font-size: 14px; font-weight: 600; }
.nav-links a:hover { color: var(--text); }
.hero {
min-height: 610px;
display: grid;
grid-template-columns: 1.35fr .65fr;
align-items: center;
gap: 80px;
padding: 90px 0 70px;
}
.hero > * { min-width: 0; }
.eyebrow, .kicker {
display: inline-flex; align-items: center; gap: 9px;
color: var(--cyan); font: 500 12px/1.2 "DM Mono";
text-transform: uppercase; letter-spacing: .13em;
}
.eyebrow::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 20px var(--cyan); }
h1 { margin: 25px 0 24px; font-size: clamp(54px, 7vw, 92px); line-height: .98; letter-spacing: -.065em; }
.gradient { color: transparent; background: linear-gradient(100deg, #fff 10%, var(--violet) 55%, var(--cyan)); background-clip: text; }
.lead { max-width: 700px; margin: 0; color: var(--muted); font-size: clamp(17px, 2vw, 21px); line-height: 1.75; }
.lead strong { color: var(--text); font-weight: 600; }
.actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.button {
display: inline-flex; align-items: center; justify-content: center; gap: 9px;
min-height: 48px; padding: 0 19px; border-radius: 13px;
border: 1px solid var(--line); text-decoration: none; font-weight: 700; font-size: 14px;
transition: transform .2s, background .2s, border-color .2s;
}
.button:hover { transform: translateY(-2px); border-color: rgba(255,255,255,.25); }
.button.primary { color: #080b14; background: var(--text); }
.button.secondary { background: rgba(255,255,255,.04); }
.portrait-wrap { position: relative; justify-self: end; }
.portrait-wrap::before { content: ""; position: absolute; inset: -26px; border: 1px solid var(--line); border-radius: 50%; animation: spin 18s linear infinite; }
.portrait-wrap::after { content: "MODELS / DATA / SYSTEMS"; position: absolute; left: -44px; bottom: 8px; padding: 10px 14px; color: var(--lime); background: #101525; border: 1px solid var(--line); border-radius: 10px; font: 500 10px "DM Mono"; letter-spacing: .12em; }
.portrait { width: min(280px, 30vw); aspect-ratio: 1; object-fit: cover; border-radius: 50%; border: 8px solid rgba(255,255,255,.05); filter: saturate(.85) contrast(1.05); }
@keyframes spin { to { transform: rotate(360deg); } }
.proof-strip {
display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 0 82px;
border: 1px solid var(--line); border-radius: 18px; overflow: hidden;
background: rgba(255,255,255,.025); backdrop-filter: blur(18px);
}
.proof { padding: 22px 24px; border-right: 1px solid var(--line); }
.proof:last-child { border-right: 0; }
.proof strong { display: block; font-size: 28px; letter-spacing: -.04em; }
.proof span { color: var(--muted); font: 400 10px/1.4 "DM Mono"; letter-spacing: .08em; text-transform: uppercase; }
section { padding: 82px 0; border-top: 1px solid var(--line); }
.section-head { display: grid; grid-template-columns: .55fr 1.45fr; gap: 50px; margin-bottom: 42px; }
h2 { margin: 0; font-size: clamp(32px, 5vw, 54px); line-height: 1.05; letter-spacing: -.045em; }
.section-copy { margin: 0; color: var(--muted); font-size: 17px; line-height: 1.7; max-width: 700px; }
.projects { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; }
.project {
position: relative; min-height: 270px; padding: 28px; overflow: hidden;
border: 1px solid var(--line); border-radius: 22px; background: var(--surface);
text-decoration: none; backdrop-filter: blur(18px);
transition: transform .25s, border-color .25s, background .25s;
}
.project:hover { transform: translateY(-4px); border-color: rgba(167,139,250,.4); background: rgba(25,33,56,.84); }
.project.large { grid-column: span 7; }
.project.small { grid-column: span 5; }
a.project::after { content: "↗"; position: absolute; top: 25px; right: 27px; color: var(--muted); font-size: 20px; }
.project-no { color: var(--violet); font: 500 11px "DM Mono"; letter-spacing: .13em; }
.project h3 { margin: 64px 0 12px; max-width: 430px; font-size: 26px; letter-spacing: -.03em; }
.project p { margin: 0; max-width: 510px; color: var(--muted); line-height: 1.65; }
.project.featured-oku {
min-height: 450px; background-image:
linear-gradient(180deg, rgba(7,11,26,.04) 30%, rgba(7,11,26,.98) 76%),
url("assets/oku-hero.png");
background-size: cover; background-position: left center;
}
.project.featured-oku h3 { margin-top: 245px; }
.project.featured-oku p { color: #c3cee4; }
.tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 22px; }
.tag { padding: 6px 9px; border: 1px solid var(--line); border-radius: 7px; color: #bac4d7; font: 400 10px "DM Mono"; }
.pipeline { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; counter-reset: stage; }
.stage { position: relative; min-height: 190px; padding: 24px; border: 1px solid var(--line); border-radius: 17px; background: rgba(255,255,255,.025); }
.stage::before { counter-increment: stage; content: "0" counter(stage); display: block; color: var(--violet); font: 500 11px "DM Mono"; letter-spacing: .13em; margin-bottom: 36px; }
.stage:not(:last-child)::after { content: "→"; position: absolute; z-index: 2; right: -18px; top: 50%; width: 26px; height: 26px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: var(--bg); color: var(--cyan); }
.stage strong { display: block; margin-bottom: 8px; font-size: 16px; }
.stage p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.stack { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.stack-item { padding: 22px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.025); }
.stack-item span { display: block; color: var(--cyan); font: 500 10px "DM Mono"; text-transform: uppercase; letter-spacing: .12em; margin-bottom: 10px; }
.stack-item strong { font-size: 15px; }
footer { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 38px 0 50px; color: var(--muted); font-size: 13px; }
footer a { color: var(--text); text-decoration: none; }
@media (max-width: 800px) {
.nav-links a:first-child { display: none; }
.hero { grid-template-columns: 1fr; gap: 70px; padding-top: 70px; }
.portrait-wrap { justify-self: center; }
.portrait { width: 210px; }
.section-head { grid-template-columns: 1fr; gap: 22px; }
.project.large, .project.small { grid-column: span 12; }
.stack { grid-template-columns: repeat(2, 1fr); }
.proof-strip { grid-template-columns: repeat(2, 1fr); }
.proof:nth-child(2) { border-right: 0; }
.proof:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
.pipeline { grid-template-columns: repeat(2, 1fr); }
.stage::after { display: none !important; }
}
@media (max-width: 600px) {
.shell { width: calc(100% - 28px); max-width: var(--max); }
nav { height: 72px; }
.nav-links { display: none; }
.hero { min-height: auto; padding: 62px 0; }
.eyebrow { display: flex; max-width: 100%; font-size: 9px; letter-spacing: .08em; line-height: 1.5; overflow-wrap: anywhere; }
h1 { font-size: 40px; overflow-wrap: anywhere; }
.lead { overflow-wrap: anywhere; }
.actions { display: grid; grid-template-columns: 1fr; }
.button { width: 100%; }
section { padding: 62px 0; }
.project { padding: 23px; }
.stack { grid-template-columns: 1fr; }
.proof-strip, .pipeline { grid-template-columns: 1fr; }
.proof { border-right: 0; border-bottom: 1px solid var(--line); }
.proof:last-child { border-bottom: 0; }
footer { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
html { scroll-behavior: auto; }
.portrait-wrap::before { animation: none; }
* { transition-duration: 0s !important; }
}
</style>
</head>
<body>
<div class="shell">
<nav>
<a class="brand" href="#top"><span class="brand-mark">GD</span><span>Göktuğ Düşünen</span></a>
<div class="nav-links">
<a href="#work">DUSUNEN</a>
<a href="#nanosoc">NanoSOC1</a>
<a href="https://github.com/Goktug-Dusunen" target="_blank" rel="noreferrer">GitHub ↗</a>
</div>
</nav>
<main id="top">
<header class="hero">
<div>
<div class="eyebrow">Turkish AI · OCR · speech · retrieval · security</div>
<h1>I build Turkish AI.<br><span class="gradient">End to end.</span></h1>
<p class="lead">I'm Göktuğ. I turn raw data into <strong>trained models, reproducible benchmarks and working inference products.</strong> Every claim links back to an artifact you can inspect, run and measure.</p>
<div class="actions">
<a class="button primary" href="https://huggingface.co/spaces/GoktugD/DUSUNEN-Oku-Demo" target="_blank" rel="noreferrer">Try DUSUNEN Oku <span></span></a>
<a class="button secondary" href="https://huggingface.co/GoktugD/DUSUNEN-Oku-62M-v1" target="_blank" rel="noreferrer">Inspect the model <span></span></a>
</div>
</div>
<div class="portrait-wrap">
<img class="portrait" src="https://cdn-avatars.huggingface.co/v1/production/uploads/noauth/ZSbELOIjcBxAKAL92_A-z.jpeg" alt="Göktuğ Düşünen">
</div>
</header>
<div class="proof-strip" aria-label="DUSUNEN project facts">
<div class="proof"><strong>250K</strong><span>word-disjoint OCR images</span></div>
<div class="proof"><strong>244M</strong><span>compact Turkish ASR</span></div>
<div class="proof"><strong>100K</strong><span>curated train triplets</span></div>
<div class="proof"><strong>5</strong><span>held-out retrieval tasks</span></div>
</div>
<section id="work">
<div class="section-head">
<div class="kicker">01 / Flagship stack</div>
<div>
<h2>DUSUNEN Model Lab.</h2>
<p class="section-copy">A measured Turkish AI program across vision, speech and search: compact OCR, ASR, text restoration, retrieval, pinned benchmarks and live inference.</p>
</div>
</div>
<div class="projects">
<a class="project large featured-oku" href="https://huggingface.co/GoktugD/DUSUNEN-Oku-62M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / TURKISH OCR</div>
<h3>DUSUNEN Oku 62M · Turkish OCR</h3>
<p>A compact recognizer for cropped printed Turkish words: 98.39% exact match and 0.24% CER on 12,500 vocabulary-disjoint test images.</p>
<div class="tags"><span class="tag">98.39% EXACT</span><span class="tag">0.24% CER</span><span class="tag">LIVE DEMO</span></div>
</a>
<a class="project small" href="https://huggingface.co/GoktugD/DUSUNEN-Dinle-244M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / TURKISH ASR</div>
<h3>DUSUNEN Dinle 244M</h3>
<p>Compact Turkish speech recognition with 14.41% WER on FLEURS and a measured 12.83% relative improvement over untouched Whisper-small.</p>
<div class="tags"><span class="tag">WHISPER</span><span class="tag">14.41% WER</span><span class="tag">AUDIO DEMO</span></div>
</a>
<a class="project small" href="https://huggingface.co/GoktugD/DUSUNEN-Nokta-68M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / TEXT RESTORATION</div>
<h3>DUSUNEN Nokta 68M</h3>
<p>One pass for Turkish punctuation and true-casing, reaching 70.43% punctuation macro F1 and 94.04% joint token accuracy.</p>
<div class="tags"><span class="tag">68M PARAMS</span><span class="tag">JOINT LABELS</span><span class="tag">ONNX</span></div>
</a>
<a class="project large" href="https://huggingface.co/GoktugD/DUSUNEN-Atlas-278M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / MATRYOSHKA RETRIEVER</div>
<h3>DUSUNEN Atlas 278M</h3>
<p>One Turkish retrieval model with six useful embedding sizes. At 128 dimensions it cuts index storage by 83.3% while reaching 94.75% held-out hard-negative accuracy.</p>
<div class="tags"><span class="tag">768→64-D</span><span class="tag">MATRYOSHKA</span><span class="tag">BF16</span></div>
</a>
<a class="project small" href="https://huggingface.co/GoktugD/DUSUNEN-Pusula-118M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / COMPACT RETRIEVER</div>
<h3>DUSUNEN Pusula 118M</h3>
<p>A 117.7M encoder with six selectable dimensions, a 91.7% index-size reduction at 32-D, and a pinned five-task Turkish scorecard.</p>
<div class="tags"><span class="tag">384→32-D</span><span class="tag">MATRYOSHKA</span><span class="tag">5-TASK MTEB</span></div>
</a>
<a class="project small" href="https://huggingface.co/GoktugD/DUSUNEN-Mercek-118M-v1" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / CROSS-ENCODER</div>
<h3>DUSUNEN Mercek 118M</h3>
<p>LambdaLoss learning-to-rank over 50K lists, with measured MRR@10 and nDCG@10 gains over its untouched multilingual base on 102,400 frozen pairs.</p>
<div class="tags"><span class="tag">LAMBDA LOSS</span><span class="tag">102.4K PAIRS</span><span class="tag">HELD-OUT UPLIFT</span></div>
</a>
<a class="project large" href="https://huggingface.co/datasets/GoktugD/DUSUNEN-Turkish-Retrieval-Benchmark-v1" target="_blank" rel="noreferrer">
<div class="project-no">BENCHMARK / FIVE TURKISH TASKS</div>
<h3>One protocol. Four systems. Raw evidence.</h3>
<p>TurHistQuad, XQuAD, WebFAQ, MKQA and Belebele through the official MTEB evaluator, with pinned revisions and explicit model prompt formats.</p>
<div class="tags"><span class="tag">MTEB</span><span class="tag">NDCG@10</span><span class="tag">REPRODUCIBLE</span></div>
</a>
<a class="project small" href="https://huggingface.co/datasets/GoktugD/DUSUNEN-HardNegatives-50K-v1" target="_blank" rel="noreferrer">
<div class="project-no">DATASET / MINED NEGATIVES</div>
<h3>50K difficult training triples</h3>
<p>Model-mined negatives from a 70K candidate pool, with lexical safeguards, zero fallbacks, checksums and an exact-overlap audit.</p>
<div class="tags"><span class="tag">HNSW</span><span class="tag">PARQUET</span><span class="tag">0 EXACT OVERLAP</span></div>
</a>
<a class="project large" href="https://huggingface.co/spaces/GoktugD/DUSUNEN-Cited-RAG" target="_blank" rel="noreferrer">
<div class="project-no">SPACE / CITED RETRIEVAL</div>
<h3>Ask in Turkish. Inspect the sources.</h3>
<p>A free browser-only retrieval demo that selects extractive evidence and links every answer fragment to its source. No hosted model API and no hidden generation step.</p>
<div class="tags"><span class="tag">CITED RAG</span><span class="tag">TRANSFORMERS.JS</span><span class="tag">0 PAID API</span></div>
</a>
<a class="project small" href="https://huggingface.co/spaces/GoktugD/DUSUNEN-Vector-Lab" target="_blank" rel="noreferrer">
<div class="project-no">SPACE / VECTOR BUDGET LAB</div>
<h3>Watch retrieval change from 384-D to 32-D</h3>
<p>One browser query, six live Matryoshka vector budgets, instant ranking changes and explicit index-size trade-offs.</p>
<div class="tags"><span class="tag">384→32-D</span><span class="tag">ONNX Q8</span><span class="tag">LOCAL INFERENCE</span></div>
</a>
</div>
</section>
<section id="nanosoc">
<div class="section-head">
<div class="kicker">02 / Security AI</div>
<div>
<h2>NanoSOC1:8B.</h2>
<p class="section-copy">A gated Foundation-Sec 8B QLoRA system for structured SOC triage, evidence correlation, MITRE ATT&amp;CK attribution and human-approved response—published with both its benchmark gains and its failure modes.</p>
</div>
</div>
<div class="projects">
<a class="project large" href="https://huggingface.co/GoktugD/nanosoc1-8b" target="_blank" rel="noreferrer">
<div class="project-no">MODEL / SECURITY COPILOT</div>
<h3>NanoSOC1 8B · v6 evidence stack</h3>
<p>Two task-routed adapters, a 5,492-document security RAG corpus, model-security gates and immutable audit evidence. Built to assist analysts—not to act as an autonomous IDS or response engine.</p>
<div class="tags"><span class="tag">FOUNDATION-SEC 8B</span><span class="tag">QLORA</span><span class="tag">HUMAN IN THE LOOP</span></div>
</a>
<a class="project small" href="https://huggingface.co/spaces/GoktugD/nanosoc1-security-lab" target="_blank" rel="noreferrer">
<div class="project-no">SPACE / EVALUATION LAB</div>
<h3>Inspect the evidence, including failures</h3>
<p>A browser-only evaluation companion with frozen holdout metrics, sanitized triage walkthroughs, architecture boundaries and explicit false-positive limitations.</p>
<div class="tags"><span class="tag">96.97% DNS/C2 RECALL</span><span class="tag">FROZEN HOLDOUT</span><span class="tag">0 PAID API</span></div>
</a>
</div>
</section>
<section>
<div class="section-head">
<div class="kicker">03 / Pipeline</div>
<div>
<h2>No missing middle.</h2>
<p class="section-copy">The work connects data decisions to measured model behavior and finally to something people can use.</p>
</div>
</div>
<div class="pipeline">
<div class="stage"><strong>Curate</strong><p>Normalize, filter, deduplicate, checksum and publish the exact training split.</p></div>
<div class="stage"><strong>Train</strong><p>Contrastive fine-tuning with memory-aware batches on a single 8 GB GPU.</p></div>
<div class="stage"><strong>Mine</strong><p>Retrieve difficult negatives, reject risky matches and record every mining decision.</p></div>
<div class="stage"><strong>Evaluate</strong><p>Pinned held-out data, exact vector search, strong baselines and raw JSON results.</p></div>
<div class="stage"><strong>Ship</strong><p>Open weights, documented inference and a live semantic-search experience.</p></div>
</div>
</section>
<section>
<div class="section-head">
<div class="kicker">04 / Engineering</div>
<h2>Built for scrutiny, not screenshots.</h2>
</div>
<div class="stack">
<div class="stack-item"><span>Provenance</span><strong>Licenses · revisions · checksums</strong></div>
<div class="stack-item"><span>Training</span><strong>PyTorch · CUDA · BF16</strong></div>
<div class="stack-item"><span>Evaluation</span><strong>FAISS · MRR · nDCG · recall</strong></div>
<div class="stack-item"><span>Delivery</span><strong>HF Hub · ONNX · Static Spaces</strong></div>
</div>
</section>
</main>
<footer>
<span>Train it. Measure it. Ship it.</span>
<span><a href="https://huggingface.co/GoktugD" target="_blank" rel="noreferrer">Hugging Face</a> · <a href="https://github.com/Goktug-Dusunen" target="_blank" rel="noreferrer">GitHub</a> · <a href="https://huggingface.co/Werea-co" target="_blank" rel="noreferrer">Werea</a></span>
</footer>
</div>
</body>
</html>