Skip to content
The original rosewood identity: plum, coral, and bronze.

See-thru gameboy

Architecture

Two layers, both visible. The corpus graph below is the symbolic structure the chat reasons over, derived from case-study frontmatter at request time. The pipeline at the bottom is the neural side, the actual stages a query passes through.

Hover a project for its frontmatter. The lines between projects are lateral edges, drawn where two projects share at least two technologies. Anchors sit in the inner ring; stubs and shorter engagements sit further out.

MentorloopAustralian Defence Forcex-RDVanguardADF CareersMedibankProject EucalyptusKernelWorld VisionMorgan StanleyPrime MotivePearson EducationNational Australia BankRMIT OnlineHawk

Pipeline

A turn starts with cheap safety checks, then moves through retrieval, generation, streaming polish, follow-up extraction, and a final faithfulness pass. The point is not one clever model call. It is a small chain of checks that makes the answer useful, bounded, and inspectable.

  1. 01

    rate limit

    rateLimit.checkRateLimit

    IP-keyed Redis bucket, 12 req/min, runs before any parsing or model call

    Keeps one visitor or bot from hammering the chat.

  2. 02

    RAG retrieval

    rag.buildSystemBlocks

    MiniLM-L6-v2 hybrid (semantic + lexical), top-K chunks plus optional project-anchored chunks. Citations emitted ahead of the model stream.

    Finds the case-study chunks that should ground the answer.

  3. 03

    Anthropic Haiku 4.5

    streamText (temp 0, prompt cache on static + history)

    one model call per turn. System prompt carries voice, redaction rules, length guidance. Cached at the static breakpoint, second breakpoint on the most recent prior message so multi-turn hits cache.

    Writes the answer from the retrieved material and the site voice.

  4. 04

    voice filter

    voiceFilterTransform

    deterministic stream pass. Em-dashes restructured. Defence in depth on top of the prompt constraint.

    Cleans up awkward phrasing while the answer streams.

  5. 05

    sentence cadence

    sentenceCadenceTransform

    70ms hold at sentence boundaries. Synthetic pacing, makes the stream read as composed thought.

    Lets the response arrive in readable beats.

  6. 06

    faithfulness validator

    validateFaithfulness

    LLM-as-judge (Haiku) post-hoc. Atomic claim check vs retrieved chunks, 4s timeout, fail-soft. The response earns its badge.

    Checks the final answer against its sources before showing trust labels.

  7. 07

    citation backfill

    rag.buildMentionedProjectCitations

    when the answer mentions a project the retrieval pass missed, pull that project's summary chunk and append a pill. Keeps the cite row honest about what the answer references.

    Adds project pills for any project named in the answer that retrieval did not surface.

© 2026 Robert Andrew, Melbourne, Australia.

Robert Andrew

Design. Build. Ship. Repeat.