Inspiration
Searching for information is a part of our daily lives. But too often, we find ourselves spiraling down a rabbit hole—jumping between tabs, rephrasing the same query, and losing context. I wanted to create a more natural way to explore information without constantly resetting the search. That’s how TheBurrow came to life—a search experience that embraces exploration. Perplexity, powered by Sonar, plays a key role by keeping the context intact and making it easy to branch off into multiple threads of inquiry.
What it does
TheBurrow is like having multiple browser tabs combined into one, but with more structure and flexibility. It takes in a search query, categorizes it, and provides contextual results. If a user wants to dive deeper into a specific part of a previous query, they can do that—without losing the original context. It also tracks search patterns and trends using Neo4j.
Part 1: Contextual Search
Just start with anything to search.
- Agent 1: Query Categorization Perplexity processes the query and categorizes it into one of several types: navigational, informational, purchase, research, news, or translation. If a summary is available, it validates the category and reassigns it if needed. For follow-up searches, it considers the context of the previous query.
Response of agent 1 is sent to agent 2.
- Agent 2: Display Logic, Model Selection, and Function Execution
Based on the query category, this agent determines:
- Display Type
- navigational
- Use navigational-list to display list of locations.
- Use navigational-para to display only text information.
- informational
- Use information-short-para if the query can be answered in max 5 sentences.
- Use information-long-para if the query needs to be answered in more than 5 sentences and need to be more detailed.
- Use information-steps if the query is best answered in steps. Meaning if it is a procedure, system or process then it can be written in steps.
- Use information-timeline if the query is best answered in timeline.
- Use information-list if the query is best answered with list.
- purchase
- Use purchase-list if the response will be list of multiple products or services.
- Use purchase-short-para if the query is for purchase information or clarification and can be answered in max 5 sentences.
- Use purchase-long-para if the query is for purchase information or clarification and can be best answered in more than 5 sentences.
- news
- Use news-list if the response will be list of news.
- Use news-para if the response can be written in a paragraph.
- translation
- Use translation-short-para as format for translation query response.
- navigational
- Model to use:
- Use sonar-pro for direct answers
- Use sonar-reasoning for problem-solving
- Use sonar-reasoning-pro for in-depth explanations
- Use sonar-deep-research for comprehensive exploration
- Lastly, get the function name to execute. Each category has one or more functions to execute, determine which one is asked for.
- Display Type
The system then creates a new query node in Neo4j and connects it to the context tree. Once the appropriate model returns a response, the designated function is executed.
Response of agent 2 is sent to agent 3.
- Agent 3: Function Execution Functions are tailored per category, and each one calls its own agents to retrieve and format results. The final result is displayed to the user.
Display the response.
TIP: To get the best results, keep the search contextual. TheBurrow's tree structure supports threaded search, letting you follow multiple directions without losing track..
Part 2: Statistics
Users can also ask questions about search patterns—for example, “How many searches fall under each category?” in Statistics Agent.
Agent 1: Cypher Query Generation The Statistics Agent interprets the question, understands the Neo4j graph structure, and generates a Cypher query. The agent has 10 examples for reference. Sometimes it creates error in formatting, so it tries maximum 5 times to create correct Cypher queries. Three time it use sonar-reasoning and last two times it uses sonar-reasoning-pro.
After the Cypher query is created, we run the query on neo4j. If we receive the result we pass it on to Result Interpretation agent.
Agent 2: Result Interpretation After retrieving results from Neo4j, this agent interprets the data in natural language. Although graph visualization wasn’t implemented due to time constraints, it's planned for the future.
How we built it
- Frontend: Angular
- Backend: FastAPI with Perplexity-based agentic logic
- Database: Neo4j for contextual search tracking and statistics
Challenges we ran into
- sonar-reasoning is not good at making decisions consistently. It either over reasons or under reasons. So it is best for explaining and communication purpose, but not for consistent decision making purpose. sonar-pro was better at making consistent decisions depending on the prompt instructions. Hence, sonar-pro was used to perform query categorization.
- Search for news gives outdated results instead of current and their links are mostly expired.
What I learned and Accomplishments I am proud of
- This was my first time building agentic logic using Perplexity, and it gave me a strong foundation in designing search experiences that adapt and evolve with user intent.
What's next for TheBurrow
- Improve UI: Create different color branches and refer to context with clearer approach.
- Search More: Allow more item searches on news, places and purchase list.
- Support multiple parallel search trees: Currently, only one root node can be active. Starting a new rabbit hole requires clearing the old one or opening a new tab.
- Improve scalability: All search logic currently runs on the frontend, which may not scale efficiently as complexity grows.
- Implement data visualization: Add interactive graphs and visual analytics to make statistics more intuitive.

Log in or sign up for Devpost to join the conversation.