Property managers live and die by their collection rate. At the start of every month, the clock starts ticking: how much of the expected rent will actually come in, from whom, and by when? The property management company we worked with manages 85 units across 4 properties. Their existing process for tracking collections was logging into Buildium (their property management software), navigating to each property's ledger, and mentally aggregating the data. By the time they had a full picture of their collection status, it was often the 10th of the month — and late follow-ups meant later payments. We built a dashboard that gives them that full picture in real time, updated every 15 minutes.
Buildium API Integration
Buildium provides a REST API that exposes lease data, tenant information, charges, and payments. Our backend service polls the API every 15 minutes, pulling new payment data and updating our local analytics database. We store the data locally rather than querying Buildium in real time for two reasons: first, Buildium's API has rate limits that would be restrictive for an interactive dashboard; second, historical data enables trend analysis that Buildium's native reporting doesn't support.
The data model is straightforward. For each billing period, we track every unit's expected charge (rent plus any recurring fees), actual payments received, payment date, payment method, and any outstanding balance. This gives us the raw material for every visualization on the dashboard.
The Dashboard: Five Views That Matter
We designed the dashboard around five key views, each answering a specific question the property manager asks regularly.
1. Collection Status Overview
The hero view. A large progress bar shows total collected vs. total expected for the current month, both as a percentage and dollar amount. Below it, a unit-level breakdown shows each tenant's payment status: paid (green), partial (yellow), pending (gray), or overdue (red). The property manager can see at a glance that 62 of 85 units have paid, $78,400 of $112,000 is collected, and 8 units are overdue. Clicking any unit drills down to the tenant's payment history.
2. Collection Velocity
A line chart showing cumulative collections over the first 15 days of the month, compared to the same period in previous months. This reveals whether the current month is tracking ahead or behind. If by the 5th of the month, collection is at 65% vs. last month's 72% at the same point, the property manager knows to start making calls earlier. This view turns collection from a reactive process (waiting for the overdue date) to a proactive one (identifying slow months early).
3. Delinquency Trends
A bar chart showing the number of delinquent units and total overdue amount by month over the past 12 months. Seasonal patterns become visible — this client discovered that January and September had consistently higher delinquency rates (post-holiday and back-to-school spending). Armed with this data, they now send additional payment reminders in those months and offer short-term payment plans proactively.
4. Property Comparison
A side-by-side comparison of collection performance across the 4 properties. Which property has the highest on-time payment rate? Which has the most delinquencies? This view helps management identify whether collection issues are company-wide or property-specific. If one property consistently underperforms, it might indicate issues with the on-site manager, the tenant screening process, or the property itself.
5. Occupancy and Revenue
A combined view showing occupancy rate and gross revenue over time. Vacant units are lost revenue, and this view quantifies the cost. At 95% occupancy ($112K/month expected) vs. 90% occupancy ($106K/month), the difference is $72K per year. The chart makes the financial impact of vacancies visceral and immediate.
Auto-Refresh and Alerting
The dashboard auto-refreshes every 15 minutes when open in a browser, matching the backend's data polling interval. But we also integrated with the SMS notification system so the property manager gets a daily collection summary text at 6 PM showing the day's progress. They don't even need to open the dashboard to stay informed — but when they need to dig deeper, the dashboard is there with full detail.
Technical Implementation Notes
The frontend is built with React, using Recharts for the visualization layer. We chose Recharts over D3 for this project because the chart types are standard (line, bar, progress) and Recharts provides clean, responsive components out of the box with minimal configuration. The dashboard is fully responsive — property managers frequently check it on their phones between property visits.
The backend is a Python service that handles Buildium API polling, data transformation, and serves the dashboard's API. We use SQLite for the analytics database since the data volume is modest (hundreds of units, not thousands) and the simplicity of SQLite eliminates the need for a separate database server. The entire backend runs on a single small cloud instance with minimal resource requirements.
Impact
The dashboard didn't change the collection rate overnight, but it changed behavior. The property manager started making follow-up calls on the 3rd of the month instead of the 10th. Seasonal delinquency patterns were addressed with proactive communication. Vacancy costs became visible, leading to faster tenant placement efforts. Over six months, the average collection rate improved from 91% to 96% (by the 10th of each month), representing approximately $6,700 in additional monthly cash flow.