Skip to content
All products

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.

The Vendale site hero at vendale.app: the shared inbox beside customer order records showing KES amounts, delivery states, and an order status notification.
A capture of vendale.app, taken October 2026. The product site is live; the desktop release is provided by request.

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

  1. Vendale for Windows

    The desktop workspace: shared inbox, customer records, orders, broadcasts, and analytics, built with Tauri 2.

    Attached: Windows installers: MSI and NSIS

  2. 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

  3. PostgreSQL

    Your data in your tenant: customers, conversations, orders, products, catalogues, broadcasts, and audit events.

  4. 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

Your team works in one desktop app; the backend enforces permissions and keeps one record per organization; the provider connection stays off until you confirm it.

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.