Inspiration
Modern tracking doesn't just come from cookies anymore - it comes from patterns. Even when you don't explicitly share personal information, your searches can quickly reveal a narrow set of interests that makes you easy to categorize. Over time, this creates a predictable "digital footprint" that data brokers and ad platforms can use to personalize ads, infer sensitive traits, or shape what content you see.
We were inspired by the idea that privacy shouldn't require going offline. Instead, users should be able to take control of what their online activity communicates. blurB was created as a way to make your search footprint less predictable by adding realistic diversity - without requiring accounts, cloud uploads, or automated behavior you can't see.
What it does
blurB is a privacy-first Chrome extension that helps reduce how predictable your online footprint looks to trackers and data brokers by adding realistic topic diversity to your search activity.
Here's how it works:
Footprint Summary: Import your Google search history. blurB analyzes your searches locally to identify which topics dominate your activity, how concentrated your interests appear, and how easily your searches could be categorized into a narrow "interest profile."
Persona Library: blurB gives you a curated list of personas (more like "interest bundles" than identifies). Each persona represents a believable set of interests someone might naturally search for.
You can:
- browse the persona list
- select which personas you want to use
- generate queries from one persona or multiple personas
- customize personas over time
This keeps the experience transparent and user-driven.
Smart Query Generation: Once you choose a persona, blurB uses Ollama (local LLM) to generate realistic search queries that match that persona's interests.
The goal is to create queries that look like natural browsing behavior - not spammy noise.
blurB never runs searches without permission.
Before anything happens, you get a review screen where you can:
- approve or disapprove individual queries
- regenerate queries you don't like
- choose which persona to generate more queries for
- run only the ones you're comfortable with
This makes it clear blurB is a tool you control, not something operating in the background.
After approval, blurB opens the selected searches in background tabs to blend into normal browsing patterns.
You can control:
- how many queries run
- which persona(s) they come from
- timing/pacing (optional)
- whether searches run immediately or in batches
After searches are executed, blurB re-checks your footprint and shows measurable changes like:
- interest diversity increase
- topic concentration decrease
- how much harder it is to confidently classify your interests
- an overall "obfuscation score" based on distribution changes
Privacy-first by design
- All analysis runs locally
- Ollama runs locally
- Your search history is never uploaded to a server
- You control what gets executed
How we built it
- Google Takeout import + parsing: Users upload their exported search history file. blurB parses it locally and extracts search queries in a clean, usable format.
- Local analysis + clustering: Summarized search behavior by grouping queries into broad topic areas and measuring how concentrated those topics are. This creates a "footprint summary" without inferring personal demographic traits.
- Persona Library system: Implemented a set of selectable personas that users can browse, customize, and choose from. Personas are designed to be believed and broad enough to generate realistic search behavior.
- Query generation with Ollama: blurB uses Ollama to run an LLM locally on the user's machine. Based on the selected persona, it generates a batch of realistic search queries that fit that theme.
- Review + approval UI: The extension includes a review step where users can approve, reject, regenerate, or filter queries before anything is executed.
- Search execution: Approved queries are executed by opening background tabs using Chrome extension APIs. This simulates natural search behavior without requiring automation outside the browser.
- Effectiveness dashboard: After execution, blurB recomputes footprint metrics and visualizes the difference using diversity and concentration measures, producing an obfuscation score.
Challenges we ran into
Frontend development with unfamiliar tools: A large part of blurB's experience depends on a clean, intuitive UI. This was challenging because we were working with frontend frameworks and design patterns that we didn't have as much experience with, so we had to spend a little extra time learning while building.
Limited experience building Chrome extensions: Learning how background scripts, permissions, storage, and tab automation work - while also keeping everything safe and user-controlled - was a major learning curve.
Accomplishments that we're proud of
- We built a working end-to-end pipline: import --> analyze --> generate --> approve --> execute --> re-analyze.
- We designed the system to be local-first, meaning users don't need to trust a server with their personal search history.
- We implemented a persona selection and query review system that gives users full control rather than silently running in the background.
- We created an effectiveness dashboard that shows measurable results (not vague claims) so users can see the impact of diversification.
What we learned
- How to structure a Flask backend to handle parsing, processing, and serving results in a way that stayed organized and easy to iterate on.
- We gained hands-on experience integrating Ollama into an application pipeline. Running the LLM locally helped us keep blurB privacy-first, and we learned how much prompt design and constraints affect the realism and consistency of generated queries.
- Leveraging AI to speed up development
- Building an appealing frontend experience
What's next for blurB
- Incorporate more meaningful metrics
- Better dashboards: add clearer visualizations, trends over time, and breakdowns of changes across categories
Log in or sign up for Devpost to join the conversation.