I love quotes. I collect them. And I could never find the ones I was looking for.
The problem: you remember the idea of a quote, not the words. You search "courage setback quote" and get motivational poster garbage. If you knew the exact words, you wouldn't need to search.
"We hear and apprehend only what we already half know."
— Henry David Thoreau, Journal
So I built Quotewise: semantic search across 600K quotes, each with source citations.
The other problem
Even when you find something, how do you know it's real? Most quote sites copy each other, misattributions included. And they're stuck in the past. Mostly dead authors. Nothing from podcasts, indie writers, or YouTube.
How I solved it
Semantic search via pgvector handles the first problem. Describe the concept, get relevant quotes. "Quotes about perseverance in the face of uncertainty" actually works.
For verification, every quote has QuoteSightings, a list of where it was actually found (Wikiquote, Goodreads, books, newsletters, tweets, Youtube, Twitter). You see the sources before you use it.
The unexpected part: I'd look up a Stoic quote and find a Buddhist saying from 500 years earlier making the same point. Embeddings find conceptual neighbors across cultures and centuries.
Architecture
Stack for anyone curious:
- Django 6.0 + PostgreSQL 16 with pgvector
- 1024-dimensional embeddings for semantic similarity
- HTMX for the frontend (no React/Vue)
- MCP server so Claude/ChatGPT/Gemini can use it directly
- The MCP integration means my AI assistant can find the quote I'm half-remembering without leaving the conversation.
MCP setup
If you use Claude Desktop, ChatGPT, or similar:
{
"mcpServers": {
"quotewise": {
"url": "https://mcp.quotewise.io/"
}
}
}
13 tools: quotes_about, quotes_by, quotes_from, quote_sightings, collections, etc.
HTTP transport + OAuth device flow. Free tier: 20 requests/hour.
What I learned
Misattribution is everywhere. Wikiquote has a whole section for quotes falsely attributed to each person. I hide known fakes by default.
"When you seek, you find things you did not anticipate."
— James A. Michener, The Covenant
Embeddings find connections you'd miss with keywords. Same idea, different century, different culture.
MCP changes the workflow. Instead of tab-switching to verify quotes, my agent does it inline.
Docs: https://quotewise.io/developers/mcp/
Web interface: https://quotewise.io
Curious what people think about the tool design. Is 13 MCP tools overkill? Would you actually use source citations or do you not care where quotes come from?
Top comments (0)