Dashboard
Recent transactions
Payment service
Tenants
—
New tenant
Walk through every section. You can review before committing.
App
App Update
In-app APK update for sideloaded builds. The app prompts when its installed version is older than Latest version. Leave Latest version or APK URL empty to disable prompts.
Activity
Owner
Admin-side metadata about the finance company. Not surfaced in the app or backend.
Notes
Free-form admin notes. Stored locally in vasool-admin's database — not committed to the infra repo.
Saved.
Deploy
Database
Read-only — changing the DB name on a live tenant will break it.
Admin credentials
Password and profile changes are applied on the next container restart. Saving here commits to config — the container re-reads it on boot. For prod tenants, run a Promote after saving.
Features
Products — tick what this tenant offers
Select at least one product to configure features.
Required — auto-enabled, uncheck only if you know why
Optional — disabled by default, enable when the tenant asks
Advanced — deprecated / developer flags
Voice collection (STT / TTS)
Per-tenant config for the conversational collection flow. Keep API keys as the override-via-… placeholders — the real secrets are injected per deploy via env (VOICE_STT_API_KEY, VOICE_TTS_API_KEY). Only set a literal key here for a tenant that needs its own. Also enable the Voice collection flag under Features.
Speech-to-text
Text-to-speech
LLM (AI features)
Per-tenant LLM for AI-backed features (voice collection NLU, loan eligibility). Any OpenAI-compatible /chat/completions endpoint works — OpenRouter, OpenAI, Groq, or a self-hosted model. Keep the API key as the override-via-LLM_API_KEY placeholder when the real secret is injected per deploy via env; set a literal key here for a tenant that needs its own.
WhatsApp Integration
Auto-send reminders via the tenant's own WhatsApp Business provider account. The tenant pays the provider directly — Vasool just routes sends through their API key. Templates must be pre-approved by Meta on the tenant's account; paste the exact approved template names below.
Provider
Advanced provider settings
Approved Templates
Paste the exact template name registered in the provider's account. Only templates relevant to this tenant's enabled features are shown.
Advanced: template language codes (default: en)
Test send
Validates the credentials by sending a real message via the provider. Pick a template the tenant has actually approved, otherwise the provider returns an error.
Danger zone
Deletes the tenant's config.json directory in the infra repo. The database is not dropped — clean up manually.
Subscriptions
—
| Tenant | Plan | Amount | Frequency | Next due | Status |
|---|
APK Releases
—
Upload APK
Stored as a GitHub release in the infra repo and served publicly at /downloads/apk/<version> on this host. Point a tenant's App Update → APK URL at it (or use the picker on the tenant page).
Roll out to all tenants
Writes the same App Update block (version, URL, checksum) into every tenant's config in one go — a forced update only reliably blocks multi-workspace users when all their tenants carry it.
| Version | Size | Uploaded | Download URL |
|---|
Transactions
—
| Tenant | Ref ID | Amount | Status | Triggered by | Date |
|---|
Voice review
Cross-tenant Vasool AI activity — transcripts, intents, and outcomes.
By intent
| Intent | Taps | Accepted | p95 |
|---|
Top tenants speaking
| Tenant | Taps | Accepted | Last heard |
|---|
Interactions
—
| When | Tenant | Intent | Transcript | Conf. | Outcome | Latency |
|---|
Payment config
ErtiPay credentials used by the payment service. Secrets are write-only — type a new value to overwrite, leave blank to keep current.