I built Slick because I wanted a search engine that actually felt like it belonged to the user.
Not another search wrapper.
Not another app that just sends your query somewhere else.
A real search engine.
At first, I thought:
"How hard could it be?"
You crawl some websites, put them in an index, add a search box, and you're done... right?
Turns out, not even close.
Search is one of those things that looks simple until you try to build it yourself.
What is Slick?
Slick is an independent, privacy-focused search engine that I'm building from scratch.
The goal is simple:
Give users more control over how they search the web.
Features include:
- Privacy-focused searching
- Customizable ranking
- Independent web indexing
- Semantic search
- Multiple search providers
- Personalized ranking controls
- A Google-like experience without tracking
The project started as an experiment, but quickly became a deep dive into crawling, information retrieval, machine learning, and infrastructure.
The first problem: getting data
A search engine is useless without an index.
The first major component I built was the crawler.
It needs to:
- discover pages
- download content
- extract useful information
- remove duplicates
- handle dynamic websites
- prepare documents for indexing
The goal isn't to blindly crawl the entire internet.
The goal is building a useful, high-quality index.
The search engine itself
For indexing, Slick uses Elasticsearch. By default we use DuckDuckGo's index, as Slick is still maturing.
Each document contains information like:
- title
- URL
- description
- page content
- metadata
- keywords
The initial search system uses traditional information retrieval techniques like BM25.
But keyword matching has a problem.
A user doesn't always search using the exact words found on a page.
For example:
"how do I stop websites tracking me"
and:
"privacy tools that prevent online surveillance"
mean almost the same thing.
A keyword-only search engine sees two different queries.
Humans don't.
Adding AI to search
To improve this, Slick uses semantic search.
Pages and queries can be converted into embeddings that represent meaning instead of just text.
The ranking pipeline combines:
- traditional keyword relevance
- semantic similarity
- reranking models
- quality signals
The idea is to combine the strengths of old-school search with modern machine learning.
The hardest part: ranking
Getting results is easy.
Getting the right results is hard.
A search engine can return thousands of pages that technically match a query.
But users don't want thousands of pages.
They want the one that answers their question.
Ranking involves constantly asking:
- Is this result actually relevant?
- Is this page high quality?
- Does this match the user's intent?
- Should another result be ranked higher?
This is where most of the engineering effort goes.
Building it as a solo developer
The biggest surprise was how much infrastructure search requires.
The UI is honestly the easy part.
The difficult parts are:
- crawling
- indexing
- storage
- ranking
- optimization
- handling bad data
- keeping everything affordable
Large search engines have entire teams dedicated to one small part of this.
Building even a small one makes you appreciate how much work happens behind every search box.
Some things I'm experimenting with
Slick is still actively being developed.
Some areas I'm working on:
- growing the independent index
- improving ranking quality
- better semantic retrieval
- more customization options
- better search categories
- improving crawler reliability
The long-term goal is not to make "another Google clone."
It's to explore what search looks like when users have more control.
Try Slick
If you want to try it:
https://slicksearchhq.com/
The project is still early, so any feedback, suggestions, or ideas are greatly appreciated.
Thanks for checking it out!
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.