Korat
For owners

The shop's back office — modules you can switch on today

The business console is not one screen with a handful of buttons. It is 103 real modules across 6 groups, and this page is the directory that says what each one does — not a highlight reel that covers ten features and leaves the rest to be discovered by clicking around.

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
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

Frequently asked questions

How many real modules does the business console have?

103, across 6 groups — selling and storefront, goods and stock, people and time, money and documents, customers and service, and identity and ownership. Counted directly from the app's source, not from a marketing list.

There are no "coming soon" tiles left — every module that exists on the web console version now has a real mobile entry point.

Are staff permissions enforced by the server?

Partly, and we won't overstate it. The permission table exists in the database as has_capability(business_id, capability), row-level security policies use it, and each RPC genuinely refuses with a 42501 error naming the missing capability.

But showing or hiding a tile on the grid still runs on the client. Only the money-and-documents group locks its tiles directly with one shared permission across the whole group.

Are there tiles that open but don't fully work yet?

Yes, and this page names them: the table map and register is view-only, adding or deleting a table still needs the main app; repair categories can be read but not created; and company documents can't issue a tax invoice because the system doesn't record any shop's VAT registration yet.

Billing and plan quota is also view-only, with no in-app buy or renew button — that's a deliberate choice under Google Play's payment-steering policy, not a bug.

Does the console work for a business that isn't a restaurant?

Yes. Four core modules are supported — food, stay, service/clinic, and retail — and each adds its own trade-specific tiles. The 103 shared modules (reports, CRM, HR, accounting) are identical across all four.

The sign-up picker offers 160 named business types, and every one of them resolves to one of the four core modules.

How does the loyalty scheme work?

Points accrue at a rate the shop sets in its own currency, with an optional minimum sale per bill. The shop configures what a reward costs and what the reward is, and redeems it from the customer's card.

The loyalty-settings tile controls the point rate, point expiry and membership tiers; the loyalty-report tile is a separate, view-only screen for the numbers.

Set up a business

Create a business, pick its type, and the dashboard builds itself from there.