# mknotes Improvement Recommendations This document outlines proposed improvements for the mknotes software, grouped by category. ## Feature Enhancements - **Support for More Audio Formats** ✅ (Partially implemented - WAV support added) - ✅ Added support for WAV files with automatic conversion to MP3 before processing - Extend support to include additional formats like FLAC, OGG, etc. - ✅ Updated the `find_audio_files` function in `utils.py` to recognize WAV extension - **Customizable Enhancement Prompts** ✅ (Implemented) - ✅ Added CLI argument to select different prompt types (lecture, meeting, interview) - ✅ Moved prompts to separate files for easier customization - ✅ Created specialized prompts for different use cases (lectures, meeting minutes, interviews) - Allow users to provide their own custom prompts via configuration files. - **Batch Processing Controls** - Add the ability to limit the number of files processed in one run. - Implement resume functionality for interrupted batch processing. - **Output Format Options** - Support multiple output formats beyond Markdown (e.g., HTML, PDF, DOCX). - Add options for customizing Markdown styling. - **Caching Mechanism** - Implement caching for OpenAI API calls to reduce costs and improve performance. - Store intermediate results to avoid reprocessing if enhancement fails. ## Technical Improvements - **Robust Error Handling and Logging** - Implement a proper logging system instead of print statements. - Add comprehensive error handling with appropriate recovery strategies. - Example: Add retry logic for API calls with exponential backoff. - **Configuration Management** - Create a configuration system using YAML/JSON files. - Allow users to set default values for all parameters. - Support environment-specific configurations. - **API Key Management** - Implement a more secure way to handle API keys. - Add support for API key rotation. - **Performance Optimization** - Implement parallel processing for transcription of multiple files. - Add an option to use local models for offline processing. - **Testing Framework** - Add unit tests for core functionality. - Implement integration tests for the complete workflow. ## Code Structure Improvements - **Separation of Concerns** ✅ (Partially implemented) - ✅ Moved prompts to separate files in a dedicated prompts directory. - Create a more abstract API client layer. - **Progress Tracking and Reporting** - Enhance progress reporting beyond simple tqdm bars. - Add detailed statistics about processing time, token usage, etc. - **Plugin Architecture** - Implement a plugin system to allow for custom transcription or enhancement modules. - Make it easier to switch between different AI models or services. ## User Experience Enhancements - **Interactive Mode** - Add an interactive mode where users can preview and edit enhanced notes before saving. - Implement a simple TUI (Text User Interface) for a better CLI experience. - **Web Interface** - Create a simple web interface for users who prefer GUI over CLI. - Consider a lightweight Flask/FastAPI app that wraps the core functionality. - **Notification System** - Add notifications for long-running processes (email, desktop notifications). - Implement a webhook system for integration with other tools. ## Documentation Improvements - **Enhanced Documentation** - Create comprehensive documentation with examples and use cases. - Add a troubleshooting guide for common issues. - **Sample Configurations** - Provide sample configuration files for different use cases. - Include examples of custom prompts for different types of content. --- These recommendations are intended to guide future development and prioritization for mknotes. Each suggestion can be implemented independently or as part of a broader roadmap.