DEV Community

Cover image for How I Built a Tiny AI-Powered Knowledge Base (And What I Learned)
Akshay
Akshay

Posted on

How I Built a Tiny AI-Powered Knowledge Base (And What I Learned)

A few weeks ago, I decided to tinker with something new. I wanted to play around with AI, specifically how it can help organize and search through information. But I didn’t want to build a massive system—just a simple, fun project to learn and experiment. Here’s what I came up with, why I made the choices I did, and what I learned along the way.


Why a Knowledge Base?

I wasn’t trying to create the next big thing. My goals were simple:

  • Experiment with AI tools in a hands-on way
  • Try out automated searches and see how AI can help find information
  • Learn by doing, without getting bogged down in complexity

So, I kept things small and focused.


No Database? No Problem!

At first, I thought about using a database to store everything. But then I realized:

  • My “knowledge base” was just a few Markdown files.
  • Each file already had everything I needed: titles, headings, and even optional tags.
  • Adding a database would just make things more complicated than they needed to be.

So, I skipped the database entirely. Instead, I just stored my notes in a folder called docs/kb and read them directly. Simple, fast, and easy to manage.


Here’s a peek at how it looks:

Case 1: Information Fetched from Knowledge Base

The system successfully retrieves and displays relevant information from the knowledge base, with clear titles, topics, and content.

Case 2: No Matching Docs Found

How It Works

Here’s the gist of what I built:

1. Just Markdown Files

Each file is a plain Markdown document. I can add:

  • Optional tags (like topics or categories)
  • Headings to organize content
  • Descriptive filenames to make searching easier

Adding a new note is as easy as creating a new file—no setup, no migrations, no fuss.

2. Instant Search

When I search for something, the system:

  • Looks for matches in titles, tags, and content
  • Ranks results by relevance
  • Returns the best matches

Everything happens in memory, so it’s fast and lightweight.

3. The Tech Behind It

I used a few tools to make this work:

  • Bun (a fast JavaScript runtime) for quick development
  • TypeScript to keep my code clean and reliable
  • Fastify for a simple API
  • Markdown files as the “database”
  • AI tools (like OpenAI and Ollama) to experiment with smarter searches

Try It Yourself!

If you’re curious, the full project is open source and available on GitHub. Feel free to check it out, play around, or even contribute:

GitHub logo akshayitzme / support-pilot

AI-powered customer support agent that analyzes Linear tickets, searches internal documentation, and proposes actionable solutions.

SupportPilot

AI-powered customer support agent that analyzes Linear tickets, searches internal documentation, and proposes actionable solutions. Designed for real-world efficiency, it can complete a ticket analysis in under 5 seconds, dramatically reducing manual triage and improving support team productivity by automating repetitive tasks.

Built as a hobby project to experiment with AI integration, RAG, and tool calling, it also demonstrates multi-provider AI configuration, background job processing, and type-safe TypeScript architecture, making it easy to scale and extend.

Tech Stack

Category Technology Reason
Runtime Bun Fast execution
Framework Fastify Minimal, type-safe, low overhead HTTP server
Queue BullMQ + Redis Reliable background job processing with retries
Queue UI Bull Board Web dashboard for monitoring queues and job status
AI SDK Vercel AI SDK Unified interface for OpenAI, Gemini, Ollama
Validation Zod Runtime type safety for AI tool parameters
Linting Biome Fast, unified linting and formatting
Container Docker Reproducible worker deployment
Integration Linear

What I Learned

  1. Start small. You don’t need a complex setup for a tiny project.
  2. Structure matters. Even simple things like headings and tags make a big difference in search.
  3. Experimentation is easier when things are simple. I could try out new AI features without getting stuck in setup.
  4. Files are fast. For a small project, reading files directly is more than enough.
  5. Keep it fun. The less time you spend on maintenance, the more time you have to learn and play.

Final Thoughts

This project was all about learning and having fun. If you’re curious about AI, RAG, or just want to organize your notes in a smarter way, starting with a simple, file-based system is a great place to begin. It’s easy, flexible, and most importantly - it keeps the focus on what matters: learning and experimenting.


Let me know if you’ve tried something similar, or if you have questions! I’d love to hear about your own experiments.

Top comments (0)