<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shanaya Carvalho</title>
    <description>The latest articles on DEV Community by Shanaya Carvalho (@shanaya_31).</description>
    <link>https://dev.to/shanaya_31</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4155651%2F86f298e9-4499-40b3-8f4e-e9c8f6ab24e7.png</url>
      <title>DEV Community: Shanaya Carvalho</title>
      <link>https://dev.to/shanaya_31</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shanaya_31"/>
    <language>en</language>
    <item>
      <title>Khoj: Step Outside With a Question, Come Back With a Story</title>
      <dc:creator>Shanaya Carvalho</dc:creator>
      <pubDate>Mon, 12 Oct 2026 01:36:15 +0000</pubDate>
      <link>https://dev.to/shanaya_31/khoj-step-outside-with-a-question-come-back-with-a-story-n5n</link>
      <guid>https://dev.to/shanaya_31/khoj-step-outside-with-a-question-come-back-with-a-story-n5n</guid>
      <description>&lt;p&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Khoj (खोज) — Don't Follow the Map. Follow Your Curiosity.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Khoj is an open-source, offline-first AI exploration companion that turns a walk around your city into a curiosity-driven adventure.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Starting with Mumbai, Khoj helps people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧭 Choose an exploration duration and an area of interest.&lt;/li&gt;
&lt;li&gt;🌿 Get a curiosity-driven mission inspired by a curated city knowledge pack.&lt;/li&gt;
&lt;li&gt;👀 Explore the real world and record observations, notes, and discoveries.&lt;/li&gt;
&lt;li&gt;📓 Turn their own observations into a personal field journal.&lt;/li&gt;
&lt;li&gt;📶 Continue their exploration experience when connectivity is unreliable, using cached app assets and locally available data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Khoj is designed for curious people who want to experience their cities more intentionally—not just navigate from one destination to another.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://khoj-37vp.onrender.com/" rel="noopener noreferrer"&gt;khoj-37vp.onrender.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Shanaya31" rel="noopener noreferrer"&gt;
        Shanaya31
      &lt;/a&gt; / &lt;a href="https://github.com/Shanaya31/Khoj" rel="noopener noreferrer"&gt;
        Khoj
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-source, offline-first AI exploration companion that turns city walks into curiosity-driven missions and a personal field journal.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Khoj (खोज)&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Don't follow the map. Follow your curiosity.&lt;/em&gt;&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Khoj&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;Built for the &lt;strong&gt;Hacktoberfest 2026 Open-Source AI Challenge, Week 1: Touch Grass&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://khoj-37vp.onrender.com/" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/strong&gt; · &lt;strong&gt;&lt;a href="https://github.com/Shanaya31/Khoj" rel="noopener noreferrer"&gt;Source Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Khoj doesn't tell you where to go. It gives you reasons to look around.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#see-khoj-in-action" rel="noopener noreferrer"&gt;See Khoj in Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#how-it-works" rel="noopener noreferrer"&gt;How It Works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#offline-first-design" rel="noopener noreferrer"&gt;Offline-First Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#ai-and-fallback-behavior" rel="noopener noreferrer"&gt;AI and Fallback Behavior&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#run-locally" rel="noopener noreferrer"&gt;Run Locally&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#technical-architecture" rel="noopener noreferrer"&gt;Technical Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#api-reference" rel="noopener noreferrer"&gt;API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#current-limitations" rel="noopener noreferrer"&gt;Current Limitations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Shanaya31/Khoj#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;See Khoj in Action&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;The following screenshots show the application and its exploration experience.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot.png" alt="Khoj application"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%281%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25281%2529.png" alt="Khoj exploration screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%282%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25282%2529.png" alt="Khoj mission experience"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%283%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25283%2529.png" alt="Khoj exploration interface"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%284%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25284%2529.png" alt="Khoj mission in progress"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%285%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25285%2529.png" alt="Khoj observation experience"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%286%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25286%2529.png" alt="Khoj field journal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/Shanaya31/Khoj/Screenshots/Screenshot%20%287%29.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FShanaya31%2FKhoj%2FHEAD%2FScreenshots%2FScreenshot%2520%25287%2529.png" alt="Khoj offline experience"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How It Works&lt;/h2&gt;

&lt;/div&gt;


&lt;ol&gt;

&lt;li&gt;

&lt;strong&gt;Choose:&lt;/strong&gt; Select an exploration duration and an interest.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discover:&lt;/strong&gt; Receive a mission with prompts that encourage curiosity about your surroundings.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore:&lt;/strong&gt; Head outside and record observations and notes.&lt;/li&gt;

&lt;li&gt;…&lt;/li&gt;

&lt;/ol&gt;&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Shanaya31/Khoj" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Screenshots:&lt;/strong&gt; Check the &lt;code&gt;Screenshots/&lt;/code&gt; folder in the repository for the app interface and exploration flow.

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/Shanaya31/Khoj" rel="noopener noreferrer"&gt;https://github.com/Shanaya31/Khoj&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Khoj is built with an open-source stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React, Vite, and Tailwind CSS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python and FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage:&lt;/strong&gt; SQLite and browser-side storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; Gemma 3 4B through Ollama for local inference&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline support:&lt;/strong&gt; Service worker caching and locally available city data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment:&lt;/strong&gt; Docker and Render&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The codebase is organized so the exploration experience, city knowledge, AI mission generation, and observation-based journaling can evolve independently.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built Khoj around a simple idea: &lt;strong&gt;AI should help people engage with the real world, not give them another reason to stay online.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;For local AI, I integrated &lt;strong&gt;Gemma 3 4B through Ollama&lt;/strong&gt;. 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;During development, I tested the backend, frontend build, and automated tests, and refined the mission-generation prompts to reduce unsupported claims and irrelevant locations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Khoj depends on openness at several levels.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Overall Winner
&lt;/h3&gt;

&lt;p&gt;Khoj addresses the &lt;em&gt;Touch Grass&lt;/em&gt; 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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Gemma
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Use of Render
&lt;/h3&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>opensource</category>
      <category>ai</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
