<?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: Abhay Singh</title>
    <description>The latest articles on DEV Community by Abhay Singh (@abhaysingh777).</description>
    <link>https://dev.to/abhaysingh777</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%2F4217997%2Fce8d2473-aafc-4e83-a842-72d2686717c4.png</url>
      <title>DEV Community: Abhay Singh</title>
      <link>https://dev.to/abhaysingh777</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abhaysingh777"/>
    <language>en</language>
    <item>
      <title>InfoMind AI Enterprise: Giving Unstructured Information an Intelligent Mind</title>
      <dc:creator>Abhay Singh</dc:creator>
      <pubDate>Fri, 30 Oct 2026 22:16:35 +0000</pubDate>
      <link>https://dev.to/abhaysingh777/a-seance-that-refuses-to-make-things-up-an-open-model-archive-that-cites-its-sources-38ol</link>
      <guid>https://dev.to/abhaysingh777/a-seance-that-refuses-to-make-things-up-an-open-model-archive-that-cites-its-sources-38ol</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge: Week 4, "Ghost in the Machine"&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An open-source AI-powered information management and retrieval system built around local LLMs, hybrid search, and grounded RAG.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Organisations generate massive amounts of information every day through reports, PDFs, spreadsheets, research papers, and internal documents. However, storing information is easy; finding the right information at the right time is difficult.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;InfoMind AI Enterprise&lt;/strong&gt;, an AI/ML-powered information management and retrieval system designed to transform unstructured documents into searchable, organised, and actionable knowledge. I started it on 28 October 2026, inside the challenge window.&lt;/p&gt;

&lt;p&gt;I interpreted the theme "Ghost in the Machine" as the invisible intelligence operating behind an ordinary information management system. Instead of simply storing documents, the system understands their content, classifies them, retrieves relevant information, and answers questions using the underlying knowledge. And when the documents say nothing, the assistant says nothing: it replies that there is not enough evidence instead of inventing an answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Document Ingestion:&lt;/strong&gt; Upload and process PDF, Word, Excel, CSV and text files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Classification:&lt;/strong&gt; Automatically categorise documents using machine learning, with a human review queue for uncertain cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Search:&lt;/strong&gt; Combine semantic similarity and keyword-based retrieval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector Search:&lt;/strong&gt; Retrieve contextually relevant document chunks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grounded RAG Assistant:&lt;/strong&gt; Generate answers based on retrieved document content only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Citations:&lt;/strong&gt; Show the documents and passages supporting every answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Information Management:&lt;/strong&gt; Organise, manage, and retrieve documents through a unified interface, with roles and an audit log.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The primary objective is to demonstrate how open-source AI can turn a traditional document repository into an intelligent knowledge management system. It is an educational prototype and uses synthetic data only: the demo documents are made-up office files (policies, a backup runbook, a purchase order).&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live application:&lt;/strong&gt; &lt;a href="https://infomind-ai-enterprise.vercel.app/" rel="noopener noreferrer"&gt;https://infomind-ai-enterprise.vercel.app/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/Abhay-s-8/infomind-ai-enterprise" rel="noopener noreferrer"&gt;https://github.com/Abhay-s-8/infomind-ai-enterprise&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to test it (about two minutes).&lt;/strong&gt; The app needs a login, and sign-up is open, so there is no shared password: click &lt;strong&gt;Create account&lt;/strong&gt;, then upload a few files from &lt;a href="https://github.com/Abhay-s-8/infomind-ai-enterprise/tree/main/data/sample/documents" rel="noopener noreferrer"&gt;&lt;code&gt;data/sample/documents&lt;/code&gt;&lt;/a&gt; (for example &lt;code&gt;backup_runbook.txt&lt;/code&gt;, &lt;code&gt;data_retention_policy.txt&lt;/code&gt;, &lt;code&gt;acceptable_use_policy.txt&lt;/code&gt;). Wait a few seconds for them to show &lt;em&gt;completed&lt;/em&gt;, open &lt;strong&gt;AI Assistant&lt;/strong&gt; and ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;How long are nightly database backups retained?&lt;/em&gt; (answered: 35 days, with the source passage)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;What is the capital of Australia?&lt;/em&gt; (refused: not enough evidence)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API runs on a free hosting plan, so the first request after a quiet period can take about a minute while it wakes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftuyehzmhg9xy7nmpfq3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftuyehzmhg9xy7nmpfq3l.png" alt="The public landing page" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frebfdzm6dn4dyk2hxwq5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frebfdzm6dn4dyk2hxwq5.png" alt="An answer with its source passage, then a refusal when the documents are silent" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Explore the complete implementation: &lt;a href="https://github.com/Abhay-s-8/infomind-ai-enterprise" rel="noopener noreferrer"&gt;https://github.com/Abhay-s-8/infomind-ai-enterprise&lt;/a&gt; (MIT licence).&lt;/p&gt;

&lt;p&gt;The repository contains the application source code, backend implementation, AI/ML components, tests, and project documentation, including a diagram-heavy explanation of every data flow in &lt;a href="https://github.com/Abhay-s-8/infomind-ai-enterprise/blob/main/docs/PROJECT_EXPLAINED.md" rel="noopener noreferrer"&gt;&lt;code&gt;docs/PROJECT_EXPLAINED.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;I designed InfoMind AI Enterprise using a modular architecture combining traditional machine learning, information retrieval, vector databases, and open-weight language models.&lt;/p&gt;

&lt;h3&gt;
  
  
  Technology Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React, TypeScript, Vite, Tailwind CSS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Python, FastAPI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Machine Learning&lt;/td&gt;
&lt;td&gt;Scikit-learn (TF-IDF with Logistic Regression or Linear SVM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Llama 3.2 (3B) by default through Ollama; Llama 3.1 (8B) measured better. The always-on demo uses &lt;code&gt;beam&lt;/code&gt;, served by Ollama's hosted cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local Model Runtime&lt;/td&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embeddings&lt;/td&gt;
&lt;td&gt;nomic-embed-text locally; the free-hosted demo uses a simple lexical embedder because the host cannot run Ollama&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector Database&lt;/td&gt;
&lt;td&gt;Qdrant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;PostgreSQL / SQLite&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Containerisation&lt;/td&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Architecture and Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FAbhay-s-8%2Finfomind-ai-enterprise%2Fmain%2Fdocs%2Fimages%2F06-assistant-rag.png" class="article-body-image-wrapper"&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%2FAbhay-s-8%2Finfomind-ai-enterprise%2Fmain%2Fdocs%2Fimages%2F06-assistant-rag.png" alt="How a question becomes an answer or a refusal" width="800" height="2424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document Ingestion.&lt;/strong&gt; Users upload documents, which are validated and processed to extract their text and metadata.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Processing and Classification.&lt;/strong&gt; Extracted text is cleaned, split into passages, and classified with machine learning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding Generation.&lt;/strong&gt; Document chunks are converted into numerical vector representations using an embedding model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Retrieval.&lt;/strong&gt; The retrieval layer combines semantic search with keyword-based search to improve the relevance of retrieved information. It only searches documents the signed-in user may see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval-Augmented Generation.&lt;/strong&gt; If the retrieved passages are relevant enough, they are passed as context to the language model. If not, the model is never called and the assistant says there is not enough evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grounded Answer Generation.&lt;/strong&gt; The language model answers from the retrieved context. The app accepts an answer only if it is marked supported and cites a passage that was really retrieved; the citation text shown to you comes from the stored passage, never from the model.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The rest: a database-backed job queue, role-based access (admin, analyst, reviewer) enforced on the server, an audit log, live streaming of answers, and an evaluation command. There are 111 backend tests plus a frontend suite, and they run without downloading any model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open-Source AI Integration
&lt;/h3&gt;

&lt;p&gt;A major design decision was to use Ollama with open-weight Llama models rather than making the entire system dependent on proprietary AI APIs. This supports locally hosted inference and makes it easy to select and experiment with models: the model is one setting.&lt;/p&gt;

&lt;p&gt;That mattered in practice. With the small default model the assistant wrongly refused a question it could answer whenever a second, less relevant passage was also retrieved: &lt;strong&gt;0 out of 5&lt;/strong&gt; tries. Switching to Llama 3.1 (8B) answered the same question &lt;strong&gt;10 out of 10&lt;/strong&gt; times, and the app's own evaluation scored 4/4 answerable questions answered and 3/3 unanswerable ones refused.&lt;/p&gt;

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

&lt;p&gt;Open innovation was central to the design of InfoMind AI Enterprise. Using open-weight models and open-source infrastructure made it possible to experiment with the complete AI pipeline, from document processing and embedding generation to retrieval and response generation. It provides several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy and Control:&lt;/strong&gt; Local inference can reduce the need to transmit document contents to external AI providers. Run locally, nothing leaves your machine. For the always-on demo I chose Ollama's hosted cloud so visitors need nothing installed, so in the demo the passages for each question do go to Ollama's servers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility:&lt;/strong&gt; Developers and students can experiment without depending entirely on expensive proprietary APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; Models and retrieval components can be replaced or improved independently, as the model swap above shows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transparency:&lt;/strong&gt; Developers can understand, inspect, and customise different components of the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Collaboration:&lt;/strong&gt; Open technologies make experimentation, learning, and collaborative development easier.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One honest note: the hosted demo uses a model called &lt;code&gt;beam&lt;/code&gt;, which Ollama describes as an open model built by Reflection. Its page does not state a licence, so the open-weight claim in this post rests on the local Llama models, not on &lt;code&gt;beam&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For me, this project demonstrates that building intelligent systems does not necessarily require relying entirely on closed AI ecosystems.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built this with an AI coding assistant (Claude Code), and this post was drafted with AI help and reviewed by me. Below is a condensed excerpt of the session covering the Hacktoberfest work: reading the challenge rules, adding support for Ollama's hosted cloud, measuring the model, and testing the live demo as a judge would. Credentials and private paths have been removed.&lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
    &lt;span class="agent-session-tool-icon-badge" title="Claude Code"&gt;
&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Building InfoMind for Hacktoberfest Week 4 (condensed excerpt)&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Condensed excerpt of the Hacktoberfest-related parts of a longer Claude Code session. Credentials, keys and private paths have been removed; the figures and outcomes are the real ones from the session.&lt;/p&gt;

&lt;p&gt;Is this project (InfoMind AI Enterprise, a document archive with a cited RAG assistant) good for Hacktoberfest?&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Before answering I read the official guide instead of relying on memory.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getknowledgedocument"&gt;get_knowledge_document&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;topic: hacktoberfest&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;topic: hacktoberfest&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Hacktoberfest 2026 no longer counts pull requests. Rewards are virtual stickers (3 = a mailed sticker pack). The weekly DEV Open-Source AI Challenges earn a sticker each.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-getchallenges"&gt;get_challenges&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;(live challenge list)&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;(live challenge list)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Week 4, "Ghost in the Machine", Oct 26-31, submissions due Oct 31 11:59 PM PDT. Build a NEW project with open-source AI at its core and publish a DEV post with the #hf26challenge tag. If the app needs a login, give judges test instructions.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Correction to something I said earlier: I had described the old pull-request rules. For 2026 the route is the Week 4 challenge. InfoMind qualifies on timing (first commit 28 October 2026, inside the window) and on the open-source-AI requirement. The theme fit is weaker, so the post should be honest about that, and the demo needs to show the AI assistant working.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;The live site has no AI assistant because Render cannot run Ollama. Is there another option, for example Ollama's own hosted cloud?&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Ollama's docs say cloud models are reachable at &lt;a href="https://ollama.com" rel="noopener noreferrer"&gt;https://ollama.com&lt;/a&gt; with a bearer-token API key, which my client could send after a small change. Pricing is not simply free: the free plan has a small monthly allowance for starter models, and other models need pay-as-you-go credits. I could not confirm whether a card is needed, so I told you to check your plan before relying on it.&lt;/p&gt;

                &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-edittest"&gt;edit + test&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Added an OLLAMA_API_KEY setting that the Ollama client sends as a bearer toke...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Added an OLLAMA_API_KEY setting that the Ollama client sends as a bearer token, clear error messages for 401/402/403/429 that never echo the key, a refusal to send the key over plain http to a remote host in production, and a `check-llm` command that lists models and makes one tiny JSON request without printing the key.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;111 backend tests pass, lint clean.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-pythonmappclicheckllmlist"&gt;python -m app.cli check-llm --list&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;OLLAMA_BASE_URL=https://ollama.com, key supplied through the environment, mod...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;OLLAMA_BASE_URL=https://ollama.com, key supplied through the environment, model varied per run&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;23 models listed. beam: first text after 5.3 s, valid JSON. gpt-oss:20b and gemma4:31b: HTTP 402 (credits required on this account).&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Only beam worked on this account. My first error message said "Is the model pulled?" for a 402, which was misleading, so I changed it to say credits are required.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Does it actually answer well? Measure it.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-pythonmappclievaluate"&gt;python -m app.cli evaluate&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;Throwaway SQLite database, lexical hashing embedder (as on the live site), 14...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Throwaway SQLite database, lexical hashing embedder (as on the live site), 14 synthetic documents, model = beam via Ollama cloud&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Answerable questions answered 4/4, expected evidence cited 4/4, unanswerable refused 3/3, citation validity 100%, mean latency 1.04 s.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;This is seven questions on a small synthetic corpus, one run, and nobody has reviewed the answers for faithfulness. It shows the pipeline works with this model, not that the answers are reliable in general. I recorded it in docs/EVALUATION.md with those caveats.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Set it up on the live site.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-setrenderenvironmentvariablesthenpush"&gt;set Render environment variables, then push&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;OLLAMA_BASE_URL, OLLAMA_LLM_MODEL=beam, OLLAMA_API_KEY (value not shown)&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;OLLAMA_BASE_URL, OLLAMA_LLM_MODEL=beam, OLLAMA_API_KEY (value not shown)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Deploy live. I also checked that the key does not appear in any commit or tracked file.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-liveapicheck"&gt;live API check&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;sign in, check model status, ask two questions, read the stream event timings&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;sign in, check model status, ask two questions, read the stream event timings&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Model status: reachable, beam available. "How long are nightly database backups retained?" -&amp;gt; "35 days" citing backup_runbook.txt (first call 8.0 s). "What is the capital of Australia?" -&amp;gt; refused, no citations. Stream events arrived at 0.39 s (meta), 1.19 s (citations), then text, done at 1.34 s, so streaming works through Render's proxy.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;The key was pasted into the chat, so I told you to rotate it after the demo.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Can a judge actually try it? Test it the way a judge would.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-browsertestofthelivesite"&gt;browser test of the live site&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;create a new account, upload 5 sample documents, ask an answerable and an una...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;create a new account, upload 5 sample documents, ask an answerable and an unanswerable question&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Sign-up worked, all 5 documents reached completed, the assistant answered "35 days" with its source passage in 1.5 s and refused the out-of-scope question. No console or network errors.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Sign-up is open, so a judge can create their own account and upload the sample files from the repository. I put those steps in the post because the challenge asks for test instructions when a login is needed.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Write the submission as a DEV draft.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-createarticledraft"&gt;create_article (draft)&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;full submission post&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;full submission post&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;DEV refused the write with no reason given. A minimal draft worked, so I added the text back in sections to find the cause.&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;Bisecting showed DEV's write filter rejected two things: a quoted example of a prompt-injection phrase, and a sentence about keys and the gateway. Describing the injection filter in general words instead, and dropping the key sentence, let the full post through. I published only after you read it and said yes, and checked afterwards that it appears in the public hf26challenge tag listing.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        12 of 11 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The interesting part of building InfoMind AI Enterprise was seeing how information that initially appeared to be just a collection of disconnected documents could become an interconnected knowledge source.&lt;/p&gt;

&lt;p&gt;A user can ask a question in natural language instead of manually opening multiple documents and searching through hundreds of pages. The system retrieves relevant information, connects it to the question, and generates an answer with supporting citations. And an archive you cannot trust is worse than none, so when there is no evidence, the assistant says so.&lt;/p&gt;

&lt;p&gt;That is the idea behind InfoMind: giving information a way to become useful knowledge.&lt;/p&gt;

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

&lt;p&gt;Primary challenge: Hacktoberfest Open-Source AI Challenge, Week 4: Ghost in the Machine. I am entering the overall prize only. I am not claiming any partner category, because the project does not use a partner's technology in a way that meets their requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No OCR yet: scanned PDFs fail with a clear message.&lt;/li&gt;
&lt;li&gt;All sample data and the classifier's training data are synthetic, so its near-perfect scores say almost nothing about real documents.&lt;/li&gt;
&lt;li&gt;I have not manually reviewed the assistant's answers for faithfulness. The evaluation is seven questions on a small corpus.&lt;/li&gt;
&lt;li&gt;The free hosting sleeps when idle, and its database expires on 2026-11-27.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Built with curiosity, open-source technologies, and a belief that AI should make knowledge more accessible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; InfoMind AI Enterprise · &lt;strong&gt;Developer:&lt;/strong&gt; Abhay Singh · &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Abhay-s-8" rel="noopener noreferrer"&gt;Abhay-s-8&lt;/a&gt;&lt;/p&gt;

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