Permanently removes all actuals rows for the selected month. This cannot be undone.
Period Sales
--
-- vs Budget
YoY Comparison
--
-- YoY
vs Budget
--
Upload data
Defectors flagged
--
↓ <80% YoY avg
Forecast accuracy
--
Last month MAPE
Total Customers
--
vs budget
Monthly GWh Trend -- Actual vs Budget vs Prior Year Click bar to drill into customers
Click a bar or point to filter customer table below
-- Actual-- Budget-- Actual
Period Mix --
Residential
--
-- vs bud
Commercial
--
-- vs bud
Performance vs Last Year / Budget -- MTD & YTD
MTD · YTD · YoY Variance Summary All segments
✨ AI Commentary — Overview
▾
Click Generate Analysis to produce a narrative summary of the current period.
MTD Commercial
--
-- vs budget
RT40 Gap
--
vs budget
RT50 Gap
--
vs budget
Top Industry
--
YTD leader
Commercial Defectors
--
flagged
Customers
--
commercial accounts
GWh by Rate Class Click bar → customer drilldown below
Click a bar to filter customers
Prior YearCurrent Year
✨ AI Commentary
Click Generate Analysis to produce a narrative summary of the current Commercial data.
Customer Detail -- All Commercial
👤 KAM Performance & Forecast Accuracy
Accuracy % = 100 − MAPE (Mean Absolute Percentage Error between KAM forecasts and actuals). Higher % = more accurate.
KAM data not loaded — upload a KAM sheet or assign accounts in Admin → KAM Assignment.
✨ Commercial AI Commentary
Click Generate Analysis to produce a narrative summary of commercial KAM performance.
Account Movers & Pivot
Top Gainers
Top Decliners
All Accounts
MTD Residential
--
-- vs budget
YTD Residential
--
-- YoY
Residential Customers
--
vs budget
RT10 Bracket Distribution kWh by bracket vs prior year
Prior YearCurrent Year
RT20 Bracket Distribution kWh by bracket vs prior year
Prior YearCurrent Year
Parish × Consumption Bracket Performance
Defection Definition: A customer is flagged as a defector when their 3-month rolling average kWh drops below 80% of the same 3-month average from the prior year. Severity is graded: Critical <50%Severe 50–65%Moderate 65–80%. Requires validation before being confirmed as structural defection vs temporary disruption (hurricane, meter, closure).
Total flagged
--
This period
Critical (<50%)
--
Immediate action
Severe (50–65%)
--
Monitor closely
Moderate (65–80%)
--
Watch list
Validated
--
Rep confirmed cause
Defector Register 3-month rolling avg <80% of prior year · requires validation
Defection by Rate Class
Defection by Cause Category
Period
--
Current forecast month
On trend
--
Customers in line
Off trend
--
Explanation required
MAPE
--
Mean abs % error
Forecasts entered
--
This period
Awaiting forecast
--
Not yet submitted
6-Month Forecast Entry -- by Customer
Enter forecast kWh for each month. 🟢 = on trend with last 3 months & same period last year. 🔴 = off trend -- explanation required.
Macro & Trend Assumptions -- 4-Year Outlook Annual growth rate assumptions by segment
Forecast Accuracy History Actual vs Forecast by month
Total items
--
Pipeline
Opportunities
--
-- kWh
Risks
--
-- kWh
Net position
--
Net position
Defection-fed risks
--
Auto-flagged
Forecast-fed opps
--
Auto-flagged
Risk & Opportunity Register
📋 Monthly Review
Saved locally in browser
Account Reconciliation: Flags accounts where the same account number appears with different customer names, or where similar names exist across multiple account numbers. Review each flag and choose an action: Merge to one name, Keep Separate with a note, or Mark as Duplicate.
Name mismatches
--
Same acct, diff name
Possible duplicates
--
Same name, diff acct
Resolved
--
Actions taken
Pending review
--
Awaiting decision
Discrepancy Register Review and resolve each flag
📖 Glossary
📚 JPS Sales Analytics — User Guide
🚀 Getting Started ▾
1. Connect to the database Click the ○ Offline badge in the top-right toolbar. The app will sign in to Supabase using your JPS credentials and sync all tables. The badge turns ● Live when connected.
2. First-time setup (Admin only) If the badge shows ⚠ Partial, the database tables need to be created. Go to Admin → DB Schema, copy the SQL block, and run it in Supabase Dashboard → SQL Editor → New Query. Then re-sync.
3. Upload your first data file Go to Admin → Upload Data and click Choose Excel File. Your workbook must contain at minimum an Actuals sheet. Download the template from the same page to see the exact column format required.
4. Set the reporting period Use the Period bar below the topbar to select MTD, QTD, YTD, or Annual. Use the Year and Month dropdowns to change the reference period. All charts and KPIs update immediately.
📤 Uploading Data — Sheet Reference ▾
Your Excel workbook can contain any combination of these sheets. Only sheets that are present will be processed:
Sheet Name
Purpose
Key Columns
Actuals
Monthly billed kWh & revenue. Commercial: customer_count=1, bucket blank. Residential: fill bucket + customer_count = billed customers in that bracket.
Commercial + residential in one sheet. Commercial: fill jps_ac, blank bucket, customer_count=1. Residential: blank jps_ac, fill consumption_bucket & customer_count.
Account → KAM. jps_ac = customer number only e.g. 100001 (no dash)
jps_ac, kam
Industries
Account → Industry. jps_ac = customer number only e.g. 100001 (no dash)
jps_ac, industry
Net_Generation
DG generation by month & type
year, month, rate_class, count, kwh
Net_Billers
Net billing customers & export kWh
year, month, rate_class, count, kwh
EV_Accounts
Electric vehicle account counts & MWh
year, month, accounts, mwh
Upload modes: Overwrite month — deletes all existing rows for the selected year/month first, then inserts. Use when re-uploading corrected data for a period already in the DB. Append / upsert — adds new rows and updates existing ones based on the unique key. Use for incremental updates.
Residential vs Commercial in Actuals:
Commercial rows leave consumption_bucket blank and fill demand_kva.
Residential rows fill consumption_bucket (e.g. "0-150", "150-300") and set demand_kva = 0.
📊 Reading the Dashboard — Overview & KPIs ▾
Period selector: MTD = month-to-date (label shows Mar-2026), QTD = quarter-to-date (Q1-2026), YTD = year-to-date (YTD Mar-2026), Annual = full calendar year (2026). Use the Year and Month dropdowns to change the reference period. All charts and KPIs update immediately.
Traffic-light KPI colours:
🟢 Green = ≥ +5% vs prior period / budget
🟡 Amber = between -5% and +5%
🔴 Red = < -5% vs prior period / budget
Overview section: Shows total kWh billed across all rate classes. The Profile bar charts break down by Customer (top accounts), Industry, Rate Class, and Parish. Click any bar to drilldown to that segment. The Variance Summary table shows MTD, YTD, and YoY comparison for each rate class.
Chart controls: Use 🖨 Print to open a print-ready version and 💾 Save to download the chart as a PNG image. ⬇ CSV downloads the underlying table data.
Customers tab: KPI cards show MTD commercial GWh, RT40/RT50 gap vs budget, top industry, and defector count. The GWh by Rate Class chart and AI Commentary panel are shown side-by-side — click Generate Analysis to produce a written narrative. Click any chart bar to filter the customer table to that rate class. Use search and dropdowns to filter further. Increasing ↑ / Declining ↓ trend filter compares current YTD to prior YTD.
KAM & Commentary tab: Shows the KAM Performance table with Forecast Accuracy % (100 − MAPE, comparing entered forecasts vs actuals for the current month). KAMs are ranked from most to least accurate. Click any KAM row to filter the customer table to that KAM's accounts. The AI commentary here focuses on KAM-level performance. Assign KAMs in Admin → KAM Assignment or upload a KAM Excel sheet.
Defection tab: Flags customers whose 3-month rolling average kWh has dropped below 80% of the same 3-month window in the prior year. Severity grades: Critical <50%, Severe 50–65%, Moderate 65–80%. Each flagged account requires a validated cause (Solar/DG, Hurricane, Closure, Unknown) before it is counted as a confirmed structural defector.
Risk & Opportunity tab: Manual pipeline of commercial risks and opportunities. Risks are negative expected kWh impact (e.g. planned DG install, site closure). Opportunities are positive impact (e.g. new connection, expanded load). Use this to track and manage the forward commercial outlook.
🏠 Residential Section ▾
KPIs: MTD residential GWh, customer count YoY, average kWh per customer. Items showing "--" need actuals data uploaded via the Actuals sheet.
Parish × Consumption Bracket table: Shows kWh billed by parish broken down into consumption brackets (0–150, 150–300, 300–500, 500+). Use the bracket filter to focus on a specific usage band. This is key for identifying under- and over-performing parishes relative to prior year.
EV chart: Tracks EV accounts and associated MWh. Early growth signal for load addition from EV charging.
📈 LE Forecast & Forecast Accuracy ▾
Forecast Accuracy section: Compares entered forecasts to actuals. MAPE (Mean Absolute Percentage Error) is the primary accuracy metric — target <5%. Accounts are flagged "On trend" or "Off trend" based on whether actual performance matches the forecast within tolerance.
LE Forecast section: The Latest Estimate view. The LE is a single unified in-year forecast built on top of actuals with adjustments. Sub-tabs include Overview (summary KPIs), Monthly Trend, Customer Risk, Variance (LE vs Budget vs Prior Year), and Pivot & Movers. Versions (snapshots) can be saved at any point for comparison. There are no separate Base/Customer/RC/Advanced scenarios — all adjustments are applied through the unified LE adjustment layer.
Entering a forecast: Navigate to Forecast Accuracy → 6-Month Forecast Entry. Select the account, enter the forecast kWh for each future month, and click Save. Forecasts are stored in the database and visible to all users.
📰 Intelligence — Exec Summary, Variance Bridge, Revenue Recovery, Net Gen ▾
Exec Summary: One-page snapshot of the most important KPIs, commentary, and charts. Designed to be printed or exported as a PDF for management reporting. Populate the narrative boxes via Monthly Review → Commentary.
Variance Bridge: Waterfall chart decomposing the kWh or revenue variance vs budget or prior year into contributing factors (volume, mix, rate, weather, etc.). The bridge is DB-driven — populate via the Revenue Recovery drivers if available.
Revenue Recovery: Tracks USD revenue performance across the billing cycle. Shows budget, quantity effect, mix effect, FX effect, fuel and IPP costs. Upload data via the rr_data table or enter manually.
Net Generation: Tracks distributed generation (DG) output by month and technology type (Solar, Wind, CHP, ALL). Compare DG growth against grid consumption to quantify load displacement risk. Upload via the Net_Generation sheet.
📋 Monthly Review & Commentary ▾
Purpose: The Monthly Review section provides a structured area for the Sales team to document the story behind the numbers. Notes are stored in the database and visible to all authorised users.
Period Close: Managers and Admins can lock a period (year + month) in Admin → Period Close. A locked period prevents further edits to commentary and actuals for that month. This creates a clean audit trail for month-end sign-off.
AI Commentary: Use the Generate Analysis button in the AI Commentary cards (available in Commercial and Overview sections) to auto-generate a narrative draft. The commentary is based on the loaded DB data and can be copied into the Monthly Review notes box, edited, and saved.
🔐 Roles & Permissions ▾
Role
Capabilities
admin
Full access — user management, period locks, data upload, all views.
manager
Upload data, save narratives, approve forecasts, view all sections.
rep
Add notes, validate defectors, enter forecasts for assigned accounts. Read-only otherwise.
analyst
Read-only — no edits.
Role assignments are managed in Admin → Users & Roles. Each user can have a different role for the Sales platform and the FP&A platform — they share the same login credentials but have independent role assignments.
🔍 How to Analyse — Key Questions & Workflows ▾
Why are commercial kWh down vs budget?
1. Check Commercial → Customers — which rate class is driving the gap? RT40, RT50, or RT70?
2. Go to Data Validation — run validation to see GWh Deflections (accounts <80% of prior year) and Dropped Accounts.
3. Cross-reference with Defection — are the declining accounts flagged? What is the validated cause?
4. Check Net Generation — is DG growth absorbing load from specific rate classes?
How to identify new solar installs causing defection?
1. Go to Defection tab in Commercial. Filter by cause = "Solar/DG".
2. Cross-reference flagged accounts with the R&O Pipeline — does a risk entry exist?
3. Validate with the KAM assigned to the account — add a note via the customer drilldown table.
How to build the monthly narrative for management?
1. Sync DB to load latest actuals.
2. Set the period to the month being reported.
3. In Commercial → Customers, click Generate Analysis in the AI Commentary card.
4. For KAM-level narrative, go to Commercial → KAM & Commentary and use the Generate Analysis button there.
5. Copy, refine, and paste into Monthly Review → Commentary. Lock the period in Admin → Period Close.
How to track a large account moving to self-generation?
1. Note the account in R&O Pipeline as a Risk with expected kWh impact and timeline.
2. Flag the account in the Defection register once the 3-month trigger fires.
3. Add KAM commentary to the customer note in Commercial → Customer Detail.
4. Monitor the account month-on-month in Data Validation → MoM Anomalies.
How to verify data quality after uploading actuals?
1. After upload, go to Data Validation and click Run Validation.
2. Check Dropped Accounts — are any prior-year accounts missing? If unexpected, there may be an account number change in the source data.
3. Check GWh Deflections — accounts at <80% of prior year. Are these genuine declines or missing months?
4. Check MoM Anomalies — swings >25% could indicate a billing adjustment, estimated read, or real load event. Investigate before publishing analysis.
🔍 Data Validation — Quality Checks After Upload ▾
Run validation after every data upload to confirm completeness before publishing analysis. Navigate to Data Validation in the sidebar and click Run Validation.
Dropped Accounts: Accounts present in prior-year actuals that have zero rows in the current year. Could be closures, tariff transfers, or data gaps. Export to CSV and investigate any unexpected drops before reporting.
GWh Deflections: Accounts where current YTD kWh is below 80% of the same YTD period in the prior year. Severity: Critical (<50%) or Moderate (50–80%). Cross-reference with Defection Analysis to confirm cause.
Month-on-Month Anomalies: Consecutive months where the same account's kWh swings more than 25%. Common causes: billing adjustment, estimated read, catch-up read, or real load event. Always investigate before using in management reporting.
Reloading data: Go to Admin → Upload Data. Use the 🗑 Delete Month panel to wipe a specific period, or use 🗑 Wipe ALL Actuals (requires typing confirmation code WIPE-ALL) to clear everything before a full reload. Always re-run Data Validation after reloading.
🔐 Admin — Data Management & Controls ▾
Upload Data tab: Upload an Excel workbook (.xlsx) with one or more of the supported sheet names (Actuals, Budget, Residential_Budget, KAM, Industries, Net_Generation, Net_Billers, EV_Accounts). Use Overwrite Month to replace a period, or Append/Upsert for incremental updates. Click ⬇ Download Full Template to get a pre-built JPS_Data_Template.xls file with all 8 sheets and sample rows — opens in Excel, no internet needed.
Delete Month: Removes all actuals rows for a selected year and month. Use before re-uploading corrected data for a specific period.
Wipe ALL Actuals: Deletes every row across all years. Requires typing the confirmation code WIPE-ALL in the confirmation modal. Use only before a full data reload. This action writes an entry to the Audit Trail.
KAM Assignment tab: Assign Key Account Managers to accounts individually or in bulk. Changes save immediately. Alternatively, upload a KAM sheet in the Excel file. KAM assignments affect the Commercial tab filter dropdowns, KAM Performance table, and forecast accuracy ranking.
Period Close tab: Lock a month to prevent further edits to actuals and commentary for that period. Locked periods show a red banner on data-entry screens. Managers and Admins can lock/unlock periods.
Audit Trail tab: Every data upload, delete, wipe, period lock, and KAM change is logged here with timestamp, user, and action details. Non-repudiation record for compliance purposes.
Dropped Accounts
--
-- GWh lost
GWh Deflections
--
-- GWh at risk
No History Groups
--
accounts with no prior year
MoM Anomalies
--
events >25% swing
Last Validated
--
Sync DB to refresh
🚫 Dropped Accounts
Accounts present in prior year actuals but missing from current year
These accounts had billed kWh in prior year but have zero rows in current year. Each could represent a business closure, transfer, or data gap.
Click Run Validation to analyse the data.
📉 GWh Deflections (YTD <80% of Prior Year)
Accounts where current YTD kWh is less than 80% of same-period prior year
⚠ Your current role: --— User management, Delete and Period locks require Admin role. If you are the platform owner, click Claim Admin.
👥 Users & Role Management
Loading users… click Refresh or sync database.
🔐 Role & Permission Matrix
What each role can do
Permission
admin
manager
rep
view
🔒 Period Close & Lock
Locking a period makes all data for that month read-only.
Only Admins can lock or unlock. Edits are blocked on locked periods. Use the Unlock button to re-open if a correction is needed.
Period Close Checklist
Before locking a period, confirm:
·
·
·
·
·
📤 Load Data File
No file loaded
Upload your sales report Excel file. The workbook can contain any combination of the sheets below — only sheets that are present will be processed.
Upload mode
Select file
🗑 Delete Month
Admin only — permanently removes all actuals rows for a period
Year
Month
⚠ DANGER ZONE — Wipe All Actuals
Permanently deletes every row in jps_actuals. Use only before a full data reload. Cannot be undone.
📋 Sheet Reference & Templates
Your Excel file can include any of these sheet names. Only sheets present in the file will be processed — all others are skipped.
The ⬇ Download Full Template button generates a ready-to-use JPS_Data_Template.xls file (7 sheets, sample rows) instantly — no internet connection required.
Actuals
One row per account/bucket per month. jps_ac = full account no. e.g. 100001-001. Commercial: customer_count=1, bucket blank. Residential: fill bucket & customer_count = billed customers in that bracket.
Account → Key Account Manager. jps_ac = customer number only e.g. 100001 (no dash suffix). One customer number covers all sub-accounts.
jps_ac · kam
Industries
Account → Industry segment. jps_ac = customer number only e.g. 100001 (no dash suffix).
jps_ac · industry
Net_Generation
DG installations and generation by month. Same format as Net_Billers.
year · month · rate_class · count · kwh
Net_Billers
Net billing customers and export kWh by month and rate class.
year · month · rate_class · count · kwh
EV_Accounts
EV customer count and charging volume by month.
year · month · accounts · mwh
📥 Import KAM Assignments from CSV
Columns: Customer number, KAM
Select your CSV file. The Customer number column (first part of the account number before the dash, e.g. 100590) will be matched against all accounts in the loaded actuals data. One customer number can map to many account numbers.
No file selected
👤 KAM Assignment
Assign Key Account Managers to accounts individually below, or use the CSV import above. Changes save immediately to the database.
⚡ Quick Assign — Change KAM for Multiple Accounts
From KAM (leave blank for unassigned)
Assign to KAM
⚡ Quick Fix SQL — run this if uploads fail after a schema change
Use this if jps_actuals was created by the FP&A platform with wrong columns (Source, Rate category, Month as text).
Renames the old table to jps_actuals_fpa (safe backup) and creates the correct Sales Platform table with all current columns including customer_count.
Also adds any missing columns to an existing correct table.
-- ══ JPS Sales Platform — Quick Fix ══════════════════════════════════
-- Renames the FP&A raw-dump jps_actuals to jps_actuals_fpa (backup),
-- then creates the correct Sales Platform table.
-- Run in: Supabase Dashboard → SQL Editor → New Query → Run
-- ═════════════════════════════════════════════════════════════════════
do $$ begin
if exists (
select 1 from information_schema.columns
where table_schema='public'
and table_name='jps_actuals'
and lower(column_name)='source'
) then
drop table if exists public.jps_actuals_fpa;
execute 'alter table public.jps_actuals rename to jps_actuals_fpa';
raise notice 'Done: jps_actuals renamed to jps_actuals_fpa';
end if;
end $$;
create table if not exists public.jps_actuals (
id bigserial primary key,
year smallint not null,
month smallint not null check (month between 1 and 12),
jps_ac text not null,
name text default '',
consumption_bucket text not null default '',
kwh numeric(15,2) default 0,
revenue_jmd numeric(15,2) default 0,
parish text default '',
rate_class text default '',
demand_kva numeric(10,2) default 0,
customer_count int default 0,
created_at timestamptz default now(),
unique (year, month, jps_ac, rate_class, parish, consumption_bucket)
);
alter table public.jps_actuals enable row level security;
do $$ declare r record; begin
for r in select policyname from pg_policies
where schemaname='public' and tablename='jps_actuals'
loop
execute format('drop policy if exists %I on public.jps_actuals', r.policyname);
end loop;
end $$;
create policy "Authenticated users can read actuals"
on public.jps_actuals for select using (auth.role()='authenticated');
create policy "Managers can write actuals"
on public.jps_actuals for all using (
exists (select 1 from profiles where id=auth.uid()
and sales_role in ('admin','manager'))
);
notify pgrst, 'reload schema';
-- Verify: this should show the correct columns
select column_name, data_type
from information_schema.columns
where table_schema='public' and table_name='jps_actuals'
order by ordinal_position;
🗄 Full Supabase Schema SQL
ℹ️ First-time setup or new Supabase project
Run this SQL once in a fresh Supabase project to create all required tables.
It is safe to re-run at any time — it uses CREATE TABLE IF NOT EXISTS and only alters tables when a migration is needed.
Come back here and press Ctrl+Shift+R (hard refresh) to re-sync
Idempotent — safe to run multiple times. Detects FP&A format conflicts, renames legacy columns, adds missing columns to existing tables, and reloads the PostgREST schema cache.
📋 Audit Trail
Immutable record of all data uploads, deletions, period locks, KAM assignments and user changes. Last 200 entries shown, newest first.
Segment Scorecard MTD · YTD · vs Budget · vs Prior Year · Status
Total MTD gap vs Budget
--
-- vs -- GWh
Explained (known drivers)
-
From R&O register
Unexplained residual
-
Needs investigation
Explanation rate
-
% of gap explained
Positive drivers
-
Offsetting impacts
Negative drivers
-
Downward pressure
Variance Bridge
Sync data to compute gap. Green bars add to sales, red bars reduce. Grey = start/end total.
Known Drivers Quantified in GWh · linked to R&O register
Add / Edit Driver Quantify a known impact
Driver description
Segment
Impact (GWh, neg = reduction)
Category
Temporary or structural?
Segment Breakdown Contribution to total gap
Revenue Recovery Analysis: Decomposes the gap between Budget, Expected (based on actual volumes and prices), and Actual (including billing adjustments). Drivers: Quantity (kWh volume) · Mix (rate class and on-peak share) · FX (billing exchange rate) · Fuel (unit fuel price) · IPP (variable IPP cost). Upload a revenue data file or sync the jps_revenue Supabase table to populate.
Expected vs Budget
--
Sync revenue data
Actual vs Expected
--
Billing adjustments
Quantity driver
--
Volume vs budget
Mix driver
--
On-peak share
Fuel driver
--
Unit price vs budget
FX driver
--
Exchange rate
Revenue Bridge: Budget vs Expected vs Actual -- USD thousands
Driver Decomposition Budget to Expected variance
YTD Billed Revenue by Rate Class JMD Billions — Prior Year vs Current Year
Prior YearCurrent Year
YTD Revenue Breakdown by Rate Class & Component JMD Billions
Average Tariff Movement JMD/kWh — upload jps_rr_data to populate
Tariff note:Upload revenue recovery data (jps_rr_data) to populate tariff movement commentary.
Defection Response Workflow: For each validated defector, assign a response stage and owner. Expected kWh recovery feeds back into the forecast as a positive adjustment. Structural defections (Solar/CHP) trigger tariff review; temporary (hurricane) trigger restoration tracking.
Open actions
-
Awaiting response
In progress
-
Being actioned
Recovery expected
-
GWh recoverable
Structural losses
-
Accept & reforecast
Avg days open
-
Action items
Closed this period
-
Resolved
Defection Action Register
Recovery pipeline by stage Expected GWh
Structural vs Temporary split kWh at risk
Residential Customers
--
upload customer_count
Avg kWh (RT10)
--
per customer MTD
Consumption Bracket Trends 6-month rolling avg kWh · all parishes
Customer count by bracket -- vs -- YTD
Bracket x Parish Summary MoM variance heat map
Parish-level Residential Defection Signal 3-month rolling avg vs prior year same period
Weather Adjustment: Residential kWh is temperature-sensitive. A hotter-than-normal month inflates consumption; a cooler month deflates it. The adjusted variance strips out the weather effect to show the underlying demand trend. Adjustment based on Cooling Degree Days (CDD) vs 30-year average for Kingston.
Raw vs Weather-adjusted Variance RT10 monthly GWh
CDD vs Residential kWh Correlation Monthly
Total pipeline
-
Items tracked
Revenue at risk
-
JMD Billions
Revenue opportunity
-
JMD Billions
Prob-weighted net
-
JMD Billions
Ageing >90 days
-
Need escalation
Avg days open
-
Open items
Probability-weighted Pipeline JMD Billions at risk or opportunity
Pipeline by Status & Source Item count
Advanced R&O Register With revenue impact, probability & ageing
12-Month R&O History Were risks realised? Opportunities captured?
Report Builder: Select the sections you need, preview the content, then generate a formatted text export or print-ready HTML. The executive narrative, commentary and variance drivers you entered in other tabs are automatically pulled in.
Report sections
Report settings
Report period
Prepared by
Distribution
Confidentiality
Report Preview
No data — sync DB
Monthly Sales — All LE Versions vs Budget vs Actuals
RC Breakdown — Current LE vs Budget
FY Projection vs Prior Year vs Budget
Monthly kWh Trend
Monthly Data Table
Adjust LE — % Override by Dimension
By Rate Class
By Parish
By Industry
By Consumption Bucket
By Customer (search & override)
Adjusted LE Preview vs Current LE vs Budget
Compare LE Versions
RC-Level Comparison Table
Monthly kWh — Net Gen vs Sales vs Losses
Losses % — Actual vs Budget vs LE vs 12-Month Forecast
Monthly Losses Detail
Customer Risk Flags
% below budget · 2+ months
Variance Analysis — Actual vs Budget
Net Generation: Generation data from the JPS grid. Upload via the Net_Generation sheet (columns: year, month, rate_class, count, kwh). Data sourced from net_gen_historical.
Annual Net Generation kWh by year · teal = latest
No data — upload or sync DB
Monthly Trend Last 2 years comparison
YoY Growth Rate Annual % change
Net Generation Historical Data MWh by month · GWh column = annual total