This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
Khoj (खोज) — Don't Follow the Map. Follow Your Curiosity.
What I Built
Khoj is an open-source, offline-first AI exploration companion that turns a walk around your city into a curiosity-driven adventure.
It's easy to spend hours exploring a city through a screen without actually experiencing the world around us. I wanted to build something that encourages the opposite: put your phone away, step outside, pay attention to your surroundings, and discover something new.
Starting with Mumbai, Khoj helps people:
- 🧠Choose an exploration duration and an area of interest.
- 🌿 Get a curiosity-driven mission inspired by a curated city knowledge pack.
- 👀 Explore the real world and record observations, notes, and discoveries.
- 📓 Turn their own observations into a personal field journal.
- 📶 Continue their exploration experience when connectivity is unreliable, using cached app assets and locally available data.
Khoj is designed for curious people who want to experience their cities more intentionally—not just navigate from one destination to another.
The goal isn't to keep people chatting with an AI. It's to use AI to give them a reason to leave the screen and engage with the world around them.
Demo
Live demo: khoj-37vp.onrender.com
GitHub repository:
Shanaya31
/
Khoj
Open-source, offline-first AI exploration companion that turns city walks into curiosity-driven missions and a personal field journal.
Khoj (खोज)
Don't follow the map. Follow your curiosity.
Khoj is an open-source, offline-first AI exploration companion for discovering the city around you. Starting with Mumbai, it offers curiosity-driven missions, lets you record what you notice, and helps you turn those observations into a personal field journal.
Built for the Hacktoberfest 2026 Open-Source AI Challenge, Week 1: Touch Grass.
Khoj doesn't tell you where to go. It gives you reasons to look around.
Table of Contents
- See Khoj in Action
- How It Works
- Offline-First Design
- AI and Fallback Behavior
- Run Locally
- Technical Architecture
- API Reference
- Current Limitations
- Contributing
- License
See Khoj in Action
The following screenshots show the application and its exploration experience.
How It Works
- Choose: Select an exploration duration and an interest.
- Discover: Receive a mission with prompts that encourage curiosity about your surroundings.
- Explore: Head outside and record observations and notes.
- …
Screenshots: Check the
Screenshots/ folder in the repository for the app interface and exploration flow.
I also tested the core exploration-to-journal experience with the browser offline after the app had been cached, including refreshing the page without losing the active session and observations.
For the best offline experience, open the app while online first so its app shell and required assets can be cached. The hosted demo does not run Gemma itself; it uses the curated fallback experience.
Code
Repository: https://github.com/Shanaya31/Khoj
Khoj is built with an open-source stack:
- Frontend: React, Vite, and Tailwind CSS
- Backend: Python and FastAPI
- Storage: SQLite and browser-side storage
- AI: Gemma 3 4B through Ollama for local inference
- Offline support: Service worker caching and locally available city data
- Deployment: Docker and Render
The codebase is organized so the exploration experience, city knowledge, AI mission generation, and observation-based journaling can evolve independently.
How I Built It
I built Khoj around a simple idea: AI should help people engage with the real world, not give them another reason to stay online.
The application combines a React frontend with a FastAPI backend. A curated Mumbai city pack provides the grounding data for exploration missions, while the backend supports mission generation, observation recording, and reflections.
For local AI, I integrated Gemma 3 4B through Ollama. The model can generate exploration missions using the supplied city facts as context. I added grounding rules and validation so generated missions are constrained by the available city data, with a curated fallback when AI generation is unavailable or produces an unusable result.
I also built offline support into the experience. The service worker caches the app shell and static assets, while browser-side persistence helps preserve the user's active exploration session and observations. This matters because an outdoor companion should remain useful when the network doesn't cooperate.
The hosted version currently runs with AI generation disabled and uses the curated fallback path. Local Gemma inference is supported when running the project on a machine with Ollama configured.
During development, I tested the backend, frontend build, and automated tests, and refined the mission-generation prompts to reduce unsupported claims and irrelevant locations.
Why Does Open Innovation Matter?
Khoj depends on openness at several levels.
Using an open-weight model like Gemma with local inference through Ollama gives developers more control over how AI is run and integrated. It also makes experimentation possible without making a hosted, closed AI API a mandatory part of the architecture.
For an offline-first project, this distinction matters. Connectivity may be unreliable precisely when someone is out exploring. A locally runnable model provides a path toward AI-assisted experiences that don't have to depend entirely on a remote inference service.
Open-source tools also let me inspect and adapt the whole stack—from the mission-generation prompts and grounding logic to the service worker and persistence layer. I can make the system fit the experience I want to build rather than designing the experience around the limitations of a single proprietary API.
I want Khoj to be something other developers can learn from, improve, and extend to other cities. The long-term vision is a community-driven collection of city knowledge packs and exploration experiences that help more people reconnect with the places around them.
Prize Categories
Overall Winner
Khoj addresses the Touch Grass challenge by turning city exploration into curiosity-driven missions. Its offline-first design encourages people to step away from their screens, observe the world around them, and build a personal field journal.
Best Use of Gemma
Khoj integrates Gemma 3 4B through Ollama for locally generated exploration missions. Curated Mumbai city data, grounding rules, validation, and fallback missions help keep the experience relevant to real places. Local inference also provides a path toward AI-assisted exploration without relying entirely on a hosted model API.
Best Use of Render
Khoj is deployed on Render, making its exploration experience accessible through a live web demo. The hosted version currently uses curated fallback missions, while Gemma inference is supported locally through Ollama.








Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.