<?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: Krishna Kumar</title>
    <description>The latest articles on DEV Community by Krishna Kumar (@krishna_kumar_612c63ef69e).</description>
    <link>https://dev.to/krishna_kumar_612c63ef69e</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%2F4155093%2F046f39eb-de06-47d0-97d8-9e6e13d2eed6.jpg</url>
      <title>DEV Community: Krishna Kumar</title>
      <link>https://dev.to/krishna_kumar_612c63ef69e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/krishna_kumar_612c63ef69e"/>
    <language>en</language>
    <item>
      <title>I Built a Customer Support AI System to Help a Friend Find Answers Faster</title>
      <dc:creator>Krishna Kumar</dc:creator>
      <pubDate>Mon, 05 Oct 2026 05:00:33 +0000</pubDate>
      <link>https://dev.to/krishna_kumar_612c63ef69e/i-built-a-customer-support-ai-system-to-help-a-friend-find-answers-faster-3m92</link>
      <guid>https://dev.to/krishna_kumar_612c63ef69e/i-built-a-customer-support-ai-system-to-help-a-friend-find-answers-faster-3m92</guid>
      <description>&lt;p&gt;I built a Customer Support AI System to help a friend who was practicing customer-support workflows and needed a faster way to find accurate answers from support documentation.&lt;/p&gt;

&lt;p&gt;A common problem in customer support is that the information already exists, but finding the right piece of information can take time.&lt;/p&gt;

&lt;p&gt;Support teams may have FAQs, refund policies, account policies, payment documentation, and other reference documents spread across multiple files.&lt;/p&gt;

&lt;p&gt;Instead of manually searching through those documents, I built a system that allows support knowledge to be uploaded and searched using semantic similarity.&lt;/p&gt;

&lt;p&gt;The system can:&lt;/p&gt;

&lt;p&gt;Upload FAQ, support, policy, PDF, TXT, and Markdown documents&lt;br&gt;
Extract document text&lt;br&gt;
Clean and split the text into overlapping chunks&lt;br&gt;
Generate embeddings&lt;br&gt;
Store embeddings in ChromaDB&lt;br&gt;
Perform semantic search&lt;br&gt;
Return relevant chunks with source metadata&lt;br&gt;
Track the original document and page for retrieved information&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Help a support agent find the right information faster.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;The project includes a Streamlit demonstration interface for interacting with the knowledge base.&lt;/p&gt;

&lt;p&gt;Example questions&lt;/p&gt;

&lt;p&gt;The system can be tested with questions such as:&lt;/p&gt;

&lt;p&gt;How long do customers have to request a refund?&lt;br&gt;
What should I do if my account is locked?&lt;br&gt;
How quickly are password reset emails sent?&lt;br&gt;
Which payment methods are supported?&lt;br&gt;
Can a refund be requested after 30 days?&lt;/p&gt;

&lt;p&gt;The repository also provides a FastAPI backend and Swagger documentation for interacting with the API.&lt;/p&gt;

&lt;p&gt;Demo:&lt;br&gt;
&lt;a href="https://github.com/Sinjini1803/Customer-Support-System" rel="noopener noreferrer"&gt;https://github.com/Sinjini1803/Customer-Support-System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;The complete source code is available here:&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/Sinjini1803/Customer-Support-System" rel="noopener noreferrer"&gt;https://github.com/Sinjini1803/Customer-Support-System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the application code, sample data, tests, Docker configuration, ingestion pipeline, and demonstration interface.&lt;/p&gt;

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

&lt;p&gt;The system is built around a Retrieval-Augmented Generation-style knowledge pipeline, with the current implementation focusing on the retrieval stage.&lt;/p&gt;

&lt;p&gt;The architecture is:&lt;/p&gt;

&lt;p&gt;Support Documents&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Upload API&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
PDF / Text Extraction&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Text Cleaning&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Chunking + Overlap&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Sentence Embeddings&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
ChromaDB&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
User Query&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Query Embedding&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Semantic Similarity Search&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Top-K Relevant Chunks&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Source Metadata&lt;/p&gt;

&lt;p&gt;The repository implements PDF/text extraction using PyMuPDF, creates overlapping chunks, generates normalized embeddings using Sentence Transformers, and persists those vectors in ChromaDB.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document Ingestion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A support document can be uploaded through the API.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;curl -X POST &lt;a href="http://localhost:8000/ingest" rel="noopener noreferrer"&gt;http://localhost:8000/ingest&lt;/a&gt; \&lt;br&gt;
  -F "file=&lt;a class="mentioned-user" href="https://dev.to/data"&gt;@data&lt;/a&gt;/sample_documents/refund_policy.pdf"&lt;/p&gt;

&lt;p&gt;The system extracts the document content and divides it into manageable chunks.&lt;/p&gt;

&lt;p&gt;Each chunk retains metadata such as:&lt;/p&gt;

&lt;p&gt;Document ID&lt;br&gt;
Document name&lt;br&gt;
Document type&lt;br&gt;
Page number&lt;br&gt;
Chunk number&lt;br&gt;
Source filename&lt;br&gt;
Upload timestamp&lt;/p&gt;

&lt;p&gt;This means that a search result can be traced back to its original document and page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Embeddings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the document is processed, the text chunks are converted into numerical vector representations using a Sentence Transformer model.&lt;/p&gt;

&lt;p&gt;This allows the system to compare the meaning of a user's question with the meaning of stored support information rather than relying only on exact keyword matches.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ChromaDB&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The generated embeddings are stored in ChromaDB.&lt;/p&gt;

&lt;p&gt;When a user asks a question, the question is also converted into an embedding.&lt;/p&gt;

&lt;p&gt;The system then performs semantic similarity search and retrieves the most relevant chunks.&lt;/p&gt;

&lt;p&gt;User Question&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Query Embedding&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
ChromaDB Search&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Top-K Relevant Chunks&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Document + Page Metadata&lt;/p&gt;

&lt;p&gt;The current API returns the chunk text, similarity score, document information, page number, chunk ID, and source filename.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;FastAPI Backend&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The backend is implemented using FastAPI.&lt;/p&gt;

&lt;p&gt;The project provides endpoints for:&lt;/p&gt;

&lt;p&gt;Health checking&lt;br&gt;
Document ingestion&lt;br&gt;
Semantic search&lt;/p&gt;

&lt;p&gt;It also exposes Swagger documentation through:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:8000/docs" rel="noopener noreferrer"&gt;http://localhost:8000/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;when running locally.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Streamlit Demo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A Streamlit interface provides a simple way to interact with the knowledge base without having to manually call API endpoints.&lt;/p&gt;

&lt;p&gt;The project can be started with:&lt;/p&gt;

&lt;p&gt;streamlit run demo/streamlit_app.py&lt;/p&gt;

&lt;p&gt;The repository also includes Docker and Docker Compose support.&lt;/p&gt;

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

&lt;p&gt;Open innovation mattered to this project because I wanted to understand how much of an AI-powered support workflow could be built using open tools rather than relying entirely on a closed AI API.&lt;/p&gt;

&lt;p&gt;The project uses open-source components for the core retrieval pipeline:&lt;/p&gt;

&lt;p&gt;Sentence Transformers for embeddings&lt;br&gt;
ChromaDB for vector storage&lt;br&gt;
FastAPI for the backend&lt;br&gt;
Streamlit for the demonstration interface&lt;/p&gt;

&lt;p&gt;This gives developers more control over the individual parts of the system.&lt;/p&gt;

&lt;p&gt;Flexibility&lt;/p&gt;

&lt;p&gt;The embedding model can be changed independently from the vector database and API layer.&lt;/p&gt;

&lt;p&gt;The retrieval system is therefore not tied to one proprietary provider.&lt;/p&gt;

&lt;p&gt;Transparency&lt;/p&gt;

&lt;p&gt;Because the retrieval pipeline is built from separate components, it is easier to understand how documents are processed, embedded, stored, and retrieved.&lt;/p&gt;

&lt;p&gt;Privacy and Control&lt;/p&gt;

&lt;p&gt;Customer-support documentation can contain information that organizations may not want to send to an external service for every search.&lt;/p&gt;

&lt;p&gt;Using locally controllable components gives developers more flexibility when designing a privacy-conscious system.&lt;/p&gt;

&lt;p&gt;Learning&lt;/p&gt;

&lt;p&gt;Building the project also helped me understand that an AI application is not just about generating text.&lt;/p&gt;

&lt;p&gt;A useful system needs:&lt;/p&gt;

&lt;p&gt;Good document processing&lt;br&gt;
Good chunking&lt;br&gt;
Meaningful embeddings&lt;br&gt;
Efficient retrieval&lt;br&gt;
Source tracking&lt;br&gt;
Testing&lt;br&gt;
A usable interface&lt;br&gt;
A Small but Important Design Choice&lt;/p&gt;

&lt;p&gt;One thing I wanted to preserve was source traceability.&lt;/p&gt;

&lt;p&gt;When a support agent gets a search result, simply returning a piece of text is not enough.&lt;/p&gt;

&lt;p&gt;The system stores metadata that can identify the original document and page.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Document: refund_policy.pdf&lt;br&gt;
Page: 3&lt;br&gt;
Chunk: 2&lt;br&gt;
Similarity: 0.XX&lt;/p&gt;

&lt;p&gt;This makes the retrieved information easier to verify.&lt;/p&gt;

&lt;p&gt;For customer support, that matters because an answer should ideally be backed by the actual support documentation.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;The biggest lesson from building this project was that retrieval quality is extremely important in AI applications.&lt;/p&gt;

&lt;p&gt;Before working on this project, it was easy to think of an AI system mainly as a model that generates an answer.&lt;/p&gt;

&lt;p&gt;But building the retrieval pipeline showed me that the quality of the information supplied to an AI system matters just as much.&lt;/p&gt;

&lt;p&gt;If documents are poorly extracted, badly chunked, or difficult to retrieve, even a powerful language model would have difficulty producing a reliable answer.&lt;/p&gt;

&lt;p&gt;This project therefore helped me understand the foundation behind RAG systems:&lt;/p&gt;

&lt;p&gt;Documents → Chunks → Embeddings → Vector Search → Relevant Context&lt;/p&gt;

&lt;p&gt;The current implementation intentionally separates retrieval from answer generation. The repository documents how an LLM could be added after semantic search to generate a grounded support answer with citations in a future iteration.&lt;/p&gt;

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

&lt;p&gt;Optional: I did not include a DevRelay session for this submission.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;/p&gt;

&lt;p&gt;This submission is primarily for the Hacktoberfest Weekend Challenge: Build for a Friend.&lt;/p&gt;

&lt;p&gt;I am only entering additional partner categories when the required partner technology is actually used in the project.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;I started this project with a simple problem:&lt;/p&gt;

&lt;p&gt;Customer-support information is useful only when people can find it quickly.&lt;/p&gt;

&lt;p&gt;That led me to build a searchable knowledge system that turns support documents into a semantic knowledge base.&lt;/p&gt;

&lt;p&gt;What began as a way to help someone practice customer-support workflows became a practical exploration of document processing, embeddings, vector databases, semantic search, APIs, and AI application architecture.&lt;/p&gt;

&lt;p&gt;The most important lesson for me was that building useful AI is not always about creating the biggest model.&lt;/p&gt;

&lt;p&gt;Sometimes it is about building a better path between a person's question and the information they actually need.&lt;/p&gt;

&lt;p&gt;That is what I wanted to build for my friend.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #weekendchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built a Customer Support AI System to Help a Friend Find Answers Faster</title>
      <dc:creator>Krishna Kumar</dc:creator>
      <pubDate>Sun, 04 Oct 2026 20:09:26 +0000</pubDate>
      <link>https://dev.to/krishna_kumar_612c63ef69e/i-built-a-customer-support-ai-system-to-help-a-friend-find-answers-faster-1f37</link>
      <guid>https://dev.to/krishna_kumar_612c63ef69e/i-built-a-customer-support-ai-system-to-help-a-friend-find-answers-faster-1f37</guid>
      <description>&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;I built a Customer Support AI System to help a friend who was practicing customer-support workflows and needed a faster way to find accurate answers from support documentation.&lt;/p&gt;

&lt;p&gt;A common problem in customer support is that the information already exists, but finding the right piece of information can take time.&lt;/p&gt;

&lt;p&gt;Support teams may have FAQs, refund policies, account policies, payment documentation, and other reference documents spread across multiple files.&lt;/p&gt;

&lt;p&gt;Instead of manually searching through those documents, I built a system that allows support knowledge to be uploaded and searched using semantic similarity.&lt;/p&gt;

&lt;p&gt;The system can:&lt;/p&gt;

&lt;p&gt;Upload FAQ, support, policy, PDF, TXT, and Markdown documents&lt;br&gt;
Extract document text&lt;br&gt;
Clean and split the text into overlapping chunks&lt;br&gt;
Generate embeddings&lt;br&gt;
Store embeddings in ChromaDB&lt;br&gt;
Perform semantic search&lt;br&gt;
Return relevant chunks with source metadata&lt;br&gt;
Track the original document and page for retrieved information&lt;/p&gt;

&lt;p&gt;The goal is simple:&lt;/p&gt;

&lt;p&gt;Help a support agent find the right information faster.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;The project includes a Streamlit demonstration interface for interacting with the knowledge base.&lt;/p&gt;

&lt;p&gt;Example questions&lt;/p&gt;

&lt;p&gt;The system can be tested with questions such as:&lt;/p&gt;

&lt;p&gt;How long do customers have to request a refund?&lt;br&gt;
What should I do if my account is locked?&lt;br&gt;
How quickly are password reset emails sent?&lt;br&gt;
Which payment methods are supported?&lt;br&gt;
Can a refund be requested after 30 days?&lt;/p&gt;

&lt;p&gt;The repository also provides a FastAPI backend and Swagger documentation for interacting with the API.&lt;/p&gt;

&lt;p&gt;Demo:&lt;br&gt;
&lt;a href="https://github.com/Sinjini1803/Customer-Support-System" rel="noopener noreferrer"&gt;https://github.com/Sinjini1803/Customer-Support-System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;The complete source code is available here:&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/Sinjini1803/Customer-Support-System" rel="noopener noreferrer"&gt;https://github.com/Sinjini1803/Customer-Support-System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the application code, sample data, tests, Docker configuration, ingestion pipeline, and demonstration interface.&lt;/p&gt;

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

&lt;p&gt;The system is built around a Retrieval-Augmented Generation-style knowledge pipeline, with the current implementation focusing on the retrieval stage.&lt;/p&gt;

&lt;p&gt;The architecture is:&lt;/p&gt;

&lt;p&gt;Support Documents&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Upload API&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
PDF / Text Extraction&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Text Cleaning&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Chunking + Overlap&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Sentence Embeddings&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
ChromaDB&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
User Query&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Query Embedding&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Semantic Similarity Search&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Top-K Relevant Chunks&lt;br&gt;
       |&lt;br&gt;
       v&lt;br&gt;
Source Metadata&lt;/p&gt;

&lt;p&gt;The repository implements PDF/text extraction using PyMuPDF, creates overlapping chunks, generates normalized embeddings using Sentence Transformers, and persists those vectors in ChromaDB.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document Ingestion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A support document can be uploaded through the API.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;curl -X POST &lt;a href="http://localhost:8000/ingest" rel="noopener noreferrer"&gt;http://localhost:8000/ingest&lt;/a&gt; \&lt;br&gt;
  -F "file=&lt;a class="mentioned-user" href="https://dev.to/data"&gt;@data&lt;/a&gt;/sample_documents/refund_policy.pdf"&lt;/p&gt;

&lt;p&gt;The system extracts the document content and divides it into manageable chunks.&lt;/p&gt;

&lt;p&gt;Each chunk retains metadata such as:&lt;/p&gt;

&lt;p&gt;Document ID&lt;br&gt;
Document name&lt;br&gt;
Document type&lt;br&gt;
Page number&lt;br&gt;
Chunk number&lt;br&gt;
Source filename&lt;br&gt;
Upload timestamp&lt;/p&gt;

&lt;p&gt;This means that a search result can be traced back to its original document and page.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Embeddings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After the document is processed, the text chunks are converted into numerical vector representations using a Sentence Transformer model.&lt;/p&gt;

&lt;p&gt;This allows the system to compare the meaning of a user's question with the meaning of stored support information rather than relying only on exact keyword matches.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ChromaDB&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The generated embeddings are stored in ChromaDB.&lt;/p&gt;

&lt;p&gt;When a user asks a question, the question is also converted into an embedding.&lt;/p&gt;

&lt;p&gt;The system then performs semantic similarity search and retrieves the most relevant chunks.&lt;/p&gt;

&lt;p&gt;User Question&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Query Embedding&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
ChromaDB Search&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Top-K Relevant Chunks&lt;br&gt;
      |&lt;br&gt;
      v&lt;br&gt;
Document + Page Metadata&lt;/p&gt;

&lt;p&gt;The current API returns the chunk text, similarity score, document information, page number, chunk ID, and source filename.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;FastAPI Backend&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The backend is implemented using FastAPI.&lt;/p&gt;

&lt;p&gt;The project provides endpoints for:&lt;/p&gt;

&lt;p&gt;Health checking&lt;br&gt;
Document ingestion&lt;br&gt;
Semantic search&lt;/p&gt;

&lt;p&gt;It also exposes Swagger documentation through:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:8000/docs" rel="noopener noreferrer"&gt;http://localhost:8000/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;when running locally.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Streamlit Demo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A Streamlit interface provides a simple way to interact with the knowledge base without having to manually call API endpoints.&lt;/p&gt;

&lt;p&gt;The project can be started with:&lt;/p&gt;

&lt;p&gt;streamlit run demo/streamlit_app.py&lt;/p&gt;

&lt;p&gt;The repository also includes Docker and Docker Compose support.&lt;/p&gt;

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

&lt;p&gt;Open innovation mattered to this project because I wanted to understand how much of an AI-powered support workflow could be built using open tools rather than relying entirely on a closed AI API.&lt;/p&gt;

&lt;p&gt;The project uses open-source components for the core retrieval pipeline:&lt;/p&gt;

&lt;p&gt;Sentence Transformers for embeddings&lt;br&gt;
ChromaDB for vector storage&lt;br&gt;
FastAPI for the backend&lt;br&gt;
Streamlit for the demonstration interface&lt;/p&gt;

&lt;p&gt;This gives developers more control over the individual parts of the system.&lt;/p&gt;

&lt;p&gt;Flexibility&lt;/p&gt;

&lt;p&gt;The embedding model can be changed independently from the vector database and API layer.&lt;/p&gt;

&lt;p&gt;The retrieval system is therefore not tied to one proprietary provider.&lt;/p&gt;

&lt;p&gt;Transparency&lt;/p&gt;

&lt;p&gt;Because the retrieval pipeline is built from separate components, it is easier to understand how documents are processed, embedded, stored, and retrieved.&lt;/p&gt;

&lt;p&gt;Privacy and Control&lt;/p&gt;

&lt;p&gt;Customer-support documentation can contain information that organizations may not want to send to an external service for every search.&lt;/p&gt;

&lt;p&gt;Using locally controllable components gives developers more flexibility when designing a privacy-conscious system.&lt;/p&gt;

&lt;p&gt;Learning&lt;/p&gt;

&lt;p&gt;Building the project also helped me understand that an AI application is not just about generating text.&lt;/p&gt;

&lt;p&gt;A useful system needs:&lt;/p&gt;

&lt;p&gt;Good document processing&lt;br&gt;
Good chunking&lt;br&gt;
Meaningful embeddings&lt;br&gt;
Efficient retrieval&lt;br&gt;
Source tracking&lt;br&gt;
Testing&lt;br&gt;
A usable interface&lt;br&gt;
A Small but Important Design Choice&lt;/p&gt;

&lt;p&gt;One thing I wanted to preserve was source traceability.&lt;/p&gt;

&lt;p&gt;When a support agent gets a search result, simply returning a piece of text is not enough.&lt;/p&gt;

&lt;p&gt;The system stores metadata that can identify the original document and page.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Document: refund_policy.pdf&lt;br&gt;
Page: 3&lt;br&gt;
Chunk: 2&lt;br&gt;
Similarity: 0.XX&lt;/p&gt;

&lt;p&gt;This makes the retrieved information easier to verify.&lt;/p&gt;

&lt;p&gt;For customer support, that matters because an answer should ideally be backed by the actual support documentation.&lt;/p&gt;

&lt;p&gt;What I Learned&lt;/p&gt;

&lt;p&gt;The biggest lesson from building this project was that retrieval quality is extremely important in AI applications.&lt;/p&gt;

&lt;p&gt;Before working on this project, it was easy to think of an AI system mainly as a model that generates an answer.&lt;/p&gt;

&lt;p&gt;But building the retrieval pipeline showed me that the quality of the information supplied to an AI system matters just as much.&lt;/p&gt;

&lt;p&gt;If documents are poorly extracted, badly chunked, or difficult to retrieve, even a powerful language model would have difficulty producing a reliable answer.&lt;/p&gt;

&lt;p&gt;This project therefore helped me understand the foundation behind RAG systems:&lt;/p&gt;

&lt;p&gt;Documents → Chunks → Embeddings → Vector Search → Relevant Context&lt;/p&gt;

&lt;p&gt;The current implementation intentionally separates retrieval from answer generation. The repository documents how an LLM could be added after semantic search to generate a grounded support answer with citations in a future iteration.&lt;/p&gt;

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

&lt;p&gt;Optional: I did not include a DevRelay session for this submission.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;/p&gt;

&lt;p&gt;This submission is primarily for the Hacktoberfest Weekend Challenge: Build for a Friend.&lt;/p&gt;

&lt;p&gt;I am only entering additional partner categories when the required partner technology is actually used in the project.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;I started this project with a simple problem:&lt;/p&gt;

&lt;p&gt;Customer-support information is useful only when people can find it quickly.&lt;/p&gt;

&lt;p&gt;That led me to build a searchable knowledge system that turns support documents into a semantic knowledge base.&lt;/p&gt;

&lt;p&gt;What began as a way to help someone practice customer-support workflows became a practical exploration of document processing, embeddings, vector databases, semantic search, APIs, and AI application architecture.&lt;/p&gt;

&lt;p&gt;The most important lesson for me was that building useful AI is not always about creating the biggest model.&lt;/p&gt;

&lt;p&gt;Sometimes it is about building a better path between a person's question and the information they actually need.&lt;/p&gt;

&lt;p&gt;That is what I wanted to build for my friend.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #weekendchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>search</category>
    </item>
    <item>
      <title>New one on DEV</title>
      <dc:creator>Krishna Kumar</dc:creator>
      <pubDate>Sun, 04 Oct 2026 19:58:13 +0000</pubDate>
      <link>https://dev.to/krishna_kumar_612c63ef69e/new-one-on-dev-4j29</link>
      <guid>https://dev.to/krishna_kumar_612c63ef69e/new-one-on-dev-4j29</guid>
      <description>&lt;p&gt;First time on DEV&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
