Project Info
Inspiration
Every developer and DevOps engineer knows the frustration of searching through countless wiki pages, README files, and outdated documentation just to find a simple answer. We wanted to fix this problem and make documentation as easy to access as asking a question in chat with reliable, source-cited answers. Our inspiration came from daily pain points and a desire to empower teams with AI that works for them, not against them.
What it does
DevOps & Documentation Copilot transforms any team’s documentation into an AI-powered, searchable knowledge base. Users can upload Markdown, PDF, Word, and text files (or even point to URLs and GitHub repos), and the system will: Chunk and embed documents using semantic AI models Store embeddings in a fast local FAISS vector database Answer questions via web interface or Slack bot, always with clear citations Retrieve context from the docs, generate an answer with a language model (OpenAI, Groq, or Anthropic), and show exactly where the answer came from How I built it Document Processing: Parsed and chunked a wide range of doc types (Markdown, PDF, TXT, DOCX, URLs, GitHub). Semantic Embeddings: Used sentence-transformers to convert doc chunks into high-dimensional vectors. Vector Search: Leveraged FAISS for fast, scalable similarity search. RAG Engine: Built a Retrieval-Augmented Generation pipeline, retrieving top matches and generating answers with LLMs. User Interfaces: Streamlit for web upload & interactive Q&A Slack bot for seamless team chat integration Streamlit for web upload & interactive Q&A Slack bot for seamless team chat integration Source Attribution: Every answer includes document citations and highlighted text snippets for full transparency. Challenges Dependency Hell: Pinning compatible versions of sentence-transformers, transformers, and huggingface_hub took a lot of trial and error. Performance at Scale: Keeping the system fast and memory-efficient with large document sets and long files. Slack API Growing Pains: Navigating changes in Slack’s developer UI and permission systems while getting Socket Mode and bot tokens working. Reducing AI Hallucinations: Careful prompt engineering and smart chunking were required to ensure the model stayed grounded in real docs. Accomplishments that I am proud of End-to-End Working MVP: From uploading a doc to getting instant, source-cited answers in both the web app and Slack. Multi-provider Support: Swappable LLMs (OpenAI, Groq, Anthropic) with a single config. User Trust: Every answer is backed by proof, no more guessing where info came from. User-Centric Design: Clean, accessible UI for both web and Slack. My learning's AI and IR (Information Retrieval) are a perfect match for internal knowledge bases—when done right, you get accuracy, speed, and transparency. Dependency management in Python’s ML ecosystem is critical for reliable hackathon projects. Human-centered AI design (easy UIs, source citations, multi-modal access) is just as important as smart algorithms.
What's next
More Integrations: Support for Google Docs, Confluence, Notion, and code repositories. Semantic Search for Code: Enable code snippet retrieval, inline explanations, and API documentation Q&A. Usage Analytics: Insights on popular questions and knowledge gaps. Enterprise-Ready: Add authentication, user management, and cloud deployment options. Try DevOps Copilot— and never get lost in your docs again!
DevOps & Documentation Copilot
A comprehensive AI-powered documentation assistant that processes various document types, stores them as embeddings in a FAISS vector database, and provides intelligent answers through a web interface or Slack bot using RAG.
This Documentation Copilot transforms your documentation into an intelligent knowledge base that can:
- Process Multiple Document Types: Markdown, PDF, Word docs, text files, web URLs, and GitHub files
- Create Smart Embeddings: Break documents into meaningful chunks and store them as vectors
- Provide Intelligent Answers: Use RAG to find relevant information and generate contextual responses
- Show Source Attribution: Always cite which documents were used to generate answers
- Work Everywhere: Access through a web interface or directly in Slack
System Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Documents │ │ Document │ │ Vector │
│ (PDF, MD, │───▶│ Processor │───▶│ Store │
│ URLs, etc.) │ │ (Chunking) │ │ (FAISS) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
┌─────────────────┐ ┌─────────────────┐ │
│ User Query │───▶│ RAG Engine │◀──────────┘
│ (Web/Slack) │ │ (LLM + RAG) │
└─────────────────┘ └─────────────────┘
📋 Prerequisites
Before you begin, ensure you have:
- Python 3.8+ installed on your system
- Git for cloning the repository
- API Keys for at least one LLM provider (OpenAI, Groq, or Anthropic)
- Slack Workspace (optional, for Slack bot functionality)
🛠️ Installation & Setup
Step 1: Clone and Navigate to Project
# Clone the repository (if not already done)
git clone <repository-url>
cd doc-copilot
# Or if you're already in the project directory
pwd # Should show your project path
Step 2: Create Virtual Environment
# Create a virtual environment
python -m venv .venv
# Activate the virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
# .venv\Scripts\activate
Step 3: Install Dependencies
# Install all required packages
pip install -r requirements.txt
Step 4: Set Up Environment Variables
Create a .env file in your project root with your API keys:
# Create .env file
touch .env
Add the following content to your .env file:
# Required: At least one LLM provider API key
OPENAI_API_KEY=your_openai_api_key_here
# OR
GROQ_API_KEY=your_groq_api_key_here
# OR
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Optional: Slack bot configuration (only if using Slack)
SLACK_BOT_TOKEN=your_slack_bot_token_here
SLACK_APP_TOKEN=your_slack_app_token_here
# Optional: Default configuration
DEFAULT_LLM_PROVIDER=openai
DEFAULT_MODEL=gpt-3.5-turbo
DEFAULT_TEMPERATURE=0.1
DEFAULT_MAX_TOKENS=1000
How to Get API Keys:
-
OpenAI API Key:
- Go to OpenAI Platform
- Sign up/login and create a new API key
-
Groq API Key:
- Visit Groq Console
- Sign up and generate an API key
-
Anthropic API Key:
- Go to Anthropic Console
- Sign up and create an API key
Step 5: Quick Setup (Optional)
Run the automated setup script to verify everything is working:
python quick_start.py
This script will:
- Validate your API keys
- Test document processing
- Create a sample vector store
- Verify the RAG system
Running the System
Option 1: Web Interface (Recommended for First Use)
Start the Streamlit web application:
streamlit run app.py
The web interface will open at http://localhost:8501
Using the Web Interface:
-
Upload Documents:
- Click "Browse files" to upload individual files
- Or enter a folder path to process all documents in that folder
- Supported formats: PDF, Markdown, Word docs, text files
-
Process Web Content:
- Enter a URL to scrape and process web content
- Or enter a GitHub URL to process repository files
-
Ask Questions:
- Type your question in the chat interface
- Select your preferred LLM provider and model
- Get answers with source citations
Option 2: Slack Bot (For Team Collaboration)
Step 1: Create Slack App
- Go to Slack API Apps
- Click "Create New App" → "From scratch"
- Name your app (e.g., "Documentation Copilot")
- Select your workspace
Step 2: Configure Slack App
-
Enable Socket Mode:
- Go to "Socket Mode" in the left sidebar
- Enable Socket Mode
- Generate an App-Level Token (starts with
xapp-)
-
Add Bot Token Scopes:
- Go to "OAuth & Permissions"
- Add these Bot Token Scopes:
commands(for slash commands)chat:write(to send messages)app_mentions:read(to respond to mentions)
-
Install App to Workspace:
- Click "Install to Workspace"
- Copy the Bot User OAuth Token (starts with
xoxb-)
-
Create Slash Commands:
- Go to "Slash Commands"
- Create these commands:
/ask- Ask questions about documents/docs-status- Check system status/docs-help- Show help information
Step 3: Update Environment Variables
Add your Slack tokens to your .env file:
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_APP_TOKEN=xapp-your-app-token-here
Step 4: Run the Slack Bot
python slack_bot.py
Using the Slack Bot:
- Invite the bot to a channel:
@your-bot-name - Check status: Type
/docs-status - Ask questions: Type
/ask What is this project about? - Get help: Type
/docs-help
📚 Supported Document Types
| Format | Extension | Features |
|---|---|---|
| Markdown | .md | Direct parsing, metadata extraction |
.pdf | Text extraction, layout preservation | |
| Word | .docx | Full text and formatting |
| Text | .txt | Simple text processing |
| Web URLs | - | Content scraping, metadata |
| GitHub Files | - | Direct repository access |
🔧 Configuration Options
LLM Provider Settings
You can configure different LLM providers in the web interface or modify defaults in your .env file:
# Default LLM Configuration
DEFAULT_LLM_PROVIDER=openai # openai, groq, anthropic
DEFAULT_MODEL=gpt-3.5-turbo # Model name for the provider
DEFAULT_TEMPERATURE=0.1 # Creativity level (0.0-1.0)
DEFAULT_MAX_TOKENS=1000 # Maximum response length
Vector Store Settings
The system automatically manages:
- Chunk Size: 1000 characters per chunk
- Overlap: 200 characters between chunks
- Similarity Threshold: 0.5 (configurable)
- Top-K Results: 5 (configurable)
Testing the System
Automated Testing
Run the comprehensive test suite:
python test_system.py
This will test:
- Document processing
- Vector storage
- RAG functionality
- API integrations
- Error handling
Manual Testing
-
Test Document Processing:
python -c " from document_processor import DocumentProcessor processor = DocumentProcessor() result = processor.process_file('sample_docs/README.md') print(f'Processed {len(result)} chunks') " -
Test Vector Store:
python -c " from vector_store import VectorStore store = VectorStore() stats = store.get_stats() print(f'Total vectors: {stats[\"total_vectors\"]}') " -
Test RAG Engine:
python -c " from rag_engine import RAGEngine from vector_store import VectorStore store = VectorStore() store.load() rag = RAGEngine(store) result = rag.answer_question('What is this project about?') print(f'Answer: {result[\"answer\"]}') "
Monitoring and Logs
Log Files
The system creates logs in the logs/ directory:
app.log- Web application logsslack_bot.log- Slack bot logsdocument_processor.log- Document processing logs
System Status
Check system status through:
- Web Interface: Status panel shows document count and system health
- Slack Bot:
/docs-statuscommand - Direct API: Use the utility functions in
utils.py
Troubleshooting
Common Issues
-
"API Key Not Found" Error:
- Ensure your
.envfile exists and contains valid API keys - Check that the virtual environment is activated
- Verify API key format (no extra spaces or quotes)
- Ensure your
-
"No Documents Loaded" Error:
- Upload documents through the web interface first
- Check that documents are in supported formats
- Verify file permissions
-
Slack Bot Not Responding:
- Ensure bot is running:
python slack_bot.py - Check Slack app configuration and permissions
- Verify tokens in
.envfile - Check bot is invited to the channel
- Ensure bot is running:
-
Vector Store Corruption:
- Delete
vector_index/directory to reset - Re-upload documents
- Check available disk space
- Delete
Performance Optimization
- Large Documents: Break into smaller files for better processing
- Many Documents: Process in batches to avoid memory issues
- Slow Responses: Reduce
max_tokensor use faster models - Memory Issues: Increase system RAM or reduce chunk size
Updating the System
To update dependencies:
# Update all packages
pip install -r requirements.txt --upgrade
# Or update specific packages
pip install --upgrade streamlit openai faiss-cpu
📁 Project Structure
doc-copilot/
├── app.py # Main Streamlit web application
├── slack_bot.py # Slack bot implementation
├── document_processor.py # Document parsing and chunking
├── vector_store.py # FAISS vector database operations
├── rag_engine.py # RAG implementation with LLM integration
├── utils.py # Utility functions and helpers
├── quick_start.py # Automated setup and testing
├── test_system.py # Comprehensive test suite
├── setup.py # Installation and setup utilities
├── requirements.txt # Python dependencies
├── slack_manifest.yaml # Slack app configuration
├── .env # Environment variables (create this)
├── vector_index/ # Vector database storage
├── sample_docs/ # Example documents
├── logs/ # Application logs
└── README.md # This file
Contributing
This is a hackathon MVP. To contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
License
This project is open source. Feel free to use, modify, and distribute.
Support
If you encounter issues:
- Check the troubleshooting section above
- Review the logs in the
logs/directory - Run the test suite:
python test_system.py - Check your API keys and environment configuration
Happy Documenting!✨
Analysis
View
Metric
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- LangChainIn code
- PythonIn code
- StreamlitIn code
3 of 3 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
111 KB
Source files
12
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
JaiPrathikReddySoda/DevOps-Documentation-Copilot
18 files · 574 KB · @ 3603304
Structure
Application logic
10 files · 56%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python88%
- Markdown11%
- YAML1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 17- beautifulsoup4
- faiss-cpu
- langchain
- langchain-anthropic
- langchain-groq
- langchain-openai
- markdown
- numpy
- pandas
- pypdf2
- python-docx
- python-dotenv
- requests
- sentence-transformers
- slack-bolt
- streamlit
- tiktoken
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.