All work

01 / Solo build · shipped

Solvo

An embeddable AI support agent. One script tag, and a site answers its own visitors from its own docs, with the source attached to every answer and a human one click away.

Role
Sole designer & engineer
Stack
Next.js 16, Prisma, pgvector
The Solvo widget on a help centre answering “Can I export my data?”, its source tag joined by a red line to the exact sentence on the docs page it came from

01The problem

Support chatbots fail in one of two ways. They either know nothing about the product they’re bolted onto, or they invent answers that sound right. Both cost more trust than they save time.

The bar I set: a visitor should be able to check the answer. If the widget can’t point at the paragraph it came from, it shouldn’t say it.

02How it works

  1. Ingest

    Docs are chunked at 400 words with a 50-word overlap, keeping enough context at each boundary that a chunk still makes sense read on its own.

  2. Embed & store

    Gemini embeddings, stored in Postgres with pgvector. Retrieval lives next to the data it retrieves from instead of a separate vector service.

  3. Retrieve & answer

    Two searches run side by side, pgvector for meaning and Postgres full-text for exact terms like plan names and error codes, merged with rank fusion. The top chunks go to Gemini 2.5 Flash as the only source.

  4. Hand off

    When a question needs a person, such as billing, a refund or a bug, the model flags it, the team gets an email or Slack alert, and the conversation moves to a shared inbox.

  5. Embed anywhere

    A single script tag mounts the widget in an isolated root. No build step and no framework requirement on the customer’s site.

03Result

Top-5 retrieval hit rate on 45 real questions over 126 help-centre pages
91%
Searches per question, vector and keyword, fused into one ranking
2
Script tag to install, no backend on the customer’s side
1

04What I would change next

Chunk size is a blunt instrument. 400 words works for docs, badly for changelogs, so the next version segments on document structure instead of word count. The other is speed: most of the wait today is the model, not the search.