Skip to main content

Notifications overhaul — daily digest, fewer emails

· 5 min read
Skillo Team
Skillo Suppliers

From mid-November 2026, Skillo changes how it tells you about expiring competences, expiring candidate documents and fatigue exceedances. The short version: fewer separate emails, a single Daily Digest at a predictable time, and in-Skillo notifications that summarise what needs attention and link to the new Expiring items page.

Shift-request and timesheet emails are not changing. They stay immediate, because they are tied to an action that needs a prompt response.

The short version​

  • Emails for expiring competences, expiring candidate documents and exceedances are being removed. These events will no longer arrive as individual emails.
  • A new Daily Digest email arrives at 08:00, Monday to Friday. It collects what needs your attention into one message, with links to the relevant candidates and pages.
  • In-Skillo notifications stay and get better. Each expiry notification is a single summary with the current counts, for example "2 competences have expired and 40 will expire soon", and links to a new Expiring items page that lists every competence and candidate document needing attention.
  • Opening a notification marks it as read. This also applies when you open a link from the Daily Digest.
  • Shift-request and timesheet emails are unchanged. They are still sent immediately, as they are today.

Why we are changing this​

Expiry checks and exceedances can produce a lot of separate messages. On a busy day that means several emails about the same candidate, arriving at different times, each needing to be opened to find out who or what it is about. It is easy to lose track of which ones you have already dealt with, and just as easy to miss one in a crowded inbox.

The new approach keeps the information, but changes how it reaches you:

  • Expiry and exceedance updates move into one digest that arrives at the same time each weekday.
  • The detail moves on to the notification itself, so you can see who and what it is about before you click.
  • Links go to the candidate, not to a generic list, so the next step is one click away.

The Daily Digest​

The Daily Digest is an email sent at 08:00 (UK time), Monday to Friday. It is on by default for all active users, and you can turn it off or choose which sections you want to receive.

It has three sections, each of which you can switch on or off:

  • Competence expiries
  • Document expiries
  • Exceedances

All three are on by default. A digest is only sent when there is at least one item in one of your enabled sections, so a quiet day means no digest at all.

Each item links to a filtered view for the candidate or record it is about. The same item also marks the matching in-Skillo notification as read.

Items are included once. The digest reports what has newly crossed a threshold since your last digest, so a failed or missed run does not lose anything: those items appear in your next digest instead of being skipped. You will not receive the same item twice.

What is not in the digest​

Shift requests and timesheets are deliberately left out. These are transactional events where a delay of up to a day would hold up real work, so they keep their current immediate emails.

Better in-Skillo notifications​

Expiry notifications in Skillo used to be sent per candidate. A large organisation with thousands of candidates could receive a flood of notifications after a single expiry run.

From this change, you get one summary notification per type, per expiry run:

  • Competences: the number that have already expired and the number that will expire soon.
  • Candidate documents: the same counts for documents.

The counts show the current position, so they match what you see on the Expiring items page. At most two expiry summaries reach you each day: one for competences and one for documents.

Clicking a summary opens the Expiring items page. Opening a notification marks it as read.

The Expiring items page​

The Expiring items page lists everything that has expired or will expire soon:

  • Competences, with the candidate, the competence, its expiry date and its status.
  • Candidate documents, with the candidate, the document, its expiry date and its status.

Each row links to the candidate. Each section is shown in pages of 25, ordered by expiry date. The page is also available from the competence management tabs as Expiring items.

If your organisation has chosen to send expiry notifications only for primary sponsored candidates, the page and the counts follow the same setting.

Changes to Notification Settings​

In Settings > Notifications, the email option is removed for competence expiries, candidate document expiries and exceedances. These types now arrive by email only through the Daily Digest. Their in-Skillo options stay as they are.

A new Daily Digest section is added to the Notification preferences page. Use it to turn the digest on or off and to choose which of the three sections you want to receive. This choice belongs to each user, not to the company.

Your existing settings are kept. There is no data migration and nothing to re-create.

What you may notice from mid-November​

  • Emails about expiring competences, expiring documents and exceedances stop arriving individually.
  • A Daily Digest starts arriving at 08:00 on weekdays once there is something to report.
  • In-Skillo expiry notifications are a single summary per type, with counts, and open the Expiring items page.
  • The email checkboxes for those three notification types disappear from Notification Settings.
  • Shift-request and timesheet emails behave exactly as before.

Further reading​

note

If you have made it this far and have feedback or other ideas, please reach out by email at team@skillo.co.uk.

Candidate document slots — one per type

· 5 min read
Skillo Team
Skillo Suppliers

From this release, every candidate's documents are organised into document slots. A slot is a single place for one document type on a candidate's profile, for example DBS check or Proof of right to work in the UK, and it holds all the documents of that type.

Nothing has to be re-uploaded and no document has moved on your side. What changed is how Skillo stores and checks those documents behind the scenes, and how the Documents tab presents them.

The short version​

✅ One slot per document type per candidate. All documents of that type sit in the same slot.

✅ Expiry is tracked on the slot. The slot's expiry is the latest expiry among its active documents.

✅ Every new upload or external link needs a document type, so every new document lands in a slot.

✅ Registration and planning checks read the slot, not a loose list of documents.

✅ Existing documents keep working. A migration created the slots from your current documents.

Before: a flat list​

Previously a candidate's documents were a single flat list. Each document carried its own expiry date and status, and the checks that needed to know whether a candidate had, say, a valid DBS check had to search that list for the right document each time. Documents without a type could also sit in the list, and they were invisible to those checks.

That made three things harder than they should be:

  • Finding what is on file. Documents of the same type were scattered through the list, mixed in with documents of other types.
  • Knowing whether a requirement is covered. A type was only "covered" if the right document happened to be found by the check, and the answer could be stale between nightly runs.
  • Renewals. When a certificate was renewed, the old and new documents were separate rows, and nothing tied them together as "the DBS check".

Now: one slot per document type​

Each candidate now has a slot for each document type they have documents for. The slot is the thing that answers the question "does this candidate have a valid document of this type?"

  • Uploads and external links are attached to the slot for their type. Changing a document's type moves it to the new slot, and the old slot's expiry is recalculated.
  • Expiry is tracked on the slot. The slot takes the latest expiry date among its active documents. A renewal uploaded next to an old certificate is enough to keep the type valid, and the slot is not reported as expired while a newer document is still valid.
  • Deleting a document recalculates its slot straight away, so the slot never keeps the expiry of a document that has gone.
  • Documents are grouped on the profile. The Documents tab shows one heading per document type, in alphabetical order, with the slot's expiry date and state on the heading. Documents without a type are listed last, without a heading.

Why the document type is now mandatory​

A slot is only meaningful if every document belongs to one. So from this release, a document type is required for every file upload (including the direct S3 upload path) and every external link.

Existing documents without a type keep working exactly as before. They are shown on the profile and are not moved, but they do not count towards a slot. We recommend editing them and choosing a type so they are grouped with the rest of the candidate's documents.

Competence documents stay per qualification​

Competence documents are deliberately kept out of the slot model. Expiry for competences is checked per qualification, and a single shared slot would collapse several competences into one expiry date. Competence documents continue to work as they did before.

Why this is better​

Clearer profiles. Each document type has its own heading with its expiry state. You can see at a glance what is on file, what has expired and what is about to expire, without reading through the full list.

Consistent answers across Skillo. Registration status and the right-to-work and medical assessment checks in planning now read the slot's expiry. Those checks use the same data as the Documents tab, so the profile and the planning checks agree with each other.

Renewals just work. Uploading a renewal is enough. The slot picks up the new expiry date, and the candidate is not flagged because an older certificate of the same type has expired.

Faster checks. Registration status for a batch of candidates is worked out from a small number of grouped queries rather than a query per document, which keeps the registration checks quick as the number of candidates and documents grows.

A foundation for the next steps. Once every type has a slot, Skillo can show empty slots for required documents that a candidate has not uploaded yet, and send expiry notifications per slot. Both are planned, but they are not part of this release. Expiry notifications still run per document for now.

What you may notice​

  • Documents on a candidate's profile are grouped under headings by type, instead of appearing as one long list.
  • Expiry dates on the group headings may differ from the expiry date of an individual document. The heading shows the latest expiry in the group.
  • When you upload a document or add an external link, you must choose a document type.
  • Registration status can change after this release, as candidates' documents are checked against their slots. If a candidate's status changes unexpectedly, check that their documents have the correct type, and open the Documents tab to see the expiry dates in each group.

For how to upload documents, add external links and read the groups, see Candidate Documents and External Links.

Smarter break modelling — lower Risk Index

· 5 min read

From October 2026, Skillo describes the breaks on a shift to the Fatigue & Risk Index algorithm in a smarter way.

The algorithm itself has not changed, the shifts have not changed, and the break time your workers get has not changed. What changed is how the existing break allowance is spread across the shift when we hand it to the algorithm — and that alone brings the Risk Index down by roughly 8–10% on the most common shift shape (a shift with a 1-hour break, which covers around 90% of the shifts our customers schedule).

The short version​

✅ Same algorithm — we have not touched the HSE Fatigue & Risk Index itself (see Fatigue & Risk Index).

✅ Same shifts, same total break time — nobody's break is shortened, moved, or added.

🔄 The break allowance is now described to the algorithm as several shorter breaks spread evenly across the shift, as long as every piece stays at least 20 minutes. Previously it was described as one single block in the middle of the shift.

📉 The Risk Index decreases on shifts with a recorded break of 40 minutes or more.

⚠️ The Fatigue Index may read slightly higher on some of those shifts — one part of the fatigue score used to be cancelled out by a single long block. The Risk Index, which drives the safety exceedances, improves by more.

How the algorithm sees a break​

The HSE algorithm walks through a shift in 15-minute blocks. Risk builds up the longer someone works without a pause, and every break pulls it back down. The important detail is that the recovery a break gives depends strongly on its length:

Break lengthBuilt-up risk recovered by the break
10 min~20%
13 min~50%
15 min~65%
20 min~93%
30 min or more~100%

The recovery curve falls off a cliff right around 13 minutes. In other words: one long break gives one strong recovery point, but several shorter breaks (20 minutes or more each) give several of them — and no single stretch of continuous work gets long enough for risk to pile up.

Example: a 10-hour shift with a 1-hour break​

The typical Skillo shift. Before, we told the algorithm:

work 4h 30 → break 60 min → work 4h 30

Now we describe the same 60 minutes of break as:

work 2h 15 → break 20 min → work 2h 15 → break 20 min → work 2h 15 → break 20 min → work 2h 15

Same total break time — but three recovery points instead of one, and no work stretch longer than 2h 15. The algorithm rewards that rhythm: the breaks component of the Risk Index drops from 1.045 to 0.958, so the whole Risk Index for such a shift comes out ~8% lower. A candidate sitting at a Risk Index of 70 on such a shift now sits at about 64.

More examples​

ShiftRecorded breakBeforeNowRisk Index change
8 hours1 hour1 × 60 min3 × 20 min≈ −10%
9 hours1 hour1 × 60 min3 × 20 min≈ −8%
10 hours1 hour1 × 60 min3 × 20 min≈ −8%
12 hours90 min1 × 90 min4 × ~22 min≈ −12%
10 hours45 min1 × 45 min2 × ~22 min≈ −5%
anyunder 40 min1 × break1 × break (unchanged)no change

Shorter breaks stay as a single block on purpose: splitting a 30-minute break into two 15-minute halves would push every break below the recovery cliff and actually score worse, not better.

Why 20 minutes?​

Two reasons, and they agree:

  1. The law. 20 minutes is the shortest uninterrupted rest break that counts as a rest break under the Working Time Regulations. It is the smallest break that is meaningful in practice.
  2. The algorithm. The HSE recovery curve gives back almost nothing below ~15 minutes (see the table above). 20 minutes keeps each break firmly on the effective side of the curve while allowing as many recovery points as the break allowance supports.

What does not change​

  • The total break time on the shift — only how it is presented to the algorithm.
  • Shifts with a recorded break under 40 minutes — these are modelled exactly as before.
  • Shifts without a break set — these keep using the standard default parameters.
  • All compliance checks and exceedance thresholds (Fatigue Reduction triggers) — unchanged.
  • The HSE algorithm itself — untouched, as always.

What you may notice​

Existing Risk Index values update as each candidate's fatigue is recalculated (for example when a shift is assigned, edited, or removed), so numbers will shift gradually rather than all at once. On shifts with a break of 40 minutes or more you should see fewer risk exceedances. On some of the same shifts the Fatigue Index may read slightly higher than before — that is the expected trade-off of no longer assuming the whole break lands in one block, and it does not affect the safety-side Risk Index, which improves.

For the full technical description of how the Fatigue and Risk Index are calculated, see Fatigue & Risk Index.

Fatigue 60-Hour Rule Update

· 2 min read
Skillo Team
Skillo Suppliers

The contents of this post have been moved to a dedicated page as they are a core part of the product.


How the triggers are integrated into skillo for suppliers.​

📍 More than 60hrs in 7 rolling days​

✅ ⭕🔴 Only when set in Compliance settings is checked on all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 More than 72hrs in 7 rolling days​

✅ ⭕🔴 Only when set in Compliance settings is checked on all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 14hrs or more door to door​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 More than 12hrs in one shift/working day​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 Less than 12hrs rest between shifts/working days​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 More than 13 day or nights in 14 rolling days​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 Day time fatigue score (FRI) of 35 or more​

✅ The fatigue index is displayed on all day shifts after assignment. It is displayed upfront on all calendar pages and also on the shifts details view.

📍 Night time fatigue score (FRI) of 45 or more​

✅ The fatigue index is displayed on all night shifts after assignment. It is displayed upfront on all calendar pages and also on the shifts details view.

📍 Risk score (FRI) of 1.6 or more​

✅ The Risk score is displayed on all shifts after assignment.

⚠️ For now it is displayed only on the shifts details view, alongside the fatigue index.

Fatigue Reduction (NR/L2/OHS/003)

· 2 min read
Skillo Team
Skillo Suppliers

The contents of this post have been moved to a dedicated page as they are a core part of the product.


How the triggers are integrated into skillo for suppliers.​

📍 More than 60hrs in 7 rolling days​

⚠️ Currently not implemented. Will be implemented in the upcoming weeks.

📍 More than 72hrs in 7 rolling days​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 14hrs or more door to door​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 More than 12hrs in one shift/working day​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 Less than 12hrs rest between shifts/working days​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 More than 13 day or nights in 14 rolling days​

✅ Checked for all rail shifts. Suppliers are not allowed to assign candidates/approve shifts requests that trigger this.

📍 Day time fatigue score (FRI) of 35 or more​

✅ The fatigue index is displayed on all day shifts after assignment. It is displayed upfront on all calendar pages and also on the shifts details view.

📍 Night time fatigue score (FRI) of 45 or more​

✅ The fatigue index is displayed on all night shifts after assignment. It is displayed upfront on all calendar pages and also on the shifts details view.

📍 Risk score (FRI) of 1.6 or more​

✅ The Risk score is displayed on all shifts after assignment.

⚠️ For now it is displayed only on the shifts details view, alongside the fatigue index.