Every job, on the record.
WhoanHub turns the messages your team already sends into tracked hotel jobs, with an owner, a clock, and a full history.
Phone app for the people doing the work. Chat, claim, finish.
Website for setup, live operations, reports and history.
Reminders, escalation and breach alerts that run without anyone watching.
What WhoanHub is for
Read this part first. It explains the one idea the whole product is built on.
Why WhoanHub exists
Most hotels run their operations inside Zalo, WhatsApp or a walkie talkie. Those tools are fast, but they forget. A request scrolls away, nobody is clearly responsible, nothing is timed, and at the end of the day no one can prove what happened. Guests feel the result before management sees it.
WhoanHub keeps the part your team likes, chatting, and fixes the part that hurts. Every message that describes work becomes a job. A job has a type, a place, an owner, a clock and a permanent record.
A message becomes a job
A staff member types 403 out or taps a Checkout button. WhoanHub reads it, decides which job type it is and which department should handle it, and sends it to the right people. Anyone eligible can claim it with a double tap. From that moment the job is theirs, and the clock is running.
Reading the message is done in three layers, cheapest first, so the app stays fast and works on weak hotel wifi:
- Quick action buttons. The job types you use most are one tap. No reading needed at all.
- Keyword rules. Your own phrases, for example
trả phòngortowels, route instantly and for free. - AI reading. Only for messages the first two layers cannot resolve, and only into job types you already created.
How a hotel is organised
WhoanHub describes your property the way you already talk about it.
The property is the wall. One hotel can never see another hotel's staff, jobs, rooms or reports, no matter who is logged in. Inside a property, departments group the work and roles decide what each person is allowed to do.
Phone and web
- Phone app
- Send jobs, claim jobs, run your shift, read announcements. This is where most of the day happens.
- Web (app.whoanhub.com)
- Has the Dispatch page to send and receive jobs, plus the pages to set the hotel up, watch operations live, read productivity, and search the audit log and room history.
- Good to know
- Only the web has the Dispatch page. Anyone can use whichever suits them; staff can use the web too. The same account works on both, and what you see is decided by your permissions.
Getting in
Accounts, first time setup, PINs, and the language switch.
Signing in
Three things get you in, and none of them is an email address.
- Hotel code
- Identifies your property, for example
WH-SUNRISE. The same for everyone at the hotel. - Employee ID
- Your own code, for example
HK-014. Set by your manager when your account is created. - PIN
- Four digits that you choose yourself the first time you sign in.
If the details are wrong the app says so without telling an attacker which part was wrong. After five wrong PINs in a row the account locks for fifteen minutes.
First time login
A new account exists but cannot sign in until the person activates it. There is no SMS: the activation code always comes from a manager, in person.
- A manager of a higher level opens Staff in the console and presses Create activation code. A six digit code appears on screen, with a copy button. It is valid for ten minutes and can be tried five times.
- The manager gives the code to the person directly.
- On the login screen the person taps First time login, enters the hotel code and employee ID, then the code.
- They choose a four digit PIN and confirm it. Done. From now on it is hotel code, employee ID and PIN.
Simple PINs such as 1234 or 0000 are refused. A new code can be created at most once a minute, and creating one cancels the previous code.
Under the PIN boxes a line reads "By activating, you agree to the Terms of Service and the Privacy Policy", with both linked so you can read them first. Activating your account is your agreement to them.
Forgot your PIN
A forgotten PIN is reset by a manager, never by text message, so nobody can take over an account from another phone.
- On the login screen of the phone app or the web console (next to First time login) tap Forgot PIN?, enter the hotel code and employee ID, and tap Send request to manager. The app says "Request sent. See your manager to get a 6-digit code."
- Every manager who may reset your PIN sees a line at the top of their app and console: "Name (ID) forgot their PIN", and taps Handle.
- The app asks the manager to verify it is really that person. Only after ticking I have verified can they press Confirm and create code. If something is wrong they press Decline request.
- The six digit code appears only on the manager's screen, with a Copy code button beside it in the web console, valid for ten minutes. The manager gives it to the person.
- The person enters the code, chooses a new PIN, and is signed straight in. Any lock from wrong attempts is cleared at the same time.
A manager can also start this from Staff with Reset PIN, with the same checklist. A manager can only reset the PIN of someone at a lower level, never their own and never a colleague at the same level, because the code is a way into that account. If the most senior person forgets their PIN, contact WhoanHub support. If a manager has already handed you a code, tap I already have a code instead of sending a new request. Send the request again works once a minute (the button counts down). Sending again cancels any code made from the earlier request and replaces the manager's alert with a new one, so only the newest code works. Once you sign in or reset, your open request closes by itself.
The lock screen
The phone app locks itself and asks for the PIN again rather than signing you out. Staff share phones and put them down on trolleys, so re-entering four digits is faster and safer than a full login. Not you? Log out at the bottom hands the phone to the next person properly.
A weak connection never signs you out. If the network drops, a banner reads You are offline, jobs are not being received so nobody assumes a quiet screen means a quiet hotel.
Language
WhoanHub is fully bilingual, English and Vietnamese, including notification text. The choice is per person, not per hotel, so a Vietnamese housekeeper and an English speaking GM can read the same job in their own language. Change it in the menu on the phone, or at the bottom of the sidebar on the web. Dates and times follow the chosen language too.
Setting up your hotel
Everything in this part lives in the manager console. Work down the list in order, because each step is used by the next one.
Dashboard
Signing in on the web opens Dispatch on the Workplace chat first. The Dashboard is one click away: Admin in the Workplace side menu opens the console. The console's side menu starts with Dispatch in blue, the way back to the Workplace, then groups its pages under Operations, Management and Resources & Settings, with Log out on its own at the end. The Dashboard shows how many staff, departments and rooms exist, and a Get set up checklist covering the five things a hotel needs before daily use: departments, staff, job types, roles, and areas and rooms. Each item links to its page and can be ticked off and hidden once done.
Below the checklist is Department productivity: how each department is claiming and finishing work: claim %, Claimed on time %, Done on time %, and the average claim and work times. You can look at one period, or switch to Compare months to put two months side by side.
Departments
Housekeeping, Front Office, Engineering, F&B, and any others you run. Departments group both staff and job types, and they are the unit most reports are grouped by. Create these first, because roles, job types and staff all point at them.
A department cannot be deleted while staff or job types still belong to it. Move them first.
Roles and permissions
Roles are yours to invent. WhoanHub ships no fixed job titles, only a fixed list of permissions. You create a role, tick the permissions it should have, and place it in the hierarchy.
- Role name
- For example Housekeeping Supervisor.
- Department
- Which department the role belongs to. For top roles such as the GM, create a department for them, for example Executive Board.
- Hierarchy level
- Seniority rank from 0 to 100. Used by escalation and by who may edit whose staff record.
- Admin role
- A role ticked Admin role sits above every level (shown as ∞) and always holds every permission, so it stands apart from the hotel's own chain. A hotel can have several admins. Only an admin can tick it, edit or delete an admin role, or give someone an admin role. The role named Admin that every hotel starts with is one.
- Sits under
- The roles directly above this one. Tick every role that should be able to see this role's productivity. A role can sit under more than one. Leave all unticked to keep it at the top.
- Permissions
- The eighteen things a role may be allowed to do. See the permission reference.
A Hierarchy diagram draws the result: rows by seniority, lines running up to whoever a role sits under. Use it to check the chain before a pilot, because escalation and report visibility both follow those lines.
Staff accounts
Each staff member gets an employee ID, a full name, a phone number so the hotel can reach them, a department and a role.
- Status
- Not activated until they set a PIN, then Active, or Deactivated.
- Create activation code
- Shows a six digit code on screen to hand over in person. For activated staff the button is Reset PIN instead (see Forgot your PIN).
- Import CSV
- Bulk add a whole team, one per line: employee ID, full name, phone, department, role. The result reports how many were added and how many were skipped.
- Deactivate
- Blocks login immediately. Their open jobs go back to the pool for someone else, any open shift is closed, and a summary tells you how many jobs were returned. History is always kept.
- Reactivate
- Brings the account back with the same PIN.
Areas and rooms
The catalogue of real places in your property, so staff pick from one shared list instead of typing free text six different ways. Six categories are available: public areas, floors, guest rooms, outlets, employee areas and other. Each place has a name and an optional short code, for example 305 or F4.
Bulk add rooms creates a whole floor at once from a number range, with an optional prefix such as A- for A-301. Up to two hundred rooms per go.
A place can be hidden so it stops appearing to staff, or deleted. Deleting never rewrites past jobs, they keep the text they were sent with.
Job types
Job types are the heart of the setup. Nothing is hardcoded, every hotel defines its own. Each job type belongs to one department and carries its own rules.
The Job types & Routing page has four tabs: Keyword settings, Unassigned jobs, Import chat history and Routing settings. The first tab is laid out in three columns. Pick a department on the left, and the middle column shows only its job types. Pick a job type, and the right column shows its settings and its keyword rules. To add a job type, press + beside the Job types column title; Edit and Delete sit at the top of the right column. Moving a job type to another department moves its keywords with it. Deleting a job type also deletes its keywords, and a job type that jobs have already used cannot be deleted. On a narrow window the columns open one at a time, with Back.
- Claim time (minutes)
- How long a job may wait for somebody to claim it, counted from sending (or from its opening, for a scheduled job). Managers are alerted when nobody claims it within this time. It drives the Unclaimed clock and the claimed on time numbers.
- Work time (minutes)
- How long the work should take, counted from when someone claims the job. Each new holder gets the full work time. It drives the In progress clock, the done on time numbers and the over work time alert.
- Requires inspection
- When on, finishing the job sends it to a supervisor for sign off instead of straight to done.
- Show as quick action chip
- Puts this job type on the one tap bar in the composer. Use it for your most common work.
- Can be scheduled for a set time
- Adds a Complete by time to the job. On such a job the In progress clock runs to that time instead of the work time, and missing it raises its own alert. Built for F&B and amenity delivery.
- Outcome options
- The list a staff member chooses from when finishing, for example Completed, Guest refused, Not needed.
- Who can claim
- Anyone in the department, or a specific role only.
Every hotel also has one system type, Unassigned. It has no claim time or work time, cannot be deleted, and is never chosen by the AI or a keyword rule. It is the last resort when no type fits: the job still goes out at once, to a department or a person; see When nothing on the list fits. Managers hold Manage job types, so a requested type can be created by the person who receives the request.
Unassigned jobs report
The Unassigned jobs tab lists every job sent through the slot in the last 7 or 30 days: the message, who sent it, where it went, and what it became (a real type later, a request, or still unassigned). Each row is a job type or a keyword the hotel is missing. Suggest job types with AI reads those messages, groups them, and proposes new types with keywords, or keywords for an existing type that already fits; Create makes each suggestion real in one tap. Every morning at 08:00 hotel time, managers get a push with yesterday's count when it is not zero. The AI reads the message text here, exactly as it does when routing a message; it never sees staff or guest names.
Message routing
The Routing settings tab controls how staff messages turn into jobs.
- Default parse mode
- Plan asks staff to confirm every message before it sends. Auto dispatches instantly with a one tap fix underneath. Staff can override the default for themselves.
- AI confidence threshold
- A number between 0 and 1. Below it the AI never guesses, the staff member picks from a short list instead.
- Approvals to make a keyword
- When this many different people make the same correction, the phrase is promoted into a keyword rule and stops costing an AI call.
- AI parsing
- Turn it off entirely. Messages that match no keyword go straight to the manual picker.
Keyword rules
Each job type keeps its own phrase book. Pick the job type on the Keyword settings tab, type a phrase under Keyword rules and press Add keyword; the × on a keyword removes it. A message containing a keyword routes instantly, free, and without a network round trip. Matching ignores accents and numbers, so tra phong and trả phòng 403 both hit. The number on each keyword is how many times it fired; point at it to see whether the system Learned it from corrections.
Import chat history
A new hotel does not have to type its job types one by one. If the team ran its operations in a WhatsApp or Zalo group before WhoanHub, export that group as text and drop the file on the Import chat history tab of the Job types page. The AI reads it and proposes the job types and keyword rules this hotel needs.
- Export the group chat as a text file (WhatsApp: group info, Export chat, Without media. Zalo: copy the conversation into a text file). A whole year, tens of thousands of lines, is fine.
- Choose the file. The page shows how many messages it found and starts the AI right away, no second button.
- Each card is one proposed job type: name, department, work time, the keywords staff actually typed, a few example messages, and Catches N messages, counted on the whole file with the same rule the router uses. Above the cards is the share of the file all the cards together would route.
- Press Edit on a card to adjust it before it is created. A new type opens the same form as Add job type: name, department, claim time, work time, who can claim, outcome options, inspection, quick action chip, scheduling. Below it you can remove any keyword or type a new one. A card marked Existing type only edits its keywords. Discard closes without a change, Save keeps the change on the card, Save and create creates it right away.
- Press Skip on any card you do not want, then Apply all. Every remaining card is created exactly as shown, with no confirmation step; the note above the cards reminds you of that. New types are created with their keywords and options; existing types only gain keywords. Nothing is written until you press Apply.
Shift settings
One page sets the working rules for the whole property.
- Shift length
- In minutes. Used for the shift countdown and for overtime alerts.
- Short breaks
- How many per shift, and how long each one is.
- Meal breaks
- Same, for the longer break.
- Overtime alerts
- Three thresholds in minutes past the end of shift. The staff member is nudged at the first two, their supervisor at the third. The values must increase.
- Break overdue alert
- How many minutes past the end of a break before the supervisor is told.
- Countdown timers
- Show the numbers on the Unclaimed and In progress clocks, red when over. Turned off, the clocks keep their words (Unclaimed, In progress, red when over) without the numbers. Some hotels prefer it off so staff are not watched by a clock.
Sending work
The composer is the main screen of the staff app. It looks like a chat, and it is also the dispatch desk.
The composer
The input box says Chat to task. Pick a task or type what needs doing in your own words and press send. It routes to the right team automatically. On a computer the box grows as you type, up to three lines; a longer message scrolls inside it.
Everything you have sent and everything sent to you appears in one feed, grouped by day with Today and Yesterday headers, each item showing who sent it and who is handling it.
Messages you sent sit on the right, always, even once you take one yourself; everything else, a colleague's messages included, sits on the left. The colour only says which way a message went: what you sent is grey, what came to you is blue. Where the work stands (open, taken, done) is read from the status pill on each message and on each room. Once someone takes a message its pill shows who; tap or click it to see "Claimed · 00:14". Once it is done the pill shows "Done · 00:14"; tap or click it to see who finished it and when ("Lily · 00:14"; for several rooms, everyone who did them and when the last was done). Either way it turns back after three seconds. On a several-room message, tap the pill itself, as tapping the message opens its rooms.
On the phone, forms such as New announcement or New complaint slide up from the bottom. To close one, drag it down from its top edge (the small bar and the title), tap the dimmed area above it, or use Android's back button.
Quick actions
Above the input sits a row of chips, one for each job type your admin marked as a quick action. Tap Checkout, type the room, send. No reading, no waiting, no AI, and it works on a bad connection. This is the fastest path and it covers most of a normal day.
On the manager dashboard the same thing lives behind the + button next to the input. Tap Task, then a department, and that department's job types open beside it. Pick one and the job form opens. The department list stays put, so switching to another department is one tap. At the bottom of every job type list are two fixed rows: Unassigned job sends the work to that department's pool without a type, and Create or request a new job type opens the same form the app shows when it cannot read a message.
Plan mode and Auto mode
- Plan, confirm before send
- Every message opens a confirmation card first. Nothing is dispatched without a tap. Use this while a hotel is new to the app, and for new staff.
- Auto, send instantly
- The message goes immediately: when one of your keyword rules matches it, your bubble rises into the chat the moment you press send, marked Sending, on the phone and on the web alike. A small line appears under it with what was decided, for example Checkout · Housekeeping, with a Reroute link if it is wrong.
Even in Auto mode the app refuses to guess when it is unsure. Instead of dispatching, it asks Not sure, who should get this? and shows a short list. If it cannot read the message at all it says so and asks you to pick the job type. The only time Auto stops to ask is the only time a silent guess would cause harm.
Your manager sets the hotel default and you can override it for yourself from the menu.
One message, several kinds of work
Each room is read with the words written after it. 101 out 202 out 303 out is one kind of work, so it is simply three Checkout jobs, the same as 101 202 303 out. 101 out 202 out 303 towel asks for two kinds of work, so it becomes separate jobs: Checkout for 101 and 202, Towels for 303. Before anything goes out you always confirm them.
- In Auto mode
- One short card titled 3 jobs in this message: one line per kind of work with its rooms, its job type and its department. Tap a line (click on the web) to Change its type, then press Send 3 jobs. The round back arrow in the top right corner of the type list goes back to the lines without changing anything (the × on the web).
- In Plan mode
- One confirmation card titled 3 jobs in this message, with a tab for each kind of work along the top, for example Checkout · 404, 102 and Towels · 303. Tap a tab or swipe sideways to move between them; what you changed on one tab stays when you come back. The × on a tab leaves that job out. A part nobody could name has its tab in orange, with the job type picker in it. Send 3 jobs sends them all; if a tab still needs something, it comes to the front and says what.
A part no keyword matches, such as a typo in 303 404 out 505 towle, is sent to the AI on its own. If the AI understands it, its line comes filled in like the others. If not, the line reads Not understood, tap to choose the job: pick its job type, or pick Unassigned to send it now to a department and give it a type later. Send waits until every line has its job. In Plan mode the job type picker opens for that part in its turn. When no part of the message matches anything, it is read as a whole, as before.
When nothing on the list fits
The picker always has a way out at the bottom, both when sending and when you Reroute a job that landed on the wrong type. The work goes first; the missing job type is a follow-up, never a reason to wait.
- Unassigned
- The last resort, and the fastest. Wherever you choose it (a department in the + menu, the job type list, a follow-up), the same form opens, already holding what you typed, the room or location, and the department when it is known. Fields marked with a red * must be filled: Department, What needs doing, and Room or Location (one of the two is enough). Under the department, Send to lists its people with their role beside each name, with a Search names box like the announcement recipient picker, and the people you pick shown as chips above (tap × to remove): leave Everyone in the department ticked and the job lands in their pool; tick one person and they hold it at once, like an assignment; tick several and only they are told and see it, and the first to claim it does it. Nobody else gets it in their chat; a supervisor sees it only in My work → Department, under Waiting to be taken, marked Sent to: Ann, John, so they can hand it on with Assign to… if needed. It never shows in their Available jobs. Its card reads Unassigned and shows the message you typed, since there is no job type to read yet. The job goes out immediately with no clock. Whoever holds it, or a supervisor in its department, can give it a real type later from Choose job type, and its clocks start then.
- Right after an Unassigned send
- A small card reads Create a new job type for this job. Managers get a quick form (name, department, claim time, work time, keyword) that creates the type and applies it to the job just sent. Everyone else gets a request form: the Job type name on one line and the Keywords beside it (what you typed is there already; + adds another). The request arrives as a job, New job type request, in the Workplace chat and Available jobs of everyone in your own department who can manage job types, and of every admin, all at once. Managers of other departments never get it. One request a minute. Later skips it; the job then shows up in the manager's daily report instead.
- Handling a job type request
- Whoever takes it first holds it; it leaves everyone else's screen. Taking it needs no shift and never blocks your other work. Double tap it (double click on the web), or press Create job type in My work: the create form opens with the name and keywords already filled in. Saving finishes the request, and the Unassigned job it came from takes the new type, so its clocks start. Or hold it and pick Decline with a reason. The sender is told either way.
- New job and keyword
- Managers and admins, from the picker itself when they would rather set the type up first. Saving creates the type and sends the job with it in one go.
- Request a new job type
- Everyone else, from the picker. Your job still needs a type to go out, so pick the closest one or use Unassigned.
- Add keyword
- Everyone. Teach the router that a phrase belongs to an existing type, then send with that type. The phrase is pre filled from your message with the room number removed; short filler words are refused.
What you can put on a job
These details are set in the review sheet that opens before a job goes out: always with Auto-send off, and with it on when the app is unsure of the room or the job type. Everything here is optional except a place.
- Room
- A room number, for example 403.
- Location
- Anywhere that is not a room: lobby, pool, car park.
- Note
- Anything the person doing the job should know, for example "Guest asked to stay until 14:00". It shows under the message in the chat, as Note: …, and on the job card. The first line stays what you typed; a job made from the menu or a follow-up, with nothing typed, reads "Late check out · 303" on the first line. The box grows as you type, up to 1,000 characters. A note never teaches routing new keywords.
- Guest name
- For example Mr C, or Nguyễn Văn A.
- Booking ID
- Your reservation reference, for example BK-10293.
- Priority
- Low, Normal or Urgent. Urgent uses a distinct notification sound so staff know the severity without looking.
- Guest in room?
- Yes, No or Unknown. Housekeeping needs this before they knock.
- Complete by
- A hard time. Missing it raises a deadline alert.
- Start after
- Do not start before this time. Starting outside the window is recorded as a schedule breach.
- Take photo / Choose photos
- Attach up to six photos to the job: take a new one with the camera, or pick several you already have from the phone's library. With Auto-send on there is no review sheet, so there is also a photo button inside the message box, at its right end: on the phone it offers Take photo or Choose photos, on the web it opens the file picker. The photos show as small previews above the message box, with an × to take one off, and go on every job the next message makes. The comment box offers the same two buttons and shows each photo you add as a small preview, with an × to take it off before sending. Job photos are deleted automatically two years after they are sent; the job itself stays.
- People needed
- Marks it as a team job. See team jobs.
A job must have a room, a location, or a guest or booking reference before it can be sent. A job with nowhere to go helps nobody.
Slash commands
Type / in the composer for a shortcut menu.
| Command | What it does |
|---|---|
/task | Switch back to sending tasks |
/announce | Write an announcement and choose who receives it |
/auto on | Turn instant sending on for yourself |
/auto off | Confirm every message before it sends |
/clear | Start a new chat, clearing finished jobs from your view |
Announcements
An announcement is information, not work. Nobody claims it, it simply has to be read. Sending one needs the send broadcast permission.
Choose the audience: Everyone, one or more departments, or specific people. Mark it urgent to give it a distinct sound. A confirmation step tells you exactly who will be notified before it goes.
Recipients see an unread banner and mark an announcement read with a double tap. A long announcement shows seven lines; tap Show more to read it all. In Announcements they can filter by status, sender and date, select several at once, and delete them from their own list, with an undo. Deleting only affects your own copy, and the sender can also delete an announcement they sent.
Guest complaints
The complaint log (some hotels call it the DM log or the duty manager's book), in the app instead of a notebook. Open Complaints in the Dispatch sidebar. It is a table, one complaint per row: time, room or place, guest, booking ref, stay (check in and check out), category, what happened, severity, guest mood, department, handled by, status, notes.
Two ways to add a row
Type it. Write the complaint in the box above the table the way you would in a note, "705 Mr Nguyen, AC noisy all night, very angry, wants a refund, engineering went up", and press Add with AI. A new row appears with the fields filled in: room, guest, category, severity, mood, the department and person handling it, the status. Whatever the AI could not tell from your text shows as "…", one click away from being typed or picked.
New complaint. An empty row, filled in cell by cell. The phone app uses the same name for its button.
Editing in place
Click any text cell to change it, press Enter or click away to save. Category, severity, mood, department, handled by and status are dropdowns on the row; department and handled by open with a search box, so you can type a few letters instead of scrolling a long list. Changing the status writes a line in the row's timeline with who did it and when, so the history is never lost to a quick click. The Notes column opens that timeline to add what was done: "Engineering replaced the AC, offered a fruit plate".
The table shows one day at a time, open and critical rows first, and updates live for everyone who can see it. A manager does not wait for the morning report: the moment the front desk logs an angry guest, the row is on their screen.
Handing over the day
The night auditor picks the day, presses Print day report for a clean page with every complaint and its notes (print it, or save as PDF), or Download CSV for a spreadsheet. Both follow the filters on screen.
From chat, one tap
When a message in the chat reads like a guest complaint ("khách 502 phàn nàn máy lạnh ồn, rất bực"), the job is created as usual and one line appears above the composer: Looks like a guest complaint. Add to complaint log? One tap on Add to log creates the row with the room, the message, the severity and a link to the job. Nothing is logged without that tap, so a false guess never reaches the log. This costs nothing extra: it uses the word check the chat already runs on your device and the answer the AI already gives when it routes the message.
Discussions
Some things need a conversation rather than a job or a notice. A discussion is a small private room with the people who need to be in it.
- Start one from the menu (Create new), or from a job or an announcement with Discuss this. Opened from a job or an announcement, it arrives filled in with its subject and the people involved.
- Say what it is about, for example Room 403 late checkout.
- Pick the participants: search by name or department (no accents needed) and tap to tick. Each name shows the person's role beside it, as in every list where you pick someone (assigning a job, announcements, complaints). Everyone picked shows as a chip above the list; tap a chip to take that person off, or Clear all. At least one is required.
Photos and videos. Tap the photo icon inside the message box to send photos or a video: take one with the camera or choose from your library (on a computer, pick files). You can pick up to 6 photos at once; each arrives as its own message, in order, and the words you type go with the last one. A video goes on its own, one at a time, without photos. A video can be up to two minutes long; the phone app shrinks it before sending so it goes quickly on mobile data. Each file can be up to 50 MB. Tap a photo to see it full screen. On the phone a video shows a still with a play button; tap it and it plays full screen (close with × or Back). On the web a video plays inside the message.
Only people who can read the room can open its photos and videos. They are deleted automatically, the same in every hotel: videos 180 days and photos one year after they are sent. The messages stay and say the file was removed. If you need a file for longer, for example as evidence, save a copy elsewhere before then.
Only the people in a room can read it and send messages in it. Nobody else can, not managers and not admins. Someone who leaves keeps the messages from before they left, but sees nothing new.
Who is in it. Under the room's name (beside it on a computer) you see how many people are in it. Tap the name (click it on a computer) to see the list: whoever started it comes first, and anyone who left is shown apart at the bottom.
Add people. In that list, tap Add, pick colleagues and tap Add. Anyone in the room can add people while it is open. Those added get a notification and can read the whole discussion, earlier messages too. Someone who left can be added back the same way.
When you are added. Everyone added to a new room is told at once: a red strip at the top of the chat reads You were added to the group: Room 403 late checkout (tap it to open the room), and the phone also gets a notification. The strip goes once you open the room.
New messages. When someone writes in a room you are in and you are not looking at it, you are told. In the app, a blue bar at the top of any page reads, for example, Floor 3 · Lily: Towels missing in 305: a long message is cut at 100 characters, a lone photo reads You have 1 new photo, a lone video You have 1 new video, and several unread messages You have 3 new messages. New messages in more than one room read New messages in 2 groups. Tap the bar to open the room (several rooms open the menu), or tap × to close it. With the app closed, the phone shows the same words as a notification, one per room: a newer message replaces the room's earlier notification. Tapping it opens the room. On the web, while the tab is in the background, the browser can show the same notice: turn it on once from the Turn on bar. Nobody is told about their own messages, about a room they left or that was closed, or while off shift unless they keep job messages coming off shift.
New messages. In the menu, Discussion rooms shows how many messages came in that you have not read yet, and each room shows its own count, as in any messaging app. Opening the room clears its count.
- Leave
- Stop receiving new messages but keep the history to read.
- Leave and delete
- Remove it from your list entirely. Others are unaffected.
- End
- Top right of the room. Closes it for everyone. Hide it, kept ninety days then deleted, or delete it now. Either way it stops taking messages. A hidden room stays in the others' lists, in grey, until it is deleted: they can still read it, and the bottom of the room says the owner closed it. Each of them can remove it from their own list.
Doing the work
Claiming, working, finishing, and everything that can go wrong in between.
Available jobs
Unclaimed jobs you are eligible for appear in Available jobs. Eligibility is the department and the role restriction on the job type. An Unassigned job sent to your department is claimable by anyone in it, like any other job; it just has no clock until somebody gives it a type.
The list has two tabs: Open, the jobs waiting for you to claim, and Created, the jobs you sent that nobody has claimed yet. The number beside each tab is how many are waiting. On a phone, swipe left or right to move between the tabs, here and in My work.
Every job card, in Available jobs and My work, shows the room and job type on the first line and, under it, the message as it was typed (up to two lines), so you know what is asked without opening the job.
In Available jobs, each job card has a dark blue Claim button at the bottom right (Take over on a job someone dropped, Reclaim on one you dropped yourself; the hint under the chat message uses the same word, such as Double-tap to reclaim). The lighter buttons on the left are the other choices, such as Assign to… for a supervisor. Available jobs lists only what you can take, plus what you sent yourself under Created. A job only another role may take has no Claim button and says so in one line: Only another role can take this job. In the Workplace chat you still claim with a double tap on the message: one tap never claims anything, because a pocket tap should not put a job on somebody's shoulders. Either way, claiming also starts the job, so there is no second button to forget. A job a supervisor gives you is the same: it is under way the moment it reaches you, so My work shows Done straight away, just as a double tap in the chat finishes it. A job marked Waiting its turn has no button until the job before it is done.
A job waiting in the pool shows its clock, Unclaimed 14:34, and no other label; a job somebody gave back also reads Blocked. A job scheduled for later cannot be claimed before it opens: its button reads Claim from 6:45 PM and stays grey, and Assign to… stays grey too until then. See scheduled jobs.
One message, several rooms. When the front desk types 617 502 out, both rooms arrive in one bubble. Tap it to open the room list: each room has its own Claim, or take them all with one button. A room you hold shows Done straight away, no start step in between, and the clocks of your rooms run side by side, so you finish them in whatever order you walk the floor. However you take a room, one at a time or all together, its work time counts from the moment you take it. In My work, rooms you took together show one clock at the top of the card; rooms you took one at a time show each room's own clock on its row. A room a colleague already took shows their name, and the bubble says how many are taken, such as 1/2 taken. The sender opens the same list and sees who has which room, and when each one was finished. If someone gives a room back, it stays in the same bubble: its row shows Blocked (tap the row to see who gave it back and why), and the row button reads Reclaim or Take over. In Available jobs that room still gets its own card at the top, so nobody misses it.
In Available jobs, the rooms of one message share one card, one row per room, drawn like the rooms in My work. Each row has its own Claim, its comments, and a ⋯ menu (Copy, and Assign to… for a supervisor in that department), so you can take one room, or give 307 to one person and 308 to another. A room you take or give away leaves the card; the rest stay. Under the rows, Take 2 rooms takes them all, and a supervisor's Assign 2 rooms to… gives them all to one person. If someone takes one of them in the meantime, the rest still go and the page says so, such as Assigned 1 of 2 rooms.
Copy a message. A message in the Workplace chat is a job card, so its words cannot be selected in place. Press and hold it on the phone, or use its ⋯ (or right-click) on the web, and choose Copy: the message is copied exactly as it was typed, sent or received. In a discussion room on the phone, press and hold a message: a small black Copy pops up over it, as in Safari. Tap it to copy the whole message; tap anywhere else to close it. On the web, select the words as usual.
Each room keeps its own notes. When a room is done with an outcome, such as Minibar used, the outcome shows under that room in the list. Each room sits in its own box. For one room's menu (comments, follow-up, discuss), press and hold anywhere in its box on the phone, or use the room's own ⋯ (or right-click it) on the web. Holding the whole message, or its own ⋯, first asks which room. On the phone, as on an iPhone, a held message or room sinks a little, then lifts above the blurred chat with its menu right beside it; tap outside to put it back. If the keyboard is open, it goes down at the same moment the menu opens, so the menu is never hidden. The comment count sits beside each room, not on the whole message, so everyone sees which room the talk is about. In My work, tap a room's count or speech-bubble icon for its comments. Each room there also has its own ⋯: Copy, Create follow-up, Discuss this and Can't complete, which gives back that room only (on the phone the same ⋯ lists Comments too). The job you are on has the same ⋯ on its card.
The app tells you plainly when a claim does not work. The message shows the moment the server answers, then goes away by itself after 5 seconds:
- Someone already took this job
- You were a second late. The job leaves your list.
- Start your shift to claim jobs
- Only staff who are online can claim.
- Finish your current job to take a new one
- One piece of work at a time. Doing a single job, finish it before taking any other job or room. Holding rooms from a several-room message, finish them all before taking a single job or rooms from another message. You can always add more rooms from the same message.
- This job is for another department or role
- You are not eligible for it.
- Team job, a supervisor assigns it
- Jobs needing several people are assigned, not claimed.
My work
Your personal queue, in three parts: Current jobs, Up next, and Created for jobs you dispatched to other people. You may hold several jobs at once, but only one is in progress. A scheduled job you claimed early shows Starts at 7:00 PM instead of Done until its time.
Actions live on the job card and all the important ones need a double tap: double tap to claim, double tap to finish.
What the Workplace chat shows. Only three kinds of message: what you sent, what you hold and are working on (including a team job you help on, marked Helping · Lead: Lily; the lead carries its actions), and new jobs you can take right now. A job you cannot take never appears there: one sent to chosen people you are not one of, a team job (a supervisor assigns it), or a type only another role may take. When a teammate takes a job first, it leaves your chat within a second.
Sent. The second tab of My work lists the jobs you sent: pending, in progress, and done. Each line says where it went, such as To F&B, with the people when you sent it to chosen ones (To Housekeeping · Ann, John). A job you sent stays in your Workplace chat until it is finished, however many jobs you sent after it.
Department. The third tab of My work shows the rest of your department's work, each with its holder and its clock: Waiting to be taken, jobs sent to chosen teammates that nobody took yet (supervisors only, with Assign to… and, for an Unassigned job, Choose job type), To Housekeeping (your own department's name), jobs that came to you too but someone else took, and Sent by Housekeeping, jobs your teammates sent to other departments, shown as Lily → Engineering. Finished jobs leave the list. Tap one to read its comments.
Job states
| State | Meaning |
|---|---|
| Unclaimed | Waiting in the pool for someone to claim it. |
| Assigned | Given to a named person by a supervisor rather than claimed, or claimed early for a scheduled time and held until it starts. |
| In progress | Being worked on right now. The In progress clock is running. |
| Blocked | Somebody could not finish it. A reason is required, and the job goes straight back to the pool as urgent, still showing who left it. |
| Done | Finished, with a recorded outcome. Final. |
| Cancelled | Called off, with a reason. Final. |
These moves are enforced by the database, not by the app on your phone. A job cannot jump from Unclaimed to Done, and a finished job cannot be reopened or quietly edited later.
When you cannot finish
- Can't complete
- Says you are stuck, and sends the job straight back to the pool so it cannot be forgotten. A written reason of up to 300 characters is required. The person who sent the job is told, and so is the person who gave it to you, when that is someone else. You reach it from the ⋯ of the current job in My work (each room has its own), or without leaving the chat, from the job's ⋯ menu in the Workplace feed (long press the bubble on the phone). It is the only way to give back a job you hold, whether you have started it or only claimed it, a job booked for later included. The job comes back Urgent with your name and reason on it, and you can take it straight back. In the Workplace chat the bubble shows Blocked; tap it once to see who gave it back and why. On a job card a long reason shows two lines; tap it to read the rest.
- Assign to a teammate
- For people with the reassign permission, hand it to a named active person in the department. Someone already working shows Busy beside their name (Busy · 1 waiting when jobs already wait for them). Choosing them asks first, for example Ann is doing 147 · Checkout, 12 min left. This job is timed only after Ann finishes the current one. On Assign anyway they are told at once and see the job, marked Waiting its turn, with no countdown yet. Its clock starts when they finish the job they are on, and it cannot be started before then.
- Cancel job
- Cancels it for everyone, with a reason. Available for a job you claimed yourself, and for supervisors within their own department.
What happens after you say you cannot finish
The job goes back into Available jobs immediately, marked urgent, carrying your name and your reason so nobody has to ask what went wrong. From there:
- A colleague takes it
- Anyone eligible can pick it up. You are told when somebody does.
- You take it back
- It stays in My work under Returned jobs with a Reclaim button. Once you do, it is yours again and nobody else can take it.
- Nobody takes it
- The claim clock starts again from zero, so it climbs the chain exactly like a job nobody ever claimed. A scheduled job given back opens to claim at once; it is still due at its scheduled time.
Cancelling across departments is not allowed. A front office supervisor cannot cancel a housekeeping job.
Finishing a job
Double tap to finish. WhoanHub then asks How did it go? and shows the outcome options your admin defined for that job type, plus an optional note. An outcome is required, because "done" on its own tells a manager nothing three weeks later.
After that you are asked Need a follow up job?. A checkout clean that reveals a broken lamp becomes an engineering job in one step, while the person who found it is still standing there. On the phone, a follow-up opens the job menu above the message box without raising the keyboard; tap the box if you would rather type it.
Comments
Every job has its own comment thread, open to the sender, the assignee, helpers and supervisors. Text and photos both work; tap or click a photo to see it full size. This is where questions about a job belong, so nobody has to jump back to Zalo to ask which room, and so the answer stays attached to the job for good (photos in comments are deleted after two years, the text stays). Comments are timestamped and land in the audit log. A comment can be up to 1,000 characters; a counter appears near the limit. A comment longer than seven lines shows its first seven, with Show more to read the rest and Show less to fold it again.
Inspection
Any job type in any department can require inspection. It is not a housekeeping only feature.
- The staff member finishes the job as normal.
- The job moves to Awaiting inspection. The sender and the supervisor are both notified at once.
- The sender sees that it is waiting for a supervisor. The supervisor sees finished, tap to confirm.
- The supervisor confirms, and the job is complete for everyone.
Team jobs
Some work needs more than one person. Tick Needs multiple staff when sending, and the job is not broadcast to the pool. It goes to someone with the reassign permission, who picks a lead and up to five helpers by name.
Only the assigned team is notified, so nobody else is disturbed. The lead runs the job through its normal states, helpers see it, can comment, and appear on it as Helping.
Who was told
While a job you sent waits, its message shows the Unclaimed clock. Tap it (click on the web) to open the list behind it: who was notified, who opened it and when (Seen 14:32 or Not seen yet), and who took it. The chat itself carries no ticks or "Sent" and "Seen" labels: the clock already says where the job stands.
This ends the most common argument in hotel operations, which is whether the message was ever delivered.
Two clocks on a job
Every job runs two clocks, one after the other, each from its own job type's times. The clock sits at the top of the message in the chat and on every job card.
- Unclaimed
- From sending until somebody claims it: Unclaimed 04:12, counting down the claim time. Past it, the same words turn red and count on with a minus, Unclaimed -02:10.
- In progress
- From the claim until done: In progress 03:40, counting down the work time of whoever holds it. Red with a minus once over.
- Far off
- A clock with much more time left than the job type needs shows the time instead, Claim by 15:45 or Finish by 16:00, and starts counting once only the claim or work time is left. A job due at 16:00 with a 15 minute work time counts from 15:45.
- Scheduled
- Scheduled 7:00 PM: a job for later, not open yet or held before its time.
- Done
- The clock stops. A small clock icon on the message opens how it went: Claimed in 4m · Done in 3m.
- Several rooms
- The message's top line says how many rooms are taken, such as 1/3 Taken. Open it and each room has its own clock, its holder, its urgency and its times.
- Due soon
- A reminder before a scheduled job falls due, naming the job, the place and the time.
Your hotel can turn the numbers off (Countdown timers); the words stay. Urgent and VIP sit at the end of the message's last line.
Scheduled jobs
- Start after 19:00
- The job opens to claim at 19:00 minus its claim time, for example 18:45, and the pool is told then: Scheduled for 19:00, open to claim. Before that its button reads Claim from 6:45 PM. Claimed before 19:00, it is held for you but not started (Starts at 7:00 PM in My work), and it does not make you busy. At 19:00 it starts by itself if you are free, or as soon as you finish the job in hand. Its work time counts from 19:00.
- Complete by 16:00
- The claim clock runs to 16:00 minus the work time, and the work clock runs to 16:00 itself. Finished early, both clocks stop.
- Typing a time
- The app reads a time in a message as 24-hour: 12h30 is 12:30 noon, 0h30 is 00:30 at night, 7h is 7 in the morning. For 7 in the evening type 19h, 7h tối or 7pm; 12h30 am and 12:30 am also read as 00:30 at night. A time already gone today means tomorrow. A scheduled time always shows AM or PM, such as Claim from 12:30 PM, so nobody mixes up morning and evening; countdowns and message times stay 24-hour.
- Another day
- Add the day to the time: 101 towel 18h 25/10, 18h thứ 6, 18h ngày 27, 7pm tomorrow (or tmr), mai 8h. 25/10 is day then month (10/27 also works, the number over 12 is the day); ngày 27 is this month, or next month once the 27th has passed; a weekday is the next one coming, tuần sau or next a week later. A job for another day shows its day beside the time, Scheduled 6:00 PM 25/10, Claim from 5:55 PM 25/10, and waits at the end of Available jobs until it opens; on the day itself the time shows alone. The app does not guess a day it is unsure of: a date already gone, a named day with no time (ngày 25/10, ngày mai, thứ 6), a day more than 30 days off, T6 or CN (it could be floor 6), or ngày 27 tháng 12 keeps the message in the box with a note on what to write, for example Write the time and the date out, for example 18:00 24/10. A bare 1/2 or 3/4 with no time, or far off, is read as a count, not a day. Mai on its own means tomorrow only beside a time, and not after a title such as chị Mai, where it is a name. In the review form the Start after and Complete by boxes take a day the same way, 18:00 25/10.
- Taking more work
- Holding a scheduled job, you can still take other work. The app asks first: You have a scheduled job, 305 · Checkout, at 19:00 (40m left). Take this one anyway? A supervisor assigning you sees Job at 19:00 beside your name and the same question.
Starting a new chat
Messages never leave the chat on their own. A finished or cancelled job stays, showing its status, for the sender, the person who took it, team helpers, and everyone it was offered to who had not taken it. The chat opens on the latest messages; scroll to the top to see older ones.
After a busy shift your feed is long. New chat, also /clear, hides the jobs that were finished or cancelled before you pressed it, so you start fresh. Jobs still running stay, and once they finish or are cancelled they stay until your next New chat.
Nothing is deleted. Your active jobs stay, and every job still counts for reports and stays in the manager's log. This only cleans your own screen.
Your own numbers
Staff see their own figures for the day: jobs received, jobs completed, average completion time and active hours. Staff never see a ranking against colleagues. Comparison is a supervisor view, deliberately, because a leaderboard on a housekeeper's phone changes behaviour in the wrong way.
Shifts and breaks
Being on shift is what makes you reachable. WhoanHub treats the shift as a real state, not a formality.
Starting your shift
Shift controls sit at the top of the phone menu. Press Start shift and your status becomes Online. Until then a reminder in the Workplace chat reads Start your shift to receive jobs, with the button beside it; it closes by itself after 10 seconds. On the web it shows only when the window is narrow and the left sidebar is hidden, since a wide screen already shows the button. If you tried to claim a job while off shift, the Start your shift to claim jobs message goes away as soon as the shift starts. This matters because an unclaimed job sitting in a pool nobody is watching is the exact failure this product exists to prevent.
While you are on shift the panel shows time elapsed and when the shift ends. Past the end time it reads Shift over by 20 min, remember to clock out, and if you keep going your supervisor is told at the third threshold your hotel configured.
| Status | Meaning |
|---|---|
| Online | Working and receiving jobs. |
| Break | Short break, with a countdown. |
| Lunch | Meal break, with a countdown. |
| Off shift | Not working. |
Breaks
Take a Short break or a Meal break from the same panel. The app shows how many you have left and counts down the time remaining. When the break is over it says Break over, please return, and Back to work puts you online again. If you are still away after the overdue threshold, your supervisor gets an alert.
Once your breaks are used up the buttons grey out. Your hotel sets the counts and durations in shift settings.
Off duty and muting
On break, at lunch or off shift, job messages are paused. You still get announcements, jobs you already hold, and jobs you sent yourself, because those are yours either way.
A Job messages switch lets a person opt in to receiving jobs while off duty, for anyone happy to be reachable. When you mute, work that arrives while muted is held back, and anything already on your screen stays there. Hiding a job somebody has already read looks like the app lost it. Going back online releases everything held at once.
Ending your shift
You cannot end a shift and walk away from open work. End shift lists every job you still hold and asks for a decision on each one.
- Keep it
- It stays yours into your next shift.
- Mark done
- Finish it now, with its outcome.
- Hand over
- Pass it to the next shift. It joins the handover queue.
The button stays disabled until every job has an answer, then confirms with a summary, for example Shift ended: 4 done, 2 handed over, 1 kept. Any running break is closed at the same time.
The next person to start a shift sees Handed over from last shift under the shift panel, with the count waiting: in the phone's menu (☰) and in the web's left sidebar. It shows only when something was handed over. This is the moment most hotels lose work, and it is the moment WhoanHub refuses to let anything drop.
Watching operations
Four views answer the four questions a manager actually asks: what is happening now, how is my team doing, what happened, and what happened in this room.
Live operations
A live board of open jobs, active staff and breaches, updating by itself. Needs the view reports permission. Available on the web and in the phone app.
Four totals sit at the top: Open jobs, In progress, Staff online and Breaches. Below, one row per department:
| Column | What it tells you |
|---|---|
| Open | Waiting, nobody has claimed them yet. Jobs somebody passed back are counted under Blocked instead. |
| In progress | Being worked on right now. |
| Blocked | Back in the pool after somebody could not finish it. Waiting for anyone to pick it up. |
| Staff | On duty, on break, off shift. |
| Over work time | Jobs held past their work time. |
| Deadline | Jobs past their "Complete by" time. |
| Schedule | Jobs started outside their time window. |
| Over claim time | Jobs nobody claimed within the claim time, climbing the chain. |
A department head sees their own department. Someone with view all jobs, typically a GM, sees the whole property.
Productivity
Jobs received, jobs completed, average completion time and active hours, for today, the last seven days or the last thirty days, with a breakdown by job type.
A staff member with no one below them simply sees their own figures. The rule follows the Sits under links you drew when creating roles, which is why that field is worth getting right.
Custom reports
Count jobs the way you want to look at them. Pick a period (last 7, 30 or 90 days, or your own dates), one or more departments, one or more job types, a room filter, and what to group by: room, job type, department or day. Every row shows jobs, completed, done late, claimed late, the average claim and work minutes, blocked, cancelled and the average guest wait (sending to done), busiest first. Claim and work times are counted apart for jobs sent from 19/10/2026; older rows show only the guest wait.
Every date box on the console takes shorthand: type 101026 or 10/10/26 for 10/10/2026, 1010 for the 10th of October this year, or +1 / -7 to move that many days from the date shown, then press Enter. Double-click selects the whole date, ↑ and ↓ step one day, and the small calendar button still opens a picker.
Three reports are ready without any setup:
- Jobs by Room, the maintenance view: which rooms keep coming back.
- Most requested: which job types happen most.
- Job Outcomes: how finished jobs went, counted by the outcome staff picked when they finished.
Set the controls the way you like and press Save as to keep that setup under a name. Saved reports appear as chips for every manager of the hotel; only the person who saved one can delete it. Download CSV gives you the rows on screen as a file that opens in Excel or Google Sheets.
Analyze with AI
Press Analyze with AI and, a few seconds later, a short card appears above the table with bullet points under Strengths, Weaknesses and Watch, plus one Do next action, in your language. It is written by AI from the rows on screen and nothing else, claim and work times included. The AI never sees job messages, guest names or staff names, only the counts and the labels. Tap the AI analysis title to fold the card down to one line, and tap it again to open it. This works on the web and on the phone.
The same report analyzed twice gives the same card without a second AI call, and each hotel has a monthly ceiling of 300 analyses. Past it, the button says so. If the AI is unavailable, the numbers stay exactly as they are; the card is a reading of the report, never the report itself. Treat it like a colleague's summary: useful, and worth a glance at the table before you act on it.
Reports need the view reports permission. Without it the page explains that, and the database returns nothing, not even the shape of the data.
Audit log
Every job event in the property, searchable by room, staff member, date range, job type and status. Claimed, started, completed, blocked, returned to pool, reassigned, rerouted, cancelled, comment added, inspection confirmed, team assigned, schedule breach, shift ended, shift config changed.
Room history
Type a room number and get every job ever sent for it, newest first. When a guest complains that the air conditioning has been broken for three days, this is the page that answers in ten seconds.
Alerts and escalation
The part that works when nobody is looking at a screen.
Escalation
Each job type has a claim time. If a job sits unclaimed for that long (counted from its opening, for a scheduled job), WhoanHub does not wait for someone to notice.
- At one claim time the sender is told nobody has claimed it, and the target department's supervisor is told at the same time.
- If nothing happens, it climbs to the next person up the chain.
- It keeps climbing, up to three stages, until somebody acts or the job is claimed.
Every escalation is written to the audit log, so a pattern of jobs climbing to the GM is visible as a staffing problem rather than a series of arguments.
What raises an alert
| Alert | When |
|---|---|
| Unclaimed job | Nobody claimed it within the claim time. |
| Over work time | A held job passed its work time. |
| Deadline missed | A hard delivery time passed. |
| Started outside schedule | Work began before or after its allowed window. |
| No staff on duty | Everyone in a department is on break, with an estimate of when they return. |
| No staff on shift | A department has nobody online at all. |
| Break overdue | Someone did not return from a break in time. |
| Shift overtime | Someone is still on shift past the end, staff first, then the supervisor. |
| Job needs inspection | A job was finished and is waiting for sign off. |
| Team job needs assigning | A multi staff job is waiting for a supervisor to pick the team. |
Ordinary events are notified too: a new job in your pool, a job assigned to you, a job completed, a job blocked or cancelled, a new comment, an inspection confirmed, and announcements.
A job given to you. When someone assigns you a job, a blue bar shows at the top of the app, on the web and on the phone: Lily gave you: 101 · Towels, or You were given 3 new jobs when there are several. It stays until you act on it. Tap it to open My work at that job; tap × to close it. Opening My work yourself closes it too. On the phone, tapping the notification on the lock screen also opens My work at the job; while the app is already open, the blue bar shows instead of the phone's own notification, so you are not told twice. The bar remembers, on each device, what you have already closed.
Where alerts arrive
- In the app
- Live, without refreshing. The notification list is grouped and marked read as you go, and reads You're all caught up when empty.
- Push on the phone
- Built in, including a distinct sound for urgent. It switches on with the published mobile app build.
Notification text is written per person in their own language, so the same alert reaches a Vietnamese supervisor and an English GM correctly.
How your data is protected
Worth reading before a pilot, and worth quoting when a client asks.
One hotel cannot see another
Every single record, jobs, staff, rooms, shifts, comments, notifications, carries the property it belongs to, and the database itself refuses to return rows from another property. It is not a filter in the app that a bug could skip. It is a rule inside the database that applies to every query from every device.
Permissions, not job titles
The system never asks whether someone is called a supervisor. It asks whether they hold a named permission. Roles are yours to invent and rename freely, and security still holds, because the check never depended on the name.
How PINs are kept safe
A four digit PIN is easy to type and easy to guess, so it is protected on every side. PINs are stored scrambled and can never be read back, not even by an administrator. Five wrong attempts lock the account for fifteen minutes. A PIN is never written to a log and never travels inside a login token. All login handling happens on the server, never on the phone.
History cannot be rewritten
Finished and cancelled jobs are final. The audit log can only ever be added to. Managers deactivate staff rather than delete them, so past work keeps the name of the person who did it. The one exception is a person deleting their own account (see Deleting your account): their past work stays, under the name "Deleted staff". If a record could be quietly changed after the fact, none of the reports in Part VI would be worth reading.
Your permission to use AI
When a message does not match any keyword, WhoanHub can send its text to two outside AI services, Google Gemini and TypeSafe, to work out which kind of job it is. Before that ever happens for you, the app asks once: WhoanHub uses AI to assign work, with two buttons, Agree and Don't use AI. It appears the first time you open the app or the web console after your hotel has AI switched on, and everyone is asked, including people who were already using WhoanHub. If your answer cannot be saved because the connection is bad, tap Ask me later to go straight to work; you are asked again next time.
Either answer lets you work. If you choose Don't use AI, your messages are matched by keywords only, and when none matches you pick the job type yourself from the list, as you already do when the AI is unsure. Manager tools that rely on AI (explaining a report, suggesting job types, filling in a guest complaint) also stay off for you and say "You have turned AI off. Turn it on in Privacy."
You can change your mind at any time: open the menu, tap Privacy, and flip Use AI to classify jobs. The same screen links to the Privacy Policy and the Terms of Service. Before any text leaves WhoanHub, phone numbers, emails, booking references and names are hidden, and neither AI service may use it to train its models. If your hotel has AI switched off, the switch is greyed out and nobody is asked.
Deleting your account
Anyone can delete their own account from the phone app: open the menu, tap Delete account, read what will happen, enter your PIN, and tap Delete account. It happens at once and cannot be undone. Your name, phone number, employee code, PIN, sign-in and notification devices are deleted, and you are taken back to the sign-in screen.
Your past work stays in the hotel's records and reports, shown as Deleted staff, because it belongs to the hotel's history. Any job you were holding goes back to the pool, and an open shift or break is closed, the same as when a manager deactivates someone. A deleted account never appears in Staff again and cannot be reactivated; if the person comes back, create a new account.
The hotel's only manager cannot delete their account. The app says "You are the hotel's only manager. Give manager rights to someone else before deleting your account." Someone who no longer has the app can follow the steps at app.whoanhub.com/delete-account, which explains how to ask by email.
Contacting support
Open the menu and tap Support, on the phone app and on the web, right under Guidebook. It opens your mail app with a new email to support@whoanai.com. Write what happened and, if you can, add a screenshot. If your phone has no mail app, the app shows the address instead; write to it from any email account. On the phone, the app version is at the bottom of the menu, under Log out; put it in your email.
Reporting a message
If a message is offensive or should not be there, report it to your managers. Find Report: on a job message, press and hold it (on the web, open its menu); on a comment in a job, tap Report next to the name on the phone, or the ⋯ button on the web; on a discussion message, press and hold it on the phone, or click it on the web (right click for a photo or video). Tap Report, pick a reason (Offensive, Harassment, Inappropriate content or Other), add a note if you like, and tap Send report. Photos and videos can be reported too. You can only report messages other people wrote, and each message once.
The report arrives at once, with a phone notification, for the managers of the department of the person who wrote the message and every admin of the hotel. Managers of other departments are not told, nor are the writer and the reporter. The sender is not told who reported it. If the person reported is an admin, only the other admins are told, and the app offers to also email WhoanHub support. If there is nobody to tell, the app offers that email too.
For managers: open reports show as a bar at the top of the screen, on the phone and on the web. Tap View to read the message as it was when reported, who sent it, who reported it, the reason and the note. If needed, deactivate the sender in Staff. Then tap Mark as handled and the report leaves every manager's bar. Reports are deleted 180 days after they were made.
Quick reference
The full lists, for when you are setting a role up and need the exact wording.
The eighteen permissions
| Permission | Lets the role |
|---|---|
| Create jobs | Send messages that become jobs. |
| Claim jobs | Take an open job from the pool. |
| Confirm inspection | Sign off a finished job that requires inspection. |
| Reassign jobs | Hand a job to a named person, and assign teams. |
| View all jobs | See every job in the property, not just their department. |
| Manage staff | Add, edit, activate and deactivate accounts. |
| View reports | Open live operations, the audit log and room history. |
| View productivity | See productivity for themselves and their chain. |
| Manage roles | Create roles and set their permissions. |
| Send broadcasts | Send announcements. |
| Manage job types | Create job types, their claim and work times, and routing rules. |
| Manage areas & rooms | Edit the places catalogue. |
| Configure shifts | Set shift length, breaks and overtime alerts. |
| Log guest complaints | Write, update and export the guest complaint log. |
Glossary
- Job
- One piece of work with a type, a place, an owner and a clock.
- Job type
- Your own category of work, carrying its claim and work times, outcomes and claim rules.
- Pool
- Unclaimed jobs waiting for whoever is eligible to take them.
- Claim
- Taking a job from the pool: the Claim button in Available jobs, or a double tap on the message in the chat. On the web, a double click anywhere on the message row works, the empty space beside it included. This also starts it.
- Work time
- How long a job type should take once someone claims it; the In progress clock.
- Claim time
- How long a job may wait to be claimed before it escalates; the Unclaimed clock.
- Escalation
- An unclaimed or overdue job climbing the chain until somebody acts.
- Breach
- A target that was missed: claim time, work time, delivery deadline or schedule window.
- Handover
- Passing a job to the next shift at end of shift.
- Inspection
- A supervisor sign off step after a job is finished.
- Announcement
- Information sent to people. Nobody claims it, it is read.
- Discussion
- A small private room for a conversation that is not a job.
- Permission
- A named thing a role is allowed to do. Security is built on these, not on titles.
- Audit log
- The permanent, unchangeable record of every job event.
WhoanHub handbook. Covers the product as built today: accounts, hotel setup, dispatch, jobs, shifts, oversight, alerts. Features still in planning, such as guest requests by QR code and property management system integration, are not described here.