Service Provider Marketplace SaaS

AI Field-Service SaaS Trades CRM, Quotes, Invoices, Dispatch & AI Butler

A Swiss contractor management platform that streamlines leads, quotes, jobs, billing, payments, and employee dispatching with AI-powered quotation creation from text or images.

Leads, quotes, jobs, invoicing, payments, dispatch, and an AI Butler, one platform for trade businesses.

AI Field-Service SaaS Trades CRM, Quotes, Invoices, Dispatch & AI Butler - project overview

01Overview

This is a tool for Swiss workers who perform manual labor, such as plumbers and electricians. It improves in what they do. Spreadsheets and paper notes are not necessary for them. Among the many capabilities of the program are the ability to create quotations, invoices, and payments. These features are all located in one location and it's simple to use. Electricians and plumbers may use an app on their phones, while office workers can utilize a portion on their PCs. The tool can even understand what people are saying and make quotes for them. People in Switzerland are already using it and it accepts a wide range of payment options, including Stripe and Swiss QR-Rechnung. English, German, French, and Italian are among the languages in which the tool is accessible and for Swiss professionals like carpenters, painters, and contractors, it is particularly beneficial. Those who schedule jobs and send staff might also benefit from this technology. For professionals like plumbers and electricians, it makes things simpler.

Businesses in Switzerland can use this software solution to manage their workload. The system combines every step a company has to take, from acquiring a client to receiving payment and a review. It accomplishes this in three ways: a clever computer software that can assist in creating quotations for clients, a customized website that office workers can access, and a mobile app that employees can use on their phones.

Considering the system was created with Swiss businesses in mind, it has certain features that they require, such as the ability to create invoices using a QR code, verify the validity of a customer's ID, and manage the various tax rates in Switzerland. It is available in four languages: English, German, French, and Italian. It also integrates with payment methods such as Stripe and TWINT. Both Android and Apple phones may download the mobile app which can be utilized even in the absence of an internet connection. The office website is quick and simple to use and the intelligent computer program may assist with writing quotations simply by listening to a voice message or viewing a picture.

02Relevant keywords

AI Field Service AppTrades CRMFlutter Offline-FirstSwiss QR-RechnungStripe Terminal Tap-to-PayVoice-to-Quote AI ButlerFastAPI BackendMulti-Tenant SaaSServiceTitan AlternativeJobber AlternativePasskeys FIDO2 AuthDispatch Board
03Challenge & Solution

Solving real problems with smart engineering

One System for the Whole Workflow

Problem

Trades juggled disconnected tools - accounting software for invoices, spreadsheets for estimates, paper for jobs, WhatsApp for clients - losing hours every day to admin.

Solution

A single Flutter app runs the full six-stage flow - lead, quote, job, payment, review - all connected through one FastAPI backend.

Butler AI - Voice-to-Quote

Problem

Producing an accurate estimate at the customer's table was impossible. Quotes were rebuilt in spreadsheets the next day, and jobs were lost to faster rivals.

Solution

Tradespeople describe a job by voice, text, or photo and Butler AI generates an instant quote. On-device Sherpa-ONNX keeps audio private, while image analysis spots broken tiles, leaks, and faulty appliances.

Offline-First That Actually Works

Problem

Field workers had no signal in basements, on roofs, or in rural areas - making cloud-only apps useless on real job sites.

Solution

The app keeps running with zero signal, storing jobs, quotes, photos, signatures, and notes in a local SQLite database, then syncs in the background - most important data first - once signal returns.

Swiss QR-Rechnung Invoicing

Problem

QR-Rechnung invoices were built by hand - manually adding VAT rates (8.1%, 2.6%, 0%) and verifying CHE-UID numbers - causing errors and delayed payments.

Solution

Fully automated QR-Bill invoices work with every Swiss banking app (PostFinance, UBS, Raiffeisen, ZKB), with branded PDFs, CHE-UID validation, and per-line VAT applied automatically.

Stripe Terminal Tap-to-Pay

Problem

Trades had to carry bulky card machines or chase bank transfers for days. Taking payment with just a phone simply wasn't possible.

Solution

Tap-to-Pay accepts chip, contactless card, and mobile wallet payments straight from the phone - no extra hardware. The customer signs on-device and funds settle automatically.

Real-Time Drag-and-Drop Dispatch

Problem

Scheduling meant whiteboards or shared calendars that never showed who was actually free - causing double-bookings and missed appointments.

Solution

Office staff drag job cards across team members on a board that shows live availability - no whiteboards, no clashes, just a clear schedule.

Built for Four Languages

Problem

Swiss tradespeople work across German, French, Italian, and English-speaking regions, but no single tool supported all four.

Solution

The platform is fully multilingual across all four Swiss market languages, so every team works in its own language inside one app.

04The Solution

How We Built One App to Replace the Entire Trade Business Stack

Metaviz AI created a system with three main parts: a mobile app that people can use on their phones, a website that administrators can use and a smart helper called AI Butler. All of these parts work together because they are connected to the backend system, which is powered by FastAPI. The people who made this system looked at every problem that people were having and found a way to fix each one directly. Metaviz AI made sure that the mobile app, the administrator website and the AI Butler all work well together to solve these problems.

Before: Send quotes to customers by email the day using a spreadsheet. Workers use paper job sheets on clipboards. Create QR-Bills by hand which can be wrong sometimes. Customers pay with cash or we have to ask them to transfer money to our bank account. Use a whiteboard to organize dispatch work Use WhatsApp to talk to customers.

After: This app does everything from getting a lead to getting a review. The AI Butler can make a quote in a few seconds when you are on site. You can make digital jobs and add photos and signatures to them. The app can automatically make a Swiss QR-Rechnung for you. You can use Stripe Tap-, to-Pay and TWINT on your phone to get paid. The app has a real-time board where you can drag and drop things to dispatch them.

  • Butler AI - Voice-to-Quote in Seconds Our technology promptly generates a quotation when tradespeople describe a work in their own words, either by speaking, typing, or taking a picture.It can even identify issues like broken tiles, leaky pipes, and appliances when customers upload a picture.No audio data ever leaves the phone thanks to our speech recognition technology, which operates on the device utilising Sherpa-ONNX. Together, speech recognition and visual analysis make it simple for tradesmen to obtain quotations.
  • Six-Stage Workflow in One App You can manage everything in one place. Let us say you get a lead in the morning. You go to the customers house. Give them a quote while you are still in their kitchen. Then you do the job in the afternoon. When you are finished you get paid before you leave the customers driveway. After that you ask the customer to review your work on your way. This way the customer can review your work while it is still fresh in their mind like the lead and the review all in one day with the lead and the review and everything in, between all happening in one platform with the lead.
  • Offline-First That Actually Works The Flutter mobile app just keeps on working when you have no signal at all. It stores things, like jobs and customers and quotes and photos and signatures and notes about when a job's finished in a local database called SQLite.When you get a signal again the app starts syncing everything in the background. It does the important things first. The Flutter mobile app makes sure that jobs and customers and quotes and all that are synced properly.
  • Swiss QR-Rechnung Invoicing Create QR-Bill invoices that are compatible with all Swiss banking apps, including PostFinance, UBS, Raiffeisen, and ZKB. Completely automated branded PDF, CHE-UID validation, and per-line VAT rates.
  • Stripe Terminal Tap-to-Pay Tradespeople can take card payments when they are at the customers site. They do this directly from the app. The app lets them take payments using a chip. By tapping the card on the device or even with a mobile wallet. They do not need any equipment to do this. The customer signs the device to say they agree with the payment. Then the payment is sorted out automatically with the tradespeople account. The customer signs on the device, for the tradespeople.
  • Real-Time Drag-and-Drop Dispatch Office staff move job cards across team members on a board that shows who is available. This way there are no bookings. They do not need a whiteboard to keep track everything is clear.
06Platform Modules

The Platform Modules - Six Stages, Three Surfaces, One Backend

01

Butler AI

AI quoting assistant powered by GPT-4o, Claude and Groq - create quotes from voice, text or a photo. Speech is transcribed on-device with Sherpa-ONNX, so nothing leaves the phone, and pgvector semantic search surfaces relevant past quotes and jobs.

02

Leads & CRM

Full lead pipeline with source tracking, status management and one-tap conversion to a quote - replacing the old WhatsApp contact flow.

03

Quotes Module

Create quotes on-site with Butler AI, with built-in Swiss VAT (8.1%, 2.6%, 0%), deposit % and validity period. Brandable PDF output carries your own logo.

04

Jobs & Field Work

End-to-end job management - in-progress and after photos, on-device signatures, recurring jobs and templates. Works fully offline, storing everything in SQLite.

05

Swiss QR-Rechnung

Automated, compliant QR-Bill invoice PDFs with postal-code validation, cantonal address fields, CHE-UID validation and per-line VAT.

06

Payments

TWINT, Stripe Checkout subscriptions, manual bank transfers with automatic reconciliation, Stripe Terminal Tap-to-Pay and Stripe Connect payments.

07

Dispatch Board

Real-time drag-and-drop scheduling with a live availability matrix (Available, Booked, Unavailable, On leave), synced across all users over WebSocket.

08

Schedule & Maps

Weekly calendar with an OpenStreetMap view showing job pins, plus address autocomplete.

09

Auth & Security

Face ID / Touch ID, magic link, Google/Apple sign-in, 2FA and passkeys (FIDO2/WebAuthn), with full audit logging and GDPR export.

10

Multi-Tenant RBAC

Four roles - Field Worker, Dispatcher, Manager and Admin - each with scoped access to quoting, billing, dispatch and analytics.

11

Multi-Language

Switch between English, German, French and Italian in one tap, with region-aware formatting and per-region legal pages (Impressum, Datenschutz, AGB).

12

Subscription Billing

Pro, Business and Enterprise tiers via Stripe Subscriptions, with trial-to-paid conversion, seat-based pricing, Stripe Connect onboarding and usage tracking.

07Feature Showcase

A closer look at AI Field-Service SaaS Trades CRM, Quotes, Invoices, Dispatch & AI Butler

App Login View
App Pro Trust Score
App Team member Section
App Lead Details Section
App Document Verification
App Butler Quotes View
App Butler Pro Customers
App Butler Message View
App Butler Invoices View
App Business Plan
App Billing and Subscription
08Features

What it does

01

Butler AI (Voice, Text & Photo)

Voice-to-quote: give a detailed, VAT-accurate quote after describing a project aloud. Photo analysis: Butler finds and sketches the task by taking a picture of a flaw. Conversations with many turns and a complete message history across sessions Semantic search using pgvector RAG over previous quotations and jobs Speech is entirely on-device (Sherpa-ONNX); no external audio is sent. Multi-model routing: Claude for reasoning, GPT-4o for vision, and Groq for speed

02

Leads & CRM

Lead collection using source tracking (phone, web form, referral, walk-in) One-tap conversion to quotation for the lead status pipeline A customer profile that includes their whole employment and correspondence history Shortcuts for direct contact: phone, WhatsApp, email

03

Quotes

Swiss VAT line items (8.1%, 2.6%, and 0%) in an on-site quotation builder The proportion of deposits, conditions of payment, and duration of validity Automated reminders to follow up after sending One tap to send a branded PDF via email One-tap acceptance creates jobs automatically

04

Jobs & Field Work

Complete work details, including the client, address, pictures, notes, and designated team member It operates offline before, during, and following photo capturing. Offline-capable on-device customer signature Job templates and recurring scheduling Push the job status in real time to the workplace

05

Swiss QR-Rechnung Invoicing

Compliant QR-Bill PDF creation: a single tap upon work completion VAT rates per line (8.1%, 2.6%, and 0%) validated by CHE-UID Validation of Swiss postal codes and cantonal address fields All Swiss banking applications, including PostFinance, UBS, Raiffeisen, and ZKB, are compatible.

06

Payments

Stripe Terminal Tap-to-Pay: phone only; on-site card, contactless, Apple/Google Pay Instant payment via Twint Swiss Automatic reconciliation combined with manual bank transfer Contractor payout onboarding using Stripe Connect Stripe Subscriptions for Pro, Business, and Enterprise subscription billing

07

Dispatch Board

Drag-and-drop job scheduling in real time (dnd-kit + WebSocket) Each team member's live availability matrix Service regions, exception dates, and working hours for each member Push notifications that instantly fan out to field workers and office devices

08

Offline-First Mobile

Complete app operation using the SQLite local storage with no signal Cache-age indicators that display the freshness of data On reconnect, the background sync queue was prioritised. No matter where the job takes you, you can work in basements, on rooftops, or in rural locations.

09

Auth & Security

Passkeys (FIDO2/WebAuthn): device-native and resistant to phishing Biometric login via Face ID, Touch ID, or fingerprint Google/Apple sign-in and the magic link Twilio Verify 2FA (SMS OTP) iOS Keychain and Android Keystore token storage, as well as Argon2 password hashing Full audit logging on sensitive processes and GDPR data export

10

Multi-Language (EN / DE / FR / IT)

Language switching with just one tap; no restart is needed Mobile Flutter ARB files with compile-time safety i18next for site administrators with browser language detection Currency, date, and number formatting that takes location into account Regional legal pages: AGB Handwerker, Datenschutz, and Impressum

09Admin Dashboard

What the back office does

Admin · Manager · Dispatcher · Field Worker

  • You can manage leads, quotes, jobs, invoices and orders from a desktop browser
  • We have a time drag-and-drop dispatch board that shows live team availability
  • You can use Stripe Terminal Tap-to-Pay via @stripe/terminal-js for front-desk payments
  • Our map uses Leaflet and react-leaflet with job pin clustering and service-area visualization
  • There is a subscription and billing management dashboard
  • You can get analytics and reporting with PDF and Excel export
  • We have role-based views for Admin, Manager, Dispatcher and Field Worker
  • Our UI is multilingual with English, German, French and Italian via i18next
  • Our time drag-and-drop dispatch board lets you drag job cards across team members and see live availability
  • You can create, read, update and delete leads quotes, jobs, invoices, customers and products or services
  • We manage Swiss QR-Rechnung invoices. You can generate, preview, send and track payment status
  • The revenue dashboard shows Stripe subscriptions, Tap-to-Pay, TWINT and bank transfer. All reconciled
  • You can manage your team by inviting members assigning roles setting working hours, service areas and exception dates
  • Analytics shows job completion rates, revenue per tradesperson quote conversion rate and average job value
  • We use Celery background job monitoring via Flower for AI embeddings, notification queues and CSV imports
  • You can export GDPR data and see a full audit log on operations
  • Our customer CRM has booking history, communication. Review management, for customers
10Access Control

Who can reach what

01

Billing & subscription

Admin

02

Team & settings

Admin

03

Quotes · jobs · invoices

Admin, Manager

04

Analytics & exports

Admin, Manager

05

Dispatch board

Admin, Manager, Dispatcher

06

Schedule & maps

Admin, Manager, Dispatcher

07

Own tasks & time

Admin, Manager, Dispatcher, Field Worker

11AI Assistant

AI Butler

Model Routing: Through PydanticAI, OpenAI GPT-4o (vision), Anthropic Claude (reasoning), and Groq (speed)

On-Device Speech: Sherpa-ONNX: entirely on-device, no external audio transmission

Vector Search: pgvector RAG over previous quotations and jobs each draft becomes more intelligent over time

Integration: embedded

  • Voice-to-quote: give a detailed, VAT-accurate quote after describing a project aloud
  • Photo analysis: take a picture of a damaged tile, leaking pipe, or malfunctioning appliance, and Butler will identify and plan the repair
  • Conversations with many turns and a complete message history across sessions
  • Semantic search using pgvector RAG over previous quotations and jobs
  • Sherpa-ONNX fully on-device speech recognition; no audio is sent to a server
  • Multi-model routing: Anthropic Claude for reasoning, GPT-4o for vision, and Groq for speed
13Example Queries

What people ask it

  • "I need a quote for replacing a 40L electric water heater in Zurich - include parts and 3 hours labour at CHF 95/h"
  • "This pipe is leaking behind the wall - what should I charge?" (+ image of the leak)
  • "Create a quotation for a two-coat, four-room apartment that is 120 square meters.
  • "What was the last quote I did for Muller GmbH?"
  • "Show me all jobs with incomplete signatures this week"
14Gallery

Inside AI Field-Service SaaS Trades CRM, Quotes, Invoices, Dispatch & AI Butler

15Web Experience

On the web

Voice-to-Quote: Open Butler AI → Describe job by voice → Sherpa-ONNX transcribes on-device → GPT-4o drafts quote → Review and send to customer

Job Completion: Open job → Before photos (offline) → Complete work → After photos + signature (offline) → Sync on reconnect → QR-Rechnung invoice → Tap-to-Pay → Request review

Offline Flow: Enter no-signal area → App works fully via SQLite → Cache-age indicator shown → Reconnect → Prioritised background sync runs automatically

  • Unified desktop console - Leads, quotes, jobs, invoices & orders in one place
  • Drag-and-drop dispatch - See team availability and assign in real time
  • Tap-to-Pay at the desk - Take card payments with Stripe Terminal
  • Live job map - Clustered map of every job location
  • Billing dashboard - Manage subscriptions and billing in one view
  • Export-ready analytics - Reports straight to PDF or Excel
  • Role-based access - Admin, Manager, Dispatcher & Field Worker views
  • 4 languages - English · German · French · Italian
17Mobile Experience

On mobile

  • Offline-first home - Works with no signal via on-device SQLite
  • Field lead capture - Find customers and convert them on site
  • On-site voice quoting - Speak the job; AI drafts a tax-ready quote
  • AI Butler - Create quotes by voice, text, or photo
  • Photos & signatures - Before/after shots and on-site customer sign-off
  • Swiss QR invoices - Generate and send compliant bills instantly
  • Tap-to-Pay - Take card payments with just the phone
  • TWINT & bank transfer - Flexible Swiss payment options
  • Schedule & map - Every job and its location at a glance
  • Push notifications - Instant alerts when a new job comes in
  • Biometric login - Face ID / Touch ID sign-in
  • 4 languages - English · German · French · Italian
  • Cache-age indicator - Know when your data was last synced
  • Smart sync - Prioritised background sync on reconnect
18Tech Stack

Built with

01

Mobile App (Flutter)

Flutter + Dart - cross-platform iOS & Android framework Riverpod + GetIt - state management and dependency injection sqflite (SQLite) - offline-first local database Sherpa-ONNX - on-device speech-to-text for Butler AI mek_stripe_terminal + qr_flutter - Tap-to-Pay and QR billing flutter_map + OpenStreetMap - maps, geocoding, and location passkeys (FIDO2) + local_auth - Face ID / Touch ID login intl + ARB files - EN / DE / FR / IT localization

02

Web Dashboard (React)

React 19 + TypeScript + Vite - admin panel UI and build tooling Tailwind CSS + Radix UI - styling and accessible components TanStack Query + React Hook Form + Zod - data fetching and validated forms dnd-kit - drag-and-drop dispatch board Leaflet + react-leaflet - interactive web maps @stripe/terminal-js + jsPDF - payments and PDF invoice generation i18next - multi-language web interface (EN/DE/FR/IT)

03

Backend (FastAPI)

Python 3.11 + FastAPI - async API with uvicorn / gunicorn SQLAlchemy + asyncpg + Alembic - async ORM and migrations Pydantic v2 - request validation and typed schemas Celery + Redis + Celery Beat - background jobs and scheduling reportlab + qrcode - Swiss QR-Rechnung PDF invoices

04

AI Engine

GPT-4o, Claude, Groq - vision, long-context, and low-latency LLMs PydanticAI - model routing and output validation pgvector + Cohere - semantic search (RAG) and reranking Sherpa-ONNX - private on-device speech recognition

05

Database

PostgreSQL + pgvector - primary database and vector search Redis 7 - Celery broker and application cache SQLite (sqflite) - mobile offline store

06

Authentication & Security

Firebase Auth + Google / Apple Sign-In - social login FIDO2 / WebAuthn passkeys - passwordless biometric auth Argon2 + JWT (python-jose) - password hashing and tokens iOS Keychain / Android Keystore - secure on-device storage

07

Payments

Stripe Switzerland + Stripe Connect - processing and vendor payouts Stripe Terminal - in-person Tap-to-Pay TWINT - Swiss mobile wallet payments Stripe webhooks - automatic payment reconciliation

08

DevOps & Infrastructure

Coolify + DigitalOcean - managed Docker deployment Docker multi-stage + nginx - containerized builds and reverse proxy Cloudflare + Let's Encrypt - DNS and TLS Sentry + structlog + Flower - error tracking and monitoring

09

Communications & Media

Firebase Cloud Messaging - push notifications Firebase Realtime Database - live job tracking SendGrid + Twilio Verify - email and SMS OTP Cloudinary - media CDN and WebP optimization

19Architecture

How it is put together

Frontend: Flutter (Dart) · Riverpod · GetIt · sqflite · Sherpa-ONNX · mek_stripe_terminal · qr_flutter · flutter_map + OpenStreetMap · firebase_messaging · local_auth · passkeys (FIDO2) · flutter_secure_storage · intl + ARB files (EN/DE/FR/IT) · flutter_localizations || React 19 · TypeScript · Vite · Tailwind CSS · Radix UI · TanStack React Query · react-hook-form · Zod · React Router DOM · dnd-kit · Leaflet + react-leaflet · @stripe/terminal-js · i18next + react-i18next · Firebase Cloud Messaging · jspdf · motion (Framer Motion) · Vitest

Backend: Python 3.11 · FastAPI · uvicorn + gunicorn · SQLAlchemy (async) · asyncpg · Alembic · Pydantic v2 · PydanticAI · OpenAI GPT-4o · Anthropic Claude · Groq · pgvector · Celery + Redis · Celery Beat · reportlab + qrcode · python-jose (JWT) · passlib + Argon2 · webauthn · stripe SDK

Infrastructure: Coolify (managed Docker Compose) · DigitalOcean · Python 3.11-slim + Node 20-alpine containers · Docker multi-stage builds · nginx reverse proxy · Cloudflare + Let's Encrypt TLS · Sentry · structlog (JSON) · Flower (Celery monitoring)

  • Flutter Mobile App (iOS + Android) - Riverpod + GetIt for state/DI; sqflite (SQLite) for offline-first local store; prioritised sync queue with conflict resolution; Sherpa-ONNX on-device speech; mek_stripe_terminal for Tap-to-Pay; firebase_messaging for push; flutter_map + OpenStreetMap; local_auth + passkeys for biometric/passkey auth
  • React + Vite Admin SPA - React 19 + TypeScript; TanStack React Query; react-hook-form + Zod; Tailwind CSS + Radix UI; dnd-kit for dispatch board; Leaflet for maps; @stripe/terminal-js; i18next; Firebase Cloud Messaging
  • FastAPI Backend (Python 3.11) - Async FastAPI with uvicorn/gunicorn multi-worker; SQLAlchemy (async) + asyncpg; Alembic migrations; Pydantic v2 + PydanticAI; Celery + Redis (4-worker pool + Beat); FastAPI WebSocket for real-time dispatch
  • Multi-Model AI Layer - OpenAI GPT-4o (vision), Anthropic Claude (long-context), Groq (low-latency); routed via PydanticAI; pgvector for RAG; optional Cohere reranking
  • Swiss Document Engine - reportlab + qrcode for QR-Rechnung PDF; Swiss VAT engine (8.1/2.6/0%); CHE-UID validation; cantonal address and postal code validation
  • Infrastructure - Coolify (managed Docker Compose) on DigitalOcean; Python 3.11-slim + Node 20-alpine containers; nginx reverse proxy; PostgreSQL + pgvector; Redis 7; Cloudflare + Let's Encrypt TLS; Sentry
21Architecture Tiers

The tiers

01

What people use

Mobile field app - Flutter · iOS + Android · Admin console - React 19 in the browser · Works offline - on-device storage + speech

02

The brains

App server - FastAPI · handles everything · AI routing - PydanticAI · GPT-4o · Claude · Groq · Database - PostgreSQL + smart search · Payments - Stripe · Terminal · TWINT

03

Where it runs

Cloud hosting - Coolify on DigitalOcean · Secure & fast - nginx · Cloudflare · TLS · Always watched - Sentry · Flower monitoring

22Business Logic

The rules the system enforces

  • The six-stage lifecycle is followed by all entities: Lead → Quote → Job → Invoice → Payment → Review. Stage changes cause a WebSocket and push notification-based automatic status fan-out.
  • Quotes may contain the deposit percentage and validity duration in addition to the per-line Swiss VAT rates of 8.1%, 2.6%, and 0%. Quotes that are accepted automatically convert to jobs.
  • Only once a job is deemed complete are Swiss QR-Rechnung invoices created, and they need a current CHE-UID and IBAN. Reportlab and QR code are used to produce PDFs on the server side.
  • Butler AI is model-routed by task: Anthropic Claude for complicated thinking, GPT-4o for vision/photo analysis, and Groq for low-latency drafting. Every structured output is validated by PydanticAI.
  • Job status updates, signatures, payment records, invoices, and photographs are all in a tight priority queue for offline sync. Server-wins with a local audit trail are used in conflict settlement.
  • The dispatch board honours exception dates, service regions, and working hours per member. FastAPI WebSocket broadcasts the availability matrix in real time.
  • RBAC is implemented at the UI and API middleware (FastAPI role-scoped JWT) levels. Only their own jobs and schedules are accessible to field workers.
  • Feature access levels are determined by Stripe subscriptions. Prior to enabling Tap-to-Pay or payments, Stripe Connect requires vendor onboarding.
23Workflows

How work moves through it

  • Voice-to-Quote: Field worker opens Butler → speaks job description → Sherpa-ONNX transcribes on-device → PydanticAI routes to Groq or GPT-4o → structured quote draft returned → worker reviews and sends PDF
  • Job Completion: Job opened → before photos (offline) → work completed → after photos + signature (offline) → sync on reconnect → QR-Rechnung invoice auto-generated → Tap-to-Pay or TWINT → review request sent
  • Dispatch Flow: Manager opens dispatch board → new job card appears → drag to available team member → WebSocket fans out → field worker receives push notification
24Automations

What runs on its own

  • After providing a quotation, Celery Beat delivers follow-up reminders at customisable intervals.
  • When a quotation is approved, a work is assigned, payment is received, and a review is filed, a Firebase Cloud Messaging push is issued.
  • Every time a new quotation or job is saved, Celery computes pgvector embeddings asynchronously.
  • Coolify container starting hooks enable Alembic migrations to occur immediately upon deployment.
  • The Stripe webhook handler automatically changes the status of invoices and reconciles payments in a matter of seconds.
25Results & Value

What actually changed

  • Delivered a tri-surface SaaS (Flutter mobile, React admin, and AI Butler) from a single FastAPI backend, resulting in a ~40% reduction in feature development time and no API drift across clients.
  • Using a single PydanticAI routing layer, three AI model providers (OpenAI, Anthropic, and Groq) were integrated, providing Butler with the appropriate model for each job.
  • Sherpa-ONNX has built-in 100% on-device speech recognition; voice input is offline and no audio ever leaves the phone, resolving connection and privacy issues.
  • Removed the need for manual QR-Bill production by automatically generating compliant Swiss QR-Rechnung invoices using Reportlab + QRcode.
  • Passkey (FIDO2/WebAuthn) authentication was implemented on Flutter and the web, providing field workers with a biometric-first, phishing-resistant login.
  • Provided per-region legal pages, locale-aware layout, and one-tap switching for four languages (EN, DE, FR, and IT).
8×Customer-Day Compression
−70%Admin Time Reduction
100%Swiss Market Fit
24/7Zero Signal, Full Productivity
<30sQuotes in Seconds, Not Hours
Tap-to-PayOn-Site Payments Without Hardware
Free 30-min consultation

Have a similar project in mind?

Let's talk about how AI can transform your service business.

  • 30 minutes on Google Meet
  • Usually reply in 2–4 hours
  • Talk to a senior engineer