Three tabs
URL-synced (?tab=all|sales|expenses) so you can bookmark the view you actually use.
- All (default)
- Sales
- Expenses
Period KPIs (gross sales, refunds, net revenue, expenses, true net, margin %) plus a chronological day-by-day breakdown showing receipts and expenses interleaved.Use when: doing a daily check — “what happened today / this week?”
Period picker
Presets at the top: This week, Last week, This month, Last month. To go further back, use the Earlier month dropdown beside them — it lists the twelve months behind those presets, so in August you can still pull up June. The URL stays bookmarkable:?preset=this_month&tab=expenses.
Every KPI card also carries its change against the previous period — a whole calendar month is compared with the month before it, anything else with the equal-length window ending the day before. Colour follows the meaning rather than the arrow: expenses falling is green, gross sales falling is red.
Busiest hours
A day-by-hour grid of when customers actually walk in, below the daily breakdown on the All and Sales tabs. It answers the question the daily totals can’t: not how much you sold, but when. Use it to set opening hours and rosters. A shop that opens at 8am but sees nothing before 10am is paying for two hours of staff and electricity; a Saturday evening rush that outruns your cover is a lost queue.The summary
Three figures sit above the grid, each with its share of the period’s receipts:Busiest day
The weekday carrying the most receipts. Roster around this one first — a Monday and a Saturday are effectively different businesses.
Peak window
The run of hours around your busiest hour, not a single hour. “6pm–10pm” is a staffing decision; a lone hour is usually just where the clock boundary fell.
Quietest stretch
The slackest two hours you’re open for. The first candidate if you’re thinking about trimming hours.
Reading the grid
Rows are Monday to Sunday, columns are hours of the day. The darker a cell, the busier that hour. Hover or focus any cell for the exact figures, and switch to the Table tab for the same numbers as text, ranked busiest-first with each hour’s share of the period.The grid counts receipts, not ringgit. One large catering order is a single customer arriving — shading by revenue would light up an hour nobody queued in. Refunds are left out entirely, because a refund gets processed whenever you get round to it and says nothing about when the shop was full.
How the numbers are worked out
Why an average rather than a total
Why an average rather than a total
Each cell is receipts per occurrence of that weekday, not the raw total. A month holding five Fridays and four Sundays would otherwise shade Friday darker on the strength of the calendar rather than the customers.
Hours shown
Hours shown
Columns are trimmed to the span that saw trade, so a shop open 8am–5pm doesn’t read its week across a grid two-thirds full of midnight. A quiet period falls back to a 7am–10pm window.
Trading past midnight
Trading past midnight
The quietest stretch only ever looks at hours you’re actually open. For a bar trading 3pm–2am the day wraps past midnight, so the longest unbroken run of empty hours is treated as the closure and everything else as the trading day. You won’t be told your quietest stretch is 4am.
How long until it's meaningful
How long until it's meaningful
A single week is enough to see a shape, but one unusual day skews it. Give it three or four weeks of receipts — or pick a full month from the period picker — before you move anyone’s shift.
Day drill-down
Click any date row to drill into a single day at/pulse/activity/days/2026-04-15. The day page has two tabs:
Receipts
Read-only, sourced from your connected Loyverse POS. Shows line items, modifiers, and payment methods per receipt.
Expenses
Add, edit, or delete cash expenses. Photo upload supported (camera capture on mobile).
Adding a cash expense
1
Open the Expenses tab
Either from the Activity period view (
?tab=expenses) or from a specific day’s drill-down.2
Tap Add expense
Fill in: date, category, amount in MYR, vendor name, optional notes.
3
Attach a receipt photo (optional)
Tap the photo button. On mobile, opens the camera directly.
4
Save
Appears immediately in the day’s totals and in the period KPIs.

