Inventory Toolkit is an open-source toolkit for retail inventory processing.
It automates Stock Processing, Inventory Cross Check (formerly Cruces), and Year-over-Year (YoY) Sales Analysis using Microsoft Excel workbooks while keeping business rules outside the source code through a profile-based configuration system.
The project was originally developed to solve real-world inventory problems and has since evolved into a reusable toolkit.
- 📦 Stock Processing (
engine/stock_processing/) - 🔄 Inventory Cross Check (
engine/inventory_cross_check/) - 📊 Year-over-Year (YoY) Sales Reports with Monthly/Annual Segmentation (
engine/yoy_reports/) - 👤 Multiple Profiles with Isolated Config Folders
- ⚙ JSON-based Configuration Subdirectories
- 🖥 Interactive Command Line Interface (Internationalized in English)
- 📂 Native File Picker
- 📊 Automatic Excel Column Detection
- 🪟 Windows Launcher Scripts
- 🔧 Configuration Wizard
- 🛡️ APB Protocol Validations & PermissionError Safe Savers
- 📝 Persistent Dual-Channel Logging (
logs/session.log) - 🧪 Automated Unit Testing with Pytest
InventoryToolkit/
├── cli/
│ ├── config_menu.py
│ ├── cross_check_launcher.py
│ ├── menu.py
│ ├── profiles.py
│ ├── stock_processing_launcher.py
│ ├── utils.py
│ ├── wizard.py
│ └── yoy_reports_launcher.py
├── core/
│ ├── configuration_manager.py
│ ├── logger.py
│ └── system_utils.py
├── docs/
│ ├── architecture.md
│ ├── cli.md
│ ├── configuration.md
│ ├── core.md
│ ├── dev_notes.md
│ ├── development_and_apb.md
│ ├── engine.md
│ ├── index.md
│ ├── profiles.md
│ └── testing_and_examples.md
├── engine/
│ ├── inventory_cross_check/
│ │ ├── data_processor.py
│ │ ├── excel_renderer.py
│ │ └── generator.py
│ ├── shared/
│ │ └── families.py
│ ├── stock_processing/
│ │ ├── data_processor.py
│ │ ├── excel_renderer.py
│ │ └── generator.py
│ └── yoy_reports/
│ ├── data_processor.py
│ ├── excel_renderer.py
│ └── generator.py
├── examples/
│ └── demo/
├── logs/
├── profiles/
│ └── demo/
│ └── configs/
│ ├── cross_check/
│ ├── general/
│ ├── stock_processing/
│ └── yoy_reports/
├── tests/
│ ├── test_config.py
│ ├── test_inventory_cross_check.py
│ └── test_stock_processing.py
├── CHANGELOG.md
├── LICENSE
├── README.md
├── requirements.txt
├── Inventory Toolkit.bat
└── Setup Environment.bat
Inventory Toolkit includes two Windows launcher scripts.
Run this only once after cloning the repository.
It will:
- Install Python (if it doesnt exist)
- install dependencies
- prepare the project
Launches Inventory Toolkit.
This is the file intended for everyday use, optimized with UTF-8 encoding support for terminal rendering.
- Run Setup Environment.bat (first time only).
- Run Inventory Toolkit.bat.
- Create or select a profile.
- Choose:
- Inventory Cross Check
- Stock Processing
- YoY Sales Report
- Select the required Excel files and parameters.
- Wait for processing to finish.
Inventory Toolkit separates business rules from the processing engine.
Each company can have its own independent profile located inside profiles/<profile_name>/configs/ with isolated subfolders for general, cross-check, stock processing, and YoY report settings.
Documentation:
A complete example dataset is included for testing.
Documentation:
Comprehensive technical documentation is available inside the docs/ folder, go and check it out:
Run the automated test suite using pytest:
pytest tests/- v1.3.0 Reports ✅
- v1.3.1 Full Core Refactor (Migration, Modularization, APB, Logging, Testing, Docs) ✅
MIT License