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.
- HRSD (Sewer): $1,310.24 past due — risk of service disconnection
- Newport News Waterworks: $868.97 past due across 5 building accounts — 10% late fee + 10% annual interest
- SBA Loan: $2,538 in arrears, 256 days overdue
- Dominion Energy: $233.34 unpaid, 1.5% monthly late charge accruing
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:
- Paid Late — payment date is after the invoice due date
- Past-Due & Unpaid — no matching payment found and due date has already passed
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
- Automated discovery and processing of all invoice and bank statement PDFs
- Late payment report generated and exported to Excel, sorted by payment priority
- $6,267.18 in at-risk liabilities surfaced and prioritized for immediate board action
- Full SBA loan payment history reconstructed, including the $5,184 October 2025 catch-up payment
- 2025 proposed budget loaded as baseline for future budget-vs-actual variance analysis
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.