A private records workspace for homeowners association boards
Heemah is a VLO Labs product that gives a homeowners association's board one private place for its meetings, minutes, decisions, vendor bids and documents. We designed, built and operate the web application, the marketing site and the cloud infrastructure behind it.
- Industry
- HOA board governance software
- Project type
- VLO Labs product
- Status
- Live on the web
- Platforms
- Web
The challenge
A homeowners association's board keeps records that outlast any one director: meeting minutes, motions and how they were decided, governing documents, vendor bids. Management company portals are generally built around homeowners and dues, so the board's own records tend to end up in email attachments, shared drives or a former secretary's laptop. When a director steps down, finding out what was decided and why gets harder.
Heemah was built for that gap, and only that gap. It serves the board, not the homeowners, and it leaves dues and payments with the management company. The records belong to the association rather than to whoever last held a seat.
Minutes and decisions are a legal record, so the software could not be loose with them. A draft could not contain anything the board did not record, approved minutes could not change quietly, and directors needed assurance about where their documents go when software reads them.
Our approach
We started from an internal VLO Labs application and removed everything unrelated to a board's work, keeping its foundation for accounts, documents, tasks and the assistant. On top of that we built the association domain: board seats, meetings and sessions, motions, projects and bids, and a compliance calendar. Each screen was renamed so a board sees its own vocabulary.
Several product decisions came first and shaped the code. Minutes drafts are assembled by ordinary program logic from recorded attendance and motions, with no AI involved. Quorum and notice checks warn the board but never block a save. The assistant can only propose a change; a director has to confirm it before anything is written.
The application runs on AWS behind Cloudflare, and all of the infrastructure is defined in Terraform and Ansible. Slow work runs on background queues, with assistant requests separated from everything else so a long document job does not hold up a director's question. Plans are priced by association size and billing is built on Stripe, with a 30-day trial that we set up by hand for each association.
What we built
Meetings and minutes
Agendas, attendance, quorum counts, motions with votes and action items, with agenda PDFs emailed to the board. One meeting can hold separate executive, annual and open sessions, each with its own minutes. Approving minutes files a PDF and locks the text, and reopening them requires a stated reason on the record.
Decisions register
A searchable record of every motion and its result (carried, failed, tabled or withdrawn), so a new director can see what the board has already decided.
Document library
Uploaded documents, including scanned PDFs, are read, categorized and summarized automatically, and directors can search them by asking a question in plain words. If the AI service is unavailable, search falls back to keywords and the page says so.
Board seats and access
Logins are tied to seats on the board roster. Only the association's owner account and the sitting President and Secretary can manage seats and logins, and those rights end when the term ends.
Projects and vendor bids
Bids for a project sit side by side. Accepting one declines the other open bids in a single database transaction, and can also record the approving motion and create a pending contract.
California compliance calendar
Seven recurring obligations, such as the annual budget report and reserve study review, are generated as reminders with their citations. It covers California only and is presented as a reminder, not legal advice.
Engineering highlights
Document AI kept away from outside providers
Reading scans, categorizing, embedding and answering questions about a document all run on a GPU machine VLO Labs operates. The cloud-hosted assistant never receives a document's full text. It works from board records, stored summaries and answers produced on our own hardware, and the privacy policy tells directors what is sent to Anthropic.
A busy server is a wait, not a failure
When the GPU is occupied, document jobs requeue themselves with a growing delay and stay marked as pending. The system keeps 'could not find out' separate from 'found nothing', so a temporary outage never gets recorded as a fact about a document.
Separate associations, and a clean way out
Each association's records are filtered at the data layer by owner. An association can export everything as a zip of plain files and spreadsheets, and a deletion tool removes its records and files, with a test that fails if a new table is left out of that tool.
Releases that have to pass their tests
Only a dated version tag deploys; merging to the main branch does not. The build runs the full test suite against a real Postgres and pgvector database, and a failure stops the release. The application server accepts no direct inbound connections, and alerts cover site availability, server health and a nightly backup that fails to arrive.
Where it stands
- Production status
- Live at app.heemah.com, with public pricing and a 30-day trial
- Automated tests
- More than 350, required to pass before a release deploys
Technology
Have something similar in mind?
Tell us what you need to build and we will give you a straight answer on how to approach it.
Get a free consultation