PurrOSDocs

Reports & insights

See how every location is doing, catch problems early, and know what to fix first.

Feature keyinsightsFeature switches
NeedsNothing: works on its own
API9 endpointsAPI reference

What works today

The API provides KPIs, seven built-in reports (JSON or CSV), rule-based recommendations and KPI alert rules. Dashboards, the custom report builder, scheduled reports and the AI assistant are planned. Screens described on this page arrive with the web app; until then, use the API.

Dashboards

Each person sees a dashboard for their role and reach (reports.read):

  • a supervisor sees their team and shift
  • a location manager sees their location
  • a district manager sees their district, with each location side by side
  • an owner sees the whole company

Dashboards update close to real time as sales, punches, counts and checklists come in. Tiles can be rearranged, and admins can set default dashboards per role.

Built-in KPIs

KPIs appear only when the features they need are switched on.

AreaKPIs
SalesNet sales, transactions, average transaction value, sales by channel and hour, vs forecast, last week and last year
LaborLabor cost, labor % of sales, sales per labor hour, scheduled vs actual hours, overtime, forecast accuracy
CashOver/short, late or mismatched deposits, reconciliation differences
InventoryCost of goods and COGS %, variance (gain/loss), waste, count completion
PurchasingSpend, price changes, supplier fill rate
OperationsChecklist completion, failed items, open corrective actions, audit scores
EquipmentDowntime, overdue maintenance, repair cost
PeopleHeadcount, turnover, certifications expiring, time off

Multi-location rollups

Every report can be grouped by the organization hierarchy and compared:

  • Location rankings for any KPI
  • Comparisons with last week, last year, forecast and budget
  • Drill-down from company → region → district → location → shift or employee

Alerts

Create alert rules (alerts.manage) such as "labor % above 28% by 2 pm", "over/short worse than −$20", or "variance above $300 this week". Alerts go to chosen roles within reach by in-app notification, email or push, and optionally by webhook (alert.triggered).

Scheduled reports

Send any report by email on a schedule (reports.schedule), for example the daily flash report at 07:00 or the weekly district summary on Monday, as a PDF, CSV or Excel file.

Custom reports

The report builder (insights.custom_reports, reports.build) lets you choose data, filters, grouping, columns and charts, then save and share the report with roles. Every report can be exported to CSV and Excel, and the same data is available through the API.

insights.recommendations looks across your data every morning and during the day, and lists the biggest issues first (recommendations.read):

Store 102: overtime risk

3 people are projected to pass 40 hours by Friday (+$410). Suggested: move 2 Friday shifts to Jamie and Sam. Owner: Store manager.

Store 110: cash short 3 days in a row

−$64 in total, all on drawer 2, closing shift. Suggested: review drawer 2 counts. Owner: District manager.

Each recommendation explains why it was flagged using your own numbers, suggests a next step and an owner, and can be dismissed or marked done.

No AI required

This works with built-in rules and needs no AI.

AI assistant (optional)

Planned insights.ai_assistant adds a chat assistant that answers questions about your data ("Why was labor high at Store 102 last week?") and helps explain recommendations (ai_assistant.use).

  • It's off by default, and needs both the feature switch and a model provider configured by an admin (see Configuration).
  • You choose the provider, including self-hosted models, so data doesn't have to leave your infrastructure.
  • It only sees data the asking user is allowed to see.
  • Questions and answers are logged for audit.

API & events

EndpointScope
GET /api/v1/kpis?from=…&to=…&locationId=…reports:read
GET /api/v1/reports (the reports available with your features)reports:read
GET /api/v1/reports/{key}?from=…&to=…&locationId=…&format=csvreports:read
GET /api/v1/recommendations?locationId=…reports:read
GET/POST /api/v1/alert-rules, PATCH/DELETE /api/v1/alert-rules/{id}reports:read / reports:write

KPIs cover business dates from–to (inclusive, at most 366 days, default today). They include net sales (less tax and refunds), transactions, average ticket, labor hours and cost (from punches and pay rates, breaks excluded), labor %, sales per labor hour, over/short, waste cost, COGS and COGS %, forms submitted and failed, and current counts of open corrective actions, open work orders and low-stock items. A figure whose feature is switched off is left out of the response.

Built-in reports: sales-by-day, labor-by-day, location-ranking, over-short, waste-by-reason, variance (stock count differences) and stock-valuation (current). A report whose feature is off returns 404.

Alert rules watch one KPI (kpi, comparator gt/lt, threshold, optional locationId). The worker checks them every 5 minutes against today's figures (the location's time zone, or UTC for rules across all locations) and raises alert.triggered at most once per rule per day.

Events: alert.triggered, recommendation.created (planned).

On this page