Launch HN: Exa (YC S21) – The web as a database
We started working on Exa because we were frustrated that while LLM state-of-the-art is advancing every week, Google has gotten worse over time. The Internet used to feel like a magical information portal, but it doesn’t feel that way anymore when you’re constantly being pushed towards SEO-optimized clickbait.
Websets is a step in the opposite direction. For every search, we perform dozens of embedding searches over Exa’s vector database of the web to find good search candidates, then we run agentic workflows on each result to verify they match exactly what you asked for.
Websets results are good for two reasons. First, we train custom embedding models for our main search algorithm, instead of typical keyword matching search algorithms. Our embeddings models are trained specifically to return exactly the type of entity you ask for. In practice, that means if you search “startups working in nanotech”, keyword-based search engines return listicles about nanotech startups, because these listicles match the keywords in the query. In contrast, our embedding models return actual startup homepages, because these startup homepages match the meaning of the query.
The second is that LLMs provide the last-mile intelligence needed to verify every result. Each result and piece of data is backed with supporting references that we used to validate that the result is actually a match for your search criteria. That’s why Websets can take minutes or even hours to run, depending on your query and how many results you ask for. For valuable search queries, we think this is worth it.
Also notably, Websets are tables, not lists. You can add “enrichment” columns to find more information about each result, like “# of employees” or “does author have blog?”, and the cells asynchronously load in. This table format hopefully makes the web feel more like a database.
A few examples of searches that work with Websets:
- “Math blogs created by teachers from outside the US”: https://websets.exa.ai/cma1oz9xf007sis0ipzxgbamn
- "research paper about ways to avoid the O(n^2) attention problem in transformers, where one of the first author's first name starts with "A","B", "S", or "T", and it was written between 2018 and 2022”: https://websets.exa.ai/cm7dpml8c001ylnymum4sp11h
- “US based healthcare companies, with over 100 employees and a technical founder": https://websets.exa.ai/cm6lc0dlk004ilecmzej76qx2
- “all software engineers in the Bay Area, with experience in startups, who know Rust and have published technical content before”: https://youtu.be/knjrlm1aibQ
You can try it at https://websets.exa.ai/ and API docs are at https://docs.exa.ai/websets. We’d love to hear your feedback!
136 comments
[ 2.4 ms ] story [ 339 ms ] threadCan it perform searches that rely on the rendered (JS-executed) state of the website? If so, does it have access to the DOM?
Example use case: "The 10 most trafficked e-commerce sites that load Adobe Analytics tag(s)."
Noting this though!
Types of searches Websets doesn't currently do well at: - products (e.g., ecommerce sites) - Content that requires authentication/permissions to access - non-English content
Some of the above are on our roadmap, and let us know if there's some type of data you'd like us to support!
"Give me a list of free imagery service endpoints I can use in a maplibre style sheet. Include information such as name, description, service endpoint, service type, extent (global/regional)."
Since you called it out, I gave it a whirl:
https://websets.exa.ai/api/trpc/getPreview?batch=1&input=%7B...
and it did nothing to the page at all, choosing to still show the "Full-stack engineers in SF that are great at design, and have worked at an AI startup" example table
I'm open to the fact that "I'm holding it wrong" or whatever, but the response payload included things that are clearly not GitHub Repositories
and its .text contains no mention of ReBAClater on it came closer
but, of course, no ReBAC in its .text eitherIt seems it is about 30/70 on finding the things I asked for, so I don't mean to imply it's worthless, but it is yet another example of "turns out, AI does not solve all problems"
---
I make a habit out of having the dev-tools open when interacting with things where the comments have explicitly called out "we were down and we don't check our response.statusCode" and that's the only reason I am able to offer you any feedback whatsoever
> github repos that are implementations of ReBAC authorization servers
https://websets.exa.ai/cmadcu6st004fmg0iofbytsfh
Anyway, two things which may interest you:
- please don't reimplement <table> in whatever whizbang JS framework-o-the-day; your results have the columns fixed at 180px, truncating all descriptions and URLs. Maybe it's an upsell for all I know
- your cURL in the Get Code is demonstrably wrong and I have no idea how it escaped a basic straight-face test; -d '{\"foo\":1}' literally sends brace backslash doublequote
And then, just like my first experience, the matches do not all return repos matching the query criteria. My colleague at work has to tell Cursor "try harder" so maybe you can benefit from including that in your prompt, too
Our experimental use case is enabling quick and dirty integration of web-based docs into an employee service agentic chatbot - lots of the questions are around “how do I max out my 401k”, which connects to internal information, but some are more like “how do I link a calendar to calendly”.
The one thing I’d love to have in the search product is a cruft cleaner for the results of web queries. Where you have cached the data presumably this wouldn’t add much overhead. Reduces what you have to feed to the LLM downstream and might improve the embeddings performance.
If something else though, curious.
some issues I noticed, I searched "lucid air touring models available for sale Under 20,000 miles" and tried to add column "sale price", but did get the price details, same for other cars as well
I gave it a try and my first search got one match, 14 misses, and all other results are "Verifying..." but it seems stuck (it's been minutes). I can see why you cut your demo (please don't try to hide that it's so slow, especially since you seem to imply to be a Google competitor ("Google has gotten worse over time"), while your product is incomparably slower than Google; it's more like deep research).
---
> I can see why you cut your demo.
Can you please edit out swipes, as the site guidelines request (https://news.ycombinator.com/newsguidelines.html)? Your comment would be just fine without that bit.
Everyone is familiar with how often software launches run into glitches, and there's no need to be uncharitable.
(If you didn't mean it as a swipe and I just misread you, feel free to edit your comment and I'll delete this when I'm back online.)
Edit: adding "no offense" doesn't change this.
However, I don't think it's fair for you to assume they're "trying to hide that it's so slow". There's no need to impute bad motives to people, and you don't have nearly enough information to justify such a claim.
What's wrong with simply reporting the problem that you're experiencing with the software? That would make your comment helpful, with no trace of a putdown.
Exa was originally just a search engine. They try to hide it these days to promote Websets, but you can still use it at https://exa.ai/search.
I joined recently, and live-streamed myself designing and shipping the new search frontend in 5h32m
https://x.com/LiamHinzman/status/1911244983291514941
Added a link to it on our homepage, thanks for pointing that out!
I think NewsCatcher (my YC startup) and Exa aren’t direct competitors but we definitely share the same insight — SERP is not the right way to let LLM interact with web. Because it’s literally optimized for humans who can open 10 pages at most.
What we found is that LLMs can sift through 10k+ web pages if you pre-extract all the signals out of it.
But we took a bit of a different angle. Even though we have over 1.5 billion of news stories only in our index we don’t have a solution to sift through as your Websets do (saw your impressive GPU cluster :))
So what we do instead is we do bespoke pipelines for our customers (who are mostly large enterprise/F1000). So we fine-tune LLMs on specific information extraction with very high accuracy.
Our insight: for many enterprises the solution should be either a perfect fit or nothing. And that’s where they’re ok to pay 10-100x for the last mile effort.
P.S. Will, loved your comment on a podcast where you said Exa can be used to find a dating partner.
Mission of Exa has always been to build much better web search. The evolution has been:
- 2022: Consumer-facing embeddings search (back when we were known as Metaphor)
- 2023: Web search for AIs - once the AI ecosystem heated up, we made a business out of web search + crawling API. This is still our primary business.
- Now: Websets, a useful product built on top of our search tech
If you're curious, our company right now is fully devoted to:
1. Dramatically improving Websets quality
2. Building the best general search engine in the world
And also how “internal” business intelligence/operations tools should work. search first to find relevant artifacts - “top 10 customers in AMEA”, followed by agentic verification and enrichment.
Congrats on the launch!
I searched for "alternatives to jq with a functional API" and one of the criteria it came up with was "Provides technical details or comparisons relevant to the alternatives" but the table only listed the repo's url and description. And the description was truncated with ellipses with no way for me to resize the columns. Also, it missed the opportunity to tell me that some shells can replicate jq's functionality. Finally, it would have to be faster to be a daily driver. At this speed, it is something I would reserve for backup, for when the workhorse fails. Which means I would not want to pay $49/month.
Hope that helps. Interesting idea.
Yeah we'd love to make the product as accessible and cheap as possible, but as of state of AI costs of 2025, it's a very expensive product to run and so we have it login gated. If you're willing to log in though, you'll find a lot of the features that you're mentioning :)
Searches that give tabular results can be cheap if you already have structured datasets (extracted from crawled data), so LLM can simply convert the user's natural language query to SQL query (or SQL-like query) which can be cost-efficiently executed - say, with DuckDB. This approach can also give more correct results - as values in these structured datasets can be validated in the background, not as an individual 'deep research' task.
I understand that this is another kind of search service, however, this can be a way to offer free/cheap searches for users who don't need expensive individual research tasks.
If you sign in each result will be graded by an LLM, supporting references will be found, you can get agents to add arbitrary data to each result, and the table UI is much better.
Understand if you don’t want to sign up, I’d just look at the examples linked in the OP in that case
The initial search/experience is good but then I got dumped here [0] and it's not clear to me if things are still happening or if it broke (it's been at least 5 min with no UI updates.
I can't see the full results yet but this is very interesting and a task I ask OpenAI's Deep Research to attempt periodically. It makes a good show of doing the work but the results are not great IMHO (for asking it generate lists/tables of data like this). I can see this tool being incredibly useful for lead generation (how I am testing it out).
[0] https://cs.joshstrange.com/dySqK1mb
“List of food festivals on the east coast specializing in small dishes or encourages sampling from multiple vendors. features more than 20 vendors”
https://websets.exa.ai/cmad3sonh001zhx0i1h7t692f
btw I like how you host screenshots on your personal website
Congrats on your launch. With the natural way this lends itself to comparison shopping this is an amazing tool for people trying to find "the best X for me" whether that's a TV, a school, etc. So much content that you find on Google when trying to answer that type of query, is designed to trick, bamboozle, and to hide the facts that you might use to answer this question (but most of all to get you to click affiliate links).
Still though, come on man, why people why. I remember when we had "domainsquatting" but I guess AI doesn't give a fuck about people's copyrights/trademarks anyway.
(Sorry to vent as a reply, but it was nice to see SOMEONE mention it at least, and had to give a hard agree on pointing it out).