» Sweetfish
Intelligence
Prospecting
Clients
Intelligence
Analytics
System
v0.6.0 · checking...
PROSPECTING

Prospect & Model

Upload invoices, evaluate revenue opportunity, and model targets — all in one step

Upload & Configure
⇥

Drop any invoice file here

or browse for a file

.csv .tsv .xlsx — any PMS, any language

Past evaluations

Loading...

Revenue modelling

Scenario Modeller

Model realistic deployment

Choose which rules to deploy in each phase, set per-rule acceptance rates and target compliance, and see revenue build up phase by phase. Save multiple scenarios and compare them side by side for board presentations.

Quick start: Select a prospect run, click "+ New scenario" to create from defaults, then adjust per-rule parameters. Revenue updates live as you edit.

|
End-to-end in 6 steps

Guided Demo

What you're about to see

This walkthrough demonstrates the full Sweetfish Intelligence pipeline on real EMPET data — from raw file upload to AI-driven predictions on individual invoices. Each step builds on the previous one. Follow the numbered cards below; each has a Run this step button that executes live against the database.

Step 1 — Upload & detect

Drop a CSV or Excel file from any PMS. Gemini reads the first 30 rows, identifies the file type (product catalogue, invoice header, invoice lines), detects the language, and maps columns to the Sweetfish schema.

For this demo, EMPET data is pre-loaded (3 sites, June 2025, 1,028 invoices). In production you'd drag-drop the files on the Upload tab.

Pre-loaded. Click Step 2 to continue.

Step 2 — Run a revenue simulation

Every rule in the library is evaluated against this client's invoices. For each violation: how many invoices, how much missed revenue (local currency + GBP), all backed by exact SQL and a cryptographic hash.

Step 3 — Blind discovery (unknown unknowns)

Statistical mining finds concept pairs that co-occur strongly but are sometimes missing. Gemini triages each one: is this real billing leakage, a bundled product, or clinical variation? Leakage verdicts are minted as candidate rules.

Step 4 — Deployment planner

Pick which rules to deploy. Download a ZIP with board-ready PDFs, a revenue CSV, clinician pop-up cards, and a shadow-deploy calendar. Or apply rules live — selected ones activate, others get suspended.

Use the Deployment Planner tab to explore interactively. The simulation from Step 2 feeds directly into it.

Step 5 — Train predictive models

LightGBM classifiers learn which invoice features predict a missing item. Instead of just "surgery without anaesthesia" (deterministic), the model says "this specific invoice has a 99% probability the antibiotic is missing" — factoring in invoice size, site, day of week, and every other concept present.

Step 6 — Per-invoice prediction

Pick any invoice and ask: "what's likely missing?" The model scores every active rule's probability and returns a ranked list. This is the production endpoint — the PMS calls it at billing time, the vet sees a pop-up.

Portfolio

Clients

Client portfolio

Each row is a veterinary group using Sweetfish. Click Dashboard to see performance data, upload monthly reports, and get Gemini analysis.

Status: REPORTING = monthly performance data uploaded. PROVISIONED = awaiting first data upload.

Provision a new client

Drop in any client's data

Upload data

How upload works

Drop a CSV or Excel file from any vet practice-management system (PMS) — product catalogue, invoice header, invoice line items, patient list, or a popup-event log. Gemini reads the first 30 rows, figures out what the file is, and maps its columns to the Sweetfish schema.

How to use this page: pick the client, drag a file, wait for the detection result, confirm. The file may be in any language or any delimiter — the detector handles it.

Expected files (any order):

product catalogue invoice headers invoice lines patient registry popup events (for closed-loop retraining)
⤓

Drop CSV or Excel anywhere in this box

or browse for a file

.csv · .tsv · .xlsx · .xlsm — any language, any PMS. Gemini will detect the format.

Gemini detection result

Raw detection JSON
What this expects:

A CSV or Excel file from any vet PMS — product catalogue, invoice header, invoice line, patient registry, or popup-event log. Gemini examines the first 30 rows, detects the file purpose, maps columns to the Sweetfish schema, and reports its confidence. For multi-sheet workbooks the first sheet is used (other sheets are flagged in warnings — re-upload with the right sheet or tell the admin endpoint to use a named sheet).

Home

Overview

Sweetfish Intelligence — the vet-billing brain

Sweetfish finds the invoices a clinic should have billed for but didn't. It's a hybrid of ML pattern mining (spotting statistical anomalies across millions of invoice lines) and LLM reasoning (Google's Gemini understanding product names, clinical context, and billing logic in any language).

How it works in one paragraph: (1) You upload raw PMS data in any format — CSV, Excel, any language. Gemini figures out what each file is and maps every product to a shared clinical concept (so Kastrering hund, Neuter dog and Kastracja psa all become one thing). (2) A library of rules — some authored by us, some discovered automatically from data — runs against every invoice looking for missing charges. (3) Every finding is backed by exact SQL, sample invoices, and a cryptographic hash so you can prove every number. (4) When rules fire at billing time, the vet's response feeds back into the loop — rules that misfire get suspended, rules that consistently work get promoted across the whole customer base.

The flywheel: ML discovers candidate patterns nobody thought of → LLM triages which are real clinical leakage → vets validate → rules deploy → pop-up acceptances and dismissals retrain the system weekly. Every client's data makes every other client's detection sharper. No patient data ever crosses tenants — only rule shapes.

What you see on this page

Active rules — live across clients; Candidate rules — waiting for validation; Retired compliant — rules no longer needed because clinics now bill correctly. Tiles below show the current state of the brain and total findings across every simulation run to date.

Revenue simulation per rule

Simulate

What does this page do?

Run a simulation against a client's ingested invoice data. For every rule in the Sweetfish library, count violations and estimate missed revenue using the client's own product prices.

Requires invoice data — this works for clients with raw invoices loaded (e.g. EMPET via Upload Data or Prospect pipeline). For clients with monthly CSV reports (e.g. IVC), use the Dashboard tab instead.

Click Show the math on any row to see the exact SQL, sample invoices, and result hash.

Every number below comes from SQL against this client's invoices. Click a row's Show the math link to see the exact query, sample rows, and result hash.

Opt-in pooling

Contribution Ledger

What is the Contribution Ledger?

When a client opts in to Sweetfish Intelligence, rules discovered on their data (after vet validation) can be promoted into the shared library for every other client to benefit from. This page shows the two-way flow for a client:

Contributed — rules whose origin is this client; they now help every other opted-in client too. Inherited — rules this client benefits from that were originally discovered elsewhere.

Privacy contract: only rule shapes (concept-to-concept patterns) are pooled. No patient identifiers ever leave a client schema.

Veterinary intelligence

Clinical Knowledge

The brain behind the rules

Clinical assertions from your veterinary experts and guidelines. Every assertion feeds into Sweetfish's AI — improving rule generation, blind discovery triage, prospect analysis, and concept mapping.

How to use: Add a knowledge source (e.g. Nick), then paste a conversation transcript or upload a guideline. Gemini extracts structured assertions. Review and confirm each one — confirmed assertions immediately improve every AI call.

Add knowledge

Review queue

Confirmed assertions

Concept proposals

Sweetfish Intelligence library

Rule Library

What is a rule?

A rule describes a billing pattern that should hold — e.g. every surgery should also have an anaesthesia line. When the pattern is violated on an invoice, the vet sees a pop-up at billing time.

Rule types explained:

Same invoice · in_basket Between visits · temporal_followup Recurring schedule · recurring_overdue Clinical pathway · pathway_compliance Portfolio gap · portfolio_missing Peer outlier · peer_outlier

Provenance badges: 🧠 System core Sweetfish-authored rules; ⬆ Promoted discovered by another client; 🏥 Your rule authored by this client; ⚗ Candidate waiting for vet validation.

Unknown-unknowns

Blind Discovery

What is this?

Statistical mining finds billing patterns nobody wrote as rules. For every concept pair, we compute co-occurrence confidence, lift, and support across all invoices. Gemini then triages each candidate with real invoice samples to classify it as leakage, bundle, clinical variation, or unclear.

Click any row to drill into the evidence: trigger/base products, sample invoices (compliant and violating), and Gemini's reasoning.

Intelligence layer

Concept Model

Concepts are the language Sweetfish thinks in

Your clinic uses one product catalogue. A Norwegian chain uses another. A UK practice uses a third. Thousands of different product names — but the same clinical events. Concepts collapse all of that into one shared vocabulary.

Norwegian:  Anestesi generell  →  general_anaesthesia    English:  General anaesthesia cat  →  general_anaesthesia    Polish:  Anestezja ogólna  →  general_anaesthesia

Rules fire on concepts, not on product names. One rule — "surgery_general present AND general_anaesthesia absent → flag" — works for every client, every language, without a code change.

Learn about concepts — the simple version

The toy box analogy

Imagine a toy box. Every toy has a name — but kids in Norway call teddy bears "bamse", kids in Spain call them "oso de peluche", and English kids say "teddy bear."

A concept is just the idea of "teddy bear." It doesn't matter what language the label is in — Sweetfish knows they're all the same thing.

Two levels

Your toy box has categories:

L1 — Big groups: Surgery, Medications, Imaging, Dental…
L2 — Specific things: general_anaesthesia, dental_extraction, blood_sample…

A Norwegian vet types "Anestesi generell." A Spanish vet types "Anestesia general." Sweetfish looks at both and says: "That's general_anaesthesia." Same concept, different words.

Why rules need concepts

A rule says: "If there's a surgery_general but no general_anaesthesia, that's a problem." It doesn't care what language the invoice is in. One rule works everywhere.

How Clinical Knowledge fits in

Nic the vet is the wise teacher who tells the system the rules of the toy box:

"Every time you do surgery, you MUST also do anaesthesia."
That sentence becomes a clinical assertion:
surgery_general REQUIRES general_anaesthesia
— Nic Shepherd, because it's unsafe otherwise

Without concepts, Nic would have to write one sentence per language, per product name, forever. With concepts, he says it once and it applies to every client in every country.

The three layers

Concepts The shared language What things ARE
Clinical Knowledge The vet's wisdom How things RELATE to each other
Rules The automated check Fire when a relationship is violated

Concepts are the alphabet. Assertions are the sentences. Rules are the grammar police.

Propose a new concept

Active learning

Review queue

Why this queue exists

When Gemini maps a product name to a concept, it returns a confidence score. Below 0.80 the mapping goes into this queue for a human (usually the client's vet liaison, not you) to confirm or correct.

How to use it: for each row, decide whether the suggested concept is right. Confirming re-caches the mapping so every embedding-similar product gets the benefit — one good confirmation can propagate to dozens of similar items.

Below the queue: concept coverage for this client — how many of their products are mapped to a concept. Higher coverage = more rules can fire.

Borderline-confidence concept assignments awaiting vet confirmation. Confirming a row immediately re-caches the mapping and propagates to all embedding-similar products.

Concept coverage for this client

Existing client operations

Finance & Performance

What you see here

This is the operational view for an existing client — how much revenue Sweetfish popups generated, how many were accepted vs dismissed, and why vets dismiss them. Use the date range to filter. Every number comes from actual popup events logged by the PMS integration.

Key metrics: Acceptance rate = accepted / total popups — drives the closed-loop. Revenue retrieved = sum of line items added when vets accepted a suggestion. Dismissal reasons = why vets said no (bundled, not clinically needed, wrong product).

Monthly reporting

Client Performance

Client performance dashboard

Revenue retrieved, compliance, and opportunity lost — tracked month by month. Select a client above to see their latest data. Gemini analyses the results and suggests which Sweetfish rules to add next.

To upload a new month: expand "Upload new monthly report" at the bottom.

Upload monthly report
⇥

Drop IVC files here

Revenue + Dismissals (xlsx or csv) — drop up to 4 files at once

or browse for files

Country and file type auto-detected from filenames

Gemini Intelligence

Rule Health & Insights

Gemini analyses your client data — per site, per rule, per company — and tells you what needs attention and why.

Gemini is analysing your data...

Advanced: Manual retrain trigger

Runs the closed-loop learning cycle: aggregates popup events, auto-pauses low-performing rules, flags anomalies. In production this runs automatically.

Raw weekly stats
Self-diagnosis

Anomalies

What are rule anomalies?

If a rule's acceptance rate suddenly jumps or dips (by 10 percentage points or more week-over-week), something changed — a locum joined, a new accounting code appeared, a PMS update mangled a product category. Anomalies surface those jumps so you can investigate.

How to use: click Diagnose on a row; Gemini reads the before/after stats for that rule and returns a plain-English explanation. You don't need clinical knowledge — the diagnosis is written for an admin audience.

Rules whose week-over-week compliance moved by ≥10 pp. Click "Diagnose" to ask Gemini why.

Administration

System Debug

Registered Users

Error & Warning Log

Pattern intelligence

Discovery Lab

Discovery Lab

Statistical mining combined with Gemini triage surfaces candidate billing patterns. Each card below is a pattern found in client data. Promote a pattern to make it a live rule, Investigate to drill deeper, or Reject to dismiss it.

Needs review
--
Promoted
--
Rejected
--
Analytics

People & Patterns

Clinician intelligence & temporal patterns

Who is billing correctly? When do compliance gaps happen? The People tab ranks practitioners by compliance rate. The Timing tab shows day-of-week and hour-of-day patterns that reveal systemic gaps.

Practitioner compliance

Select a client and click Compute.

Day of week

No data yet.

Hour of day

No data yet.

Analytics

Site Benchmarks

How do sites compare?

Each site is ranked by compliance for the selected rule. Delta columns show how far each site deviates from the group average and from industry benchmarks. Use the rule dropdown to filter by a specific rule.

Site ranking

Select a client to load benchmarks.

Analytics

Revenue Forecast

Where is the money going?

Sweetfish projects retrieved revenue forward based on current compliance trends and rule deployment plans. At current trajectory shows what happens if nothing changes. If target met shows the upside if all rules hit their targets.

At current trajectory
--

If target met
--

Monthly projection

Click Compute Forecast to generate projections.

Gemini narrative

No forecast computed yet.