AI-Powered Financial Analysis for Georgetown Condominium Association

The Problem

Managing a condominium association's finances is no small task. Georgetown Condominium Association juggles multiple bank accounts (National Cooperative Bank, Truist), 13 months of vendor invoices, utility bills across 6 buildings, an SBA loan, and a roster of recurring vendors — all stored as PDF documents.

The manual workflow was error-prone and time-consuming. Bills were being paid late, racking up penalty charges across multiple vendors and accounts.

Total financial exposure at the time of analysis: $6,267.18 in past-due and current charges. The core challenge was that all of this data lived inside unstructured PDF files — bank statements, invoice batches, and utility notices — with no consistent format between vendors or accounts.

How AI Identified the Right Approach

Rather than a human analyst spending hours deciding which tools to use, Claude AI was presented with the problem and the raw document inventory. The AI independently reasoned through the technical requirements and identified that the documents fell into two distinct categories requiring different extraction strategies:

1. Bank Statements

Digitally generated PDFs with consistent tabular structure. These could be parsed with text-layer extraction using pdfplumber, with custom regular expressions to match transaction rows by date, description, and amount.

2. Vendor Invoices

Multi-vendor, inconsistent layouts. Some invoices label amounts as "Total Due", others as "Amount Due" or "Balance Forward". AI recognized this variability and flagged that OCR (Optical Character Recognition) would be necessary to reliably extract key fields — Vendor Name, Invoice Number, Due Date, and Total Amount — from documents that might be scanned images rather than text-layer PDFs.

The AI recommended including pytesseract (a Python wrapper for Tesseract OCR) and pdf2image in the toolchain alongside pdfplumber, forming a robust pipeline that degrades gracefully: try text extraction first, fall back to OCR if needed. This kind of adaptive document intelligence is exactly where AI outperforms a static, hand-written script.

The Data Science Stack

The solution was built entirely in Python within a Jupyter Notebook (LatePaymentAnalysis.ipynb) — a natural fit for iterative financial analysis where each cell can be inspected, adjusted, and rerun without restarting the entire pipeline.

Library Purpose
pdfplumber Extract text and table data from PDF bank statements
pytesseract + pdf2image OCR fallback for scanned or image-based invoice PDFs
pandas DataFrame construction, merging, and filtering
re (regex) Pattern matching for dates, dollar amounts, invoice numbers
matplotlib + seaborn Cash flow dashboards and expense visualizations
openpyxl Export analysis reports to Excel (.xlsx)
pathlib Automated discovery of all PDF files in the directory

The core pipeline automatically discovers all invoice and bank statement PDFs, extracts structured data from each, and passes the resulting DataFrames into the analysis engine:

# Discover all invoice and bank statement PDFs automatically
invoice_pdfs = sorted(Path('./Invoices').glob('*.pdf'))
bank_statement_pdfs = sorted(Path('./Bank Statements').glob('*.pdf'))

# Extract, reconcile, and flag late payments
late_payments_report = create_payment_tracker(invoices_df, payments_df)

The create_payment_tracker() function merges invoice due dates against bank statement payment dates using a left join on invoice number via pandas, then flags two classes of problems:

Why OCR Was Critical

Vendor invoices in the real world are messy. The Georgetown invoice batches — 13 monthly PDFs covering January 2025 through January 2026 — contain bills from utilities, landscapers, pest control, property management, and a sanitation district, each with its own layout and terminology.

AI analysis identified that naive text extraction would fail silently on invoices that are scanned paper documents (image-only PDFs), generated from legacy systems that don't embed a text layer, or that use non-standard field labels. By proactively including pytesseract in the stack, the pipeline handles real-world invoice variance without manual pre-processing.

The AI also designed adaptive regex patterns to account for the inconsistent terminology across vendors — for example, matching due dates expressed in any of these forms:

Due Date: 01/17/2025
DUE: 1/17/25
Payment Due By January 17, 2025

Rather than assuming a single fixed format, the extraction functions try multiple patterns in sequence — a design choice the AI reasoned to independently based on its understanding of document variability in real-world financial workflows.

Results

13
Invoice batches auto-processed
20+
Bank statement PDFs parsed
$6,267
At-risk liabilities surfaced
256 days
Longest overdue item identified

Key Takeaway

This project demonstrates how AI doesn't just execute instructions — it reasons about the problem domain. Presented with a folder of financial PDFs and a stated goal, Claude identified the document heterogeneity, recognized when OCR techniques would be required, designed the appropriate toolchain, and produced Python data science code structured around industry-standard pandas DataFrames.

What would have taken a financial analyst days of manual work was reduced to an automated, auditable, repeatable Python pipeline — one that can be re-run each month as new statements and invoices arrive, with no change to the code.

For community associations, small nonprofits, and property managers dealing with stacks of PDFs and no dedicated accounting staff, this kind of AI-assisted data science workflow represents a practical and accessible path to financial accountability.