Customer money held in trust against supplier money already paid, per brand, in GBP. Refreshed from the Admin sheets every 5 minutes. Cash comes from the latest bank statement PDF of each account.
Cash in the bank
Loading...
Open folders by brand
Loading...
Buy now, pay later: month by month until the last trip
For trips not yet travelled: customer instalments still due against supplier payments still due, by month. "Float" is what customers have already paid minus what suppliers have already been paid. The two running columns show the position if that float is still in the bank, and if it has already been used.
Loading...
Meta spend, Teledesk, QuoteGen, Books
Sales Funnel /This month
Spend to lead to quote to booking, per brand. Quote values for USA and Sri Lanka are in USD. Profit = Book selling price minus Admin Product Sheet cost (Aug 2026 travel onward), refreshed hourly.
Loading...
Live Operations·last update 1m ago
Pulse /Today
What's happening across OWT Group today
Activity Feed
Hourly · Today
Recent Deals
Last 10 confirmed
Live Agent Activity
Team pulse
What's Next
Upcoming departures · 7 days
Cash Ops
Deposits due
Follow-ups
Reminders
Group Command
All 13 brands, rolled up · Payment-date basis
No data yet
Head to Upload Data and load your first monthly P&L file to see this view come alive.
⚠ Visual refactor — data queries preserved from the original view. Verify numbers against accountant reports before treating as final.
Portfolio View
By Brand /All Brands
13 brands across 3 entities · all active
Revenue Trend
Monthly revenue · selected period
Year-on-Year
By quarter
Monthly Breakdown
Current year
Brand Detail
Top Destinations
Placeholder · wire to bookings later
Top Customers
Placeholder · wire to customers later
Recent Bookings
Placeholder · wire to bookings later
Full Comparison
All brands side-by-side
revenue · cost · marketing · net contribution
Year by Year
2021 → today · every brand, every year, side by side
Loading year-by-year stats…
Marketing Performance·QTD
Marketing
Live · per-brand spend & blended ROAS from monthly_pnl. Upload Meta/Google CSVs for per-channel detail.
Brand Performance
Spend · revenue · ROAS · CAC · by brand
Spend vs Revenue
Last 12 months
Budget Allocation
By brand · selected period
Conversion Funnel
Enquiry → Confirmed
Sales-funnel stages (Enquiries → Quoted → Deposit → Confirmed) need a CRM feed. Not connected yet — values will appear once enquiry data is ingested.
Top Creatives
By ROAS · MTD
Per-creative ROAS needs Meta/Google/TikTok campaign exports. Upload via Admin → Marketing Data to unlock.
Margins & Suppliers
True gross profit from supplier costs · OWT & TGU have full product data
Loading margin data…
Expenses
Every pound going out · reconciled from bank statements + cards
Expense trajectory · 12 months
stacked by category
Top categories
QTD
Recent transactions
click a category tag to recategorize
Spend by source
where money leaves from
Intelligence
AI-generated CEO report · SWOT · audit · portfolio review
What this does
one-click full-group review
Pulls every P&L row, marketing spend, ops cost, booking summary and upload-log entry since
company launch, sends the aggregated signal to Claude, and returns an executive report covering
SWOT,
financial audit,
data infrastructure audit, and
portfolio review.
⚠ No AI key saved. Add one in Settings to enable analysis.
Gathering data…
Auto-findings
scanning monthly_pnl…
Cost Transparency
every £ traces to its source EOY row
Audit Import
Load the authoritative audit package · one-time reset
Step 1 · Run migration SQL
aligns Supabase schema with the audit package
Open Supabase → SQL Editor and run
02_audit_migration.sql (brands, destinations, payments, bookings columns)
then 03_suppliers_products_migration.sql (supplier & product tracking for true margin analysis).
Both files are in the dashboard folder.
Step 2 · Wipe polluted transactional data
keeps brands, removes everything else
Removes all rows from bookings, booking_payments, monthly_pnl,
annual_expenses, marketing_spend, ops_cost, upload_log.
Step 3 · Drop the audit package CSVs
auto-detects each file by name
Select all CSV files from owt_group_data_package/csv/. Required files:
brands.csv, destinations.csv, destination_aliases.csv,
bookings.csv, payments.csv.
Also accepted: suppliers.csv, products.csv (unlocks true margin tracking for OWT & TGU).
⬢
Drop audit CSVs here
multi-select OK · processed in dependency order · retries on transient errors
Step 4 · Rebuild monthly P&L from bookings
runs after bookings load
Groups bookings by brand × booking_month and writes a clean monthly_pnl
snapshot. This is what every other view reads.
Documents
Every uploaded file · sorted by category · confirmed & stored
Layer 1 — Deterministic checks: scans every booking and P&L row
to find duplicate bookings, duplicate quote numbers, revenue reconciliation mismatches
(bookings sum vs P&L), suspected currency errors on Lakbay/OWT-USA, and data integrity issues
(negative margins, cost > sale, future booking dates).
Layer 2 — Claude CFO review: reads the findings,
returns root-cause verdicts and a priority-ranked cleanup plan.
ⓘ No AI key saved — Layer 1 checks will still run. Add a key in Settings for the CFO review.
Scanning records…
Upload Data
Monthly Excel sheets from the accountant
🛡
Insert-only mode
New rows will be added. Existing rows are never replaced or deleted. Schema-mismatched files are auto-skipped. Every upload runs inside a session you can roll back in one click.
Upload sessions
one-click rollback per session · last 20
Smart Upload Portal
AI classifies each file and routes it to the right table
Drop P&L, bookings, marketing spend, or ops cost files — any mix, any order.
The classifier reads the columns and filename, picks the right destination, and logs what it did.
Override AI (advanced)
AI Auto-route
Default · recommended
Monthly P&L
Force as P&L
Bookings Log
Force as bookings
Marketing Spend
Force as marketing
Ops Cost
Force as ops
+
Drop any Excel files here
or click to browse · multiple files OK · .xlsx, .xls, .csv
Recent Uploads
audit trail
No uploads yet.
Settings
API keys and integrations
AI provider
used when the uploader can't classify a file on its own
Choose one provider. The key is stored in this browser only — never sent to our database.
Data Sources
Live Google Sheets feeding Profit Tracker & Books · auto-sync every 1–6 hours
READ-ONLY · Your Google Sheets are never modified
Admin access required
Data Sources is available to admins only.
Connected Google Sheets
—
Sync history
last 24 hours
Started
Sheet
Status
Rows
Trigger
Duration
Smart Upload
Drop files · we detect entity, category, year, month, brand · you confirm
Admin access required
Smart Upload is available to admins only.
↑
Drop a file here
or click to browse · PDF · CSV · XLSX · DOCX · max 50MB
?
—
—
—
—
How I figured this out
detection steps
Correct the routing
saved as a learned pattern
Can't find the right slot?
Use the manual drill-down Admin Panel — every category, every year, every brand.
Recently auto-routed
last 10 uploads
↑↑↑
Drop a whole batch
up to 200 files at once · mixed types OK · we detect each then you approve
Detecting…
File
Detected destination
Confidence
Admin Panel
Every document · every brand · every year
Access restricted
The Admin Panel is only visible to CEO / Admin roles.
Expense Review
Extract Bank · Operating · Marketing · Rent from brand Books
Access restricted
Only visible to CEO / Admin / Accountant roles.
Step 1 · Extract expenses from EOY Balance files
drag & drop · parses in browser · no storage upload
Drop one EOY - <BRAND> <YEAR>.xlsx file per brand/year
(e.g. EOY - OWT 2025.xlsx). Multi-select OK. Each file has the 4 expense rows
(3% Bank / Stripe Charges, Operation Cost, Marketing,
UK Office Rent) with 12 monthly values — the parser pulls each row and writes to
expense_extraction_log; findings with confidence ≥ 0.85 auto-apply to
monthly_pnl. Year is taken from the filename; sheet year (a tab called
"2024") and column headers ("Jan-24") are also supported as fallback.
⬢
Drop EOY Balance files here
e.g. EOY - OWT 2025.xlsx, EOY - THUK 2024.xlsx · multi-select OK · one brand per file
Step 2 · Review extractions
loading…
No extractions yet. Drop a Book above to get started.
Live — inflows/outflows from cashflow_monthly, AR aging computed from bookings minus booking_payments. Bank-level cash balance and supplier AP still pending direct feeds.
Cashflow Forecast·13-week rolling
Cashflow
Live · monthly inflow / outflow from cashflow_monthly · 13-month view
Cash on hand
£
£1.82M
▲ +£184Kvs start of month
Net 13-week projection
↗
+£725K
▲ +39.8%vs prev 13w
AR outstanding
⊙
£1.55M
847 bookings
Operational runway
◧
29weeks
at current burn
Weekly Waterfall
Inflows · Outflows · Balance · next 13 weeks
Collection priority
Outstanding receivables · by days to travel
AP Aging
Supplier payables by bucket
What-if · Stress Test
Runway under booking slowdown
0%20%40%60%80%
Projected runway
29 weeks
At current burn rate of ~£140K/wk
Brand P&L
Revenue · COGS · Bank · Ops · Marketing · Rent · Net Profit — from live monthly_pnl
Monthly net profit per brand
revenue − COGS − opex
Profit leaders
brands with the highest real net profit
Loss-making brands
net loss this year — needs attention
Waterfall · Revenue → Net Profit
where the money goes
Monthly breakdown
12-month detail
Year-on-year net margin
historical trend for this brand
Best / worst months
across all years
Destinations
Revenue & margin by destination · across 13 brands
Top 15 destinations by revenue
money-makers
Top 15 by booking volume
popularity
Destination × Brand matrix
revenue £ · top 10 destinations
Money-makers per brand
top revenue destination
Focus recommendations
concentration & margin insights
Customers
Repeat rate · Lifetime value · top-spend ranking
Top customers
loading…
Upload · Document
—
—
Existing file will be replaced.A file was previously uploaded to this slot.
↑
Drop file here, or click to browse
Accepts: PDF, CSV · max 50MB
Category—
Period—
Brand—
Storage path—
Selected fileNo file selected
Connect Google Sheet
1
Pick sheet
2
Map columns
3
Settings
4
Connect
Select a Google Sheet + tab to sync. If you haven't connected Google yet, we'll open the permission popup first.
Connect your Google account
Read-only access to Sheets + Drive metadata. You can revoke anytime.
Column mapping
source header → platform field
Sync frequency
how often we pull from Google
1
hour
3
hours
6
hours
24
hours
✓
Connected
First sync running now — check the history table.
Step 1 of 4 · Select the sheet + tab
ELECTRO
ready · tap mic or type
📥 inbox0
🔒 author
🛠 fixer
⚙ settings
🔊 voice
×
scanning every 5m
— / —scan now
No open items. Electro is watching.
Electro online. Host of the OWT command center. Ask about brands, team, suppliers, customers, P&L — or tell me to call Jarvis for devices.
⚡
Drop the workbook here
Electro will read every sheet, classify it, and propose a mapping before anything is inserted.
⚙ Electro · Settings
Paste your Anthropic API key to give Electro its full tool-use brain (switch_view, query_supabase, highlight_element, send_to_jarvis). The key is stored in this browser's localStorage only — never sent anywhere except api.anthropic.com.
checking…
No key? Get one at console.anthropic.com/settings/keys. Without a key, Electro falls back to /api/electro (live only) → /api/jarvis → desktop Jarvis bridge. The local file:// version needs a key.
🔒 Electro · Author Chat
Private channel between you and Electro. Fully candid here.