For Team Leaders, Heads and admins
Reporting
Two tabs. Compliance is the trend: who marks, who marks late, whose rolls come back. Marking & rostering is the worklist: yesterday's classes that need chasing, grouped by team leader. Both are scoped by the org chart, so you see your own team without anyone giving you an admin role.
Whose classes you see
Open Reporting in the header. Your reporting line decides what is in it, not your app role. A Team Leader is an ordinary tutor as far as the app's permissions go and should not need to be made an admin to read their own team's marking.
| If you are | You see | The page says |
|---|---|---|
| A tutor | Your own classes. | Your own classes |
| A Team Leader | Yourself and everyone below you in the reporting tree, however many levels down. | Your team (N people) |
| A Head | The same, plus every class in your department's subjects, whoever taught it. Covering a subject is not the same as managing a line. | Your team and subject codes |
| An admin or owner | Everything. | Everyone |
| Campus Experience | Nothing. Reporting is about how the tutor body marks; Campus staff have the Campus page. The server refuses the page with "Reporting is for tutors and admins. Campus reviewers use the approval queue." |
A class counts as yours when you, or someone in your line, was rostered as its primary or secondary tutor, or was recorded as having actually taught it, including as a cover. For a Head it also counts when its subject is one of the department's.
Only the default CRM is reported. That is Monday unless an admin has switched everyone to HubSpot (see System controls).
Reporting lines come from the org chart, which is imported from the HR reporting-lines sheet. Nothing set in this app changes them. If someone is missing, or is there and shouldn't be, fix the org chart, not the app.
Filters
The same filters sit above both tabs, and they can only ever narrow what your line already allows. There is no combination that shows you someone outside it.
Compliance: the six numbers
The Compliance tab is titled Team compliance. Above the title the eyebrow says whose figures they are and over which dates, for example Everyone · 19 Sept to 25 Sept.
Two warnings appear under the numbers when they apply. A window holding more than 20,000 classes is cut to the most recent 20,000, and the page says so. Marked classes with no readable start are counted as marked but left out of the on-time rate, and the page says how many.
Compliance: the charts and the rail
On-time rate by week
One bar per teaching week: on-time rolls as a share of timed classes. The dashed line is the 85% target, and a bar at or above it turns green. When your view is narrower than everyone (a Team Leader, a subject, a campus, a person, or My Team), each bar also carries a marker for the Whole tutor body, so you can see whether a dip is your team or everybody. The chart needs at least two weeks in the window, so a 7-day window inside one week has no chart.
By subject, or by tutor
One stacked bar per subject: On time, Late and Unmarked, across every class. The percentage beside it is the on-time rate of rolls with a readable start. It switches to By tutor when My Team is on or a subject is chosen. Either way it is sorted worst on-time first, and the tutor list is not cut short, because a Head asking who is slipping needs the whole team. Classes with no rostered tutor are left out of the tutor list.
Who you see
The right-hand rail lists every tutor in the figures with their on-time rate, worst first, and a search box once there are more than six. The sentence under the heading says what the list is: Your direct reports, and nobody above or beside them, You and everyone in your reporting line, Your reporting line, plus everyone teaching your department's subjects, Your own classes or One tutor. Below it, How on-time is measured repeats the rule in three lines.
How on-time is measured
Minutes after start = the tutor's first submission, minus the class's scheduled start, in Melbourne time. Within 15 minutes counts as on time.
- First submission, always. Amending a roll later never turns an on-time class into a late one.
- Unknown is its own answer. A class whose scheduled start can't be read is neither on time nor late. It is left out of the rate rather than guessed. That is why the rate is a share of timed classes.
- Unmarked is not late. A class with no roll has no submission to measure. It shows under Never marked, not under Marked late.
The weekly marking leaderboard uses this rule and the same fault rule for mismatches, so the two cannot disagree about whether a roll was on time or whose error a mismatch was. It differs in what it is for: it names only the tutors doing well, has no rate and no tail, and credits whoever filed the roll rather than whoever was rostered. And one difference in what an error costs: naming the wrong tutor pair counts against Accepted first time here, but never costs a leaderboard point.
Compliance: the tables
Under the charts are the classes behind the numbers. Each heading shows the real count. A table longer than 200 rows shows the first 200 and says so; the spreadsheet has all of them.
| Table | What is in it |
|---|---|
| Marked late | Date, class, campus, tutor, scheduled start and how late, most late first. The tag reads in minutes, or in hours from two hours; amber past an hour, red past six. |
| Attendance mismatches · tutor error | Headcount mismatches (in-person or online) that were the tutor's mistake: the tutor changed their roll to match. Shows who rejected it on the Campus side, exactly what disagreed (for example In-person · Tutor 9 · Campus 10) and whose error it was. |
| Attendance mismatches · campus error | The same, where Campus changed their count. A mismatch where both sides moved is in both tables. Tutor-pair disagreements are never here; where the tutor named someone other than the roster, they appear under Roster discrepancies. |
| Roster discrepancies · for team leads | The permanent record, as submitted: role (Primary, Assistant, or both), who the roster said, who actually taught, and the status: Roster is wrong (Campus named the same person as the roll), Three-way disagreement (Campus named someone else again), Awaiting Campus or Corrected. |
| Roster discrepancies · for team leads (Live) | The same classes, checked against the roster as it stands now. A row drops off once the Monday board is corrected. When nothing is left: Nothing outstanding: every discrepancy above has since been fixed on the roster. |
| Never marked | Date, class, campus, tutor and secondary tutor. |
A mismatch that is still open, or that was settled without either side changing its numbers, is in neither mismatch table until it is clear whose error it was. A line above the tables says how many there are. The rules for deciding whose error a mismatch was are in Campus › Whose error it was.
Marking & rostering
The second tab is the worklist: What needs chasing, and who to chase it with. Same classes as Compliance, grouped by team leader rather than summarised.
It opens on yesterday only, with My Team switched on if you have direct reports (and for admins). Those defaults are applied once when you open it; after that your own choices stick. The filters are shared, so Compliance then shows the same window until you change it back. A link from the morning Slack message opens it on the day the message is about instead.
When the classes span more than one team leader, every list is split into groups, one per team leader (the rostered tutor's manager), with Collapse all and Expand all. Classes whose tutor has no manager on the org chart go last, under Not allocated to a team leader. Each list opens with a What to do about these box:
| List | What to do |
|---|---|
| Roster mix-ups Role, on roster, actually took it, pay risk, status | Update the Tutor Change Request Form so Academic Ops can action the Rippling update. Pay follows the roster, not the roll, so an uncorrected row is a real over- or underpayment. The Pay risk tag says which: Overpayment risk (someone rostered who did not teach), Underpayment risk (someone taught who was not rostered) or No pay impact. |
| Marked late The tutor who filed the roll | Ask why the class was not marked in the first 15 minutes, and make it part of your 1:1s. Campus cannot verify attendance until the roll is in, and in an emergency knowing who is on site depends on it. |
| Never marked Tutor and assistant | The same conversation with more urgency: there is no roll, so nobody knows who attended. |
| Headcount mismatches · tutor error | The roll was wrong and the tutor corrected it to match the count. Worth a word if the same tutor keeps appearing; a one-off is a busy room, not a performance problem. |
| Headcount mismatches · campus error | The Campus count was wrong and Campus corrected it. Nothing for the tutor to do. It is here so the pattern is visible to whoever runs reception. |
Roster mix-ups compare the tutors the class is rostered with against who actually taught. A handful of classes carry two assistant addresses in one roster field, and on those the assistant comparison is unreliable. If a row looks wrong, check the Monday board before raising it.
Exporting
Export spreadsheet, top right, is shown to admins, and the file never goes beyond the scope you can see. It downloads an Excel file with the same classes as the page, under the same filters, one row per class (up to 20,000), on a sheet called Attendance compliance.
The columns: date, day, week, class, subject, campus; tutor and assistant with their emails; scheduled start, when it was first marked and last amended (both UTC), minutes after start, whether it was within 15 minutes (Yes, No or Unknown); state; never marked (No, Marked in Monday, Yes, or Not due yet); in-person, online and absent counts; when it was rejected, by whom and why; the roster discrepancy with who the roster, the roll and Campus each named; and the session ID.
The page leaves archived classes out of Never marked; the spreadsheet does not, so an archived class with no roll reads Yes in the file without appearing on the page.
The morning Slack message
Where it is switched on, every Team Leader and Head gets a Slack direct message each morning after 7am Melbourne time about yesterday: their team (or their department, for a Head), then either N roster mix-ups · N marked late · N never marked · N headcount mismatches or All clear — N classes, every roll marked on time by the tutor on the roster, and Open the full report, which opens Marking & rostering on that day.
- One message per person per day. A failed send is tried again after 30 minutes, up to four attempts in all.
- Nobody is sent one for a day with no classes. Admins and owners, Campus Experience accounts, and anyone Slack cannot find by email are skipped too. Every send and every skip is recorded.
- Headcount mismatches in the message are the tutor's errors only, the same as the tab it links to.
The message counts you, everyone below you at every level, and (for a Head) your department. The page it opens has My Team on, which is your direct reports only, without you. Switch My Team off to see the same classes the message counted.
Reading history from before 7 September 2026
History from the Apps Script app was loaded in so Reporting has something to show. Its on-time rate reads about 33%, with a median of 26 minutes. That is the old workflow, where tutors marked during or at the end of a class, not a measure of tardiness. The weekly chart draws those weeks in grey and says so.
- Scheduled start times were reconstructed, either from the old workbook or from another week of the same class. Reliable enough for a trend, not for arguing about a specific class.
- Those classes never went through two-sided reconciliation, so their mismatch and first-time figures are not comparable either.
Treat 7 September 2026 as the start of the real series.
Built and maintained by YattaRewritten for the Tutor Portal · 25 Sep 2026 · v3.0 · Written for the Tutor Portal at tutor.contour.com.au.