Skip to content
Saleheen.
All work
Case studyWeb app

Queryme

AI answer engine — cited answers from your own docs

Role
Designer & sole developer
Timeline
2026
Status
Live · 2026
Queryme — interface preview
10+Source connectors
4Deploy targets: widget, API, MCP, form
CitedEvery answer links its sources
The challenge

A chatbot that sounds confident and cites nothing is worse than no chatbot at all. Support teams cannot verify the answer, and one wrong answer costs more trust than a missing one. The hard part of shipping AI over your own docs is not generating text — it is making every sentence traceable to a source, and admitting when that source does not exist.

The approach
  • 01Built the ingestion path first: connectors pull from 10+ source types — websites, PDFs, Notion, Confluence, GitHub, Slack, YouTube, S3 and OpenAPI specs — then pages are cleaned, chunked and embedded into a searchable index that stays fresh as the docs change.
  • 02Grounded generation in retrieval: every answer is composed strictly from passages retrieved from the connected sources, and links back to the exact documents it used, so any claim can be checked in one click.
  • 03Turned missing knowledge into a feature — when the answer is not in the docs, Queryme says so and ranks the open gaps, so a team learns which page to write next instead of receiving a plausible guess.
  • 04Shipped one knowledge base to four surfaces — website widget, REST API, MCP server and support form — with deployments isolated per channel and each holding its own API key.
  • 05Closed the loop with measurement: every question, citation click and thumbs-down lands in a dashboard, so the questions users actually ask drive what gets documented next. Content is never used to train models.
The outcome

Queryme turns scattered documentation into a support assistant that shows its working — cited answers, honest gaps, and per-key usage you can measure. One knowledge base serves the widget, the API, the MCP server and the support form.

Screens
Queryme — interface capture
Stack
Next.jsTypeScriptRAGpgvectorMCPREST API