This project is a complete system for summarizing, and extracting relevant information from meetings using Large Language Models (LLMs) running locally. The system supports auxiliary documents to enhance Meeting Minutes accuracy by employing the Retrieval-Augmented Generation (RAG) technique.
The source code freely available under the MIT license.
- SmartMinutes
- Contents
- Initial information
- Hardware Requirements
- Software Requirements
- Downloading the LLM
- Quick Start
- Project Structure
- Configuration
- Project Structure
- Features
- Contributing
The project is divided into two main components:
- Backend: Handles transcription processing, summary generation, and AI model integration.
- Frontend: A simple and efficient static web interface that allows users to upload transcriptions, view summaries, transcriptions and manage auxiliary documents.
The system has been tested on the following hardware configuration, and a similar setup is recommended for optimal performance:
- Processor: AMD Ryzen 5 3600 or higher;
- RAM: 16GB (minimum);
- Graphics card: RTX 3060 12gb;
- Storage: NVMe SSD recommended with at least 15GB of free space;
Before running the project, ensure the following dependencies are installed:
- Operating System: Linux (tested on Ubuntu 22.04) or Windows 10
- Python: Version 3.11 or later
- Ollama: Required for running LLMs locally, version 0.3.12 (Installation Guide)
The project is optimized for gemma-2-9b-it-sppo-iter3, which can be downloaded via Ollama with the following command:
# Downloads the LLM model by using Ollama
ollama pull lucasalmeida/gemma-2-9b-it-sppo-iter3:Q4_K_M
git clone https://github.com/lucasandre22/smart-minutes.git
Navigate to the backend directory and create a virtual environment:
cd backend
python3 -m venv venv
source venv/bin/activate #On Windows: venv\Scripts\activate
pip install -r requirements.txt
Run the backend server:
uvicorn api.main:app --host=0.0.0.0 --port=8000
If preferable, run the backend server with Hot Reload:
uvicorn api.main:app --host=0.0.0.0 --port=8000 --reload
Just kidding, there are no action to be taken to setup the frontend :).
The application should now be accessible in your browser at http://localhost:8000
.
βββ backend/ # Backend service (FastAPI, LLM processing, RAG)
β βββ action_items/ # All the classes related to the action items feature
β βββ api/ # Classes related to the FastAPI
β βββ core/ # config.py file and RAG database loading method
β βββ custom_request/ # Classes related to the Custom Request feature
β βββ databases/ # Where all the files consumed by the system are stored, like transcripts (Created when starting the project for the first time)
β βββ llms/ # The standard LLM classes, used through the code
β βββ minutes/ # Classes related to the Meeting Minutes method
β βββ rag/ # Classes related to RAG
β βββ scripts/ # File parsers scripts
β βββ summarization/ # Classes related to the Summarization method
β βββ tests/ # Test classes
βββ frontend/ # Frontend application (Bootstrap)
β βββ assets/ # UI assets (icons)
β βββ css/ # CSS Stylesheets file
β βββ js/ # Javascript files
β βββ *.html... # Static HTML pages
βββ docs/ # Documentation and design assets
βββ README.md # Project documentation
You can configure environment variables in a backend/core/config.py
file for backend, including API keys and model settings.
Also, you can navigate to the settings page in the applications and configure:
The full project documentation is available in the docs/ folder. It includes:
- System Overview: Architecture and main functionalities.
- API Reference: Endpoints and usage examples.
To view the documentation, navigate to the localhost:8000/docs
endpoint.
β
AI-powered summarization, action items, meeting-minutes and custom requests about the meeting
β
Support for external documents (RAG)
β
Local LLM execution (no external API costs)
β
Web-based user interface
- The prompts for every technic follows the
DeepEval
architecture, it is defined intemplate_refine.py
files. Example: all the prompts regarding the minutes, are defined inbackend/minutes/template_refine.py
minutes module. - All the LLM prompts are in Portuguese. The idea is to have English in the future versions too.
Feel free to submit issues, pull requests, or suggestions to improve the system!