← Building
Ask destination · The No Fluff corpus, made conversational

Yevgeny.ai

Ask the writing. A standalone, citation-first front door to the published corpus — grounded, cited, nothing made up.

Presentation only — the brain is the shared ask-evgeny worker; this page adds no intelligence of its own.

  • Status Production · live at www.yevgeny.ai
  • Role Standalone front door to the Ask Evgeny corpus
  • Runtime Astro static · Cloudflare Pages
  • Brain ask-evgeny worker · ask.nofluffadvisory.com
  • Models claude-sonnet-5 · bge-m3 embeddings
  • Author By No Fluff Advisory
01 Why this matters

Don't hope the archive
gets found. Make it answer.

A body of writing is usually a shelf: you publish, you hope the archive gets found. Yevgeny.ai is the other move — make the archive answer. It is a citation-first "ask the writing" destination over the No Fluff corpus: one page where a visitor can ask a question, test a strategy, or trace any claim back to its source.

The pattern is borrowed with attribution: it is inspired by rishad.ai's pattern — personal corpus → conversational front door — but carries the No Fluff visual identity. The same tokens, type, and self-hosted fonts as this site, imported verbatim so they can never drift.

Citation-first is the discipline that separates it from a chatbot. Answers are grounded only in source passages and must cite them; positions, numbers, and opinions are never invented; commercial questions route to a contact CTA instead of improvised advice. And when the corpus doesn't cover a question, it says so plainly.

When the corpus doesn't cover it,
it says so.

Yevgeny.ai, its own hero copy

02 What it ships

One page.
The whole ask experience.

A single page: hero, live corpus stats, the six reading paths, and a grounded, cited ask box with voice input. A two-column frame — left rail with brand, thesis, lenses, CTAs, and the disclaimer — collapses to one column on small screens, where the reading paths become a drawer so the ask experience stays one short scroll away.

It is honest about what it is, twice on the page: an experimental research companion grounded in Evgeny Popov's published writing — it speaks about the work, it is not Evgeny and does not speak on his behalf. Public content only; questions are not sold and never train anything.

  • /api/ask

    Grounded ask box

    Dark composer with starter chips and Enter-to-send. Answers come only from source passages — when the corpus doesn't cover it, it says so.

  • [n] · source cards

    Citations that resolve

    Markers in the answer become superscript buttons that scroll to numbered source cards — title, kind, excerpt, and an open-source link.

  • six lenses

    Reading paths

    The same six curated topics as the main site, with per-category counts computed at build time, each linking to its topic landing page.

  • build-time stats

    Live corpus numbers

    Essay count, glossary terms, and years-span are computed from the shared sources of truth at every build — never hardcoded.

  • /?q=

    Shareable questions

    Every ask writes a shareable URL; arriving with one auto-submits the question.

  • Web Speech API

    Voice input

    Push-to-talk mic, shown only when the browser supports it. Recognition fills the input — the visitor still reviews and sends.

  • copy · share · feedback

    Answer actions

    Copy with numbered sources, native share, and thumbs feedback tied to an anonymous session id — no PII.

  • staged waiting

    Honest latency

    Waiting messages paced to observed first-token latency; the typewriter reveals only the already-complete, already-filtered answer.

Architecture

One page over one brain.

The question goes to the shared worker's /api/ask endpoint with no page field — the landing itself isn't corpus content — and comes back as a grounded answer whose [n] markers map to numbered source cards. (The worker's KV answer cache only ever serves bare questions — no history, no page.) When a question touches a concept the corpus has taken more than one position on, a small position ledger of dated, receipt-verified stances folds into the same prompt — never a hand-set "current" flag, always derived — and a second check after generation catches any answer that quotes a retired position without saying so. A server-side filter checks answers and citations after generation so unlisted content can never leak.

Yevgeny.ai in miniature: a typed question flows through the cache check, retrieval over the corpus, generation, and the unlisted filter into a grounded answer whose citations trace back to the writing. Yevgeny.ai One page. The whole corpus, answering. The shared ask-evgeny worker is live at ask.nofluffadvisory.com — the Yevgeny.ai landing and the site widget speak the same /api/ask contract. LIVE WORKER The page sends the question with prior-turns-only history and deliberately no page field. A bare question — empty history, no page — is the only shape the worker's KV answer cache serves, so first questions and the suggested chips hit it. ask the writing KV answer cache — serves bare questions only. Entries live 7 days and the key includes the corpus version, so a contentful corpus sync invalidates every cached answer at once; enriched answers skip the cache in both directions. KV cache · 7d The published corpus — essays, glossary, pages, polls — indexed with bge-m3 embeddings; every count on the page is computed at build time, never hardcoded. Hybrid retrieval pulls the top 12 passages; unlisted passages are capped to a third of that and enter the prompt only as background that must never be cited, named, or quoted. The existing ask-evgeny worker — same /api/ask contract, grounding rules, and citation mapping as the site widget. Generation Anthropic claude-sonnet-5, embeddings Workers AI bge-m3. ASK-EVGENY WORKER one shared brain claude-sonnet-5 · bge-m3 Server-side unlisted-leak filter — checked after generation, so unlisted content can never appear in answers or citations. Prompt rules are the first layer; this is the hard one. UNLISTED FILTER The blocked branch — any sentence carrying an unlisted marker is stripped here before the answer ships; only the grounded remainder passes the gate. Grounded answers only: every claim comes from retrieved passages and carries a numbered citation — [S#] tags are mapped server-side to [n] markers; positions, numbers, and opinions are never invented. When the corpus doesn't cover it, it says so. GROUNDED ANSWER [1] [2] Every [n] marker resolves to a numbered source card — number, url, title, kind, excerpt — linking back to the published writing it cites. [1] essay [2] glossary Citations trace home: each numbered chip links back to the published passage retrieval surfaced — never to unlisted background, which must never be cited, named, quoted, or linked. the published corpus · counts computed at build time a bare question in — a grounded, cited answer out; when the corpus doesn't cover it, it says so
03 Stack

Presentation only.
The brain is shared.

Presentation only — the honest architectural note from its own README. The brain is the existing ask-evgeny worker at ask.nofluffadvisory.com: the same /api/ask contract, grounding rules, citation mapping, position ledger, and unlisted-leak filter as this site's ask widget. Generation runs on Anthropic (claude-sonnet-5); embeddings stay on Workers AI (bge-m3).

It ships as a second Astro build inside the nofluffadvisory monorepo: its own config with the root pinned to the repo root so the shared essay collection resolves identically, its own src, public, and output directories, and stylesheets inlined at build. Every number on the page — essay count, per-lens counts, glossary terms, years-span — is computed at build time from the shared sources of truth, never hardcoded.

Deploys ride the same GitHub Actions pipeline, sequenced after the main-site deploy so a yevgeny-only failure can never block nofluffadvisory.com: build, ensure the Pages project exists, publish to Cloudflare Pages. The custom domains were a one-time manual step; the worker's CORS allowlist already includes both origins.

Frontend Astro static export · second build in the monorepo (own config, root pinned to the repo root)
Hosting Cloudflare Pages · project yevgeny-ai · custom domains yevgeny.ai + www
Brain ask-evgeny Worker · same /api/ask contract as the site widget
Models Anthropic claude-sonnet-5 (generation) · Workers AI bge-m3 (embeddings)
Shared truth Essay collection · topics.ts lenses · verbatim global.css import
Deploy GitHub Actions · builds after the main-site deploy on every push
04 Industry context

The practice,
run on itself.

A personal corpus with a conversational front door is becoming a visibility pattern in its own right: instead of hoping AI assistants summarize you correctly, you ship the surface that answers questions about your work — grounded, cited, and on your own domain.

That is the practice No Fluff Advisory sells — AI Visibility & GEO Advisory for AdTech, MarTech, and data companies — and Yevgeny.ai is that practice run on itself: entity engineering, citable content, and machine surfaces, applied to the advisor's own corpus. It is a receipt, not a slide.

Talk corpora

Sitting on a corpus?
Want it to answer —
grounded and cited?

Get in touch →