An AI-powered Business Office Manager agent, designed in one discovery call
A multi-community senior living operator needed their Yardi Voyager data entry automated across the full range of Business Office Manager tasks, pre-move-in, move-in, move-out, ancillary charges, billing change forms, resident agreements, ACH, and more. We used move-in as the flagship example to design the complete architecture, worked out during a single complimentary discovery call.
The challenge the client brought to us
During a free discovery call, the client, a multi-community senior living operator, described a Yardi Voyager data-entry process that was slow, error-prone, and increasingly hard to scale.
Slow
Every task required staff to read a document, understand it, and manually enter repetitive data that could easily be automated.
Error-prone
Manual typing occasionally missed a letter or digit, leading to unclean resident and billing records.
No audit trail
There was no detailed, step-by-step record of why an operator chose a given unit, rate, or payer flow.
Scales linearly
Pipeline volume grows with occupancy, so headcount has to keep growing right along with it.
What they needed: a way to turn manual clicking into seconds of AI-assisted work, with one human approval step.
The client's Business Office Managers handle a wide range of tasks in Yardi Voyager beyond move-ins, including pre-move-in, move-out, ancillary charges, billing changes, resident agreements, and ACH setup. We used the move-in process below as the flagship example to design an architecture built to extend across all of them, as laid out in the rollout plan further down.
From inbox to Yardi in five stages
A pipeline with one human approval and a full audit log at every step.
Input
Forms and documents arrive by email.
AI extracts
A vision AI model structures the data.
Operator reviews
Per-field confidence, with edit and retry.
Bot drives Voyager
Automation fills resident and payer fields.
Task completed
A human clicks final submit (human-in-the-loop).
Credentials are held in memory for under 3 seconds and never logged.
A human is in the loop on every Yardi dialog and approval.
A structured log records every click, with a screenshot on failure.
Solution architecture and key technical decisions
Four isolated layers, so the operator never has to touch Yardi credentials directly.
Frontend
The operator reviews forms through a simple browser interface, with live progress, human-in-the-loop prompts, and clear approval steps.
AI vision extraction
A vision model reads handwritten and scanned PDFs; parallel calls achieve roughly 92% accuracy. Why: each document mixes handwritten and computer-typed fields, and handwritten text alone drags extraction accuracy down significantly. An AI vision layer was needed to keep accuracy consistent across both.
Backend
Task orchestration, validation, and audit logging, with every component async and type-validated for observability and production hardening, not just speed.
External services: real browser automation
The bot drives a real browser, mimicking a human operator inside Voyager itself, and always pauses for MFA, unit conflicts, and final human confirmation before anything submits. Why: Yardi does provide an API for this, but at the discovery-call stage the client hadn't yet granted API access, this was a demo built to prove the concept before the project formally started. Playwright-driven browser automation was the workaround to demonstrate the full flow without waiting on that access.
Technical details
Tech stack:
- Python for the extraction and orchestration pipeline
- A vision-capable AI model for reading scanned and handwritten PDFs, needed because handwritten fields alone see meaningfully lower accuracy without it
- Playwright driving a real Chromium browser for the Voyager interaction step
- A lightweight database for task state and audit logging, with a move to a production-grade cloud database planned for Phase 2
- Cloud-hosted deployment, consistent with the rest of the proposed architecture
Constraint we designed around: Yardi Voyager does expose an API for writing resident and payer data back in, but this was a pre-project demo built straight out of a discovery call, so formal API access hadn't been granted yet. Rather than wait on that access to prove the concept, the workaround was Playwright-driven browser automation: a bot that mimics a real human operator inside Voyager's own interface, clicking, typing, and navigating exactly as a person would, while still pausing for MFA and final human approval before anything submits. Once a project is formally scoped and API access is granted, the direct API path outlined below becomes the faster, production-grade option.
Security and data protection
Three layers of protection, designed around resident and payment data from day one.
PDF → AI
Extraction runs inside a private, access-controlled cloud environment. No data ever touches a public consumer AI API, and the vendor contractually does not train on this data.
AI → Operator
Extracted data lives only in the operator's local browser session. Card numbers and CVVs are masked in every log line, and session cookies are encrypted with a symmetric key.
Operator → Yardi
The Yardi password is held in memory for under 3 seconds and never logged. Sensitive payment fields are stripped before any database write, and MFA is always entered by a human, the bot never sees the code.
Planned next: routing through a private network endpoint, PCI scope minimisation so card data is never persisted at all, and a managed secrets vault with SSO for every credential.
Our recommended rollout plan
A phased path from first automation to a fully hardened, production-grade system.
Phase 1: Core automation
End-to-end pre move-in automation, from PDF to AI to operator review to Voyager, with per-field confidence scoring and MFA / unit-conflict human-in-the-loop bridges.
Phase 2: Scale and harden
Extend automation to move-in, move-out, ACH, and billing tasks; move to a production-grade cloud database, add a managed secrets vault, and stand up container-based deployment with autoscaling.
Phase 3: R&D exploration
Evaluate a dedicated document-intelligence model as a successor to the current vision model, potentially cutting per-document cost by around 80% and extraction time by around 70%.
Phase 1 delivers immediate impact, Phase 2 makes it production-grade, and Phase 3 pushes efficiency further.
A faster path forward: direct API integration
The same automation, but in seconds instead of minutes, and resilient to future interface changes, once formal API access is granted at project kickoff.
Today: browser automation only
Read PDF, launch a browser, log in with MFA, click through Voyager's forms, pause on every dialog for human approval, then submit and verify.
With direct API: backend-to-backend
Read PDF, extract with AI, post resident and billing data directly, verify the response, no browser and no MFA replay required.
5x faster: backend calls beat browser clicks every time.
Resilient: no breakage when Yardi's interface changes.
Tighter security: tokens beat replaying MFA daily.
Scales linearly: one worker can process hundreds per day.
This is the depth of a single discovery call
If your process has a similar mix of manual data entry, compliance concerns, and scale problems, a free discovery call is the fastest way to see what's possible.
Book a free discovery call