Contour Contour Tutor Portal docs Open the portal

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 areYou seeThe page says
A tutorYour own classes.Your own classes
A Team LeaderYourself and everyone below you in the reporting tree, however many levels down.Your team (N people)
A HeadThe 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 ownerEverything.Everyone
Campus ExperienceNothing. 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).

Your team looks wrong

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.

7 days · 14 days · 30 days · CustomThe window. Each preset ends today, and includes today. Custom shows From and To dates; a range entered backwards is swapped rather than refused. Compliance opens on 7 days.
PersonA type-ahead box reading Everyone I can see. It lists only people in your line, and the server refuses anyone else ("That person does not report to you."). Choosing a person drops a Head's department subjects, so you see that person's classes only. It is not shown when you can only see yourself.
SubjectA subject stem with 1/2 and 3/4 folded together, so every VCE Chemistry class sits in one line. A Head's own subjects are listed first.
CampusOne campus, or all of them.
My TeamShown to anyone with at least one direct report, and to admins. It narrows to your direct reports only: one level down, without you, and without a Head's department subjects. For an admin with no direct reports it stays as everyone. Picking a person switches My Team off, and switching My Team on clears the person.

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.

Marked rateClasses with a submitted roll, as a share of every class in the window and scope, including any later today that haven't happened yet, so it reads lower during the day. The line under it reads M of N classes. A class marked only on the Monday board is not counted as marked here, but it is not counted as never marked either.
Accepted first timeMarked classes whose roll was not sent back for a mistake the tutor made, as a share of marked classes. A mistake includes a miscount and naming the wrong tutor pair. A return is excused only when the record shows Campus corrected its own side; one that is still open counts against the tutor until then. The line under it names the excused ones, for example 39 the tutor got wrong (310 Campus not counted).
On-time rateOn-time rolls as a share of timed classes: those that are marked and have a scheduled start the app can read. The line under it reads of N timed sessions. See How on-time is measured.
Marked lateTimed classes first submitted more than 15 minutes after they started.
Never markedClasses with no roll at all, and nothing on the Monday board either, whose marking window has opened: two hours after the scheduled start, or the day after the class when its start cannot be read. Archived classes are left out. The line under it reads still has no roll, or every class has a roll when there are none.
Roster discrepanciesClasses where the tutor who taught is not the tutor on the roster, with how many are confirmed. This includes ones since corrected; the Live table below shows what is still wrong. See Roster corrections.

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.

The tutors' leaderboard measures the same 15 minutes

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.

TableWhat is in it
Marked lateDate, 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 errorHeadcount 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 errorThe 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 leadsThe 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 markedDate, 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.

Things to actionRoster mix-ups (including any since corrected), plus marked late, plus never marked, plus headcount mismatches that were the tutor's error. With nothing to do: Nothing to action in this window. Every class was marked on time by the tutor on the roster.
Roster mix-upsClasses taught by someone other than the tutor on the roster.
Marked lateAs on Compliance.
Never markedAs on Compliance.
Headcount mismatchesThe tutor's own errors only.
Classes in this windowFor scale.

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:

ListWhat 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 errorThe 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 errorThe 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.
A roster mix-up that isn't one

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.

One difference from the page

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.

The message can read higher than the page

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

Do not compare the old app's on-time rate to this one

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.

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.