Dashboard
Revenue Overview
Top Sellers
Product Sales
Store Status
Customer Loyalty
Inventory Alerts
All Customer Reviews
Reviews Requiring Attention (1-3 Stars)
Cash Settlements
Equipment Service
Promotion Performance
Delivery Platforms
Revenue Overview
Hourly Sales Heatmap (Last 7 Days)
Top Sellers
Revenue by Category
Slow Movers
All Customer Reviews
Reviews Requiring Attention (1-3 Stars)
Staff Overview
Order Fulfilment
Delivery Platform Breakdown
Inventory Snapshot
View Full Inventory →Store Comparison
| Store | Revenue | Orders | Avg Ticket | Best Seller | Staff | Fulfilment | Status |
|---|
Nearby Competitors
Price Comparison
Competitor Peak Hours
Stores
| Store Name | Code | Area | Status | Owner | Olsera ID | Manager | Hours | Links | Opened |
|---|
Store Stock Levels
| Ingredient | Category | On Hand | Re-order (days) | Est. Days Remaining | Status | Recommendation |
|---|
Stocktake History
| Date | Store | Items | Completed By | Status | Adjusted | Reason |
|---|
Spill/Waste Log
| Date | Store | Ingredient | Theoretical | Actual | Variance | Spill / Efficiency | Status |
|---|
Staff Directory
| Name | Staff # | Olsera Role | CC Role | Store | Status | Shift |
|---|
Shift Schedule
Recipe Management
Menu items, ingredients, costs and margins
Equipment Management
Espresso machines, grinders, fridges and service logs
Users / Roles
Manage users, roles and page access permissions
Connections & Data
POS integrations, Xero, and external services
Database Management
Data objects, backups, and storage management
Store Management
Store details, locations, and operating hours
All Recipes
| Menu Item | Category | Ingredients | Sell Price | Net Rev | Cost | Cost + Spill/Waste | Spill/Waste Allowance | Margin | Cost Mix | Active Promos | Availability | Status | Version |
|---|
All Ingredients
| Name | Olsera Name | Category | Unit | Purchase Unit | Cost / Purchase Unit | Reorder Point |
|---|
Ingredients Stock
| Ingredient | Category | Unit | Cost / Unit | Last Stocktake | Theoretical Use | Est. Stock on Hand | Re-order (days) | Used In | Stocktake Date |
|---|
▼Completed Transfers
| Date | From | To | Items | Transferred By | Status |
|---|
Equipment Register
| Asset | Asset Tag | Type | Brand / Model | Location | Purchase Date | Purchase Price | Status | Cups Produced | Last Service | Next Service |
|---|
Supplier Directory
| Business Name | Category | Key Contact | Phone | Assigned Purchases | Notes |
|---|
Top 15 — Margin %
Top 15 — Margin Value
Bottom 5 — Margin %
Bottom 5 — Margin Value
Product Detail
▶Outstanding Cash Transfers
▶Cash Shrinkage
▶Resolved Settlements
Store Contribution
Profit & Loss Statement
▶ Operating Expense Detail
| Owner Name | Code | Type | NIB | NPWP | Stores |
|---|
Users / Roles
| User | Role | Page Access | Password | Owner | Store | Status |
|---|
Complete these steps in order at month-end to ensure all data is reconciled and synced across systems.
1Sync Olsera POS Data
What it does: Pulls transaction data from the Olsera POS system for the selected date range across all configured stores. Fetches order details, payment methods, line items, customer data, and loyalty points. Runs on the server (Cloud Function) so you can close the browser during sync.
Sync Orders: Incrementally syncs new orders only (skips already-synced order IDs). Splits into weekly chunks per store — each gets the full server time budget.
Force checkbox: Bypasses the sync index and re-fetches ALL orders in the date range, including ones already synced. Use when order details are incomplete (e.g. after a budget timeout) or data looks wrong.
When to use: Run at month-end to capture all transactions. Set dates to the full month. After sync, check the dashboard to verify totals match Olsera.
Warning: Large date ranges with Force enabled will re-fetch all orders and may take 30-60 minutes due to Olsera API rate limits (429 throttling). Do not run Force unless needed.
2Apply Transaction Adjustments
What it does: Applies payment correction rules to transactions in the selected date range. Two rule types are available:
Apply Rules: Opens a confirmation modal showing which rules will run. Points Burn reclassifies loyalty redemptions as free cups and deducts the drink value from cash expected. Delivery Override reclassifies EDC/transfer payments as GoFood/Grab/Shopee when the order source indicates delivery. Rules are configured on the API & Connections page.
Rollback: Reverts all rule-applied adjustments in the date range back to original Olsera values. Use if rules were applied incorrectly or rules have been updated and need re-applying.
Warning: Apply Rules modifies transaction payment methods and amounts. Always run after Olsera sync (Step 1) and before Cash Reconciliation (Step 5). Rollback will undo all adjustments — you must re-apply rules after rolling back.
3Sync All Data to Firestore
What it does: Manages the cloud backup of all local data tables to Google Cloud Firestore.
Audit Data: Read-only check — scans all tables and shows which are in Firestore, their last updated time (WIB), and flags any that are stale (>24h for frequently-updated tables). Does not modify anything.
Force Sync All: Writes ALL local data tables to Firestore via REST API. Large tables are automatically chunked. Essential before switching computers or after major data changes.
Cleanup Legacy Docs: One-time maintenance — deletes orphaned short-name documents from Firestore left over from the old dual-namespace system. Only needs to be run once.
Warning: Force Sync overwrites Firestore with local data. If another user has made changes on a different device, their changes will be overwritten. Cleanup Legacy Docs permanently deletes old documents — run Audit first to verify data is healthy.
4Xero Accounting Sync
What it does: Syncs financial data from Xero accounting. Three actions available:
Sync Chart of Accounts: Pulls all account codes and names from Xero. Maps them to P&L sections (revenue, COGS, OpEx) for reporting. Only needed when new accounts are added in Xero.
Sync Bank Transactions: Pulls all bank deposits from Xero. These are matched against pending cash settlements in Step 5. Must be run before cash reconciliation.
Pull P&L: Pulls the profit and loss report for the selected date range. If the range spans multiple months, automatically splits into individual monthly pulls and stores each separately. Used for the P&L page.
Warning: Xero token refreshes automatically. If sync fails with an auth error, go to API & Connections and re-connect to Xero. P&L data overwrites existing data for the selected months — ensure Xero entries are finalised before pulling.
5Cash Reconciliation
What it does: Matches pending cash settlements (from Olsera transactions) against bank deposits (from Xero) to confirm that cash was received.
Auto-Reconcile Matched: Scans all pending settlements and finds high-confidence matches — same amount within 0-5 days. Matched items are automatically marked as "confirmed". Ambiguous matches (multiple candidates, >5 day gap) are flagged for manual review on the Cash Management page.
Rollback: Reverts auto-reconciled settlements in the selected date range back to "pending". Use if reconciliation was run with incorrect or incomplete Xero bank data and needs to be re-done.
Warning: Run Steps 1, 2, and 4 (Sync Bank Transactions) BEFORE reconciling. Auto-reconcile marks settlements as confirmed — once confirmed, they are protected from overwrites. Rollback date range must be set to target only the period you want to undo.
Olsera POS
Per-store API keys are used to authenticate with the Olsera monitoring API via the Cloud Function proxy. Credentials are stored in Google Cloud Firestore.
| Store | App ID | Secret Key | Bearer Token | Token Expiry | Status |
|---|
Xero Accounting
Not Connected
Google Cloud Firestore
Firestore is the primary database for this application. All data is stored in the tables collection with offline persistence enabled for cross-device sync.
Console: console.firebase.google.com → coffee-commandcentre
Google Maps
Competitor Scanning + Menu OCR
Required for Competitor Analysis scan and menu OCR. Enable the Maps JavaScript API, Places API, and Cloud Vision API in your Google Cloud Console.
System Architecture
Database Tables
API Connections
Data Recovery
If Firestore data was accidentally reset to defaults, use this button on the device that still has your correct data to push it back to the cloud.
Tax & Charge Settings
Menu prices are inclusive of all taxes and charges. These rates determine the breakdown of net revenue, service charge, and PBJT tax from each sale.
Tender Type Breakdown
▶Transactions
| Receipt # | Date/Time | Store | Cashier | Items | Tender | Earned | Redeemed | Discount | Total |
|---|
Promotion Effectiveness
| Promo Code | Type | Description | Uses | Discount Given | Revenue Influenced | Avg Basket | ROI |
|---|
Discount Share by Promo
Active Promotions
Pricing Recommendations
Loyalty Transactions
Successful Nudges
Customer Segments
Visit Frequency Distribution
Customer Opportunities
Click a persona to see top opportunitiesCompleted Nudges
▶Loyalty Members
Activity Log
| Timestamp | User | Action | Module | Description | Changes |
|---|
Mobile View Configuration
Toggle which pages and components are visible on mobile devicesDevelopment Lifecycle
Sequenced by dependencies & priority| ID | Type | Title | Priority | Status | Dependencies | Created |
|---|
Version History
| Version | Date | Type | Changes |
|---|