Running an association
Going live: onboarding a new association
The sequence for bringing an HOA onto the platform: what a Vara operator sets up, what the manager does on their first day, and exactly what residents receive and when.
One section of this article carries operator-only instructions. They are published so the whole picture is visible, and nobody outside Vara can act on them. They are marked where they appear: Step 1. What the operator does.
Three parties, in order. A Vara operator provisions the association and its settings. The manager signs in, checks what the operator set up and fills in the association’s own content. Only then do residents hear anything, because a resident who registers before the roster is loaded is turned away by a machine for no reason.
Do not invite residents first
Owner verification is checked against the county roster. If the roster is not loaded, every registration comes back as "not matched" and the association spends its launch week apologising. Load the roster, then invite.
Step 1. What the operator does
Operator onlyThis section is for Vara operators
It needs access to the deployment, its secrets and its data store. A manager or board member cannot perform any of it, and there is no self-service path to it.
- 1Provision the association and its settings documentsOperator
The seeder creates the association record and six settings documents: brand, fee schedule, ticket categories, notification templates, approval policy and knowledge base index. It back-fills absent keys only, so re-running it never overwrites what a manager has since edited. Run it as a plan first, then apply.
- 2Set the brand nameOperator
The association’s display name lives in the brand settings document and is what appears on the console, the portal and the public page. Getting it wrong is visible to everybody on day one.
- 3Load the owner roster from public recordsOperator
Import the county’s parcel layer for the association. Run it as a diff first. This is what makes owner verification possible, so it comes before any resident is invited.
- 4Confirm the authentication controls are configuredOperator
Session secret, bot check, email delivery, public base URL, and optionally Google sign-in for Vara staff. Each unconfigured control is published on the health endpoint and written to the startup log. Do not go on until sign-in genuinely works, because every other step needs somebody signed in.
- 5Add the association’s people and their rolesOperator
Managers and board members are members of the association with a role each. There is no invitation flow: a member record is what makes somebody a manager. Add the manager before you ask them to sign in.
- 6Seed the ticket category catalogueOperator
The seeder deliberately leaves the category list absent rather than inventing one, so this is a decision somebody makes on purpose. Until it is done, residents cannot file tickets.
- 7Set the approval policyOperator
Decide whether a board member’s document upload should land as a draft for review. It is off unless you turn it on, which means a board member’s upload publishes immediately by default.
Giving somebody a manager, board or operator role
Shipped, not configured- What people expect
- Add a manager or a board member to the association so they can sign in and use the management console.
- Why it does not work today
- A staff role comes from a member document held under the association, and until recently nothing in the service or its scripts ever wrote one: the service only read them, and the tenant seeder wrote the association and its settings documents and no member. That was a deadlock, because the provisioning API itself required an operator session and an operator session required one of those documents. An operator-gated route now writes them (`POST /internal/associations/{slug}/members`), it also accepts a Google-signed token from a service account, and the Vara admin console at `/admin/associations` has a form for it. What is still missing is a screen in the COMMUNITY's own console: a manager cannot add their own staff, so every addition goes through Vara. The console route for that does not exist yet.
- What to do instead
- Ask Vara to add the person; it is a form in the Vara console rather than a database edit. Residents are unaffected either way: registration creates a resident account, so the portal works whether or not a single staff member exists. Note that manager and board contact addresses are a different thing entirely and grant no sign-in access at all.
Checked against the code on 2026-09-09. Next review 2026-11-15.
Filing a ticket
Waiting on setup data- What people expect
- A resident opens the portal, picks what the problem is, and files a ticket.
- Why it does not work today
- The ticket surface is deployed and works. The list of categories a ticket can be filed under is operator data held in the association's settings, deliberately never in code, and it has not been provisioned for the pilot association. With no categories the portal shows an explanation instead of a form, because a form whose submission would be refused is worse than no form. An operator-gated API route to seed the catalogue now exists in the service (`PUT /internal/associations/{slug}/ticket-categories`), but nothing in this website calls it yet, so seeding it today still means a person running a request against the service directly rather than a page in the admin console.
- What to do instead
- Residents should contact the management office directly until the categories are seeded. Managers can still read, transition, assign and comment on any ticket that already exists.
Checked against the code on 2026-09-08. Next review 2026-10-15.
What you cannot configure yet
Object storage for uploaded files, and the runner for the knowledge base rebuild. Both are unconfigured in the deployed service and both refuse honestly rather than half-working. Do not promise a manager that document upload will be ready by their first day.
An hour, honestly. Most of it is checking that what the operator set up matches the association you actually run.
- 1Sign in and check the nameManager
Ask for a sign-in link, open it within 15 minutes, and look at the top of the console. If the association’s name is wrong or generic, stop and tell the operator. It is one settings value and it is on every page a resident sees.
- 2If the console answers 403, that is the member documentManager
A signed-in caller with no staff role is denied, and the page says nothing about why. It means the operator has not created your member document yet. Tell them; there is no way for you to fix it and nothing you type will change it.
- 3Open the resident rosterManager
It will be empty until owners register, and that is correct. What you are checking is that the page loads and that the pending filter is there, because that queue is where your work will arrive.
- 4Build the vendor directoryManager
Add the trades the association already uses. Record each insurance expiry date, because a vendor with no date recorded shows as unknown rather than as covered, and unknown is easy to read as fine.
- 5Agree the ticket categories with the operatorManager
Decide what residents should be able to report, and have the operator seed it. Until that is done the portal explains that no categories are set up rather than showing a form that would be refused.
- 6Decide how documents will reach residents for nowManager
Document upload works where the deployment names its two storage buckets, and refuses where it does not, in which case the portal library will be empty. Check before the announcement: if it is empty, agree with the board how the CC&Rs get to owners in the meantime and say so in the welcome message, rather than letting people hunt for a page that has nothing on it.
- 7Read Who can do what before you brief the boardManager
The board can read everything in the console, can comment on a ticket where the resident sees it, and can mark a document superseded. Those last two surprise people. Better that the board hears it from you than discovers it.
Residents receive nothing automatically. There is no bulk invitation in the platform, so the association sends its own announcement pointing owners at the registration form. What happens after that is the same for everybody.
- 1An announcement from the associationResident
Written and sent by the association, not by the platform. It should carry the registration link and one sentence about what the portal does and does not do yet.
- 2The registration formResident
Email address or mobile number, name, the address of the home, and optionally the last four of the parcel id or the deed book and page.
- 3Either a sign-in link, or a waitResident
Confirmed registrations get a sign-in link by email that lasts 15 minutes. Held registrations get told they are held, and hear again once a manager decides. Unmatched registrations are told nothing was created and to check the address.
- 4A portal with two working pagesResident
Their own tickets, and the association’s published documents. Everything else in the portal navigation is a label with no link behind it.
Say what the portal cannot do, in the announcement
Residents will look for a way to pay their dues and a way to ask a question and get an answer. Neither exists. One line in the announcement saves the office a week of the same phone call.
Two ordinary jobs have no path through the platform, and both come up in the first few months rather than eventually. Agree with the board who does them before the situation arrives, rather than during it.
Turning an amenity fob on or off
Not built- What people expect
- Deactivate a fob from the platform when somebody moves out.
- Why it does not work today
- The platform has the seam for it and no integration behind the seam, because the association's access control vendor has not been identified. The shipped adapter files a task for a person instead of touching a panel, and it reports the fob's state as unknown rather than guessing, because a wrong 'deactivated' is the answer somebody stops checking.
- What to do instead
- Treat the task the platform files as the actual work item and deactivate the fob in the vendor's own system. The credential stays live until a person acts.
Checked against the code on 2026-09-07. Next review 2026-12-01.
Raising a work order
Not built- What people expect
- Send a job to a vendor from a ticket and track it from raised to closed.
- Why it does not work today
- There is no work order surface and nothing that raises one. A ticket does have a work order field, and writing to it records a reference and nothing else. The service never checks that anything exists at the other end of that reference, and the page says so where a manager will read it.
- What to do instead
- Dispatch the vendor the way the association dispatches one today, then paste the reference onto the ticket so the record points somewhere. Move the ticket to dispatched so its state matches what happened.
Checked against the code on 2026-09-07. Next review 2026-12-01.
- Registrations arrive in bursts after the announcement. Most confirm automatically. Homes held in a trust or a company never do, so expect those in the pending queue.
- Check the pending queue daily at first. A held registration is somebody waiting, and the platform does not chase you.
- Every approval and rejection needs a reason. Write one somebody could read back to the owner.
- Expect the same three questions: how do I pay, where are the CC&Rs, and can I ask a question here. Have an answer ready for each.
If something refuses and the message does not tell you why, that is worth reporting rather than working around. The service is written to explain its refusals, so a refusal you cannot read is itself a defect.
Still stuck?
That is a fair place to be, and it is usually faster to ask than to keep reading. Your association's management office can tell you whether what you are hitting is a permission, a setup step or a fault. Say what you were trying to do and what the screen said. If it needs changing at the service level, they will bring Vara in.