SkillAgentSearch skills...

Monopoly

Monopoly is a Python library & CLI that converts bank statement PDFs to CSV.

Install / Use

/learn @benjamin-awd/Monopoly
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<img src="https://raw.githubusercontent.com/benjamin-awd/monopoly/main/docs/logo.svg" width="396" height="91">

Streamlit Tests CI License: AGPL 3.0

Monopoly is a Python library & CLI that converts bank statement PDFs to CSV.

Supported banks: | Bank | Credit Statement | Debit Statement | |----------------------------------------|--------------------|-----------------------| | Bank of America | ✅ | ✅ | | Bank of Montreal (BMO) | ✅ | ✅ | | Canadian Imperial Bank of Commerce (CIBC) | ✅ | ✅ | | Canadian Tire Bank | ✅ | ❌ | | Capital One Canada | ✅ | ❌ | | Chase | ✅ | ❌ | | Citibank | ✅ | ❌ | | DBS/POSB | ✅ | ✅ | | HSBC | ✅ | ❌ | | Maybank | ✅ | ✅ | | OCBC | ✅ | ✅ | | Royal Bank of Canada (RBC) | ✅ | ✅ | | Schwab Bank | N/A | ✅ | | Scotiabank | ✅ | ✅ | | Standard Chartered | ✅ | ❌ | | TD Canada Trust | ✅ | ✅ | | Trust | ✅ | ❌ | | UOB | ✅ | ✅ | | US Bank | ✅ | ❌ | | Zürcher Kantonalbank | ❌ | ✅ |

Install

Monopoly is a pip-installable Python package on PyPI under the name monopoly-core.

Since Monopoly uses pdftotext, you'll need to install additional dependencies:

apt-get install build-essential libpoppler-cpp-dev pkg-config ocrmypdf

or

brew install gcc@11 pkg-config poppler ocrmypdf

Then install with pipx:

pipx install monopoly-core

For additional OCR support:

pipx install 'monopoly-core[ocr]'

Usage

Monopoly runs in your terminal, allowing you to extract, transform and write bank statements to a CSV file.

To list commands and options:

monopoly --help

You can run it on a single statement

monopoly src/monopoly/examples/example_statement.pdf

or multiple statements

monopoly ./statements

To keep the output filename the same as the input (with a .csv extension), pass:

monopoly path/to/file.pdf --output ./out --preserve-filename

If you need to run monopoly on a password protected file, ensure that passwords are set in the .env file:

cp .env.template .env
PDF_PASSWORDS=["password1","password2"]

Monopoly can also be run as a Python library:

python3 src/monopoly/examples/single_statement.py

Features

  • Parses PDFs using predefined configuration classes per bank.
  • Handles locked PDFs with credentials passed via environment variables.
  • Supports adding OCR for image-based bank statements.
  • Provides a generic parser that can be used without any predefined configuration (caveat emptor).
  • Includes a safety check (enabled by default) that validates totals for debit or credit statements.

Development

Clone the repo

git clone https://github.com/benjamin-awd/monopoly.git

Install dependencies using Homebrew

brew install make
make setup
brew bundle
View on GitHub
GitHub Stars122
CategoryData
Updated8d ago
Forks41

Languages

Python

Security Score

100/100

Audited on Mar 20, 2026

No findings