Ο σερβιτόρος και η κουζίνα, στην ίδια σελίδα.
Το Orders Sync αντικαθιστά το μπλοκάκι και τις φωνές. Η παραγγελία φεύγει από το τραπέζι, φτάνει στην κουζίνα, γυρίζει ως λογαριασμός — χωρίς να χαθεί τίποτα στον δρόμο.
Σε γεμάτη βάρδια, η πληροφορία χάνεται στον θόρυβο.
Χειρόγραφες παραγγελίες που δεν διαβάζονται. Έξτρα που ξεχνιούνται. Κουζίνα που δεν ξέρει τι τρέχει. Λογαριασμοί που βγαίνουν στο χέρι.
Χαμένα έξτρα
Το έξτρα γράφεται σε άλλο χαρτί και δεν φτάνει ποτέ στον λογαριασμό.
Τυφλή κουζίνα
Κανείς δεν ξέρει τι έχει ξεκινήσει, τι είναι έτοιμο, τι περιμένει.
Αργό κλείσιμο
Ο λογαριασμός φτιάχνεται τραπέζι-τραπέζι, στο τέλος, υπό πίεση.
Μίλα του όπως θα μιλούσες στον σερβιτόρο
«τραπεζι 5 έξτρα σαλάτα ρόκα». Τίποτα να διαλέξεις από λίστες, καμία φόρμα. Ο βοηθός καταλαβαίνει, περνάει την παραγγελία, και σου δείχνει τι ακριβώς έκανε πριν το κλείσει.



Τέσσερις ρόλοι
Παραγγελίες, κατάλογος, προτάσεις, κουζίνα. Ο καθένας ξέρει μόνο τη δουλειά του — και μόνο αυτή μπορεί να κάνει.
Τίποτα δεν γίνεται στα κρυφά
Κάθε ενέργεια που αλλάζει δεδομένα περνά από κουμπί επιβεβαίωσης. Ο βοηθός προτείνει· ο άνθρωπος αποφασίζει.
Ανά ρόλο προσωπικού
Ο σερβιτόρος δεν μπορεί να σβήσει παραγγελία ούτε να αλλάξει τιμές — ακόμα κι αν το ζητήσει.
Πώς δουλεύει από μέσα — agents, εργαλεία, δικαιώματα και όρια: δες το Technical.
Παραγγελία σε δευτερόλεπτα, από PDA
Κατηγορίες με ένα άγγιγμα, αναζήτηση προϊόντος, έξτρα που δένουν αυτόματα στο αρχικό τραπέζι. Ο σερβιτόρος δεν σταματά να κοιτάζει τον πελάτη.


Μία οθόνη, όλη η βάρδια
Κάθε παραγγελία σε κάρτα, ομαδοποιημένη ανά κατηγορία. Έξι καταστάσεις, διακριτές από απόσταση. Οι διορθώσεις γίνονται με soft delete, χωρίς να μπλοκάρει η ροή.
Ο κατάλογος αλλάζει μέσα στη βάρδια
Ενεργοποίηση προϊόντων, απόθεμα, τιμές, δίγλωσσες ονομασίες. Ό,τι αλλάζει εδώ φαίνεται αμέσως στο PDA και στην κουζίνα.

Δύο ζωντανές βάρδιες, καμία σε staging
Το σύστημα μπήκε κατευθείαν σε πραγματική υπηρεσία: Καρναβάλι και Καθαρά Δευτέρα, και τις δύο φορές σε μέρα αιχμής. Παρακάτω τα δημοσιεύσιμα συγκεντρωτικά — τα αναλυτικά ανά προϊόν μένουν εσωτερικά.
Ημέρα 2 — έκβαση παραγγελιών
142 παραγγελίες. Οι διορθώσεις είναι soft deletes μέσα στη βάρδια — λειτουργία, όχι σφάλμα.
Δεδομένα σε πίνακα
| Κατάσταση | Παραγγελίες |
|---|---|
| Κλεισμένες | 83 |
| Διορθώσεις (soft delete) | 53 |
| Παραδομένες | 6 |
Ημέρα 1 — κατανομή καταστάσεων
Στιγμιότυπο από το /api/report στη διάρκεια της υπηρεσίας. 52 παραγγελίες.
Δεδομένα σε πίνακα
| Κατάσταση | Παραγγελίες |
|---|---|
| Delivered | 18 |
| Completed | 15 |
| Started | 10 |
| Pending | 6 |
| Closed | 3 |
Ημέρα 1 έναντι Ημέρας 2
Ο δεύτερος πιλότος σήκωσε 2,7× τον όγκο του πρώτου — ίδιο σύστημα, καμία δοκιμή σε staging ενδιάμεσα.
Δεδομένα σε πίνακα
| Πιλότος | Παραγγελίες | Λογαριασμοί |
|---|---|---|
| Ημέρα 1 · Καρναβάλι | 52 | 45 |
| Ημέρα 2 · Καθαρά Δευτέρα | 142 | 89 |
56
είδη στον κατάλογο της Ημέρας 2
37
ενεργά τη στιγμή της υπηρεσίας
53
διαφορετικά είδη πέρασαν από παραγγελία
Τι έδειξαν οι πιλότοι
- Καμία κατάρρευση server ή PDA σε όλη τη διάρκεια και των δύο υπηρεσιών.
- Τα έξτρα βγήκαν ως ξεχωριστά δελτία κουζίνας, δεμένα στην αρχική παραγγελία.
- Οι 53 διορθώσεις της Ημέρας 2 έγιναν με soft delete, χωρίς να σταματήσει η υπηρεσία.
- Στο κλείσιμο της Ημέρας 2 δεν έμεινε κανένας ανοιχτός λογαριασμός.
Δες το στο δικό σου μαγαζί
Στείλε δυο γραμμές για το πώς δουλεύεις και κανονίζουμε ένα demo πάνω στα δικά σου δεδομένα.
Πώς είναι φτιαγμένο
Μία εφαρμογή Next.js με τρεις επιφάνειες — σερβιτόρος, κουζίνα, διαχείριση — πάνω σε PostgreSQL, με ένα AI επίπεδο τεσσάρων εξειδικευμένων agents που εκτελούν πραγματικές ενέργειες στη βάση, όχι απλώς συνομιλούν.
- Framework
- Next.js 16 · App Router · Turbopack
- UI
- React 19 · Tailwind CSS v4 · Radix UI
- Δεδομένα
- PostgreSQL · Prisma 6
- Auth
- Supabase · RBAC ανά ρόλο και κατάστημα
- AI
- OpenAI gpt-4o-mini · function calling
- Γλώσσες
- next-intl · ελληνικά και αγγλικά
- Εκτυπώσεις
- pdf-lib · ενσωματωμένες γραμματοσειρές για ελληνικά
- Ανάπτυξη
- Ανά πελάτη, στη δική του υποδομή
Τέσσερις agents, όχι ένα γενικό chatbot
Κάθε agent έχει δικό του system prompt, δικό του σύνολο εργαλείων και δικό του όριο δικαιωμάτων. Ο διαχωρισμός δεν είναι καλλωπιστικός: καθορίζει τι μπορεί να αγγίξει το μοντέλο.
Orderer · Λήψη παραγγελιών
getMenuItemscreateOrderaddExtraOrderlistOrdersgetOrderupdateOrderStatusΣερβιτόρος: δημιουργία και έξτρα. Δεν τροποποιεί είδη σε υπάρχουσα παραγγελία.
Menuer · Διαχείριση καταλόγου
createMenuItemupdateMenuItembulkUpdateMenuItemsdeleteMenuItemAdmin μόνο.
Suggester · Προτάσεις
getMenuItemsimportAgentContextsearchConversationHistoryΠροσβάσιμος σε όλο το προσωπικό.
Kitchener · Ροή κουζίνας
listOrdersgetOrderupdateOrderStatusupdateOrderItemStatusupdateOrderItemUnitStatusΣερβιτόρος: μόνο ανάγνωση καταλόγου.
Τι συμβαίνει ανάμεσα στο μήνυμα και τη βάση
Το επίπεδο AI δεν παράγει κείμενο που κάποιος μετά εκτελεί στο χέρι. Καλεί τυποποιημένα εργαλεία, και αυτά γράφουν στη βάση μέσα από το ίδιο repository layer που χρησιμοποιεί και το UI.
- ΑίτημαΤο μήνυμα φτάνει στο endpoint του agent. Ελέγχεται το session του Supabase και φορτώνονται ρόλοι και δικαιώματα ανά κατάστημα.
- Σύνθεση εργαλειοθήκηςΤα εργαλεία φιλτράρονται με βάση τους ρόλους πριν σταλούν στο μοντέλο. Ό,τι δεν επιτρέπεται, δεν υπάρχει καν στο payload.
- Κλήση μοντέλου
gpt-4o-mini,temperature 0, με τα τελευταία 10 μηνύματα του συγκεκριμένου agent ως πλαίσιο. - Εκτέλεση εργαλείωνΚάθε
tool_callεκτελείται, ελέγχεται ξανά για δικαιώματα στο επίπεδο δεδομένων, και γράφει audit log. Μέγιστο πέντε κύκλοι ανά αίτημα. - Απάντηση και hookΟ agent επιστρέφει σύνοψη, τα εργαλεία που έτρεξαν, και — όπου χρειάζεται — ένα
proposeActionπου γίνεται κουμπί στο UI.
Τι κρατάει το AI μέσα στα όρια
Δικαιώματα στον ορισμό των εργαλείων
Τα εργαλεία φιλτράρονται ανά ρόλο πριν καν σταλούν στο μοντέλο. Ένας σερβιτόρος δεν έχει διαθέσιμο εργαλείο διαγραφής — δεν αρκεί να του το απαγορεύει το prompt.
proposeAction αντί για αυτόματη εκτέλεση
Οι ενέργειες που αλλάζουν κατάσταση εμφανίζονται ως κουμπί επιβεβαίωσης στη συνομιλία. Το μοντέλο προτείνει· ο άνθρωπος πατάει.
Κυλιόμενο παράθυρο 10 μηνυμάτων
Κάθε agent κρατά τα τελευταία 10 μηνύματα, ώστε το κόστος ανά κλήση να μένει προβλέψιμο. Το παλαιότερο ιστορικό ανακτάται με searchConversationHistory.
Μεταφορά πλαισίου μεταξύ agents
Το importAgentContext περνά τη συνομιλία από τον έναν agent στον άλλο, ώστε ο Suggester να ξέρει τι ζήτησε ο πελάτης στον Orderer.
Όριο βρόχου εργαλείων
Μέγιστο πέντε κύκλοι εργαλείων ανά αίτημα, ώστε μια λάθος απόφαση του μοντέλου να μη γίνει ατέρμων βρόχος.
Πλήρης καταγραφή
Κάθε μήνυμα, κλήση εργαλείου και αποτέλεσμα αποθηκεύεται στη βάση, μαζί με audit log για τις ενέργειες που αλλάζουν δεδομένα.
Μοντέλο και ασφάλεια
Παραγγελίες σε τρία επίπεδα
Order → OrderItem → OrderItemUnit. Το τρίτο επίπεδο επιτρέπει στην κουζίνα να σημειώσει ότι δύο από τα τρία σουβλάκια είναι έτοιμα, αντί να αντιμετωπίζει τη γραμμή ως ενιαία.
Λογαριασμοί ως στιγμιότυπο
Ο λογαριασμός αποθηκεύει τιμές και σύνολα τη στιγμή της έκδοσης. Μια μετέπειτα αλλαγή τιμής στον κατάλογο δεν ξαναγράφει ιστορικό.
RBAC ανά κατάστημα
Role και StorePermission ορίζουν ποιος κάνει τι και πού. Η δομή είναι ήδη πολυκαταστηματική.
Soft delete
Οι διορθώσεις μέσα στη βάρδια δεν σβήνουν δεδομένα. Οι 53 διορθώσεις του δεύτερου πιλότου παραμένουν ανακτήσιμες.