{{ screenTitle }}
{{ screenSubtitle }}
{{ sessionModeLabel }}
{{ dm.label }}
Analytics unavailable: {{ analyticsError }}
Insufficient data for this selection
No orders fall inside the selected period and scope. Widen the date range, or import a file covering it.
{{ k.label }}
{{ k.value }}
{{ k.delta }}
Revenue trend
Branch performance
{{ rb.name }}
{{ rb.revenue }} · {{ rb.orders }} orders
Platform performance
{{ ch.name }}
{{ ch.revenue }} · {{ ch.share }}
Peak hours
{{ dbPeakText }}
{{ hr.label }}
Top products
{{ rp.name }}
{{ rp.revenue }} · {{ rp.units }} units
Product performance
Insufficient data. Upload an item-level export that includes a product/item name column to unlock this analysis.
Branches needing attention
Change vs. the preceding period of equal length.
{{ mv.name }}
{{ mv.change }}
Not yet unlocked
These analyses stay hidden until the data behind them exists — nothing is estimated or filled in.
{{ lm.label }}
{{ lm.upsell }}
No real data imported yet
Go to Data Center to upload a file.
{{ noDataText }}
{{ k.label }}
{{ k.value }}
{{ k.delta }}
{{ k.sub }}
{{ t_revenueTrend }}
{{ trendStartLabel }}{{ trendEndLabel }}
{{ t_marketingSnapshot }}
{{ t_topCampaign }}
{{ topCampaignName }}
{{ t_roi }}
{{ topCampaignRoi }}
{{ t_sentiment }}
{{ sentPosPct }}% {{ t_positive }}
{{ sentNegPct }}% {{ t_negative }}
{{ t_branchPerf }}
| {{ t_branch }} | {{ t_revenue }} | {{ t_orders }} | {{ t_aov }} | {{ t_growth }} |
|---|---|---|---|---|
| {{ row.name }} | {{ row.revenue }} | {{ row.orders }} | {{ row.aov }} | {{ row.growth }} |
{{ t_channelPerf }}
{{ c.name }}
{{ c.revenue }}
{{ t_issues }}
● {{ i.title }}
{{ i.detail }}
{{ t_opportunities }}
● {{ o.title }}
{{ o.detail }}
{{ t_watchlist }}
● {{ w.title }}
{{ w.detail }}
{{ t_recommendations }}
{{ r.n }}. {{ r.text }}
{{ t_topProducts }}
{{ p.name }}{{ p.revenue }}
{{ t_bottomProducts }}
{{ p.name }}{{ p.revenue }}
{{ t_suggested }}
{{ q.label }}
Data context
{{ cl.text }}
{{ copilotHint }}
{{ uploadError }}
{{ t_sheetHint }}
{{ t_pasteHint }}
No files uploaded yet
Temporary — Edge Function deployment check
Confirms the deployed function accepts the new mode and replace parameters. Target: {{ probeTargetName }}. Remove this panel once deployment is verified.
{{ probeOut }}
Import history
Every file this organization has uploaded. Removing a record here clears the file's bookkeeping and its parsed rows — imported orders are always kept.
{{ historyError }}
{{ historyNotice }}
FileUploadedRowsImportedSkippedStatus
{{ h.name }}
{{ h.when }}
{{ h.rows }}
{{ h.imported }}
{{ h.skipped }}
{{ h.stageLabel }}
Re-process
Delete
Exact duplicate — identical contents already uploaded
Another upload has the same file hash, so importing this one again would re-process rows already on record. Orders are keyed by platform + order ID, so genuine duplicates cannot be written twice — but choose deliberately.
Delete the upload record for "{{ deleteTargetName }}"?
This removes the file's record and its parsed rows. {{ deleteTargetOrders }} imported order(s) from this file will be kept — orders are business data and are never deleted alongside a bookkeeping record. Re-processing this file later would require uploading it again.
{{ activeFileName }}
{{ t_aiUnderstanding }}: {{ activeFileSummaryText }}
{{ sheetInfoText }}
First 20 rows of the actual uploaded file
| {{ h }} |
|---|
| {{ cell }} |
{{ t_alreadyImported }}
{{ activeFileDuplicateNote }}
Import skipped for this file.
Please select the Brand and Country for this dataset
{{ t_mappingHint }}
| {{ t_sourceCol }} | {{ t_mappedField }} | {{ t_sample }} | {{ t_confidence }} |
|---|---|---|---|
| {{ row.source }} | {{ row.sample }} | {{ row.confidence }} |
{{ t_previewTitle }}
{{ pp.k }}
{{ pp.v }}
{{ t_importedSuccess }}
{{ importSummaryText }}
{{ t_sourceTracking }}
{{ im.k }}{{ im.v }}
{{ t_noUploadAccess }}
{{ realEmptyTitle }}
{{ realFeedbackEmptyText }}
{{ t_positive }}
{{ sentPosPct }}%
{{ t_neutral }}
{{ sentNeuPct }}%
{{ t_negative }}
{{ sentNegPct }}%
{{ topComplaintCallout }}
{{ t_topicBreakdown }}
{{ t.topic }}{{ t.count }}
{{ realEmptyTitle }}
{{ realMarketingEmptyText }}
{{ t_campaigns }}
| {{ t_campaign }} | {{ t_channel }} | {{ t_period }} | {{ t_revenue }} | {{ t_orders }} | {{ t_roi }} | {{ t_status }} |
|---|---|---|---|---|---|---|
| {{ c.name }} | {{ c.channel }} | {{ c.period }} | {{ c.revenue }} | {{ c.orders }} | {{ c.roi }} | {{ c.status }} |
{{ ltoName }} — {{ t_ltoLabel }}
{{ ltoDates }}
{{ t_revenue }}
{{ ltoRevenue }}
{{ t_orders }}
{{ ltoOrders }}
{{ t_rating }}
{{ ltoRating }}
{{ t_positive }}
{{ ltoSentiment }}%
{{ t_topComplaints }}
{{ lc.label }}{{ lc.count }}
{{ t_recommendation }}: {{ ltoRecommendation }}
· {{ rs }}
Sales runs on real data
This screen reads the analytics engine directly. Sign in to your organization to use it.
Analytics unavailable: {{ analyticsError }}
Insufficient data for this selection
No orders fall inside the selected period and scope. Widen the date range, or import a sales file covering it.
{{ k.label }}
{{ k.value }}
{{ k.delta }}
Revenue by platform
PlatformRevenueOrdersAOVShare
{{ ch.name }}
{{ ch.revenue }}
{{ ch.orders }}
{{ ch.aov }}
{{ ch.share }}
Daily sales
Most recent first. Every figure is returned by get_revenue_series.
DateRevenueOrdersAOV
{{ d.day }}
{{ d.revenue }}
{{ d.orders }}
{{ d.aov }}
Products runs on real data
This screen reads the analytics engine directly. Sign in to your organization to use it.
Analytics unavailable: {{ analyticsError }}
Product performance
{{ dbProductNote }}
#ProductCategoryRevenueUnitsPer unitShareMargin
{{ p.rank }}
{{ p.name }}
{{ p.category }}
{{ p.revenue }}
{{ p.units }}
{{ p.perUnit }}
{{ p.share }}
{{ p.margin }}
No product data for this selection
Product analysis needs order line items. The sales report imported so far is order-level only — import a product mix or order items file to unlock this screen.
Branches runs on real data
This screen reads the analytics engine directly. Sign in to your organization to use it.
Analytics unavailable: {{ analyticsError }}
Branch performance
Only branches you are authorized to see, and only those with orders in range. Change is against the equivalent prior period.
#BranchCountryRevenueOrdersAOVShareChange
{{ b.rank }}
{{ b.name }}
{{ b.country }}
{{ b.revenue }}
{{ b.orders }}
{{ b.aov }}
{{ b.share }}
{{ b.change }}
Insufficient data for this selection
No branch has orders inside the selected period and scope. Widen the date range, or import a sales file covering it.
Reports run on real data
This screen reads the analytics engine directly. Sign in to your organization to use it.
Analytics unavailable: {{ analyticsError }}
Executive summary
{{ dbScopeText }}
{{ r.label }}
{{ r.value }}
{{ r.note }}
What the data shows
{{ n.text }}
Not covered by this report
These datasets have not been imported, so no section below draws on them. Nothing here is estimated in their absence.
Insufficient data to build a report
A report needs at least one measurable figure in range. Widen the date range, or import a sales file covering it.
{{ soonLabel }}
{{ soonText }}
Inviting and editing users writes to the database and is not implemented yet. For now, create accounts in the Supabase dashboard and assign roles and access grants directly in the users and user_data_access tables.
How source files name your branches
Reports often write a branch as a short code — ARD rather than Ardhiya. The importer never guesses which branch a code means; it resolves only what you have declared here. Enter the code exactly as the file writes it.
{{ aliasError }}
{{ aliasNotice }}
Declared aliases
Code in fileResolves toSource
{{ al.alias }}
{{ al.branch }}
{{ al.source }}
Remove
No aliases declared yet. Every branch was seeded as an alias of its own name, so only differing spellings need adding here.
What your uploaded data supports
Derived only from data you actually imported — {{ unlockedCount }} analyses currently unlocked.
{{ cr.label }}
{{ cr.status }}
{{ cr.note }}
{{ dh.name }}{{ dh.pct }}
Product CostNot available — not yet uploaded
Fully functional
Client-side file parsing (real XLSX/CSV) · column-mapping heuristic + confidence · validation counts · KPI/growth formulas · role-based UI gating
Mocked (this session only)
Sign-in/sign-up (no identity provider) · user invites · audit log · Data Mode flag · permissions enforcement (checked in the UI, not a database)
Needs a real backend
Persistence across sessions · Postgres + Row Level Security · a real analytics engine over real tables · AI Copilot grounded in authorized live data