Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Voice and SMS AI agents that complete property-management workflows (collections, renewals, leasing) against a legacy system of record, with guardrails in code, evals and tracing.
BusinessGitHub @rakshathavasudevOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Live demo: voiceops-1ayi.onrender.com. It runs the offline scripted model with a mocked legacy system, and it is on Render's free plan, so the first load can take about a minute while it wakes up. Use Chrome for the voice mic.
VoiceOps is a working voice and messaging agent for a property manager. It handles resident and prospect conversations over phone, SMS, web chat and email, and completes real operational workflows against a legacy system of record: collections and payment plans, payment links, lease renewals, tour booking and lead follow-up.
The interesting part is everything around the model:
flowchart LR
U[Residents and prospects<br/>phone, SMS, web chat, email] <--> TW[Twilio / browser console]
TW <--> API[VoiceOps agent platform<br/>FastAPI]
API <--> LLM[Claude<br/>or offline scripted model]
API --> PMS[(Legacy property system<br/>system of record)]
API --> DB[(Store: cases, audit log,<br/>outbox, consent, traces)]
API --> HQ[Human escalation queue]
It runs fully offline with no API keys. A deterministic scripted model stands in for the LLM, and the legacy PMS is mocked, so you can demo it anywhere. Set ANTHROPIC_API_KEY to run the same agent on Claude, and add Twilio credentials to take real phone calls.
The original single-file insurance call simulator (v1), with its screenshot and demo video, is in
v1/.
pip install -r requirements.txt
python -m voiceops # console at http://localhost:8000 (mock PMS on :8001)
Open the console in Chrome, pick Maria Lopez · Unit 4B, press Start conversation, click the mic and say "This is Maria Lopez in unit 4B. Can I split my balance into three payments?"
| Run with | How |
|---|---|
| Offline (default) | nothing to configure; the scripted model drives the same tools and guardrails |
| Claude | export ANTHROPIC_API_KEY=... (optional: VOICEOPS_MODEL=claude-sonnet-5-5, VOICEOPS_EFFORT=low|medium) |
| Real phone + SMS | Point a Twilio number's voice webhook at POST {PUBLIC_BASE_URL}/twilio/voice and SMS at /twilio/sms; set TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_NUMBER, PUBLIC_BASE_URL (e.g. an ngrok URL). Signatures are validated when the auth token is set. |
| Frozen clock for demos | VOICEOPS_NOW=2026-10-27T10:00:00-07:00 (quiet hours and dates become reproducible) |
python -m pytest -q # 40 unit tests
python -m voiceops.evals # 17 eval scenarios, offline
python -m voiceops.evals --provider claude --trials 3 # the real agent, pass^k over 3 trials
python -m voiceops.evals --compare evals/baseline.scripted.json # regression gate (CI)
The interview walkthrough is in docs/DEMO.md. Design notes are in docs/ARCHITECTURE.md.
render.yaml is a Render Blueprint for one web service that runs both the agent platform and the mock legacy PMS. In Render, choose New > Blueprint, pick this repo, and fill in the secrets it asks for:
DEMO_PASSWORD (recommended): puts the console and API behind basic auth, with any username. Twilio webhooks stay open and are checked by signature instead.ANTHROPIC_API_KEY (optional): without it the offline scripted model runs.PUBLIC_BASE_URL, TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_NUMBER (optional): for real calls and texts. Set PUBLIC_BASE_URL to the service's https://….onrender.com URL, then point the Twilio number's voice webhook at /twilio/voice and its messaging webhook at /twilio/sms.Demo data lives in SQLite on the instance's disk, so it resets on each deploy or restart. That suits a demo. The free plan also sleeps when idle, so open the URL a minute before you share your screen.
flowchart LR
subgraph Channels
V[Voice: browser mic / Twilio] --> R
S[SMS: Twilio / simulator] --> R
W[Web chat] --> R
E[Email inbound] --> R
end
R[Resolve contact to open case<br/>shared across channels] --> P[Redact card numbers / SSNs]
P --> H{Hard triggers<br/>emergency, opt-out, legal,<br/>dispute, human request}
H -- yes --> X[Escalate / reply<br/>no model call]
H -- no --> L[Model + tools loop<br/>budgets, traced]
L --> T[Tool layer<br/>verification, scope, policy,<br/>confirmation check]
T --> C[PMS client<br/>auth, retries, breaker,<br/>validation, outbox]
C --> PMS[(Legacy PMS<br/>system of record)]
T --> A[(Audit log<br/>hash-chained)]
L --> G[Output guard<br/>no account data before verification]
G --> O[Reply on the same channel]
| What the role needs | Where it lives |
|---|---|
| Agents that complete workflows and write to a system of record with an audit trail | agent/tools.py (prepare/commit writes), store.py (hash-chained audit log) |
| Shared state across voice, SMS, web chat and email | agent/runtime.py conversation_for + contact index, history rebuilt per turn in agent/prompts.py |
| Compliant outbound for collections, abandoned applications, leads and renewals | campaigns.py |
| Guardrails for payments and tenant records (confirmation, idempotency, scope, escalation) | agent/guardrails.py, agent/tools.py, tests in tests/test_guardrails.py |
| Legacy API integration (auth, retries, timeouts, validation, durable writes) | integrations/pms_client.py against |
voiceops/
agent/ runtime loop, tools, guardrails, prompts, retrieval, Claude + scripted models
integrations/ legacy PMS client, Twilio helpers
legacy_pms/ mock vendor API with fault injection (the system of record)
campaigns.py outbound workflows + compliance gate
store.py agent-side state: conversations, audit log, outbox, consent, traces
server.py channel webhooks + console API
evals.py eval runner and regression gate
config/ per-org policy and handbook
evals/ scenarios, baseline, reports
web/console.html operator console (voice via Web Speech API)
tests/ unit tests, including a misbehaving-model suite
docs/ interview demo script and design notes
render.yaml one-click Render deployment
v1/ the original single-file insurance call simulator
verify_identity, and an output guard blocks account figures in replies to unverified callers.TWILIO_AUTH_TOKEN is set. The console API has no auth: it is a local demo tool and must not be exposed publicly as-is.legacy_pms/app.py| Evaluation sets, regression runs, tracing, operational metrics | evals/scenarios.yaml, evals.py, tracing.py, metrics.py, CI |
| Tool calling, RAG, structured outputs, context management | strict JSON-schema tools, agent/knowledge.py (policy retrieval), prompt caching + compacted history in agent/prompts.py |
| Telephony, messaging providers, PCI-scoped payments, consent | integrations/twilio.py, payment links instead of card capture, consent table and STOP handling |
| Tenant-specific configuration | config/orgs/harborview.json and config/knowledge/harborview.md |