README / index.html
FoodDesert's picture
Update index.html
5fdb4b9 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grounded Systems</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=DM+Mono:wght@300;400;500&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0e0f11;
--surface: #16181c;
--border: #2a2d33;
--text: #e8e9eb;
--muted: #6b7280;
--accent: #c8b89a;
--accent-dim: #6b5d47;
--green: #4ade80;
--tag-bg: #1e2025;
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
background: var(--bg);
color: var(--text);
font-family: 'DM Mono', monospace;
font-weight: 300;
min-height: 100vh;
padding: 0;
overflow-x: hidden;
}
/* Subtle noise texture overlay */
body::before {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 0;
opacity: 0.4;
}
.page {
position: relative;
z-index: 1;
max-width: 760px;
margin: 0 auto;
padding: 80px 32px 120px;
}
/* Header */
header {
margin-bottom: 72px;
opacity: 0;
animation: fadeUp 0.6s ease forwards;
}
.wordmark {
font-family: 'DM Serif Display', serif;
font-size: clamp(28px, 5vw, 42px);
letter-spacing: -0.02em;
color: var(--text);
line-height: 1;
margin-bottom: 6px;
}
.wordmark span {
color: var(--accent);
font-style: italic;
}
.tagline {
font-size: 11px;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--muted);
margin-top: 14px;
}
/* Divider */
.rule {
width: 40px;
height: 1px;
background: var(--accent-dim);
margin: 28px 0;
}
/* Framing paragraph */
.framing {
font-size: 14px;
line-height: 1.8;
color: #9ca3af;
max-width: 580px;
opacity: 0;
animation: fadeUp 0.6s ease 0.15s forwards;
}
/* Projects section */
.section-label {
font-size: 10px;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--accent-dim);
margin-bottom: 28px;
margin-top: 72px;
opacity: 0;
animation: fadeUp 0.6s ease 0.3s forwards;
}
/* Project cards */
.projects {
display: flex;
flex-direction: column;
gap: 2px;
}
.project {
background: var(--surface);
border: 1px solid var(--border);
padding: 28px 32px;
position: relative;
transition: border-color 0.2s ease, background 0.2s ease;
opacity: 0;
animation: fadeUp 0.5s ease forwards;
text-decoration: none;
color: inherit;
display: block;
}
.project:nth-child(1) { animation-delay: 0.4s; border-radius: 4px 4px 0 0; }
.project:nth-child(2) { animation-delay: 0.5s; border-radius: 0; }
.project:nth-child(3) { animation-delay: 0.6s; border-radius: 0 0 4px 4px; }
.project:hover {
border-color: var(--accent-dim);
background: #1a1c21;
}
.project:hover .project-arrow {
opacity: 1;
transform: translateX(0);
}
.project-header {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 16px;
margin-bottom: 10px;
}
.project-name {
font-family: 'DM Serif Display', serif;
font-size: 18px;
color: var(--text);
letter-spacing: -0.01em;
}
.project-arrow {
font-size: 12px;
color: var(--accent);
opacity: 0;
transform: translateX(-6px);
transition: opacity 0.2s ease, transform 0.2s ease;
flex-shrink: 0;
}
.project-desc {
font-size: 13px;
line-height: 1.7;
color: #6b7280;
margin-bottom: 18px;
max-width: 560px;
}
.project-desc strong {
color: #9ca3af;
font-weight: 400;
}
.project-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.tag {
font-size: 10px;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--muted);
background: var(--tag-bg);
border: 1px solid var(--border);
padding: 3px 8px;
border-radius: 2px;
}
.stat {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 10px;
letter-spacing: 0.08em;
color: var(--green);
background: rgba(74, 222, 128, 0.06);
border: 1px solid rgba(74, 222, 128, 0.15);
padding: 3px 8px;
border-radius: 2px;
}
.stat::before {
content: '●';
font-size: 6px;
}
/* Footer */
footer {
margin-top: 80px;
padding-top: 28px;
border-top: 1px solid var(--border);
font-size: 11px;
color: var(--muted);
letter-spacing: 0.06em;
opacity: 0;
animation: fadeUp 0.5s ease 0.8s forwards;
}
@keyframes fadeUp {
from { opacity: 0; transform: translateY(14px); }
to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 480px) {
.page { padding: 48px 20px 80px; }
.project { padding: 22px 20px; }
}
</style>
</head>
<body>
<div class="page">
<header>
<div class="wordmark">Grounded <span>Systems</span></div>
<div class="tagline">Independent ML Research &amp; Engineering</div>
<div class="rule"></div>
<p class="framing">
Independent research and engineering work in retrieval systems, structured prediction,
and language-grounded generation. Projects focus on controlled-vocabulary mapping,
embedding-based retrieval, and constrained LLM output, with a focus on domains where
precision and reliability matter more than open-ended generation.
</p>
</header>
<div class="section-label">Projects</div>
<div class="projects">
<a class="project" href="https://huggingface.co/FoodDesert/Boring_Embeddings" target="_blank" rel="noopener">
<div class="project-header">
<div class="project-name">Boring Embeddings</div>
<div class="project-arrow"></div>
</div>
<p class="project-desc">
<strong>Negative textual inversion embeddings for generative image models.</strong>
Trained on community-engagement signals rather than manually curated defect lists,
capturing unnamed visual patterns associated with low-quality outputs that tag-based
approaches cannot express. Used as a default negative embedding in several popular
Stable Diffusion workflows.
</p>
<div class="project-tags">
<span class="stat">10M+ generations</span>
<span class="tag">Textual Inversion</span>
<span class="tag">Representation Learning</span>
<span class="tag">Generative Models</span>
</div>
</a>
<a class="project" href="https://huggingface.co/spaces/FoodDesert/Prompt_Squirrel_RAG" target="_blank" rel="noopener">
<div class="project-header">
<div class="project-name">Prompt Squirrel — Tag Retrieval System</div>
<div class="project-arrow"></div>
</div>
<p class="project-desc">
<strong>Retrieval-augmented system mapping natural language to a controlled vocabulary.</strong>
Three-stage pipeline: LLM query reformulation into tag-like search phrases,
HNSW approximate nearest-neighbor retrieval over fine-tuned FastText embeddings,
and constrained LLM selection restricted to valid vocabulary items,
eliminating hallucination of out-of-vocabulary terms entirely.
Embeddings fine-tuned via alias-augmentation: domain alias metadata is injected
as controlled noise during training, pulling misspellings and paraphrases toward
their canonical forms in embedding space. Context rescoring uses late fusion of
dense embedding similarity with a co-occurrence signal derived from
tag co-occurrence pseudo-documents reduced via SVD. Modular per-category LLM query strategies
run in parallel; listwise reranking chosen over pointwise specifically to enforce
consistency across the selected tag set. Generalizes to any domain requiring
unstructured-to-taxonomy mapping.
</p>
<div class="project-tags">
<span class="tag">Retrieval Pipeline</span>
<span class="tag">Constrained Generation</span>
<span class="tag">FastText · FAISS · HNSW</span>
<span class="tag">Late Fusion</span>
<span class="tag">Listwise LLM Reranking</span>
<span class="tag">Alias Augmentation</span>
<span class="tag">Co-occurrence Modeling</span>
</div>
</a>
</div>
<footer>
All work independently developed and deployed.
</footer>
</div>
</body>
</html>