AI assistants and search decision
Perplexity
A retrieval-plus-LLM answer engine is buildable, but Perplexity's search stack, source ranking, UX, mobile/browser surfaces, and model access make full parity hard.
Visit website↗Open-source builds that already do this
Every project below is open source and already does this job today. Fork one, self-host it, or take the parts you need - the build prompt further down assumes an empty file, and this is the shortcut past that. Licences differ; check the one on each card before you ship. All Perplexity alternatives, with the arithmetic →
What a replacement has to do
- Search the web/API, fetch pages, rank passages, ask an LLM to answer with citations, and store threads.
What it still won’t have
- search quality
- source ranking
- model routing
- mobile/browser apps
- publisher integrations
- speed
What remains hard
- Proprietary data
- Proprietary models
- Execution quality
First-year cost
The build hours below are a category default, not an estimate for this product. Change them to your own numbers and the comparison follows.
Keep paying
Paying is—cheaper in year one.
On cash alone, building overtakes the subscription at 1 seat.
Money you would actually spend
Time you would spend
—
What you would spend
What we assumed
The verdict above measures whether you could build it. This one is only about money.
Runnable build prompt
Build me a personal answer engine like Perplexity, wrapping real search and LLM APIs, not rebuilding them. Requirements: - A local web app on localhost:3000: Node + Express + htmx, one input box, streamed answers. - Per question: query the Brave Search API (key in .env), fetch the top 6 results with undici, extract readable text with @mozilla/readability + jsdom, then pass the question plus numbered excerpts to Claude or GPT (key in .env) with instructions to answer only from the excerpts and cite as [1][2]. - Render citations as footnote links; show the full source list under every answer. - Follow-up questions stay in the same thread with prior Q&A in the context window. - Threads stored in SQLite via better-sqlite3; a sidebar lists past threads by first question. - If a page fails to fetch or extract, drop it and continue. Never cite a page that was not fetched. - Binds to localhost only; no accounts, no telemetry, only the search and LLM calls leave my machine. - Out of scope: crawling my own web index, model routing, and mobile apps. Answer quality tracks the search API, that is the deal. - README: which keys to get (Brave Search has a free tier) and rough per-query cost.





