1 · Photo of the issue
Tap to take / choose a photo
or drag & drop it here
3 · AI analysis (supporting signal for HOD approval)
The photo walks the flow you built in the Flow Editor — every hop is shown live.
raw JSON
Live node monitor
Pattern discovery — clusters over all analyzed photos
Duplicate incidents (near-identical reports)
Cluster
Brain export / import — move training between machines
Train on one machine, carry the whole brain to another (staging / prod) — no
retraining. Export bundles the trained vision + text models, their training data and
the company knowledge into one .tar.gz. Secrets (API tokens, bot config) are
never included. Keep the same embedding backend on both ends.
Our model — vision · card & training
Import the mock samples (or ingest real labeled photos), then press Train.
Add a labeled sample (/ingest)
Every real submission already carries the user's category (§3.2), so labels are free. This form mimics that.
Learn from AI — self-training loop
When ON, every analyzed photo becomes a training sample: the user's category (ground truth) or the answering AI's verdict (GPT / Gemini / Ollama teaches the own model). With auto-retrain the model gets smarter day by day — data by data.
Model versions — capability history
Every training run is versioned; watch accuracy and coverage grow as data flows in.
ML diagnostics — where it's confident vs confused
Cross-validated: every sample is scored on a fold the model didn't train on. The confusion matrix (rows = true class, columns = predicted) shows exactly which classes get mixed up — that tells you what to label next.
Review queue — active learning
The brain flags photos it was unsure about, or where it disagreed with the AI that answered. Confirm the real type here — these are the highest-value labels, and they feed straight back into training as weighted corrections.
Autonomy — self-improving, safely
The model retrains itself as new labels arrive, but a new version only goes live if it beats the current champion on a frozen golden test set — so it can run unattended and never regress. Rejected challengers are kept for history, not deployed.
Telegram Bots OFF
How to set up a bot (2 minutes)
/newbot → copy the token.2. Click Create bot, paste the token, pick a module, press Save, then flip it Active.
3. Test connection (in the edit dialog) shows your bot's username.
4. Open your bot, send any message, then a photo of a maintenance issue — the analysis comes right back.
5. Optional: set a chat id so flow Notify nodes can ping you.
Create bot
Create session
WAHA (self-hosted, scan a QR)
maintenance.request.submitted). When the main system approves via POST /api/maintenance/{id}/approval, the user is auto-notified on their channel.Ticket
feedback.submitted), and — when the correct answer maps to a
known type — teaches the model so it improves. A Telegram bot with the Feedback module
does the same over chat (send the photo → previous answer → correct answer → remarks).log feedback
history
Feedback
.env), stored masked; edits take effect
with no rebuild. Text-only providers are skipped for photo analysis.Access & authentication — two separate keys
X-Dashboard-Key; the login screen stores it in your browser.
Set it server-side with DASHBOARD_KEY. Covers every console page & endpoint
(analyze, model, flow, clusters, integrations, debug…). Leave blank = open console./api/* endpoints. Sent as Authorization: Bearer aip_…, generated &
revoked below, stored hashed. These are independent of the dashboard key.ADMIN_TOKEN is set, config/training
writes also need X-Admin-Token (set it on Logs & Status → Security).GET /health and the
WhatsApp webhook (own verify token). Everything else needs the dashboard key.Third-party API — connect any system
http://localhost:8090 · /api/* calls require
Authorization: Bearer <token> (generate one below) · uploads are
multipart/form-data · responses JSON.Interactive spec: Swagger UI /docs · openapi.json (these are behind the dashboard key). Typical CRM flow:
POST /api/analyze-async → store job_id →
poll GET /api/result/<job_id> → save the verdict on the ticket.API access tokens
System status — is everything wired up?
Security — admin token
When the server is started with an ADMIN_TOKEN, changing configuration or training (flow, providers, learning, train, recluster, tokens, integrations) requires it. Paste it here once — it's stored in this browser only and attached automatically to those requests. Read-only viewing never needs it. Leave blank if the server has no token set.
Live logs (api + worker, newest at the bottom)
docker compose logs -f api worker