Leary Labanlic

AGM Report Studio

A week of manual reporting, turned into a five-step pipeline.

Role
Marketing Strategy & Technology Lead
Timeframe
2025
Stack
React · Python/ReportLab (FastAPI) · Cloudflare Worker + D1 + R2 · Anthropic Claude
Headline metric
Scales toward 200 reports/month; ~$250K annual time saved

The problem

Monthly owner reports were hand-assembled from AppFolio exports — hours per property, error-prone, and inconsistent in branding. Scaling that to the full portfolio by hand simply wasn't possible.

The approach

A guided 5-step workflow: Upload → Process → QC → Review → Export. It parses AppFolio workbooks, then runs a 5-step data-integrity verification that flags anomalies — stale dates, negative rents, NOI sign errors — rather than silently "fixing" them. Claude generates an executive narrative grounded in the parsed financials, and the system renders a branded, print-ready PDF. The design choice that matters: the tool surfaces problems for a human to judge instead of papering over them.

How it's built

React + Vite front end; a Python/ReportLab PDF engine on Render (FastAPI); a Cloudflare Worker as a secret proxy, plus D1 (config/history) and R2 (PDFs/signatures). Separate multifamily and commercial engines handle the different report shapes. Roughly 12K lines of front-end code and 4K of Python.

The outcome

Manual PDF assembly is gone. The pipeline is built to scale toward ~200 reports a month with consistent AGM branding, and QC catches financial errors before an owner ever sees them.

Visuals

Upload / process step (demo data — "Maplewood Commons")
Step one: drop in the AppFolio export, watch it parse.
QC screen showing a flagged anomaly (demo data)
QC flags anomalies for a human to review — never auto-fixes.
AI narrative preview (demo data)
An executive narrative generated from the parsed financials.
Final branded PDF preview (demo data)
The print-ready, on-brand owner report.
Portfolio dashboard (demo data)
Status across the portfolio at a glance.