This page is a directory of Korat's mobile business console, built by reading the app's own source (KoratBizConsole.kt) tile by tile, not by describing the app from memory. Where a tile does less than its name suggests, that limit is written next to it, not in fine print at the bottom.
The dashboard opens on today's summary, then a full 103-tile grid
The first thing an owner sees is a summary card with live counts across four groups — tables and orders, stock, staff on shift, and accounting. When a table presses call-staff, a red banner appears at the top rather than a number quietly ticking up in a submenu. A "see all modules" button opens the full 103-tile grid this page walks through.
The full grid is grouped by five fixed category colours — not the user's chosen accent colour — so a glance tells you which family a tile belongs to: blue for selling and storefront, sky for goods and stock, purple for people and time, green for money and documents, amber for customers and service. A tile you lack permission for shows a shield icon instead of a number, and a not-yet-live module dims with a "coming soon" badge — though right now there are none of those left; every module that exists on the web console version has a real mobile entry point.
Selling and storefront — 23 tiles
- Queue
- Customers take a numbered ticket, see their live position, and are told which counter to go to when called
- Tables and orders
- The board of tables and orders currently in progress
- Child pricing tiers
- Age-banded pricing for buffet sessions
- Kitchen
- Confirm, reject or advance incoming restaurant orders through their stages
- Table map and register
- View only — adding, renaming or deleting a table still requires going back to the main app
- Buffet packages
- Buffet packages, pricing and time per session
- On-site event mode
- QR check-in mode for events at the door
- Storefront — sales, location, promos
- Sales settings, venue location and extra storefront promotions
- Website chat embed
- Code to embed this shop's chat button on an external website
- Merge tables / void without charging
- Merge several tables' bills, or close a round with no charge, e.g. spoiled food
- Service profile
- Whether the shop takes table service, queue tickets or takeaway only
- Queue and seating setup
- Configure the queue system and the rules for seating customers
- Walk-in takeaway orders
- Take a takeaway order from a guest who isn't seated at a table
- Distance-based delivery fees
- Delivery fee bands set by distance
- Cross-border sales
- Settings for selling to customers outside the country
- Promotions and coupons
- Create and manage promotions or discount coupons
- B2B sales
- Sales made to corporate customers
- Delivery and pickup orders
- Fulfil delivery or pickup orders customers placed from the web
- Shop orders
- Incoming online shop orders for the shop
- Refund requests
- Review and approve customer refund requests
- Shop deposits
- Review a customer's deposit slip, set deposit policy, and issue refunds
- Events and tickets
- Create an event, price tickets, and confirm payment before a ticket can pass the door
- Branch network
- See combined sales across branches and copy the menu to a new one
Goods and stock — 13 tiles
- Products and menu
- Manage what's for sale — photos, categories, availability, stock
- Raw material and goods inventory
- Draw down and receive stock, see current inventory levels
- Procurement and payables
- Purchase requests, purchase orders, receiving, and accounts payable
- Asset register
- A register of the business's equipment and assets — applies to any business type
- Asset QR labels
- Print QR labels to attach to assets for condition-check scans
- Insurance and claims
- Record asset insurance policies and file claims
- Company purchases
- A register of items the company purchased, linked to the asset register
- Watched machines
- A list of machines or bots the system watches for a dead man's switch
- Shop bots
- Configure the shop's automated reply bots
- Asset depreciation
- Compute asset depreciation under the policy set for it
- Menu availability by stock
- Check which menu items can actually be sold given current stock
- Menu cost and margin
- Compute per-dish cost and margin
- Factory — production and cost
- Production orders, materials consumed, and production cost
People and time — 33 tiles
- Team
- Team roster and shift status
- Leave requests
- Approve or reject leave requests — pending ones surface as a count on the summary card
- Expense claims
- Submit and approve expense claims
- Claim categories
- The registry of claimable expense categories — everyone can read it, but adding a new one needs payroll-management rights
- Commission and bonus
- See commission and bonus, your own or the team's
- Training and skills
- Log staff training history and skills
- Employee documents
- Store each staff member's personal documents
- Brands this shop carries
- A register of the product brands the shop sells
- Employment
- Contracts, probation, termination and severance
- Company staff ID cards
- Issue the business's own digital staff ID cards
- Company name-card template
- Design the company's business-card template
- Verify a staff card
- Scan and verify a staff card is genuine — open to every team member
- Tips and splits
- Log and split tips among the team — everyone can always see their own
- Shift checklist
- A checklist of tasks required for each shift
- Team permissions
- Assign per-person capabilities, or apply a role preset
- Onboarding and payout account
- New hires accept the employment agreement and link their own payout account
- Org structure
- Departments and the reporting hierarchy
- Shift roster and hours
- Build the team's shift schedule
- Company calendar and holidays
- The company's calendar of events and holidays, including Thailand's public holidays already loaded in
- Fix a clock punch
- Correct or void a mistaken clock-in/out punch
- Staff announcements
- Send an announcement to staff — a separate channel from customer announcements
- Job applicants
- See job applications submitted for open roles — requires candidate-search or team-management rights
- Candidate search
- Search people who switched on "let companies find me"
- What I share at work
- The work card a person filled in themselves, visible to the company that employs them
- Business settings
- General settings for the business
- Plugin store
- Install or remove add-on plugins for this shop
- Team room
- Set who receives messages, quota and pins for the team room
- Payroll runs
- Compute and close a payroll run
- Overtime
- View and approve overtime — an ordinary member sees only their own
- PND1 · Thai payroll tax filing summary
- A summary of payroll withholding tax for filing Thailand's PND1 form with the Revenue Department
- My tax
- A staff member's own personal tax allowances — the owner cannot read an employee's
- Fixed pay and bonus
- Set a per-person fixed allowance or bonus that feeds into the payroll run
- Projects
- Assign and track project work within the team
Money and documents — 6 tiles (the one group actually locked by a permission)
This is the only group in the whole console where tiles are genuinely locked by one shared permission (accounting.view), because all three accounting screens read the same underlying tables. Every other group leaves the destination screen to check its own permission with the server and say the missing capability out loud.
- Payment channels
- See which payment channels the shop accepts — read-only; changes are made on the web
- Tax and default product pricing
- Set the shop's tax mode and default pre-tax pricing
- Billing and plan quota
- See the shop package the shop is on and quota remaining — no buy, renew or slip-upload button in the app, deliberately, under Google Play's policy on payment steering
- Finance and reports
- Sales, cash, and profit-and-loss reports
- Company documents
- Issue, convert, cancel documents, and credit notes — a tax invoice still cannot be issued, because nothing in the system yet records any shop's VAT registration
- Accounting
- The shop's bookkeeping
Customers and service — 25 tiles
- Members and customers
- A customer list built from the sales ledger, with notes and tags the shop writes
- Customer notes
- Private notes the shop keeps on individual customers
- Membership cards and packages
- Sell and track customer membership cards or packages
- Member benefits and package pricing
- Set what each membership tier unlocks and its package pricing
- Appointments and bookings
- The appointment calendar, staff-to-service assignment, and per-person availability
- Table reservations
- Take and manage advance table reservations
- Automation
- Automated rules — e.g. sending a message or awarding points on a trigger
- Multi-language translation
- Translate menu or product names into other languages
- Workplace safety
- Report a workplace safety incident — open to every team member, no special permission needed
- Repairs and maintenance
- Open and track repair tickets — anyone can open one and see their own
- Repair categories
- Categories for the repair board — read-only; there is still no screen to create new ones, so every shop is stuck with the same 11 built-in categories
- Stays and hotel
- Room grid, check-in/check-out, and room-key cards
- Stay setup
- Configure room types and amenities
- Room status register
- A register of room status for rooms the room grid has never recorded
- Loyalty report
- A report of the shop's loyalty point numbers
- Loyalty settings
- Set the point rate, minimum spend, point expiry, rewards and membership tiers
- Leasing
- Lease contracts, water/electricity meters, deposits and auto-generated bills
- Parking
- Manage parking spaces and tickets
- Customer call invitations
- Grant a specific customer number permission to call the shop
- Customer announcements
- Send an announcement to customers — count, review, then confirm are all required before anything sends; there is no single tap that fires a message
- Inbox channels
- Set up multiple customer chat teams, and hand a conversation between teams with a note
- Auto-reply
- Configure automated replies to customers
- Blocked customers
- The list of customers the shop has blocked
- Support cases
- Track open customer-service cases
- Wi-Fi code
- The Wi-Fi password shown to customers
Identity and ownership — 3 tiles
- Ownership and transfer
- The list of owners and transferring ownership of the business
- Business verification
- Submit a request to verify the business's identity — what a badge can and cannot evidence
- Suspension status and appeal
- See whether the shop is suspended, and file an appeal if it is
Four core modules, and 160 business types that pick the vocabulary
The 103 modules above are the shared layer every business gets. Sitting under them are four core modules — food, stay, service/clinic, and retail — which decide the extra, trade-specific tiles a business sees (a kitchen display and buffet tiles for a restaurant, a room grid for a stay). The sign-up picker offers 160 named business types across 17 categories; what a type actually changes is the vocabulary on screen and the extra staff roles it unlocks, not the code path — all 160 resolve to one of the four core modules. Five further types exist in the registry for public bodies — government offices, state enterprises, municipal offices, police and rescue stations, and embassies — and are deliberately closed to self sign-up, because those have to be verified first.
Reports that answer the four questions an owner actually asks
Every business type gets the same reporting screen: what did I take today, how many orders, what was the average ticket, and how did people pay — split by cash, Thailand's PromptPay QR rail, and other. Alongside it sits the top five best sellers and a seven-day revenue chart, scoped to today, seven days, thirty days or all time. Because one sales ledger drives both reports and CRM, the revenue chart and a customer's purchase history read the same underlying rows.
CRM and loyalty, built from the ledger, not a form
The customer list is not something staff type in — it's assembled from the sales ledger, so a customer exists in the CRM because they bought something. On top of it sits a loyalty mechanic: points, earned at a rate the shop sets in its own currency, with an optional minimum sale per bill and an on/off switch. The shop sets what a reward costs and what that reward is.
Roles and permissions — what's locked at the tile, and what's locked at the server
Permissions are built from thirteen core capabilities plus whatever the installed modules add. Five role presets ship (owner, manager, waiter, kitchen, general staff), and any member can get per-person overrides on top. Across the whole console, only one group (money and documents) locks its tiles directly with a single shared permission. Everywhere else, the tile itself is not locked — the destination screen asks the server for its own permission and states the missing capability by name when refused (a real server-side 42501), because locking a tile wrongly hides something a person genuinely has the right to — every staff member, for instance, must always be able to see their own tips or commission regardless of what else they can do.
That same permission table is real in the database, as has_capability(business_id, capability), and row-level security policies use it. What's not finished: showing or hiding a tile on the grid still runs on the client, not the whole console being server-enforced. A user missing a capability may still see a tile, tap it, and get a genuine server refusal from the destination screen — that's a real refusal, not a security hole, but it isn't the same hard lock as the accounting group.
Every tile that's still incomplete, stated up front, not in small print: the table map and register is view-only — adding, editing or deleting a table still needs the main app. Repair categories can be read but not created; every shop is stuck with the same 11 built-in ones. Billing and plan quota is view-only, with no in-app buy/renew button, by Google Play policy. Company documents cannot issue a tax invoice, because the system doesn't record any shop's VAT registration yet.
Tile-level permission (show/hide) runs on the client. The real authorization decision is made server-side, via has_capability() and each RPC's own refusal. Only the money-and-documents group locks its tiles directly with one shared permission across the whole group.
The database still runs on a free tier with no automatic backups, and it pauses itself when idle. That's a real constraint on running a business on it.
One business, one page, one inbox
The console also owns the shop's public identity: a page manager for logo, cover photo and gallery, the ability to post to the Korat feed as the business, a customer inbox, and a preview of the public page. A business is one object with one dashboard — storefront, till, staff and customer list are not four products stitched together, and the Plugin Store, under people and time, is where add-ons are installed per shop.
- Real modules
- 103 tiles across 6 groups — no "coming soon" tiles left
- Business types
- food · stay · service/clinic · retail — 160 named subtypes across 17 categories (five more are public bodies, closed to self sign-up)
- Reports
- revenue, order count, average ticket, cash/PromptPay/other split, top 5 sellers, 7-day chart
- Loyalty
- shop-set rate per point, configurable minimum sale and reward
- HR
- GPS clock-in with note, leave approval, overtime past 8 hours a day, hourly or monthly wage
- Permissions
- 13 core capabilities + module capabilities, 5 role presets, per-person overrides
- Still incomplete
- table map is view-only · repair categories can't be created · no tax invoice yet · tile-level permission runs client-side