Skip to content

Everyday inventionsWorking MVP2026

A website assistant that works with zero setup, and gets smarter when you give it a key.

what do you build?cos θ = 0.82
keys or services needed to run
0
keys or services needed to run
knowledge entries in the first deployment
20
knowledge entries in the first deployment
engines behind one chat interface
2
engines behind one chat interface

The problem

What people put up with

Adding an AI assistant to a small site usually means an API bill, a vector database and a privacy policy update before it answers a single question. Most small sites give up, and visitors are left searching the page.

The odd angle

The insight

For a few dozen well-written answers you don't need a language model to find the right one. Term-frequency vectors and cosine similarity are enough, run in a few milliseconds, and keep every question on your own server. The model becomes an upgrade, not a requirement.

The approach

How we built it

  1. 1

    Retrieval with no dependencies

    Knowledge entries become term-frequency vectors over a shared vocabulary, with extra weight on keywords. A question is turned into a vector the same way and ranked by cosine similarity.

  2. 2

    One interface, two engines

    The chat endpoint streams from OpenAI when a key is set, grounded in the knowledge base. Without a key, it streams the local answer through the same stream, so the experience doesn't change.

  3. 3

    Feels instant

    Answers arrive as a stream of text deltas in a glass chat drawer, with suggestion chips so visitors know what to ask.

What it does

Features

  • Works with no configuration and no API key
  • Optional OpenAI streaming, grounded in the same knowledge base
  • Streaming answers with suggestion chips
  • Knowledge base is a plain TypeScript file anyone can edit
  • A clear upgrade path to real embeddings and a vector store

The hard parts

What fought back

Knowing when it doesn't know

Keyword retrieval always returns something. The hard part is a sensible threshold, so a low-scoring match becomes an honest 'I'm not sure' instead of a confident wrong answer.

What's next

On the roadmap

  • Swap in real embeddings for larger knowledge bases
  • A one-line embed script for any website