Dhruv Kumar

Solvo

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

RoleSole designer & engineerStackNext.js 16, Prisma, pgvectorLivesolvochat.com ↗

The 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.

How it works

01IngestDocs 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.
02Embed & storeGemini embeddings, stored in Postgres with pgvector. Retrieval lives next to the data it retrieves from instead of a separate vector service.
03Retrieve & answerNearest chunks go to Gemini 2.5 Flash with the retrieved text as the only source. The model answers from what it was given, not from memory.
04Embed anywhereA single script tag mounts the widget in an isolated root. No build step and no framework requirement on the customer's site.

Result

90%Query relevance accuracy across the evaluation set
<2sFrom question to cited answer
1Script tag to install, no backend on the customer's side

What I would change next

Chunk size is a blunt instrument. 400 words works for docs, badly for changelogs. The next version segments on document structure instead of word count, and re-ranks retrieved chunks before they reach the model.