Joe Burwasser
All projects

HOA Copilot

AI assistant for HOA management · React · 2025

Built with: React, TypeScript, Vite, Tailwind, Supabase, Claude API, Outlook add-in

HOA Copilot helps the people who run homeowner associations answer residents' questions quickly and correctly. Staff pick a community, upload its governing documents, and ask in plain English. Every answer points to the document it came from and quotes the exact rule, so they can check it before they reply.

I built it at Indicode, the company I co-founded. I was the product manager and one of the developers: I wrote the requirements, set up the React app, built most of the interface, and built an Outlook add-in that brings it right into the inbox.

HOA Copilot community page with a question, an answer that quotes the parking policy, and the community's files
An answer with a quoted excerpt, next to the community's documents (demo data)

The problem

Every community has its own CC&Rs, rules, and architectural guidelines, often hundreds of pages spread across several PDFs. So when a homeowner asks something simple, like whether guests can park overnight, someone at the management company has to find the right document and the right section by hand.

How it works

Each community gets its own library of documents and instructions, so answers stay specific to it. Here's what happens to that parking question:

Once per community

Upload

Parking_Policy.pdf

plus the CC&Rs and other governing documents

Convert

Willow Creek library

Every PDF as searchable text

Every question

Ask

Can guests park overnight?

Answer

Claude

Reads the question with the Willow Creek library

Cite

Yes, for up to 72 consecutive hours.

“Guests may park in marked visitor spaces for up to 72 consecutive hours.”

Documents live in Supabase, and a Supabase Edge Function converts PDFs with Claude. Staff ask from the web app or the Outlook add-in. Demo data.

What I built

I wore two hats on this project: product manager and front-end developer.

  • Product. I wrote the spec that turned a single-page chatbot into an app built around communities, then set priorities and scoped each round of work.
  • Outlook add-in. I built an add-in so staff can ask HOA Copilot about an open email and get a document-backed answer without leaving Outlook. (I don't have screenshots of this one.)
  • The interface. I built most of the front end: the sidebar and navigation, a collapsible files panel, a prompt box that grows as you type, and a branded sign-in and landing page with a searchable community picker.
  • Excerpt cards. I pulled the quoted rule out of each answer and gave it its own card, so the source is easy to check at a glance.
  • Mobile. I made the communities list, the community page, and the sidebar work well on a phone.
Communities list with search, sort, favorites, and seven communities
Communities: search, sort, and favorites (demo data)
Landing page with a greeting and the community picker open
Start a chat by picking a community (demo data)
Community page in dark mode with a quoted answer
Dark mode

On the phone

Sign-in screen on a phone
Sign in
Communities list on a phone with two favorites
Communities
A quoted answer on a phone
Answer with excerpt
Desktop sign-in page with product highlights
Sign-in page

Under the hood

  • React and TypeScript, built with Vite and Tailwind, with light and dark modes and a handful of color themes.
  • Supabase holds the data and files, and a Supabase Edge Function uses Claude to turn PDFs into searchable text.
  • Claude answers each question with the community's documents in hand, and the prompt requires it to cite and quote its source.

All screenshots use made-up communities and documents.