Self Learning

The Self Learning tab (AI Insights & People → Self Learning) is the console for the automatic identification pipeline. In the page's own words, it "Automatically links unidentified people to real members by correlating visit patterns with check-in data. Useful when members don't have valid profile photos or their photos are of low quality."

Where face matching answers "does this face look like a member's photo?", Self Learning answers a different question: "does this person's attendance pattern match exactly one member's check-in pattern?" It's how the system identifies members the camera can never match — no photo, or one too poor to pass validation.

Self Learning requires Enhanced AI Analysis to be enabled in CCTV Settings → General. With it off, the correlation runs stop and the Self Learning settings section is hidden.

Self Learning

Figure 1: The Self Learning view — the Decision Flow card, summary counts, and the profile queue

How a profile resolves

Decision flow

Figure 2: The Decision Flow card — "How profiles resolve", with the timestamp of the last correlation run

The Decision Flow card summarises the four outcomes, exactly as the UI lists them:

ConditionOutcome
"Successfully linked to member profile"Automatically Linked
"Has visit/swipe logs but not enough info to link (e.g. missing name)"Unable to Link
"Enough visits + validation checks failed"Pending Review
"No single member correlation"No match

Under the hood, each correlation run (the "Last run:" timestamp on the card) does the following for every unidentified profile:

  1. Correlate the profile's detection times against member check-ins over the lookback period, using a timing window around each check-in (default ±10 minutes).
  2. Count the evidence. The profile needs the configured minimum number of correlated visits — default 8 on the Balanced preset. Profiles with some evidence (3+) but below the minimum stay In Pipeline: "Profiles still gathering evidence from repeat visits and check-ins." The pipeline card shows "Average progress" as "N/M visits".
  3. Demand exactly one candidate. If the visits correlate with more than one member — a couple who always arrive together, for instance — the result is No match. The system will not guess between candidates.
  4. Validate. With one candidate and enough visits, validation checks run: gender alignment between the profile's detected attributes and the member record (on by default), and optionally an age tolerance check. Pass → Automatically Linked. Fail → Pending Review: "Strong timing match, but one or more validation checks did not pass."

Each record carries a confidence score built from visit count, the number of unique days, and the average lag between check-in and detection (a tight, consistent lag scores highest).

All thresholds — minimum visits, lookback, timing window, and validation checks — are configurable with Lenient / Balanced / Strict presets in Settings → Face Recognition → Self Learning.

Self Learning settings

Figure 3: The Self Learning settings — presets, minimum visits, lookback period, timing window, and validation checks

The summary cards

CardMeaning (UI copy)
In Pipeline"Profiles still gathering evidence from repeat visits and check-ins."
Automatically Linked"Successfully matched and linked to a real member profile."
Pending Review"Strong timing match, but one or more validation checks did not pass."
Rejected"Reviewed mismatches that staff have explicitly ruled out."
Monitoring"Profiles being monitored — guests, staff, or ambiguous visit patterns."

The queue

Review queue

Figure 4: The queue — faces, candidate member, visits, average lag, confidence score, and status

Tabs split the queue by state: In Pipeline, Pending Review, Automatically Linked, Unable to Link, Rejected, Manually Approved, and Monitoring. A search box ("Search by name, ID, or personId...") narrows large queues, and a "Duplicates" button on the pipeline tab surfaces suspected duplicate shadow profiles worth merging first — duplicates split the visit evidence and slow everything down.

Table columns: Faces (the profile's detection photos), Person / Member (the shadow profile and its candidate member), Visits, Avg Lag (check-in to camera detection), Score, Status, Updated. Row statuses include "Pipeline", "Pending Review", "Automatically Linked", "Unable to Link", "No Match", "Rejected", plus the transient "Linking..." and "Link Failed" ("Link failed — will retry on next run").

Reviewing pending matches

For each Pending Review row, compare the detection faces against the candidate member's photo and their visit evidence, then:

  • Approve — confirms the match and links the profile to the member. Approvals are attributed ("Approved by ").
  • Reject — rules it out. The dialog asks for a reason — "Please provide a reason for rejecting this match. This will be recorded for audit purposes." (e.g. "Photos clearly show different people, member data is incorrect, etc."). Rejected profiles won't be re-proposed for the same member.

Two more actions round out the workflow:

  • Link — for Unable to Link rows, a manual search dialog lets you pick the right member yourself; the timing evidence is there, the automatic step just lacked the data to finish.
  • Unlink — reverts an automatic link. The confirmation is precise about what it does: "Are you sure you want to unlink this profile? The face data will remain merged with the member but the self-learn record will be reverted." If face data was wrongly merged, follow up in the person's profile.

The other half: keeping recognition fresh

Self Learning also works silently on already-identified people. When a confirmed detection is a near-perfect match (99%+ similarity) and passes quality and pose checks, the system can add it as a shadow photo — capped at a small rotating set of 6 per person, with cooldowns so one visit doesn't flood the set. That's why profiles accumulate photos labelled "Auto-added by self-learning" (People & profiles) — and why recognition keeps working as haircuts, beards, and glasses change.

Practical tips

  • Work the Pending Review queue weekly. Every approval permanently improves identification; every unreviewed row is a member being counted as "Unsure" in your reports.
  • Merge duplicates first. Check the "Duplicates" view before reviewing — merging consolidates visit evidence and often pushes pipeline profiles straight over the threshold.
  • A large Unable to Link tab points at data quality in your member system — typically missing names on check-in-capable records.
  • Couples and training partners who always arrive together are the classic No match case. Identify one of them manually and the ambiguity disappears for the other.