> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pilotwatt.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Tonight's opportunity

> How PilotWatt scores export, store, and charge EV actions.

PilotWatt continuously scores three actions. The highest score becomes **Tonight's opportunity** on Home, with **Extra Profit**, a confidence band, and **Act before** (how long the opportunity stays current).

| Action        | Meaning                                                    |
| ------------- | ---------------------------------------------------------- |
| **Export**    | Sell from the battery at current Agile export rate         |
| **Store**     | Keep energy in the battery for better solar or rates later |
| **Charge EV** | Charge tonight during cheap import hours                   |

When the top two scores are within **5 points**, PilotWatt returns **idle** (no strong signal) instead of forcing a pick. Store is not recommended when SoC is already ≥ **85%**.

In alpha, if **charge EV** wins but EV UI is hidden, Home may show the next eligible action instead.

## Confidence bands

Home labels each opportunity **High**, **Moderate**, or **Low** confidence — how sure PilotWatt is that the recommended action is the best profit opportunity tonight, not a guaranteed outcome.

## Score factors (summary)

<AccordionGroup>
  <Accordion title="Export score">
    * Current rate vs 24-hour average
    * Bonus if battery SoC > 50%
    * Bonus if tomorrow's solar forecast exceeds today × 1.2
    * Penalty if SoC \< 20%
  </Accordion>

  <Accordion title="Store score">
    * Tomorrow vs today solar forecast
    * Bonus when current rate is well below average (\< 0.7× avg)
    * Penalty if battery nearly full (> 90%)
    * Disabled when SoC ≥ 85%
  </Accordion>

  <Accordion title="Charge EV score">
    * Spread between peak and cheapest overnight rate (23:00–07:00)
    * Bonus when EV SoC heuristics suggest charging is useful
  </Accordion>
</AccordionGroup>

<Note>
  Exact weights live in the app (`lib/domain/optimiser.ts`). Update this page when scoring changes.
</Note>
