Skip to content

06 β€” Review Panel

The Learning Review panel lets you inspect every cleaning run the integration has recorded, understand why a run was or was not used for learning, and manually exclude or restore individual jobs. This matters because the integration's time estimates are built from historical run data β€” if a bad run is included, it skews future estimates.

The panel has two subtabs:

  • Learning History β€” the full list of recorded runs, plus the stats, filters, and Profile Matcher (covered first, below).
  • External Jobs β€” runs started from your robot's own app rather than from this card. These need a quick review to confirm which rooms they cleaned before the integration can learn from them. When any are waiting, the subtab shows a count, e.g. External Jobs (2). See Reviewing app-started runs.

Opening the review panel

The Learning Review panel is a dedicated view inside the card. Navigate to it through the card's view selector, then pick the Learning History or External Jobs subtab at the top.


Overview stats

At the top of the panel, four counters give you a snapshot of what is currently loaded:

Stat Meaning
Jobs Number of jobs matching the Room, Status, Learning Use, and Origin filters. (When more match than the list shows, a note in the Runs section says so. The Profile filter does not currently narrow this count β€” see the note on the Profile filter below.)
Rooms Number of distinct rooms in the history (narrowed by the Room filter only β€” the other filters don't affect this count).
Profiles Number of room + settings-variant combinations matching the Room, Profile, Status, and Learning Use filters. This is keyed on the room plus its full settings signature (profile name, mode, intensity, fan speed, water level, passes, carpet, edge mopping), so the same room and profile name can count more than once if it was ever run with different settings β€” this isn't the same as a count of distinct profile names.
Updated When the history snapshot was last fetched from the integration.

Filters

Below the stats, a row of chip-button filters lets you narrow the job list to exactly what you need. Selecting a filter chip immediately re-fetches the history from the integration with the new parameters applied β€” results update automatically (with one exception, noted under Profile below).

Filter Options
Room One chip per room present in the history, plus "All Rooms".
Profile One chip per cleaning profile present in the history, plus "All Profiles". Profile chips show a tooltip with the profile subtitle when one is available. A small search box above the profile chips filters the chip row as you type (the "All Profiles" chip always stays visible). Selecting a profile chip highlights it and re-fetches, but β€” unlike the other filters β€” it does not currently narrow the Runs list below.
Status All Statuses / Completed / Canceled / Failed / Interrupted.
Learning Use All Learning Use / Used For Learning / Excluded From Learning.
Origin All Origins / External / Dispatched. External runs were started from your robot's own app; Dispatched runs were started by this integration.
Sort Newest / Highest Outlier / Suggested Exclude / Excluded Only.

Sorting is applied locally on the card β€” it does not trigger a new fetch.

Sort modes explained

  • Newest β€” most recent jobs at the top (default).
  • Highest Outlier β€” jobs sorted by outlier score, highest first. Useful for finding runs that deviated most from the average.
  • Suggested Exclude β€” shows only jobs the integration has flagged as candidates for exclusion, sorted by outlier score.
  • Excluded Only β€” shows only jobs you have already manually excluded, sorted by date.

Profile Matcher

The Profile Matcher lets you simulate a room configuration without editing any live room settings. You pick cleaning parameters using chip buttons, and the card tells you which saved learning profiles match exactly.

Fields

Field Options
Cleaning Mode Matches the available cleaning mode options for your vacuum.
Suction Level Matches the available suction level options.
Water Level Only shown when the selected Cleaning Mode involves mopping.
Cleaning Path Matches the available cleaning intensity/path options.
Cleaning Passes Fixed at 1 Pass or 2 Passes. (Unlike the room editor, the matcher does not expand to a vacuum's higher pass counts.)
Edge Mopping On or Off. Only shown when the selected Cleaning Mode involves mopping.

The pass and mode choices follow your vacuum's own vocabulary, so the exact options vary by model.

Roborock (S6): no per-room cleaning mode

The S6 doesn't expose a per-room cleaning mode, so the Cleaning Mode field (and the mopping-only Water Level and Edge Mopping fields) may not appear for it.

How to use it

  1. Set the fields to the combination you want to look up.
  2. The Matched Profiles section updates immediately to show any profiles that are an exact match for those settings.
  3. Click a matched profile chip to select it as the active Profile filter (the same filter described above) β€” the chip highlights, though the Runs list below is not currently narrowed by it.
  4. Click Reset Matcher to return all fields to their defaults.

If no profiles match, the panel says "No exact profile matches for the current settings." Adjust one or more fields until you find a match.


Runs list

The Runs section lists individual cleaning jobs as cards. When the filtered set is larger than what the integration returns in one snapshot, a note under the section header says how many of the matching runs are shown β€” narrow the filters to see the rest.

Clicking anywhere on a job card opens the Run Summary modal for that run (the card's own buttons β€” Exclude, Restore, and the reason chips β€” still do their own thing and do not open it). Each card contains:

  • Job ID β€” the unique identifier for the run.
  • Detail line β€” start date and time, duration in minutes, outlier score (if available), battery used (if available), and water used in ml (if available and non-zero).

Badges

One or more coloured badges can appear on a job card:

Badge Meaning
Excluded This job has been manually excluded from learning.
External The run was started from your robot's own app rather than from this card. This is its own neutral flag β€” it is not a sanity or learning verdict.
Suggested Exclude The integration has flagged this job as a candidate for exclusion.
Non-"completed" status The job did not finish normally (e.g. Canceled, Failed, Interrupted).
Sanity Failed The job failed an internal data-quality check. External runs never show this badge β€” being externally captured is not a data-quality failure.
Recharge A mid-job battery recharge was observed during this run.
Errors / N errors The robot (or its dock) raised one or more errors during the run. This badge carries a small warning triangle, and its tooltip adds the total time spent in an error state (when measured) and which hardware it came from β€” the dock, the robot, or "not attributed to specific hardware". Clicking the badge opens the same Run Summary modal as clicking the card, where each fault is named.
Single Room The job covered only one room.
Multi Room The job covered more than one room.
Room Mismatch On a dispatched run, the robot's live room signal disagreed with the room the run was assigned for part of the clean. The run is flagged for review β€” the assignment is kept, never silently overridden. Open the run to check which room was actually cleaned.

Key-value grid

Each card shows the following fields:

Field Meaning
Rooms The room slugs covered in this job.
Zones The saved zone(s) cleaned during this run, shown when the job included a zone step. Lists the zone name(s); a multi-zone step also shows the count.
Area Cleaned The floor area cleaned this run, in mΒ². Shown when the run recorded a cleaned area β€” external (app-started) runs now carry this for both single- and multi-room cleans.
Scope Whether the job was single-room or multi-room (formatted label).
Profile The cleaning profile used. A subtitle line appears when the profile has extra detail.
Used For Learning Yes or No β€” whether this job was included in the learning model.
Primary Room The primary room associated with this job.

Notes

If the integration provides a reason text for the job (an exclude suggestion reason, a manual exclude or restore reason, a status reason, a learning blocker explanation, a sanity flag, or a cancellation reason), it appears as a plain-text note below the key-value grid.


The Run Summary modal

Clicking a job card β€” or its error badge β€” opens the Run summary modal: one surface that shows what the run was asked to do, what happened in each room, and what went wrong. The modal header shows the job ID; close it with the Close button, the X, or by clicking outside it. (Escape also closes it, but only once focus has moved inside the modal β€” opening it by clicking the row or badge does not move focus there by itself, so Escape has no effect until you've tabbed to a control inside.)

A run captured from your robot's own app shows a short note at the top explaining that some details are unavailable for runs this card did not start.

Throughout the modal, a value the run did not record is simply omitted β€” the card never shows "0" for something it did not measure.

Overall

The top section lists whatever the record carries of:

Field Meaning
Started When the run began.
Elapsed Wall-clock time from start to finish, including docking/washing overhead.
Cleaning time Time actually spent cleaning. Deliberately shown as its own number β€” the difference from Elapsed is the run's overhead.
Area cleaned Total floor area for the run, in mΒ².
Battery used Job-level battery consumption.
Rooms How many rooms the run covered.

If the robot recharged mid-run, a recharge line appears below the grid β€” "Recharged once mid-run Β· 25 min" (or just "Recharged NΓ— mid-run" when the charge duration is unknown). This matters because the battery figure is start-minus-end and cannot see the pack going back up: a run that drew 55% across a recharge would otherwise read as a small number.

The recharge is worked out from the run's record when you open the summary, rather than read back from a verdict frozen at the time. Runs already in your history therefore report it too.

Per room

Each room the run touched (or was queued to touch) gets a row showing:

  • The room name.
  • The settings dispatched for that room, as chips β€” mode, suction, cleaning path, water level, extra passes, edge mopping. These localize into your card language.
  • The result: time spent cleaning, elapsed wall-clock time in the room (only when it differs from the cleaning time), and area cleaned.

A room with settings but the result "Not reached" is normal, not an error β€” it was queued but the run never got to it, so there was nothing to measure.

Errors

When the run hit no faults, this section is absent entirely. Otherwise an "Errors β€” N" section lists each fault:

  • The fault's name, translated into your card language when the integration knows the code (e.g. "Bumper stuck"). A code the card has no label for is shown as Error <code> β€” honest and searchable, rather than a guess.
  • Which hardware raised it β€” Dock, Robot, or "Source unknown" when the brand's tables don't classify it.
  • Recovered or Not recovered β€” whether the fault cleared during the run. The card deliberately never says a fault stopped the run; the record cannot establish that.

The integration stores the fault's code and the card supplies the name, in whichever language you have the card set to. Because the name is resolved when you open the run rather than written into the record, runs already in your history are named too β€” for both brands.


Excluding and restoring jobs

Excluding a job

If a job card has an Exclude button, you can remove that run from learning. Before clicking Exclude, pick a reason using the Exclude Reason chips that appear on the card:

Reason When to use it
Short Test Cancel You cancelled the run quickly as a test, not a real clean.
Manual Test Run You ran the vacuum manually to test something, not as a normal clean.
False Completion The vacuum reported completion but did not actually finish.
Bad Room Attribution The run was attributed to the wrong room.
Interrupted Run The run was cut short by an interruption outside your control.
Custom… Reveals a free-text field so you can record your own reason instead of a preset.

The default reason is "Manual Test Run". Selecting Custom… opens a text box β€” type your reason there before excluding. Click Exclude to confirm. The button shows "Working..." while the action is in progress and is disabled to prevent double-clicks.

Restoring a job

If a job card has a Restore button, the job was previously excluded. Click Restore to include it in learning again. The button shows "Working..." while the action is in progress.

After excluding or restoring a job, the history snapshot is automatically re-fetched and the job list updates to reflect the change.


Reviewing app-started runs

When you start a clean from your robot's own app instead of from this card, the integration records the run but cannot be sure which rooms it covered or what settings each room used. These runs land on the External Jobs subtab and wait for a quick review. Once you confirm them, they feed the learning model just like card-started runs.

The pending list

Each waiting run appears as a card showing roughly when it ran, its estimated room count, its total cleaned area, and how many segments were detected. Two buttons sit on the card:

  • Review β€” opens the two-step review wizard for that run.
  • Discard β€” drops the run entirely. Use this for a run you don't want to keep (a quick test, a mis-detection). Discarding cannot be undone.

If nothing is waiting, the subtab shows a short message telling you to start a clean from the app and check back.

Step 1 β€” How many rooms?

The robot reports its path as a series of segments. The integration's best guess at the room boundaries is shown, but it isn't always right β€” a single room can look like two, or two rooms can blur into one. Step 1 lets you correct the room count before naming anything.

You have two ways to fix the split, and you can mix them freely:

  • Room count stepper β€” at the top, a Rooms counter with βˆ’ and + buttons. Press + to ask for one more room or βˆ’ for one fewer; the integration re-segments the run on the spot and redraws the list. You can't go below one room, and you can't go past the number of boundaries the run actually contains.
  • Split here / Merge up β€” each detected room is listed in order with a one-line summary (area, time, mode, passes). The buttons say what they do:
  • β†₯ Merge up β€” folds this room into the one above it (you decided the boundary was spurious).
  • ↳ Split here β€” appears inside a room when the integration spotted a possible boundary it didn't act on. Click it to break the room in two at that point. A boundary the integration is unsure about is labelled Β· uncertain so you know it's a softer guess.

Every change is applied by re-segmenting on the server, so the room summaries always reflect the current split. While a re-segment is in flight the controls are briefly disabled. If the run can't be split any finer, a short note explains that the count was capped.

When the rooms look right, click Next: name rooms β†’.

Older runs: runs recorded before this feature was added don't carry the detail needed to re-split them. For those, Step 1 falls back to a simpler merge-only view β€” you can still merge over-split segments together, just not re-split or set an exact count.

Step 2 β€” Name each room

Step 2 shows one panel per room (in cleaning order) so you can identify it and correct its settings.

Field What it does
Which room? Pick the room this segment belongs to. The integration's top suggestions appear as chips (with their learned area, when known), and its best guess is tagged suggested β€” but a guess is never pre-selected: you must tap a chip (or the suggestion) to choose. If the right room isn't shown, use the … pick another room dropdown to choose from every room on that map.
Mode Vacuum, Vac & Mop, or Mop. This field is always the same three fixed choices β€” it does not depend on your vacuum model, so it also appears on vacuums (like the Roborock S6) whose room editor has no per-room mode field.
Passes Choose 1Γ— or 2Γ—. This field is always 1Γ—/2Γ—; it does not vary by vacuum.
Suction Suction level, using your vacuum's available options.
Cleaning Path Cleaning path / intensity, using your vacuum's available options.
Water Water level. Only shown when the mode involves mopping.
Edge mop? On or Off. This isn't detected from an app-started run, so set it yourself.

Unlike Mode and Passes (always the same fixed choices), Suction, Cleaning Path, and Water come straight from your vacuum's own vocabulary β€” the same options you'd see in the room editor. Whatever the integration captured from the run is pre-selected, so most rooms only need a confirmation. The dropdown of all rooms is pinned to a dark, readable style so the list stays legible.

If a picked room's area looks very different from what was actually cleaned, the wizard warns you at the bottom: "N rooms don't match the picked area β€” re-pick, or keep anyway." Either re-pick the room or, if you're confident, click Keep anyway to confirm regardless.

Click Confirm to save. The button shows "Saving…" while it works. You must pick a room for every panel first β€” Confirm stays disabled and a note counts how many rooms still need picking. Use ← Back to return to Step 1, or Cancel to close without saving. Once confirmed, the run leaves the pending list and the count on the subtab drops.