> For the complete documentation index, see [llms.txt](https://docs.net2grid.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.net2grid.com/net2grid-energy-ai-cloud-interface-specifications/daily-consumer-intelligence/output/suggested-profile-correction.md).

# Suggested Profile Correction

## Suggested Profile Correction

The **Suggested Profile Correction Report** identifies assets that are likely present in an installation based on energy behavior, but are either missing from the user profile or inconsistently declared.

The report answers questions such as:

> “Does the measured energy behavior indicate the presence of assets that are not correctly reflected in the installation profile?”

The detection focuses on:

* Electric Vehicles
* Photovoltaics / Solar Panels
* Space Heating
* Space Cooling

The report is designed to improve profile completeness and consistency, which can increase the accuracy of downstream analytics such as disaggregation, insights, and recommendations.

***

### Key Characteristics

* **Data-driven detection**\
  Asset presence is inferred from energy consumption and production patterns.
* **Profile validation**\
  The report highlights inconsistencies between detected behavior and declared profile attributes.
* **Cloud and Edge execution**\
  Profile correction can be generated by either the Cloud process or the Edge process, depending on the available setup.
* **Report-only by default**\
  By default, no actual profile update is applied to the installation profile. The system only generates and publishes the report.
* **Optional automatic profile update**\
  Actual profile updates can be enabled through label-partner-specific configuration.

***

### Detection Scope

The Suggested Profile Correction Report may include detection results for the following assets:

| Asset                        | Report Key        | Description                                                                         |
| ---------------------------- | ----------------- | ----------------------------------------------------------------------------------- |
| Electric Vehicle             | `electricVehicle` | Detection of an Electric Vehicle that is not correctly reflected in the profile.    |
| Photovoltaics / Solar Panels | `solarPanel`      | Detection of solar panels that are not correctly reflected in the profile.          |
| Space Heating                | `spaceHeating`    | Detection of space heating behavior that is not correctly reflected in the profile. |
| Space Cooling                | `spaceCooling`    | Detection of space cooling behavior that is not correctly reflected in the profile. |

***

### Execution Sources

The report can be generated by two different processes:

#### Cloud Process

The Cloud process can generate profile correction results for:

* Electric Vehicle
* Solar Panel
* Space Heating
* Space Cooling

The Cloud process sends profile correction reports only for **undeclared attributes**.

This means that, for example, if the Electric Vehicle attribute is missing from the profile, the Cloud process may generate a correction report if EV behavior is detected.

#### Edge Process

The Edge process can generate profile correction results for:

* Electric Vehicle
* Solar Panel

The Edge process may generate profile correction reports even when the user has explicitly declared the asset as **non-existing** in the profile.

This means that, for example, if the user has declared `electricVehicle = 0`, but the Edge process detects EV behavior, a profile correction report may still be generated.

**Note:** The Edge process is only supported with the NET2GRID EnergyAI® Edge license.

***

### Report Generation Logic

The Suggested Profile Correction Report can be generated by two different processes, each with its own execution logic.

#### Cloud Process

* The report is generated on the **15th day of every month**.
* It is generated for installations that:
  * have at least one relevant profile attribute that is undeclared or potentially inconsistent
  * do not have secondary meter measurements for the corresponding asset categories
  * meet the required measurement data conditions
  * meet the applicable re-execution rules

#### Edge Process

* The report is generated **dynamically**, whenever a new relevant **edge detection event** occurs.
* No fixed schedule is applied.
* A new report is triggered only when:
  * a new asset detection event is identified on the edge
  * and the re-execution conditions are satisfied

#### Notes

* The `service` field in the report indicates the origin of the detection (`cloud` or `edge`).

***

### Re-execution Logic

To avoid generating repeated reports when no profile update has been performed, asset-specific re-execution rules are applied.

#### If an installation was flagged for profile correction

This means that the asset was detected.

| Asset                         | Re-execution Rule                  |
| ----------------------------- | ---------------------------------- |
| Electric Vehicle              | Re-executed after 6 months         |
| Space Heating / Space Cooling | Re-executed after 1 year           |
| Photovoltaics / Solar Panels  | Excluded from future re-executions |

#### If an installation was not flagged for profile correction

This means that the asset was not detected.

| Asset                         | Re-execution Rule          |
| ----------------------------- | -------------------------- |
| Electric Vehicle              | Re-executed after 1 month  |
| Space Heating / Space Cooling | Re-executed after 3 months |
| Photovoltaics / Solar Panels  | Re-executed after 1 month  |

***

### Requirements

The Suggested Profile Correction Report is generated only if the following requirements are met:

* Measurement data is available for the period for which the report will be generated.
* Measurement data is available for the installation for more than **6 months**.
* The available period includes at least **3 months of winter and summer periods combined**.

#### Measurement Requirements

The required metrics are:

* `CSD` consumption measurements
* `CSR` return-to-grid measurements, when applicable

Supported measurement granularity is 15 or 60 minutes.

Energy injection (`CSR`) may be omitted if no energy is produced in the household.

***

### Installation Profile Impact

By default, the Suggested Profile Correction Report does **not** update the installation profile.

The default behavior is:

* detect possible profile corrections
* generate the report
* publish the report to the customer

#### Optional Automatic Profile Updates

Automatic profile updates can be enabled through label-partner-specific configuration.

When this configuration is enabled:

* detected profile corrections may be applied to the installation profile
* the updated profile may affect downstream processes, including disaggregation

#### Important Constraint

Automatic profile updates are applied only to installations with **non-personalized profiles**.

Installations with personalized profiles are not automatically updated, even if a correction is detected.

***

## Technical Specifications

### Storage Location

The Suggested Profile Correction reports are generated under the S3 export bucket using the following format:

`s3://{exportBucket}/{labelpartner}/reports/{installationIdentifier}/{serviceType}/suggested-profile-correction/{filename}`

#### Path Parameters

* **exportBucket**: the name of the AWS S3 bucket that contains the reports
* **labelpartner**: the identifier of the label partner
* **installationIdentifier**: the external installation identifier provided during end-user provisioning
* **serviceType**: `SM`

#### Filename Format

`{internalInstallationIdentifier}_{executionDate}_suggested_profile_correction.json`

Where:

* **internalInstallationIdentifier**: the internal installation identifier used in NET2GRID EnergyAI®
* **executionDate**: the execution date in `YYYYMMDD` format

***

### Report Format

The report is provided in **JSON format**.

#### Main Fields

| Field         | Type    | Description                                                                                   |
| ------------- | ------- | --------------------------------------------------------------------------------------------- |
| startDate     | string  | Start date of the period over which the detection process was executed, in `YYYYMMDD` format. |
| stopDate      | string  | Stop date of the period over which the detection process was executed, in `YYYYMMDD` format.  |
| timestamp     | long    | UNIX timestamp in milliseconds indicating when the report was produced and published.         |
| version       | string  | Service version, e.g. `2.3`.                                                                  |
| error         | string  | Error code returned for the report.                                                           |
| profileStatus | integer | Profile status: `0` = default profile, `1` = personalized profile.                            |
| service       | string  | Process that generated the profile correction result. Allowed values: `cloud`, `edge`.        |
| insights      | map     | Map containing the detection status and profile declaration status for each supported asset.  |

***

#### Insights Object

The `insights` object contains one entry per supported asset under examination.

Allowed keys:

* `solarPanel`
* `electricVehicle`
* `spaceHeating`
* `spaceCooling`

Each key maps to a `DetectionStatus` object.

**Important Behavior**

Only assets with **positive detection results** are included in the report.

* Assets with `detection = 1` are included in the `insights` object.
* Assets with `detection = 0` are **not included** in the report.

This means that if an asset is evaluated but not detected, it will not appear in the report output.

The absence of an asset in the `insights` object should be interpreted as **no detection for that asset**.

**DetectionStatus Object**

| Field             | Type    | Description                                                       |
| ----------------- | ------- | ----------------------------------------------------------------- |
| detection         | integer | Detection result: `1` = asset detected, `0` = asset not detected. |
| declaredInProfile | integer | Profile declaration status for the asset.                         |

**declaredInProfile Values**

| Value | Description                                           |
| ----- | ----------------------------------------------------- |
| `1`   | The asset is declared in the profile as existing.     |
| `0`   | The asset is declared in the profile as non-existing. |
| `-1`  | The asset is not declared in the profile.             |

***

#### Error Codes

| Code  | Message                        | Report Provided | Description                                                               |
| ----- | ------------------------------ | --------------- | ------------------------------------------------------------------------- |
| null  | -                              | true            | No error occurred during the detection process.                           |
| 30007 | Insufficient Data Measurements | false           | Insufficient measurement data was available during the detection process. |

***

### Example Report File

A Suggested Profile Correction report may be generated in a location such as:

`s3://s3-export-ABC/labelpartnerB/reports/abc123456/SM/suggested-profile-correction/abc123456_20221231_suggested_profile_correction.json`

Example data:

```json
{
  "error": "null",
  "timestamp": 1733298007771,
  "version": "5.3",
  "service": "cloud",
  "startDate": "20220101",
  "stopDate": "20221231",
  "profileStatus": 1,
  "insights": {
    "electricVehicle": {
      "detection": 1,
      "declaredInProfile": -1
    },
    "solarPanel": {
      "detection": 1,
      "declaredInProfile": -1
    },
    "spaceHeating": {
      "detection": 1,
      "declaredInProfile": -1
    },
    "spaceCooling": {
      "detection": 1,
      "declaredInProfile": -1
    }
  }
}
```

***

### Notification Mechanism

A message is published when a Suggested Profile Correction report is generated.

Queue:

`profile_correction_{labelpartner}`

#### Message Format

```json
{
  "bucket": "s3-export-customerA",
  "filename": "/labelpartnerB/reports/abc123456/SM/suggested-profile-correction/abc123456_20221231_suggested_profile_correction.json"
}
```

Routing key:

`{installationIdentifier}.profile_correction`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.net2grid.com/net2grid-energy-ai-cloud-interface-specifications/daily-consumer-intelligence/output/suggested-profile-correction.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
