AI Rent & Arrears Follow-Up Automation: Property Management Dashboard
A working demo of an arrears management dashboard for property managers. It detects overdue tenants, ranks who to follow up first, and drafts safe, factual tenant messages from stored data.
Chasing late rent is slow and inconsistent. Managers often don't know whom to contact first, and messages are written from scratch each time. I built a demo system that turns rent and payment data into a clear daily workflow:
Dashboard: total rent due, collected, outstanding, overdue tenants, high-risk accounts and follow-ups due today.
Arrears queue: every overdue tenant with property, amount, days overdue, priority and a suggested action.
AI Arrears Prioritization: automatically ranks who the manager should contact first, based on days overdue, amount owed and past payment behaviour.
Account analysis: shows the amount outstanding, days overdue, payment history, communication log and a recommended next action for any tenant.
Tenant message generation: drafts a polite reminder, follow-up or escalation message matched to the account's stage.
Manual stage control: the manager moves each account through Reminder, Follow-up, Escalation and Resolved.
Tech stack: Python, Flask, SQLite, HTML, CSS, JavaScript, with optional local AI through Ollama and a rule-based fallback. It needs no paid APIs and runs fully offline.
Demo data: 5 properties, 20 units and tenants, six months of payment history and prior follow-up records, so the dashboard looks like a live system.
Honest framing: I'd label it a "working demo" or "prototype" rather than a production system. It uses seeded sample data and has no real SMS or email sending or login yet. Those would be the natural next steps for a client.
This project tackles a real small-business pain point: inventory silently running out because no one's tracking stock in real time.
Order processing (webhook-triggered): Incoming orders (supporting multiple items per order) are received via webhook, split into individual line items, and logged — each order simply appends a new entry to an order log rather than directly overwriting stock numbers.
Live stock calculation: Current stock for each item is computed on the fly, using a formula that subtracts all logged order quantities from the starting count.
Daily stock monitoring (schedule-triggered): A separate scheduled trigger runs once a day, checks every item's live stock against its own custom reorder threshold, and sends a Slack alert for anything running low — so restocking happens before customers ever notice a shortage.
The daily trigger that checks each item's live stock against its own reorder threshold and then pushes a Slack alert seems like a practical way to stay ahead of stockouts.