A modular, multi-agent system for generating comprehensive notes on any topic using AI. The system uses specialized agents to plan research, retrieve relevant content, and synthesize high-quality notes.
- Multi-Agent Architecture: Specialized agents for planning, retrieval, and synthesis
- Document Intelligence: Automatically processes PDF, TXT, MD, and DOCX files
- Configurable Output: Customizable depth, audience, and format
- Interactive & Batch Modes: CLI interface for both interactive and automated usage
- Comprehensive Logging: Built-in recording and monitoring capabilities
- Modular Design: Clean, maintainable codebase with proper separation of concerns
The system consists of three main agents:
- Agent 1 (Planner): Strategic planning and orchestration
- Agent 2 (Synthesizer): Content synthesis and note writing
- Agent 3 (Retriever): Information retrieval using vector search
# Clone the repository
git clone https://github.com/yash3056/notesmaker.git
cd notesmaker
# Install dependencies
pip install -r requirements.txt- Place your documents in the
documents/folder - Run the system:
from src.main import create_notes
notes = await create_notes(
topic="your topic here",
requirements={
"depth": "comprehensive",
"include_examples": True,
"format": "structured",
"audience": "students"
}
)notesmaker/
├── config/ # Configuration management
│ ├── __init__.py
│ └── settings.py # Dataclass-based configuration
├── src/ # Main source code
│ ├── agents/ # Specialized AI agents
│ │ ├── __init__.py
│ │ ├── base_agent.py # Abstract base agent
│ │ ├── planner.py # Research planning agent
│ │ ├── retriever.py # Content retrieval agent
│ │ └── synthesizer.py # Note synthesis agent
│ ├── core/ # Core system components
│ │ ├── __init__.py
│ │ ├── data_structures.py # Core data models
│ │ ├── document_loader.py # Document processing
│ │ ├── llm_wrapper.py # LLM abstraction layer
│ │ └── system.py # Main system orchestration
│ └── utils/ # Utility functions
│ ├── __init__.py
│ ├── helpers.py # Helper functions
│ └── recorder.py # Logging and monitoring
├── tests/ # Test suite
│ ├── test_agents/
│ ├── test_core/
│ └── test_utils/
├── examples/ # Usage examples
│ ├── basic_usage.py
│ └── advanced_usage.py
├── backup_original/ # Original monolithic files
├── documents/ # Source documents directory
├── main.py # Main entry point
├── setup.py # Package installation
├── requirements.txt # Dependencies
└── README.md # This file
git clone https://github.com/yash3056/notesmaker.git
cd notesmaker
pip install -r requirements.txtCopy the example environment file and configure your settings:
cp .env.example .envEdit .env with your configuration:
- Set your preferred LLM model
- Configure API keys if using external services
- Adjust system parameters
pip install -e .python main.py --interactiveThe system will prompt you for:
- Topic for note generation
- Depth level (basic/intermediate/comprehensive)
- Target audience (students/professionals/general)
- Whether to include examples
python main.py --topic "Machine Learning" --depth comprehensive --audience studentspython main.py [options]
Options:
--topic TOPIC Topic for note generation
--depth LEVEL Depth: basic, intermediate, comprehensive
--audience AUDIENCE Target: students, professionals, general
--examples / --no-examples Include examples (default: yes)
--interactive, -i Run in interactive mode
--model MODEL LLM model to usePlace your source documents in the documents/ directory. Supported formats:
- Text files:
.txt,.md - PDF files:
.pdf(requires pypdf) - Word documents:
.docx(requires python-docx)
The system will automatically:
- Scan the documents directory
- Load and process all supported files
- Build a searchable index
- Use relevant content during note generation
- MultiAgentSystem: Main orchestrator that coordinates all agents
- DocumentLoader: Handles loading and processing of various document formats
- LLMWrapper: Provides abstraction layer for different language models
- Data Structures: Type-safe models for messages, plans, and configurations
- PlannerAgent: Analyzes the topic and creates a structured research plan
- RetrieverAgent: Searches documents and retrieves relevant content
- SynthesizerAgent: Combines research into comprehensive, well-formatted notes
pytest tests/- Create new agent file in
src/agents/ - Inherit from
BaseAgent - Implement required methods
- Add to
src/agents/__init__.py - Register in the
MultiAgentSystem
This project was refactored from two monolithic scripts (aI_agent_2.py and record.py) into a clean, modular architecture. The original files are preserved in backup_original/ for reference.
- Modular Design: Separated concerns into logical modules
- Type Safety: Added comprehensive type hints and Pydantic models
- Better Testing: Proper test structure with pytest
- Configuration Management: Centralized, dataclass-based configuration
- Package Structure: Proper Python package with setup.py
- Enhanced Documentation: Comprehensive README and code documentation