A property manager covering thirty HOA communities gets a call from a board president: "How does our delinquency rate compare to your other communities?" Answering that honestly means opening the accounting module, filtering by community, and repeating that twenty-nine more times — or guessing based on whichever communities happen to be top of mind that week. Neither is something a manager can do while the board president is still on the phone.
LotWize's /pmc/ask page — the Portfolio AI Assistant — is built to close that gap. A property manager types a question in plain English, and the system answers it by actually querying the portfolio's data, not by summarizing a static report someone ran last month.
Why "just look it up" doesn't scale past a handful of communities
Every piece of portfolio data a PMC needs already exists somewhere in LotWize: violation counts, payment status, vendor contract dates, member rosters. The problem was never that the data didn't exist — it's that answering a cross-community question meant navigating to each community's dashboard individually, because LotWize (correctly) keeps each community's records isolated from the others. A board shouldn't see a different HOA's financials by accident.
That isolation is the right default for day-to-day management, but it means "which of my communities is worst on X" has historically been a report a manager builds by hand: open community one, note the number, open community two, repeat. For a PMC running five communities, that's tedious. For a PMC running thirty or fifty, it's a task most managers simply skip unless a board forces the question — which means portfolio-wide problems, like a community quietly sliding into high delinquency, go unnoticed until they're already expensive.
How the Portfolio AI Assistant actually works
The feature lives at /pmc/ask, gated to LotWize's PMC portfolio tier (requirePmcApi returns a 402 for accounts without an active PMC subscription). The page is a chat interface, with four starter prompts showing the kind of thing it's built for: "Which community has the highest delinquency rate?", "How many open violations do I have across all communities?", "Which vendor contracts expire in the next 90 days?", and "Which communities allow short-term rentals?"
Behind that chat box, the request hits POST /api/pmc/ask, running on claude-haiku-4-5-20251001 — a fast, low-cost model, the same tier LotWize uses elsewhere for high-frequency features where speed matters more than deep reasoning. The model doesn't answer from memory. It's given two tools and decides, per question, which to call:
query_portfolio_data — runs a real, scoped SQL query against structured records: violations or payments grouped by status, member counts by role, vendor contracts with expiration dates, or a general community overview. The model picks the dataType that matches the question; the database call itself is ordinary Drizzle ORM code, not AI-generated SQL.
search_portfolio_documents — runs a retrieval-augmented-generation (RAG) search against governing documents (CC&Rs, bylaws, rules and regulations), optionally narrowed to one named community — for policy questions that live in a document, not a database row.
The model can chain up to five tool calls in a single response (stepCountIs(5)), enough to pull violation counts for every community and then check one community's rental policy in the same turn. While a tool runs, the chat UI shows a quiet "thinking" state rather than a blank screen.
The scoping is the part that actually matters
The interesting engineering decision isn't the chat interface — it's what happens before any tool runs. The API route resolves the requesting user's assignedOrgIds based on their portfolio role: a property_manager gets only the communities assigned to them through communityAssignment records, while pmc_owner and pmc_admin get every organization in the portfolio. Every query — structured or document search — is hard-filtered to that list with inArray(...assignedOrgIds) before it reaches the database. If a manager asks about a community they're not assigned to, the assistant can't accidentally answer, because the query never had access to those rows to begin with. That's not a prompt instruction telling the model to behave — it's a database-level WHERE clause the model has no ability to route around.
The endpoint is also rate-limited to 30 questions per user per hour, and every response logs token usage against the portfolio's org for billing — the same pipeline that feeds LotWize's AI cost-transparency dashboard.
What the Portfolio AI Assistant deliberately does not do
It's worth being precise about the boundary, because "ask AI anything about your portfolio" invites assumptions the feature doesn't make good on. It cannot see or answer about a community outside a user's assigned scope — that's enforced at the query layer, not a courtesy the model extends. Both tools are read-only, so a manager can't accidentally alter a violation record or payment status by phrasing a question the wrong way.
It also doesn't invent an answer when the data isn't there. If search_portfolio_documents finds nothing relevant in a community's documents, it returns an explicit "no relevant governing documents found" result rather than a plausible-sounding guess about typical HOA rules. And it isn't a substitute for a formal report — a board treasurer preparing for an audit still needs the underlying financial statements, not a chat answer. What it replaces is the specific task of manually cross-referencing communities to answer a one-off question, which previously had no shortcut.
A real question, worked through
Take the second starter prompt: "How many open violations do I have across all communities?" The model calls query_portfolio_data with dataType: "violations" and gets back every community in the manager's scope with counts grouped by status — open, cured, escalated. It renders the answer immediately: something like "Across your 12 communities, you have 47 open violations. Oakwood Heights has the most with 9, followed by Cedar Ridge with 7." That's the same number a manager could get by opening 12 dashboards and adding a column in their head — the assistant just does the cross-referencing a busy manager wouldn't otherwise have time for on a random Tuesday.
A harder question — "Which communities allow short-term rentals?" — routes to search_portfolio_documents instead, since rental restrictions live in a community's CC&Rs, not a database field. The tool pulls the top matching chunks from each community's governing documents and cites which community and source document each answer came from, so a manager gets a starting point rather than a number to trust blindly.
2026 Update: The Portfolio AI Assistant is live at /pmc/ask for every LotWize PMC portfolio account, with a 30-question-per-hour limit per user. Explore LotWize for property managers or start a free trial to try it against your own portfolio's data.
Key Takeaways
A property manager can ask a plain-English question about violations, payments, vendors, members, or governing documents across their entire portfolio and get an answer grounded in a real, scoped database or document query — not a model guessing from memory.
Two tools do the actual work: query_portfolio_data runs structured SQL for numbers and statuses, search_portfolio_documents runs RAG search over CC&Rs and bylaws for policy questions — the model decides which to call per question, and can chain up to five tool calls in one turn.
Every query is hard-scoped to the requesting user's assigned communities at the database level — a property manager assigned to 12 of a PMC's 40 communities cannot get answers about the other 28, regardless of how the question is phrased.
The assistant is read-only and won't invent an answer: it can't modify records, and if a document search finds nothing relevant, it says so instead of guessing at a typical HOA rule.
The value scales with portfolio size — a PMC with two communities can hold the numbers in their head; a PMC with thirty or fifty communities gets a cross-portfolio answer in seconds instead of a report nobody has time to build.
Frequently Asked Questions
What is LotWize's Portfolio AI Assistant?
It's a natural-language chat feature at /pmc/ask, available to LotWize's PMC portfolio tier, that lets a property manager ask questions about violations, payments, vendors, members, or governing documents across every community in their portfolio and get an answer built from live, scoped data.
Does the AI make up answers, or does it query real data?
It queries real data. The model is given two tools — one for structured database queries (violations, payments, vendors, members, financials) and one for retrieval-augmented search over each community's uploaded governing documents — and it has to call one of them to answer. It doesn't answer from general knowledge about HOAs.
Can a property manager see data for communities they aren't assigned to?
No. Every query is filtered to the requesting user's assigned communities at the database level before it runs. A property_manager role only sees communities explicitly assigned to them; only pmc_owner and pmc_admin roles see the full portfolio. This scoping can't be bypassed by how a question is phrased, since it happens before the tool ever queries the database.
Can I use this to update violation statuses or payment records through chat?
No. Both tools available to the assistant are read-only. There's no path from a chat question to writing or modifying a database record, so asking the assistant to change something has no effect — changes still go through the normal violation, payment, and vendor workflows.
Is there a limit to how many questions I can ask?
Yes — 30 questions per user per hour. Usage is also logged per portfolio for AI cost tracking, visible in LotWize's AI cost-transparency dashboard.
The next time a board president asks how their community stacks up against the rest of your portfolio, you don't need to open thirty tabs to find out. Start a free LotWize trial to try the Portfolio AI Assistant against your own communities, or read how Cross-Portfolio Intelligence surfaces the same kind of comparisons proactively, without you having to ask.