AI Field-Service SaaS — Trades CRM, Quotes, Invoices, Dispatch & AI Butler
This platform is intended for professionals that operate in industries such as plumbing, electrical, or heating and cooling system repair. Additionally, it benefits Swiss contractors. Managing leads, quotations, jobs, billing, payments, and dispatching employees are just a few of the many tasks performed by the platform. It even includes a feature that allows you to create quotations from your words or images. For those who perform these types of tasks on a daily basis in Switzerland, this is really beneficial.
Leads, quotes, jobs, invoicing, payments, dispatch, and an AI Butler — one platform for trade businesses.
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.
Trade Businesses Are Still Running on WhatsApp, Spreadsheets, and Paper
- No single system for the full workflow Contractors, plumbers, and electricians had to manage a variety of disconnected tools: separate accounting software for invoicing, spreadsheets for estimates, paper for works, and WhatsApp for client interaction. They lost hours each day to administrative tasks that ought to be automated.
- Quoting on-site was slow and error-prone At the customer's kitchen table, trade firms were unable to produce an appropriate estimate. The next day, they had to go create it in a spreadsheet and send it. As a result, many lost employment to speedier competition.
- No offline mobile solution Field personnel lacked a mobile device in rural regions, basements and roofs. On actual employment locations, they were unable to use programs that required an internet connection. They thought these applications were worthless and required an internet-independent tool so they may do their duties more effectively with the aid of such a gadget.
- Swiss compliance was a manual nightmare QR-Rechnung invoices were previously created by hand. This meant that every Swiss QR-Rechnung invoice had to have the VAT rates included. There are three different VAT rates: 8.1%, 2.6%, and 0%. For every Swiss QR-Rechnung invoice, CHE-UID numbers had to be verified. This made a lot of blunders during this procedure. The payments for the Swiss QR-Rechnung invoices were delayed due to these errors.
- Getting paid on-site was impossible Trade companies have two choices. They may utilize large, bulky card machines or spend days tracking down bank transfers. Payments could not be accepted on-site with simply a phone. Trade companies required a phone-based payment system.
- Dispatch was a whiteboard problem Scheduling field workers for jobs was a real hassle. Whiteboards or shared calendars were used but they didn't show who was available in real-time. This often led to bookings and missed appointments.
- Multi-language markets were underserved Swiss tradespeople do their jobs, in different areas like the German, French, Italian and English-speaking parts of the country. The problem was no tool that could help them with all four languages in one place, like an app that they could use.
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.
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.
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.
The Platform Modules — Six Stages, Three Surfaces, One Backend
Butler AI
Description: This thing uses a few kinds of artificial intelligence like OpenAI GPT-4o and Anthropic Claude and Groq. It can make quotes from things you say, type or even from a picture. You can talk to it. It will understand what you are saying because it has something called Sherpa-ONNX that works on your phone. This means that what you say does not go to any computer it just stays on your phone. It can also look at all the quotes and jobs it has done before and find the ones that mean the thing this is done with something called pgvector semantic search, over all the past quotes and jobs Connected services: OpenAI, Anthropic, Groq, PydanticAI, pgvector, Sherpa-ONNX
Leads & CRM
Description: Have a lead pipeline now that source tracking and status management. It also has one-tap conversion to quote. The full lead pipeline replaces the WhatsApp contact flow. Connected services: FastAPI, PostgreSQL, Firebase Cloud Messaging
Quotes Module
Description: We can create quotations on-site with the use of Butler AI. Because it incorporates the tax, sometimes referred to as VAT, this tool is unique. Rates for the VAT include 8.1%, 2.6%, and 0%. Additionally, the application assists us with things like the deposit % and the duration of the quotation. By adding our trademark to the PDF file, we can even make the quote appear to be from our business. Connected services: ReportLab, PydanticAI, FastAPI, Swiss VAT engine
Jobs & Field Work
Description: The job management system takes care of everything from start to finish. It includes things like taking photos during and, after a job getting signatures on the device and handling recurring jobs and templates. The best part is that the job management system works even when you are not connected to the internet storing all the information in SQLite. Connected services: sqflite, connectivity_plus, image_picker, signature
Swiss QR-Rechnung
Description: Automated compliant QR-Bill invoice PDF with postal code validation, cantonal address fields, CHE-UID validation, and per-line VAT. Connected services: reportlab, qrcode, FastAPI, asyncpg
Payments
Description: TWINT, Stripe Checkout (subscriptions), manual bank transfers with automatic reconciliation, Stripe Terminal Tap-to-Pay, and Stripe Connect payments. Connected services: Stripe SDK, mek_stripe_terminal, @stripe/terminal-js
Dispatch Board
Description: Real-time drag and drop scheduling, with a live matrix that shows (Available, Booked, Unavailable, On leave) It uses WebSocket to update all users. Connected services: dnd-kit, FastAPI WebSocket, role-scoped RBAC
Schedule & Maps
Description: Calendar that shows the days of the week with a map from OpenStreetMap. The OpenStreetMap will have job pins on it. The address is also autocompleted. Connected services: flutter_map, OpenStreetMap, Leaflet, latlong2
Auth & Security
Description: Face ID/Touch ID, magic link, Google/Apple sign-in, 2FA, and passkeys (FIDO2/WebAuthn). Full audit logging and GDPR export. Connected services: webauthn, local_auth, python-jose, Argon2, flutter_secure_storage
Multi-Tenant RBAC
Description: There are four roles that people can have. These are the Field Worker and the Dispatcher and the Manager and the Admin. Each of these roles has its special access, to different things. Field Worker and the Dispatcher and the Manager and the Admin can all see quoting and billing and dispatch and analytics. They can only use the parts that they are allowed to use. Connected services: FastAPI RBAC middleware, role-scoped JWT
Multi-Language
Description: You can switch between English and German and French and Italian with one tap. The formatting is also set up to work with where you're. Also have pages, for each region that have all the legal information you need like Impressum and Datenschutz and AGB. Connected services: flutter_localizations, ARB files, i18next, react-i18next
Subscription Billing
Description: Have plans like Pro and Business and Enterprise tiers that we offer through Stripe Subscriptions.These plans have things, like a trial that turns into a paid plan and the price is based on how many people are using it. Also have Stripe Connect to help people get started. Through this a track of how much people are using our service can be recorded. Connected services: Stripe SDK, Stripe Connect, Celery + Redis
Designed for every screen
Web
- You can manage leads and quotes and jobs and invoices and orders from a desktop browser. This is very useful for people who work on computers all day.
- Have a time drag-and-drop dispatch board that shows when the team is available. This means you can see who is working and who is not.
- You can use Stripe Terminal Tap-to-Pay for payments at the desk. This is done with @stripe/terminal-js.
- Use Leaflet and react-leaflet to make a map that shows where jobs are. The map also groups jobs together so it is easier to see.
- You can manage subscriptions and billing from a dashboard. This makes it easy to keep track of money.
- Have analytics, reporting that you can export to PDF or Excel. This is useful for people who like to look at numbers.
- People can see things depending on their role. Like Admin and Manager and Dispatcher and Field Worker all see things.
- Our user interface works in languages, including English and German and French and Italian. We use i18next to make this work.
Mobile
- The main page of the app works without a signal because it stores all the information on your phone using something called SQLite.
- You can find customers and turn them into people who will pay you for your work. You can do all of this from the field.
- When you are with a customer you can make a quote right there. Then you can even talk to the app. It will write the quote for you. The quote will have all the information like taxes and it will look really professional.
- The AI Butler is like a helper that can make quotes for you. You can tell it what you need. It will do it. You can talk to it. Type or even send a picture.
- You can take pictures before. After you do a job and you can get the customer to sign your phone. Also, you can also make notes, about the job.
- When you need to make an invoice, the app can do it for you. It will be an invoice like they use in Switzerland and you can send it right away.
- You can get paid on the spot using your phone. You do not need any machines.
- You can also get paid using TWINT or by bank transfer.
- The app has a calendar that shows you what jobs you have to do and where they are. It uses a map to show you.
- When something happens like you get a job the app will send you a message.
- You can log in to the app using your face or your fingerprint. This is really safe and easy to do.
- You can change the language of the app easily. You can choose from English, German, French or Italian.
- When you are not connected to the internet the app will tell you that you are looking at information.
- When you connect to the internet again the app will update all your information. It will do the important things first.
Full control, behind the scenes
- 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
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
System design
The rules that run the product
- 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.
- 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
- 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.
Everything inside
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
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
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
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
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.
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
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
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.
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
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
Built on a modern stack
Outcomes that move the business
- 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).



