Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Werkbank reads each repair or custom order, sends it to the right workshop, and tells you how sure it is. Built for furniture shops with their own workshops.
BusinessTypeScript · CSSGitHub @omkar-k0OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Order routing for furniture shops that run their own workshops. The shop owner types a customer request the way they would write a job slip. Werkbank sends it to the right workshop (carpentry, upholstery, polish and paint, metalwork), labels it with a job type, urgency and effort, and reports how confident it is. Requests it is not sure about wait in a review queue instead of going to the wrong bench. Every correction the owner makes retrains that shop's model.
Live demo: https://werkbank-gamma.vercel.app. Click Open the demo shop; no sign-up needed. The demo shop is fictional.
English and German UI, a quiet design on a warm wood palette, and a phone-first view for workshop staff.
The project started from a real client brief: a furniture retailer with three in-house workshops wanted orders to reach the right workshop automatically, with each workshop seeing only its own jobs. Werkbank generalises that brief into a multi-tenant product any shop can sign up for.
Existing tools in this space are manufacturing ERPs built for cabinet and joinery shops: cut lists, CNC output and job costing, priced around $50–$200 a month. None of them read a free-text repair request and decide which in-house workshop should take it. That gap is what Werkbank fills.
| Owner | Workshop staff |
|---|---|
| Signs in with Google | Username and password, created and reset by the owner |
| Live preview of the routing while typing an order | Own login that only shows that workshop's orders |
| One board for all workshops, overdue orders highlighted | Urgent jobs first, then sorted by due date |
| Review queue for low-confidence orders, with the model's best guess | Three tabs and big buttons: Start, Mark done, plus an expected finish date |
| Reassigning an order teaches the shop's model | The board refreshes itself every few seconds |
| Splits one order across two workshops that work in parallel | Sees and updates only its own part of a split order |
| Reports: open, overdue, done and turnaround per workshop; monthly volume; CSV export | |
| Router strictness (strict, balanced, relaxed) and plan selection |
The whole interface is available in English and German. It installs as an app on phone and desktop (PWA), and all data is stored server-side in Postgres. Pricing is either a subscription (Starter €29/month, Pro €59/month) or a one-time licence (€790). Payments are not connected in this build: picking a plan only records it on the account.
flowchart LR
A[Order text] --> B[Keyword layer<br/>EN + DE cue lexicon]
A --> C[Naive Bayes<br/>seed model + this shop's corrections]
B --> D{Blend + gate}
C --> D
D -- "conf ≥ 0.85, margin ≥ 0.5" --> E[Auto-route]
D -- "conf ≥ 0.55" --> F[Route + flag 'check']
D -- "low / layers disagree / unfamiliar words" --> G[Review queue]
G -- "optional, ANTHROPIC_API_KEY" --> H[LLM must quote the request<br/>verbatim or its answer is discarded]
G --> I[Owner assigns] --> J[(corrections)] --> C
scripts/train.ts). The UI never shows more than "99%+".There is no public dataset of furniture-shop job tickets, so the seed model trains on synthetic requests
(scripts/generate-data.ts). To keep the numbers honest:
scripts/train.ts).Results (full report: reports/eval.md, re-run with npm run eval):
| Test set | Auto-routed | Auto accuracy | Sent to review | Accuracy of all routed |
|---|---|---|---|---|
| Synthetic, unseen phrasing (n=800) | 18.9% | 95.4% | 36.1% | 84.0% |
| Hand-written (n=60) | 40.0% | 95.8% | 23.3% | 93.5% |
The feedback loop is the point. A shop whose staff phrase things differently corrects its first k orders; the model is then measured on 400 later orders:
| Corrections | Top-1 accuracy | Auto-routed | Auto accuracy | Review queue |
|---|---|---|---|---|
| 0 | 75.5% | 20.8% | 97.6% | 34.8% |
| 50 | 92.0% | 63.7% | 99.2% | 12.5% |
| 100 | 96.8% | 82.5% | 99.7% | 6.3% |
This is the beginning of the README. Read the rest at the original. Read the full README ↗