RotapulseRotapulse 
OverviewTeam fatigueAction queueTrendsComplianceIngestScore a shift
SettingsHelp
← HomeHelp centreHow scoring works

Ingest walkthrough

Rotapulse accepts shift data in several ways. If you use RotaCloud or Deputy, you can now connect it directly in Settings and your rota syncs in automatically, with nothing to export. Otherwise the default tab is Smart Upload: drop any rota file and it figures out the format for you, and you can also use the strict Rotapulse CSV template, paste from a spreadsheet, or type a single shift. However it arrives, every row is validated, scored, and placed on the team grid automatically.

On this page
  1. 1. Ways to bring data in
  2. 2. How Smart Upload works
  3. 3. Tools we import from
  4. 4. CSV format reference
  5. 5. A worked example
  6. 6. What validation checks
  7. 7. What happens after ingest
  8. 8. Common mistakes

On this page

  1. 1. Ways to bring data in
  2. 2. How Smart Upload works
  3. 3. Tools we import from
  4. 4. CSV format reference
  5. 5. A worked example
  6. 6. What validation checks
  7. 7. What happens after ingest
  8. 8. Common mistakes

1. Ways to bring data in

ALive

Connect a tool

Already on RotaCloud or Deputy? Connect it once in Settings, Connections and your rota syncs in automatically, scored as it lands, with nothing to export or re-key. More connectors are on the way.

BDefault

Smart Upload

Drop any CSV, TSV, or XLSX rota file. Rotapulse auto-detects the source format, fingerprints the columns, and pre-fills the mapping for you. Works with exports from Rotacloud, Deputy, BrightHR, TfL rosters, and most other tools without any pre-formatting.

C

Paste from a spreadsheet

Copy a block of cells from Excel or Google Sheets and paste it into the ingest text area. Rotapulse detects columns by header name.

D

Manual entry

Add a single shift by hand using the form fields. Useful for testing a specific scenario or adding one-off shifts without a full rota file.

Whether a row arrives from a connected tool, an upload, a paste, or by hand, it flows through the same validation and scoring pipeline and is treated identically once it clears the header check.

2. How Smart Upload works

Smart Upload is the default tab on the ingest panel and the recommended route for teams exporting rotas from any scheduling tool. You do not need to reformat your file or match the Rotapulse column names. The upload engine handles that step.

1

Drop your file

Drag a .csv, .tsv, or .xlsx file onto the drop zone, or click to browse. Files up to 10 MB are accepted. There is no minimum; a single-day rota is fine.

2

Format detection

The engine fingerprints the file structure against a library of known vendor exports. If it recognises the source (for example "Looks like: Rotacloud export, 87% match") it selects the right mapping profile automatically. Unknown formats fall through to manual column mapping, with the engine's best guess already filled in.

3

Column mapping review

A mapping table shows which of your columns the engine has matched to Rotapulse fields. Each match is labelled exact, likely, or guess. You can adjust any mapping before proceeding; changes are remembered across uploads from the same source.

4

Grid and day-code modes

Standard CSVs (one row per shift) use row mode. If your rota is laid out as a grid with shift codes in the cells (E for early, L for late, N for nights and so on), switch to grid mode and define what each code means once. Transport for London roster format has its own dedicated mode that interprets TfL day codes automatically.

5

Preview and commit

Before anything is written, you see a preview grid showing the shifts as Rotapulse will store them: worker names, start/end times, job types. Fix any mapping issues, then click Import. The data is validated row-by-row and any rejected rows are listed with a plain-English reason.

If Smart Upload misidentifies your format

Adjust the column mapping manually and import. The engine will remember your corrections for the next upload from the same source. You can also switch to the CSV Template tab to use the strict Rotapulse format, which never requires mapping.

3. Tools we import from

Smart Upload fingerprints the file structure against a library of known vendor exports. The tools listed below are auto-detected. If your file does not match any of them it falls through to generic CSV or XLSX detection, with the column matcher filling in its best guess and the mapping UI letting you fix anything it got wrong.

RotaCloud and Deputy can also be connected directly to sync automatically, so you do not have to export a file at all. The list below is about file detection; direct connectors are managed in Settings, Connections.

Auto-detected vendor formats

  • DeputyDay-by-day employee schedules
  • RotaCloudUK care, retail, hospitality
  • PlandayShift type + salary code exports
  • BrightHRRota module with Reference and Job Role
  • Rotareadystaff_name + role_type + pay_rate
  • 7shiftsRestaurant / hospitality schedules
  • Allocate OptimaNHS e-rostering (Assignment Number)
  • HealthRotaJunior doctor and clinical rotas
  • Kronos / UKG DimensionsSchedule Start / Schedule End
  • Quinyxpersonnel_id + activity_type
  • SAP HCMPERNR + BEGDA + BEGUZ + AWART codes
  • WorkdayStart Date Time / End Date Time
  • ADP Workforce NowSchedule In / Schedule Out
  • TfL day-code rosterTransport for London driver duties
  • TruTac TruTimeDriver hours + tacho (Microlise Group)
  • MicroliseFleet schedule + tacho activity
  • NHS ESRElectronic Staff Record roster reports
  • When I WorkFirst Name + Last Name + schedule
  • HomebaseHospitality and retail schedules
  • Workforce.comRegular / overtime / paid + unpaid breaks
  • Fatigue360Rail FRMS, NR/L2/OHS/003, Sentinel
  • Signal SoftwareRail rostering, Network Rail

Generic shapes we also accept

  • Any CSV or XLSX with worker, date, start, end columns in any order
  • Files with split date + time columns (Date + Start Time + End Time)
  • UK dd/mm/yyyy and US mm/dd/yyyy date formats; 24-hour and AM/PM clocks
  • Excel files with Date objects or serial numbers in start/end cells
  • Weekly grid layouts (worker x date, cells contain shift codes like E/L/N)
  • Calendar exports (Outlook, Google Calendar) with Subject and Start Date
  • Mixed shift and absence rows (OFF, AL, REST, SAP AWART codes)

Missing a tool? Drop the file in anyway. If the matcher gets enough columns right we still ingest cleanly; if not, send us a sample so we can add it to the library.

4. CSV format reference

Headers are matched by name, case-insensitive. Column order does not matter. Extra columns are silently ignored. You do not need to strip your export down to just these fields.

Required columns

ColumnTypeExampleNotes
startISO 8601 datetime2026-04-21T06:00:00Shift start in UTC. Include the date, not just the time.
endISO 8601 datetime2026-04-21T14:00:00Shift end in UTC. Must be after start. Overnight shifts are fine; end can be the next day.
break_minutesinteger30In-shift rest in minutes. Use 0 if no break was taken. Below-minimum breaks raise a warning.
job_typestringconcentrationFatigue class: safety_critical, concentration, physical, or routine. Smart Upload also maps free-text job titles (e.g. "Staff Nurse", "HGV Driver") onto one of these. Falls back to a low-intensity default if omitted.

Worker identity: provide at least one

ColumnTypeExampleNotes
worker_refstringEMP-001Your internal employee ID. Use this to match shifts to the same person reliably.
worker_namestringAlice BrennanDisplay name. If you provide worker_ref, name is optional but shown on the grid.

Optional columns

ColumnTypeExampleNotes
worker_rolestringNight supervisorFree-text role label shown on the grid and worker drilldown. Does not affect scoring.
shift_refstringSHF-4421Your internal shift ID. Useful for tracing grid rows back to your source system.
shift_tagstringnightsCustom shift label (early, late, nights, etc.). Displayed on the cell tooltip.
travel_minutes_beforeinteger40Door-to-door commute before the shift, in minutes (0–240). Deducted from the rest window before daily-rest checks run, per the HSE RR446 door-to-door principle.

Download a ready-to-fill CSV template →

5. A worked example

A minimal valid CSV for two workers over two days. This is enough to produce scores and populate the grid.

worker_ref,worker_name,start,end,break_minutes,job_type
EMP-001,Alice Brennan,2026-04-21T06:00:00,2026-04-21T14:30:00,30,concentration
EMP-001,Alice Brennan,2026-04-22T06:00:00,2026-04-22T14:30:00,30,concentration
EMP-002,Ben Okafor,2026-04-21T22:00:00,2026-04-22T06:00:00,20,routine
EMP-002,Ben Okafor,2026-04-22T22:00:00,2026-04-23T06:00:00,20,routine

Alice has two day shifts with a 30-minute break each. Ben has two consecutive night shifts. After upload, Alice will likely score green; Ben will score amber or red depending on rest between his nights and his prior shift history.

6. What validation checks

Every row is checked before scoring runs. Validation is per-row; a bad row does not block the rest of the file. After upload you see a row-by-row error report so nothing silently goes missing.

  • Date parsing. start and end must be parseable ISO 8601 datetimes. Rows with unparseable dates are rejected with a clear error.
  • End after start. If end is before or equal to start the row is rejected. Overnight shifts work correctly; end on the following day is expected.
  • Worker matching. If you provide worker_ref, it is the canonical identity. If you only provide worker_name, matching is done on the exact string; inconsistent spelling creates separate workers.
  • Compliance warnings. Rows that pass validation but fail a compliance threshold (short rest, long shift, inadequate break) produce a warning attached to the score, not a rejection.
  • Duplicates. A row with the same worker_ref, start, and end as an existing stored shift is skipped with a note; it is not double-scored.

7. What happens after ingest

Once rows pass validation they move through a fixed pipeline, in order:

  1. Scoring. Each shift is scored by the deterministic FRI engine. The score is a pure function of the shift data; no network call, no AI. The engine version and compliance profile used are stored alongside the score for reproducibility.
  2. Band assignment. The Fatigue Index is mapped to green, amber, or red. Thresholds are documented on the methodology page.
  3. Warnings generated. Plain-English warnings fire if the shift breaches any compliance threshold: daily rest, break length, consecutive nights, shift duration. These are attached to the cell and visible in the grid drilldown.
  4. Grid populated. The scored shifts appear on the team grid immediately. One cell per worker per day, colour-coded by band. Click any cell for the full breakdown.

That scores the plan. You can also add what actually happened: a tachograph driver-card .ddd upload (Settings, Connections) or a CSV of clock-in and clock-out times attaches the real worked hours to each shift, and the grid then shows the drift between planned and actual fatigue. How the rota and the tachograph combine is explained on the methodology page.

8. Common mistakes

  • Times without a date

    Use full ISO 8601 datetimes: 2026-04-21T06:00:00, not 06:00. The scorer needs the date to compute rest gaps between shifts.

  • Local times instead of UTC

    Send UTC. If your rota tool exports local times, subtract the offset before uploading. BST is UTC+1 in summer, so a 7am BST start is 06:00 UTC.

  • No worker_ref and inconsistent worker_name spelling

    If you rely on worker_name, use it exactly the same on every row for the same person. "A. Brennan" and "Alice Brennan" become two different workers.

  • Missing break_minutes column

    Add a break_minutes column with 0 for shifts without a break. A blank value is treated as unknown, not zero, and triggers a warning.

  • Uploading a single week without prior shifts

    The cumulative fatigue component looks back across prior shifts. Upload the previous 1–2 weeks first to get accurate scores for the current week.

Ready to bring your rota in?

Start free: up to 10 workers, no credit card. Your first scored grid takes about 60 seconds from signup.

Start freeSee a live demo grid first
Something not covered here? Email hello@rotapulse.co.uk and we will help.
On this page
  1. 1. Ways to bring data in
  2. 2. How Smart Upload works
  3. 3. Tools we import from
  4. 4. CSV format reference
  5. 5. A worked example
  6. 6. What validation checks
  7. 7. What happens after ingest
  8. 8. Common mistakes

On this page

  1. 1. Ways to bring data in
  2. 2. How Smart Upload works
  3. 3. Tools we import from
  4. 4. CSV format reference
  5. 5. A worked example
  6. 6. What validation checks
  7. 7. What happens after ingest
  8. 8. Common mistakes