A different home screen for Alex, Annie and the sweets team, Ruth, Mark and the Directors β plus the Hermes Reminder Bot that messages or calls anyone who hasn't opened theirs.
5 role dashboards Β· Hermes remindersπ DASHBOARD.mdVersion 1.1 Β· 4 October 2026 The daily home screen for every staff member, how the app knows whether each person has looked at it, and how the Hermes Reminder Bot chases people who haven't β by message first, then a phone call.
π₯ Dashboard mock-up Β· one per managerial roleIllustrative sample data
π₯§ Good morning, Alex
Savoury Production Manager Β· Monday 5 Oct 2026 Β· as at 07:20
β Seen todayπ€ 6
14
Savoury ctns to make today
3
Short lines blocking dispatch
1.4 wk
Lowest cover Β· SQFQBB
2
Expected POs this week
MEL Mon Β· SYD Thu
πͺ Make-list Β· today + 3 days
Code
Product
When
Make
Why
SQFPCM
Pie Chicken & Mushroom 160g
Today
8 ctns
for MEL Wed
SQFLRP
Pie Lamb & Rosemary 160g
Today
6 ctns
short 2
SQFTFS
Tomato & Feta Scroll
Tue
10 ctns
forecast
SQFQBB
Quiche Bacon & Brie
Wed
6 ctns
cover 1.4 wk
SQFCBES
Croustade Bacon Egg & Spinach
Thu
4 ctns
ok
β Shortfalls blocking dispatch
Order
Kitchen
Dispatch
Short
ORD-0412
dnata MEL
Wed
SQFLRP β2 ctns
ORD-0415
dnata SYD
Mon
SQFQMG β1 ctn
ORD-0417
dnata BNE
Wed
SQFTFS β3 ctns
π¦ Weeks of stock cover (savoury)
Quiche Bacon & Brie
1.4
Pie Lamb & Rosemary
2.3
Tomato & Feta Scroll
3.1
Pie Chicken & Mushroom
4.6
Frittata LSP
6.0
π Menu-change watch
No orders for 6+ weeks but stock on hand:
Code
Product
Stock
SQFQMG8
Mushroom & Goat's Cheese 8cm
212 u
write-off risk
SQFRPQ
Red Pepper Quiche
96 u
review
π° Good morning, Annie
Sweets Production Managers Β· Monday 5 Oct 2026 Β· as at 07:20
β Seen todayπ€ 6
22
Sweets ctns to make today
1,080
Tartlets to make
4cm Plain short
9
Annie Makes Cakes orders this week
2
Bespoke enquiries open
π₯ Make-list Β· sweets
Code
Product
When
Make
Why
SQFDRF
Rhubarb Frangipane Danish
Today
10 ctns
MEL + BNE Wed
SQFFFT
Fig & Frangipane Tart
Today
6 ctns
ok
SQFRF
Raspberry Friand
Tue
4 ctns
β² +39% trend
SQFPT
Portuguese Tart
Wed
2 ctns
forecast
π₯§ Tartlets Β· NEED TO MAKE
Size
Ordered
Stock
Make
4cm Plain
2,160 ordered
1,080 stock
(1,080)
4cm Charcoal
360
720
360
9cm Plain
396
66
(330)
π Annie Makes Cakes Β· next 7 days
Day
Customer
Type
Status
Tue
Horizons Chef
Pick-up
ready
Wed
Brokenwood Wines
Delivery
short 1 line
Thu
Manly Wharf
Delivery
allocated
Fri
Bespoke Β· 3-tier cake
Enquiry
needs quote
π Sweets demand Β· 12 weeks
Cartons/week of sweet lines (airline). Rhubarb Danish is the #1 product overall.
π Good morning, Ruth
Office Manager Β· Monday 5 Oct 2026 Β· as at 07:20
β Seen todayπ€ 6
5
Orders to invoice
3 SkyCrest Β· 2 Annie
4
To confirm
2
Bookings missing (tomorrow)
MEL Roadmaster Β· SYD driver
6
Bot drafts waiting
π€ Bot inbox
Bot
Proposal
Conf.
π₯ Intake
dnata MEL PO O1-25081122 β draft ORD-0421 (5 lines)
98%
Approve
π₯ Intake
Email from Horizons Chef β draft order (2 lines)
81%
Review
βοΈ Confirm
Confirmation email for ORD-0418
β
Send
π Schedule
Roadmaster booking email Β· MEL Wed 6 pallets
β
Review
π§Ύ Paperwork today
Order
Customer
Xero
Action
ORD-0419
dnata SYD
SkyCrest Xero
Invoice
ORD-0420
Brokenwood Wines
Annie Xero
Invoice
ORD-0416
dnata BNE
β
Confirm
π Tomorrowβs dispatch
Group
Volume
Transport
Status
Interstate Β· MEL
2 orders Β· 58 ctns
Roadmaster
not booked
Interstate Β· BNE
1 order Β· 36 ctns
Roadmaster
booked RM-5521
Sydney
4 orders Β· 61 ctns
Driver
not booked
Non-airline
3 orders
Pick-up / delivery
ok
π₯ Team seen today
Person
Seen
Status
Alex
06:52
seen
Annie
07:18
after WhatsApp
Packing 1
β
call 07:45
π§ Good morning, Mark
General Manager Β· Monday 5 Oct 2026 Β· as at 07:20
Weekly average 125 ctns (Jul 25βApr 26), busiest week 301.
π Good morning, Directors
Directors Β· Monday 5 Oct 2026 Β· as at 07:20
β Seen todayπ€ 6
615
Cartons last month
β² 21% vs Feb
96%
POs from dnata
concentration risk
92%
On-time dispatch
74%
Temp readings β€ β18 Β°C
π Cartons per month
Jul 25 β Mar 26 Β· stepped up ~90% from Sep 2025 and holding at 500β700/month.
π’ Customer mix
Kitchen
Share of cartons
dnata SYD (incl. Halal)
39%
dnata MEL
23%
dnata BNE
19%
dnata PER / ADL / CBR / DRW
17%
Gate Gourmet
2%
π₯ Product mix & menu cycle
Item
Trend
Tomato & Feta Scroll
β² +85%
Pie Chicken & Mushroom 160g
β² +87%
Mushroom & Gruyere Quiche
βΌ β71%
7 new menu codes in 2026
new
12 codes stopped after Dec 25
write-off watch
β Risks & decisions
Risk
Decision needed
Single-customer dependence (dnata)
Diversify airline caterers
Freezer temp compliance
Review limit with caterers
Old-menu stock
Approve write-off / clearance
1Purpose
Every person starts the day on one screen that tells them what needs them today. If they haven't opened it by their check-in time, the Hermes bot messages them; if they still haven't, it calls them; if that fails, it tells their manager.
2Dashboard layout (?page=dashboard β becomes the home page after login)
2.1 Top bar
Greeting, date, "as at" time, Seen β status for today.
received since yesterday 16:00 (airline / non-airline)
Orders list
Short items
# lines short, cartons short
Packing / Missing items
Awaiting action
uninvoiced Β· unconfirmed Β· unallocated
Orders list filtered
Bot proposals
pending approvals
Bot inbox
Stock alerts
below minimum, negative, slow movers
Products filtered
Expected orders
kitchens "due" to order but silent (Pattern Bot)
Airline analytics
2.3 Role dashboards β one per managerial role
My interpretation of each role (please correct anything that's off):
Person
Role
My interpretation
Dashboard focus
Alex
Savoury Production Manager
Runs production of the savoury lines β quiche, pies, croustades, scrolls, domes, frittata β mostly for the airline caterers. Owns "Alex's excel" (Production Planning) and decides what gets made when stock is short.
What do I make today and this week?
Annie + sweets team
Sweets Production Managers
Run production of the sweet lines β danishes, tarts, friands, cakes, tartlet shells β for both airline POs and the Annie Makes Cakes non-airline customers, including bespoke cake enquiries.
What sweets do I make, and which Annie Makes Cakes orders need me?
Ruth
Office Manager
Runs the order desk for both businesses: order intake, Xero invoices (SkyCrest + Annie Makes Cakes), customer confirmations, transport bookings (Roadmaster / driver / pick-up), and approving bot drafts. Day-to-day admin of staff and reminders.
Which orders need paperwork or bookings today?
Mark
General Manager
Accountable for daily operations across production, packing, dispatch and office: on-time dispatch, shortages, stock risk, team follow-through. Escalation point for the Hermes ladder.
Is today on track, and where is it slipping?
Tisna, Heri, Vivi
Directors
Owners / board level: performance and trends rather than daily tasks β volume, customer concentration, product mix, menu changes, compliance, risks. Read-only.
Make-list today + next 3 days for savoury categories (QUICHE, PIE, CROUSTADE, SAVOURY): need vs live stock vs allocated, in cartons and units.
Shortfalls blocking dispatch (airline orders short on savoury lines), sorted by dispatch date.
Production Planning snapshot: savoury rows only, "to produce" column, link to full planner.
Forecast vs stock: 8-week average demand per savoury product (Pattern Bot) vs freezer stock β weeks of cover.
Menu-change watch: savoury products with stock but no orders for 6 weeks; new codes on recent POs.
Tiles: Savoury to make today Β· Short lines Β· Weeks of cover (lowest) Β· Expected POs this week.
Annie & sweets team β Sweets Production
Make-list for sweet categories (danishes, tarts, friands, cakes) + Tartlet NEED TO MAKE row.
Annie Makes Cakes orders due in the next 7 days β including bespoke enquiries waiting for a product / quote.
Shortfalls on sweet lines for airline and non-airline orders.
Forecast vs stock for sweets (Rhubarb Danish, Fig Tart, Friand, Portuguese Tart β¦).
Tiles: Sweets to make today Β· Tartlets to make Β· Annie orders this week Β· Bespoke enquiries open.
Ruth β Office Manager
Today's desk: new orders to review (incl. bot drafts from email), uninvoiced (split SkyCrest Xero / Annie Makes Cakes Xero), unconfirmed, transport not booked for tomorrow.
Read-only. No daily chase β Hermes sends a Monday 08:00 weekly summary instead.
Tiles: Cartons this month vs last Β· Top customer share Β· On-time % Β· Compliance %.
Reminder rules by role (defaults β adjust)
Role
Check-in by
Hermes ladder
Alex, Annie & sweets team
07:00
Message β SMS β call (opt-in) β Mark
Ruth
08:30
Message β SMS β call (opt-in) β Mark
Packing staff
07:00
Message β SMS β call (opt-in) β Ruth / Mark
Mark
08:30
Message β SMS only (no call)
Directors
β
No daily chase; weekly summary Monday 08:00
2.4 Insight widgets
Airline volume β cartons per week, last 12 weeks, by port (SYD / MEL / BNE / PER / ADL / CBR / DRW).
Top products β last 8 weeks vs previous 8 (β²βΌ).
Order rhythm β each kitchen's typical gap and days since last PO.
Activity feed β latest bot actions in plain English.
2.5 Staff "seen today" board (Ruth, Mark, admin)
Staff
Role
Check-in by
Seen at
Reminders
Status
Alex
Savoury Production
07:00
06:52
β
β Seen
Annie
Sweets Production
07:00
07:18
WhatsApp 07:15
β Seen (after reminder)
Ruth
Office Manager
08:30
08:05
β
β Seen
e.g. Packing 1
Packing
07:00
β
WhatsApp 07:15, call 07:45
π Escalated
3"Seen" tracking β how the app knows
A view counts when the user opens the dashboard and it stays visible β₯ 10 seconds (JS visibilitychange + timer β ?api=dashboard_seen). Opening another page does not count.
Stored per user per day. Acknowledging via WhatsApp/SMS reply "OK" or pressing a key on the call also marks it acknowledged (but not "seen" β both are shown).
Only rostered days count: each staff member has working days, check-in time, and a leave flag.
CREATETABLEIFNOTEXISTS staff_profiles ( username TEXT PRIMARYKEY, -- links to users.username display_name TEXT NOTNULL,role TEXT NOTNULLDEFAULT'office', -- savoury_prod | sweets_prod | office_mgr | gm | director | packing | admin mobile TEXT DEFAULT'', -- E.164, e.g. +61400000000 channel TEXT DEFAULT'whatsapp', -- whatsapp | telegram | sms | email work_days TEXT DEFAULT'Mon,Tue,Wed,Thu,Fri', checkin_time TEXT DEFAULT'07:30', call_allowed INTEGERDEFAULT0, -- staff opt-in for phone calls manager_username TEXT DEFAULT'', on_leave_until TEXT DEFAULT'', active INTEGERDEFAULT1);CREATETABLEIFNOTEXISTS dashboard_views (idINTEGERPRIMARYKEY AUTOINCREMENT, username TEXT NOTNULL, view_date TEXT NOTNULL, first_seen_at TEXT NOTNULL, last_seen_at TEXT NOTNULL, view_count INTEGERDEFAULT1,UNIQUE(username, view_date));CREATETABLEIFNOTEXISTS reminder_log (idINTEGERPRIMARYKEY AUTOINCREMENT, username TEXT NOTNULL, reminder_date TEXT NOTNULL, step INTEGERNOTNULL, -- 1 message, 2 message+summary, 3 call, 4 manager channel TEXT NOTNULL, status TEXT NOTNULL, -- sent | delivered | answered | failed | acked provider_ref TEXT DEFAULT'', detail TEXT DEFAULT'', created_at TEXT DEFAULT (datetime('now','localtime')));
4Hermes Reminder Bot
4.1 What Hermes is
Hermes Agent (Nous Research, open source) is an always-on AI agent with:
a messaging gateway β WhatsApp, Telegram, Slack, Signal, Email and more from one process;
a built-in cron scheduler that delivers results to any connected platform;
an optional telephony skill (Twilio) β buy/keep a number, send SMS, place calls with a spoken message (TwiML), or AI voice calls via Bland.ai / Vapi.
4.2 Escalation ladder (default β editable per person)
Step
When (after check-in time)
Channel
Message
0
at check-in time
β
Seen? β stop. On leave / not rostered β stop.
1
+ 15 min
WhatsApp (or Telegram)
"Morning Alex β your Skycrest dashboard hasn't been opened yet. 3 items need you today: 2 shorts, 1 make-list. Open: https://skycrest.id/stock_control.php"
2
+ 30 min
WhatsApp + SMS
Short summary of today's items + "Reply OK to acknowledge"
3
+ 45 min
Phone call (Twilio, only if call_allowed)
Spoken: "This is the Skycrest assistant. You have 2 orders to pack for dispatch today and haven't opened the dashboard. Press 1 to acknowledge."
4
+ 60 min
Message to manager
"Packing 1 hasn't seen the dashboard or answered (message 07:15, call 07:45). 2 orders dispatch today."
Stops immediately when the person opens the dashboard or replies OK. Maximum one call per person per day. No messages outside 06:00β18:00 or on non-rostered days.
Hermes needs a persistent process (the gateway), which shared PHP hosting can't run β a small VPS (from ~US$5/month) or an always-on office PC.
The PHP app stays the source of truth. Hermes only reads agent_unseen (who is overdue + their to-do summary) and writes agent_reminder / agent_ack.
Endpoints authenticated with a long random bearer token (stored in a config file outside public_html on the host and in ~/.hermes/.env on the VPS) β separate from user logins, read-only except reminder logging.
agent_unseen returns only: display name, role, channel, mobile, step due, and a short to-do summary. No prices, no customer contact data.
4.4 Hermes skill: skycrest-reminder (outline)
Schedule: every 15 minutes, 06:00β11:00, MonβFri (Australia/Sydney)
1. GET /stock_control.php?api=agent_unseen β list of {user, step, channel, mobile, summary}
2. For each entry:
step 1β2 β send_message(platform=channel, to=mobile, text=template)
step 3 β telephony: twilio call (TwiML <Say> summary, <Gather> press 1)
step 4 β send_message to manager
3. POST /stock_control.php?api=agent_reminder β log each send (status, provider ref)
4. Inbound reply "OK" / keypress 1 β POST ?api=agent_ack
Never: message anyone not in the staff list; call without call_allowed; exceed 1 call/day/person.
The telephony skill's own safety rule says to confirm before calling. Here the confirmation is given in advance by policy: staff opt in (call_allowed), the owner approves the ladder, and calls are limited to the allow-listed staff numbers.
4.5 Costs and setup (indicative)
VPS: ~US$5β10 / month. Hermes: open source.
WhatsApp: Hermes' built-in bridge pairs to a phone number (use a dedicated business SIM). Telegram: free bot.
Twilio: Australian number + per-minute call and per-SMS charges (check current Twilio AU pricing).
LLM for Hermes: any supported provider; reminder messages are templated, so usage is small.
4.6 Privacy & consent
Staff consent to work reminders and (separately) to calls; recorded in staff_profiles.
Only work information in messages; mobile numbers visible to admins only.
Reminder log kept 90 days.
5Admin screens
Admin β Staff: profile, mobile, channel, check-in time, work days, call opt-in, manager, leave.
Admin β Reminders: today's board (Β§2.5), ladder timings, quiet hours, kill switch, last Hermes heartbeat (alert if Hermes hasn't checked in for 30 min).