Project Bijli

Methodology

How every number is calculated.

This page explains exactly how Project Bijli calculates every number, so that any figure it shows can be checked and reproduced. The calculation code lives in src/lib/calc/ and is covered by automated tests.

1. Kinds of numbers

Potential savings (what recommendations might save) are always estimates. Measured savings are observed changes in bills after an intervention. They are reported separately and never added together.

2. Basic metrics

3. Anomaly detection

Each month's kWh/day is compared with the school's own history using three simple checks:

  1. Recent average: % difference from the mean of the previous 3 months (needs all 3). Flagged at +15% or more. For term-time months, vacation months are skipped.
  2. Z-score: (this month − mean of previous 12 months) ÷ sample standard deviation of those months. Needs at least 6 earlier months. Flagged at z ≥ 2 (high) or z ≤ −2 (unusually low; not flagged for vacation months). Term-time months exclude vacation months from the history.
  3. Seasonal: % difference from the same calendar month last year, when that bill exists.

A high month is an alert when it is also 15%+ above the same month last year, or (when there is no bill from last year) when both the recent-average and z-score checks trigger. If last year's same month was similar or higher, the rise is shown as info (a seasonal rise). Otherwise it is shown as check: we can't yet tell whether it is seasonal. Data checks also flag missing months, billing periods outside 25–35 days, and bills whose ₹/kWh differs from the school's median by more than 25%. If you mark vacation months, a vacation month using more than 40% of term-time kWh/day is flagged.

4. Recommendation savings estimates

Savings are estimated only where a calculation can be shown. Every recommendation displays its full calculation.

Combined potential avoids double counting: measures on the same end use are combined as E × (1 − (1 − f₁)(1 − f₂)…) instead of being added. Different end uses are added. Recommendations without an estimate (night-time meter test, walk-through, investigating spikes) are not included.

5. Savings calculator

Monthly kWh saved = monthly kWh × reduction %. Monthly ₹ = kWh saved × ₹/kWh. Annual = monthly × 12. CO₂ avoided = annual kWh saved × emission factor. Example: 10,000 kWh × 8% = 800 kWh/month; at ₹8/kWh = ₹6,400/month = ₹76,800/year; 9,600 kWh × 0.710 = 6,816 kg CO₂/year.

6. Measuring interventions

7. School comparison

Opt-in only, and only between schools verified by the Project Bijli team. Uses annual kWh/student, kWh/sq. ft. and ₹/student from schools with at least 6 months of bills in the last 12. Statistics (median, quartiles) are shown only when at least 3 schools qualify. No names, ids or raw totals are shared. Demo schools are compared only with demo schools.

8. Platform totals

Only schools verified by the Project Bijli team are counted; new registrations wait for verification. Potential savings identified = sum of each school's combined potential (estimate, per year). Measured savings = for each school, the same-months-last-year comparison counted from the school's first implemented intervention (so overlapping interventions are not double counted), summed over all matched months so far. Baseline months flagged as alerts are excluded. Negative results are included, not hidden. ₹ values use each school's average price in those months. Demo schools are excluded unless explicitly included.

9. All assumptions and sources

Electricity price: calculated from bills
By default this is calculated from your own bills: total ₹ ÷ total kWh over the last 12 months. Bills usually include fixed charges and taxes, so this average price can be higher than what you save per kWh avoided. If you know your energy charge per kWh, enter it here.
Grid CO₂ emission factor: 0.71 kg CO₂/kWh
Central Electricity Authority (CEA), CO₂ Baseline Database for the Indian Power Sector, Version 21.0 (FY 2024-25): all-India weighted average emission factor 0.710 tCO₂/MWh (= 0.710 kg CO₂/kWh), including renewable generation. Does not include transmission & distribution losses. https://cea.nic.in/cdm-co2-baseline-database/
Flag months above recent average by more than: 15 %
Analysis setting. Lower values flag more months; higher values flag only large jumps.
Unusual-month z-score threshold: 2 standard deviations
Analysis setting. A month is 'unusual' if its daily consumption is this many standard deviations away from the previous 12 months. 2 is a common rule of thumb (roughly the most extreme 5% if usage were normally distributed).
Recent-average window: 3 months
Analysis setting. Each month is compared with the average of this many preceding months.
Z-score history window: 12 months
Analysis setting. Needs at least 6 earlier months before z-scores are calculated.
Minimum months of data before an intervention: 3 months
Before/after comparisons are not shown until there is at least this much 'before' data.
Minimum months of data after an intervention: 2 months
Before/after comparisons are not shown until there is at least this much 'after' data.
Teaching weeks per year: 40 weeks
Planning assumption used with your operating days per week to estimate days of use per year. Replace with your school calendar.
Power of an existing ceiling fan: 75 W
Planning assumption: typical rated input of a conventional 1200 mm ceiling fan at full speed. Check the label/nameplate on your fans.
Power of an energy-efficient (BLDC) fan: 35 W
Planning assumption: typical rated input of a BLDC ceiling fan at full speed. Check the label of the model you would buy.
Share of operating hours fans are on: 0.6 fraction (0–1)
Planning assumption covering seasons when fans are not needed. Adjust for your climate.
Power of an existing (non-LED) light: 40 W
Planning assumption: a standard 4-ft fluorescent tube light is rated at about 36–40 W, excluding the ballast. Check your fittings.
Power of a replacement LED light: 20 W
Planning assumption: a 4-ft LED tube light is commonly rated at about 18–20 W. Check the product you would buy.
Electrical input of one air conditioner: 1.5 kW
Planning assumption: approximate electrical input of a 1.5-ton split AC while the compressor is running. Check the 'rated power input' on your AC's label.
AC running hours per day (cooling season): 5 hours
Planning assumption. Only used if there is not enough bill history to estimate cooling load from seasonal patterns.
AC days per year: 120 days
Planning assumption. Only used if there is not enough bill history to estimate cooling load from seasonal patterns.
AC energy saved per 1 °C higher setpoint: 6 %
Bureau of Energy Efficiency (BEE) / Ministry of Power, Government of India: raising the AC temperature setting by 1 °C saves about 6% of electricity (cited in BEE's 2018 campaign for a 24 °C default setting). Actual savings depend on equipment and climate.
Assumed increase in AC setpoint (e.g. 22 °C → 24 °C): 2 °C
Planning assumption. Set this to the difference between today's typical setting and 24 °C.
AC energy saved by cleaning filters & servicing: 5 %
U.S. Department of Energy (Energy Saver, 'Maintaining Your Air Conditioner'): replacing a dirty, clogged filter can lower an AC's energy consumption by 5–15%. We use the low end.
Fan & light energy saved by switching off in empty rooms: 10 %
Planning assumption. Depends heavily on current habits. Measure it: do a few walk-throughs and count fans/lights left on in empty rooms.
Flag vacation consumption above this share of term-time consumption: 0.4 fraction (0–1)
Analysis setting. If daily consumption during months you marked as vacation is above this share of term-time daily consumption, equipment may be running while the school is closed.

10. Real-world data rules

11. Known limitations