Windows desktop CRM · In development
Vendale
“Your team sells on WhatsApp, so orders, promises, and customer history live on personal phones and walk out the door with them.”
Vendale puts the shared inbox, customer records, orders, and follow-up in one Windows desktop workspace with permissions that match your team. A Windows desktop CRM for businesses that sell through WhatsApp.

Who it is for
Teams that sell and support customers over WhatsApp: shops taking orders in chat, service businesses handling requests, and any team that needs one shared record instead of many phones.
- Teams where several people answer the same customers
- Owners who want orders and conversations linked in one record
- Businesses that must control who can send, edit, or export
- Organizations that want their data on their own server
What is inside
Every module below exists in the product today. This is the checklist with receipts.
Shared inbox
One place for customer conversations with assignment, delivery states, and resolution flows. Internal notes never reach the customer.
Customers and companies
Customer records with notes, tags, archive and restore, plus company records, searchable from a global search.
Orders
Order records in KES with status, payment, and fulfillment updates, notes, cancellation, and timelines. Numbers like ORD-2026-004182 are issued server-side.
Products, catalogues, and inventory
Products with variants and stock, catalogues for sharing with customers, and an append-only stock movement history.
Broadcasts
Approved message templates sent to saved segments, with consent tracking, frozen audiences, and dispatch jobs you can pause or cancel.
Tickets
Support tickets with priority and category filters, internal notes, and timelines, numbered server-side.
Segments and templates
Segments built with a rule builder; message templates you can edit, duplicate, archive, and restore.
Analytics
A dashboard built from persisted records only. Where a channel is not live, it says so instead of estimating.
Automations and AI Copilot
Automations that state their configuration requirements, and a copilot surface that shows provider status and safeguards.
Team, roles, and audit log
Members with invite, suspend, and transfer; a role editor with a permission matrix; an append-only audit log with filters and change detail.
M-Pesa collections
Each organization connects its own M-Pesa (Daraja) credentials to collect order payments, with attempts recorded and manual reconciliation.
How Vendale fits together
Vendale for Windows
The desktop workspace: shared inbox, customer records, orders, broadcasts, and analytics, built with Tauri 2.
Attached: Windows installers: MSI and NSIS
FastAPI backend
Checks every action against the role's permission keys, isolates tenants, and writes the append-only audit log.
Attached: Access tokens in memory; refresh by httpOnly cookie
PostgreSQL
Your data in your tenant: customers, conversations, orders, products, catalogues, broadcasts, and audit events.
WhatsApp provider (Meta Cloud API)
Inbound messages arrive through signed webhooks. Outbound sending stays switched off until your channel is confirmed with the provider.
Attached: Object storage for shared images and documents
Roles and permissions
- OwnerFull control of the organization and its billing
- Custom rolesBuilt from 158 action-level permission keys, from inbox.reply to settings.manage_billing
- EveryoneNavigation hides what a role cannot reach; guarded actions show a clear denied state
Every action is checked against the signed-in user's permission keys on the server before it runs, and the interface mirrors the same keys, so a role that cannot broadcast never sees a send button. High-risk permissions are flagged in the role editor.
Tech
Tauri 2, React, TypeScript, Zustand, FastAPI, PostgreSQL, Docker, nginx
Deployment
- The desktop app installs on Windows from MSI or NSIS installers.
- Self-hosted: production Docker images for the API and workers behind an nginx reverse proxy with TLS and rate limiting, orchestrated with Docker Compose and systemd services.
- Shared or customer-hosted: vendale.app runs the service, and customer-hosted servers are reviewed before agreement.
- Sign-in uses email and password; the access token stays in memory and refresh rides an httpOnly cookie.
Status and availability
Current status: In development
- In development, at desktop version 0.2.14. The core modules are built and tested; the edge is still being finished.
- Live WhatsApp sending is switched off until your channel is confirmed with its provider. Nothing is sent to real recipients while it is off.
- The desktop release is provided by request rather than as a public download.
- Price: ask us.
See Vendale against your own problem.
Tell us about your counters or your WhatsApp sales, and we will show you exactly what the product does for them, and what it does not do yet.
Evidence note
Checked October 2026 in the Vendale repository: 58 API modules (ls backend/app/api/v1/endpoints), 185 database model classes (grep -rh "^class" backend/app/models), 158 permission keys (desktop/src/types/domain.ts), 1,459 backend test functions in 161 files (find backend/tests -name "test_*.py"), 855 desktop test cases in 97 files (find desktop/src -name "*.test.ts*"), and desktop version 0.2.14 (desktop/src-tauri/tauri.conf.json). Live-send default from backend/app/core/config.py (META_LIVE_MODE=false); M-Pesa collections from backend/app/api/v1/endpoints/mpesa.py; installers and hosting from the repository README.