/lab

Small things,
running right here.

Five interactive AI demos, all running entirely in your browser. No API keys, no backend calls — these are tiny implementations of ideas I find interesting. View source to see how each one works.

chat playground

interactive

A tiny chatbot whose answers come from a pattern-matched dictionary I wrote by hand — not a real LLM. Ask about RAG, evals, transformers, or my background. Streamed word-by-word to feel like the real thing.

tokenizer visualizer

interactive

A simplified BPE-style tokenizer that splits text into subword pieces. Watch the chunk count change as you type. Real tokenizers are more sophisticated; this is the idea at its smallest.

tokens: 0 chars: 0 chars/token:

embedding space

interactive

A toy projection of word embeddings into 2D — similar words cluster together. Hover any point to see the word. Real embeddings live in 768+ dimensions; this is what happens after dimensionality reduction tells you which words live near each other.

→ Animals cluster top-left, programming languages top-right, ML/AI terms centre-right, food bottom-left, cities bottom-right. Where would manishkarki land?

vector search over this site

interactive

A working in-browser RAG retriever. TF-IDF over a hand-built corpus of 12 documents — projects, essays, pages — ranked by cosine similarity. Same machinery that powers production search, just at toy scale. Hit it with any query about my work.

attention pattern visualizer

interactive

Multi-head self-attention, demystified. Each "head" learns to look at different things — the token before you, the subject of a sentence, the whole context. Pick a head, hover a token, see what it attends to. Patterns are hand-crafted to be plausible, not real model weights.

Hover any token to see which earlier tokens it attends to under the current head.

/notes

Why this page exists

Most portfolio sites end at the projects page. I wanted somewhere I could put small, working things — proof that I actually use the ideas I list on my CV, not just collect them. Each demo here is a few hundred lines of vanilla JavaScript, no frameworks, no external calls. View source.

These are intentionally tiny. The chat replies from a hand-written dictionary, the tokenizer is BPE-flavoured rather than BPE-proper, and the embeddings are hand-positioned. The point isn't to ship production AI in a static site — it's to show you that I understand what the moving parts are, well enough to fit each one into a single page.

More demos are on the way: a tiny attention-pattern visualizer, an interactive prompt diff tool, a "next-token probability" toy. If there's something you'd like to see, tell me.