OnstrengthSalary costing Open the tool

How to use Onstrength

Show me instead — 30 seconds

Three of the screens answer a question on their own, in a minute, with nothing set up — start there if that is all you came for. The other five build a whole year, which takes about five minutes for twenty positions.

What it is

Salary costing for public sector managers. Every rate is read from the published pay tables, and every figure is worked out to the day rather than the month — one position, one standing meeting, or the entire team for a whole year.

Why use it

Your financial system reports what you have spent. It cannot tell you what a job will cost from November, what a standing meeting costs over a year, or where the budget lands in March — and those are the numbers you get asked for.

How it works

In your browser, on your device. No account, nothing uploaded, and nothing saved unless you ask for it. A costing tool, not a system of record.

Quick answers

Three screens that work on their own — no cost centre, no team to build, and nothing saved unless you ask for it.

  1. Cost a position — what one job costs for the rest of this fiscal year, and for a full year after. About twenty seconds.
  2. Cost a task — what a recurring meeting or report costs over a year, once you say who works on it and for how long. About a minute.
  3. Pay calendar — the next pay day and the statutory holidays coming up.

Each has its own address, so you can send one to somebody whose question is smaller than the tool: onstrength.ca/cost and onstrength.ca/task. They open straight onto the screen, with no five-step process in the way.

Cost a position

One job, one number, no setup.

Pick the classification group, level and step, give a start date, and set the assigned time if it is not full-time. You get the cost for the rest of this fiscal year and for a full year after that, with the pay periods that span covers and the first pay day that includes them.

It prorates by the day, not by the month. An EC-05 starting 1 November costs $43,970 for the rest of the year; five-twelfths of the salary would say $44,459. That is $489 too high on one position, always in the direction that flatters the budget.

If you do not know the step, leave it on Not sure yet. It costs at the middle of the level and says so, rather than picking one end quietly.

A range group — EX, DM and a few others — publishes a floor and a ceiling rather than a ladder, so the screen asks for the salary instead of a step and shows you the published range as a check.

Nothing is saved unless you press Add this to your team, which drops the position into your team with everything you entered.

Cost a task

What the quarterly report actually costs.

Name the piece of work, say how often it happens, then add a row for each person who touches it and how long they spend. If you have built a team the rows offer your own people by name; if you have not, pick any published level. Either way no names are needed — one day of an AS-02 is a published rate and no personal information at all.

Days or hours

Count in whichever you think in. Nobody estimates a report in hours, so days is the default and a day is 7.5 hours.

Stages are optional

A stage is a label on a group of rows and nothing else — no dates, no order, no dependencies. Leave the names blank and every row sits in one list, which is the shape most tasks want. Name them and each gets a subtotal and a share of the whole.

That subtotal is the entire reason they exist. You cannot cut a lump sum, but you can have a conversation about a third of a report being checking and redoing it — and on a real report it usually is. The screen offers the rows people forget: your review, the director, the sign-off, the rounds of rework, the meeting about it.

Where the hourly rate comes from

Salary divided by 1,634 productive hours a year, not by the 1,956.6 the agreement pays for. Paid hours are not available hours: statutory holidays, vacation, the sick leave people actually take and a few days of family and personal leave come off the top first. Dividing by paid hours would say you can buy 1,956 hours of work from somebody, and you cannot.

Every one of those deductions is arguable, which is why they are on the screen and editable under How the hourly rate is worked out, with a way back to the defaults. Published tables, your assumptions, stated separately.

The same arithmetic decides what weekly means. A standing meeting does not happen 52 times a year — it happens about 43.6, once the leave and the holidays come out, and the two answers differ by a fifth.

It is salary only

Not the full cost to the Crown. The employee benefit plan, accommodation and IT are carried centrally and never reach a cost centre manager’s budget, so counting them would answer a question you were not asked and hand you a number that is not your money.

Saving, and the list

Nothing is stored until you press Save this task. Once two or three are saved the list underneath totals your recurring work for the year and, if you have entered a salary budget, what share of it that is. One report is interesting; twelve of them is the first honest answer to what would you stop doing?

Pay calendar

Pay days and statutory holidays, from the published calendar.

The next pay day is named in full with how far off it is, and the months below show the pay days and holidays around it. The dates are transcribed from the published public service pay calendar rather than worked out from a rule, because the rule has exceptions — the 30 June 2026 pay day is a Tuesday, since the Wednesday it would fall on is Canada Day.

The calendar is published one calendar year at a time and a fiscal year straddles two, so from January the periods are known but the pay days are not. Those months show no pay days and say why, rather than guessing a Wednesday. Holidays for the unpublished year are the statutory dates and are marked expected.

Set your province on that page: Quebec has Saint-Jean-Baptiste in place of the Civic Holiday. Nothing else in the app depends on the setting.

The whole year, in five minutes

The other five screens, and the reason the team is worth building.

  1. Cost centre — enter your cost centre name, your fiscal year start, and your salary budget.
  2. Team — add a position for every job on your establishment, filled or not. Pick the classification group, level and step; the rate fills itself in.
  3. Estimates — put a whole-year number against each of the six estimate lines. You do this after the team because base pay is what tells you how much room they have.
  4. Forecast — read where the year lands: your surplus or your overrun, and what to do about it.
  5. What if — stack up the changes you are considering and see where they take you, without touching your real team.
Try it empty-handed

On the Setup tab, Load an example cost centre fills in twenty positions against a $1.78M budget. Poke at it, then Erase everything and start with your own. Nothing you do to the example touches anything real.

1 · Set up your cost centre

Setup tab. Takes about a minute.

Name and number
Cosmetic. They appear at the top of the Forecast so you know whose year you're looking at.
Fiscal year starts
April 1 for most of the public sector. Everything is costed forward from this date.
Pay periods
26 unless you know otherwise. A fiscal year is 26 periods of 14 days, and every salary is divided by this number to get a per-period cost.
Salary budget
Your salary envelope for the year — the number you are held to. Not including benefits, and not including operating.
Watch at / Act at
How far off budget you'll tolerate before the app changes its tone. Defaults are 5% and 15%. Below "watch" it stays quiet; past "act" it tells you to do something.

2 · Build your team

Team tab. About fifteen seconds a position once you have the rhythm.

Add every position on your establishment — filled, vacant, or somewhere in between. A vacancy costs nothing until someone starts, but it has to be in the list or your person-year count is wrong.

If it is already in a spreadsheet, bring the file

Most teams are already written down somewhere before they reach here — an export from HR, a sheet from finance, or a printout. Add from a spreadsheet takes it as it is. Choose a spreadsheet file and pick the Excel (.xlsx) or CSV file: the title rows above the headings, the totals at the bottom, a cover sheet and blank lines are all skipped, the sheet holding your positions is the one it reads, and the position number, job title, step, assigned time and start date come off the same row. A column of people’s names is recognised and left out. The file is read in your browser and is not uploaded anywhere.

An older .xls file needs saving as .xlsx or CSV first. Or skip the file: select the columns you want in the spreadsheet, copy, and paste them into the box. Either way it reads EC-05, ec-04, EC 04 and CT-IAU-02 alike.

It works because a classification identifies itself. Every published code is in the table, so the app can tell which column holds them without being told — and picks the step, the assigned time, a vacancy date and the job title off the same row.

From paper, photograph it. Take a picture with your phone, select the text on the photo the way you would in any document, and paste that. The phone does the reading; Onstrength never sees the picture and never asks for your camera.

A photograph of a screen is the worst of the three — glare, the shimmer a camera picks up off a monitor, and the angle all make the reading worse, and an EC-05 that arrives as EC-O5 is silently dropped. If the list is on a computer you can touch, paste it on the computer and send it across.

Built it on a laptop, want it on your phone?

This is the common way round, so it is worth laying out. Nothing is uploaded at any point — the positions travel in the pattern on the screen, and the camera reads them straight off it.

  1. Build the team on the laptop, where there is a keyboard and a spreadsheet to paste from.
  2. On the laptop, go to Set up your cost centre and find Move it to another device. (After you add positions, the team screen offers this directly — Show a code takes you straight to it.)
  3. Press Show the code.
  4. Point your phone's camera at the laptop screen and open the link that pops up. The team is on the phone.

It is a snapshot rather than a link between the two, so change something on one and show a fresh code to carry it across. Names are never in the code. If the team is too big for one square, Create a backup on Setup gives you a file to carry instead.

Names stay out unless you ask. A column of text beside a classification is as likely to be who is in the job as what the job is called, so titles are off until you tick them on — and you see everything it found, with what each position will cost, before a single one is added.

The salaries are looked up from the published table rather than taken from your sheet. A figure in a spreadsheet is somebody else's arithmetic, possibly from last year's rates, and the published table is the entire point.

If most of your shop is one classification, don't type them one at a time. Add several at once lays down a block at a single group and level — twenty FI-03s, say — counting the position numbers up from whatever you give it. You then open each one and change what differs. The panel stays open, so the next block is one more press. Adding them one by one instead? Save and add another like this keeps the whole form and clears only the name and number.

The position editor, showing name, position number, title, classification group, level, step, the published rate, assigned hours, a step increment date, and status.
One position. Everything the app needs to cost a job for the year.
Who's in it?
A first name or nickname, so the list reads like your team rather than a spreadsheet. It stays on your device. Leave it blank if you'd rather.
Classification group, level and step
Pick the group (EC, PM, AS, FI, CR…), then the level, then the step. The published rate appears underneath with the date it took effect. 107 groups and 3,454 steps are built in.
Don't know someone's step?
Leave it as Not sure yet. Looking up twenty step numbers is the reason a team never gets finished. The position is costed at the middle of its level, stays marked on your team, and the forecast reports the spread in dollars — so you can decide whether it is worth chasing, and which ones.
Setting them all at once
When anything is unset the Team tab offers Set the steps: one row per position, steps as buttons rather than a dropdown, the published rate appearing as you tap. With a listing open beside you it is about a second a row. It is also offered straight after adding a block.
Executives and other range groups
Seven groups — EX, DM, CEO, GC, GCQ, LC and PM-MCO — publish a minimum and maximum rather than steps. The step picker becomes a salary box: enter what the position pays. The published range shows underneath as a check, and a figure outside it is flagged but kept — acting and grandfathered rates are real. At-risk performance pay is not forecast; put it against an estimate line.
Assigned hours
Full time, or a percentage. If someone changes hours mid-year, tick Hours change during the year and give the date — the app costs each part of the year at the right rate.
Moves up a step during the year
Tick it and give the increment date. Everything before that date is costed at the old step, everything after at the new one. Not averaged.
Status this year
Filled · Vacant · Leaving on a date · Unpaid leave with a gap. Between them these four cover almost everything; anything else is a combination.
Somebody starting partway through the year
Leave it as Filled and give the start date — the name stays with the position and it is costed from that day, not from 1 April. Vacant is for a position nobody is in yet. A blank date means opposite things in the two: a vacancy with no date is never filled and costs nothing; a filled position with no date was there when the year began.
Why it's worth the detail

A start date in the middle of a pay period is prorated by the day. That's the difference between a forecast you can defend in a meeting and one that's roughly right.

3 · Add your estimates

Estimates tab. It shows what base pay has already taken, so you can see the room you're filling.

Base salary is costed exactly. Everything else on top of base pay is a judgement call, and the app asks you for six whole-year numbers rather than pretending to calculate them:

  • Overtime — coverage, peaks, anything worked beyond standard hours.
  • Salary premiums — shift, weekend, standby, call-back.
  • Acting pay — the differential when someone acts in a higher position.
  • Bilingual bonus — on bilingual-imperative positions.
  • Retention allowance — terminable and retention allowances.
  • Other salary costs — severance, payouts, retroactive pay, the rest.

Enter the whole year, not a month. If you genuinely don't know, last year's actual is a better guess than zero — and zero is a forecast too, just a wrong one.

Why these aren't calculated

Precision should follow materiality. Base salary is around 90% of the envelope and can be computed exactly, so it is. The rest is judgement, and dressing a guess up in a formula would make it look more certain than it is.

4 · Read the forecast

Forecast tab. This is the screen you'll actually live on.

The headline

One number: what's left over, or what you're over by. Green is surplus, rust is pressure. Underneath it, the same number as a percentage of your budget — which is the figure Finance will ask for.

The bar

Your budget, filled in. Teal is base salary, amber is your estimates, and the pale remainder is unspent. If the plan goes over, the amber turns red and runs past the end.

The advice

The app reads your variance and how far into the year you are, then says something specific. A 5% surplus in May is an opportunity; the same surplus in February is a problem you should have caught. Copy a note for Finance puts a short summary on your clipboard.

The plan

The whole equation, line by line: budget, less base salary, less each estimate, and what's left. Beside it, how many person-years you're carrying against how many you're funded for.

5 · Test a change

What if tab. This is the part worth learning.

Stack up changes you're considering and see where the year lands if they all happen — without touching your real team:

  • Move a start date — what if that competition takes another two months?
  • Leave a job unfilled — what does not staffing it actually save?
  • Plan a departure — someone retiring in November.
  • Change someone's hours — a request to go to 80%.
  • Add a position — can you afford it, and from when?

Each change can be switched on and off, so you can see what one is worth on its own and what they're worth together. Nothing changes your team until you press Make these real.

The question this answers

"If I hold that vacancy until January, does it cover the overtime I'm about to overrun?" That's a two-minute answer here and a morning in a spreadsheet.

Questions people ask

Mostly about things that are deliberate.

Where are benefits?

Not here, on purpose. Benefits and bonuses are charged centrally in most public sector organisations and never reach a cost centre manager's budget. Counting them would make every forecast wrong by about 20%.

Why doesn't my year end on March 31?

26 pay periods × 14 days is 364 days, so the year ends a day or two short. That's correct as a payroll year and slightly odd against a calendar. Payroll posts in periods, so the app does too.

Acting pay is an estimate, but it's really a differential — why?

You're right, and it's on the list. Acting pay posts to basic pay as the difference between two levels, so properly it belongs on the position with dates. For now it's an estimate line, which is close enough to plan with and honest about being an approximation.

My rate doesn't match the collective agreement.

Then trust the agreement, not the app. Rate figures come from published rates-of-pay schedules, and every group follows its own agreement with its own effective dates — so a group that settled last month may be ahead of the table here. If a number matters, verify it — and tell me which one was wrong.

Can I track actuals against this?

Not yet. This plans the year; it doesn't reconcile it. Month-by-month actuals are the next thing, and whether they get built depends on whether the planning half proves useful first.

What about hourly-paid staff?

Supported. Twenty-three groups (the GL, GS, HP and HS families) publish an hourly rate rather than an annual salary, so the app multiplies the rate by the hours a year to get an annual cost.

Each group gets the hours its own agreement makes. The SV appendices put GL, GS and HP on a forty-hour week and HS on thirty-seven and a half, and all of them count 52.176 weeks a year rather than 52 — 365.25 days over seven, so the odd day and the leap year are carried. That gives 2,087.04 paid hours for GL, GS and HP and 1,956.6 for HS. Pick an hourly group and a Paid hours a year box appears with the right figure in it.

It is still yours to change. Shift schedules, part-year arrangements and the annexes putting some GS employees on 37.5 hours all depart from the standard. Type a different figure and everything downstream follows.

Getting it out

Forecast tab, at the foot of the right-hand column.

Print or save as PDF builds a plain document — where the year lands, the estimates, and every position with its classification, status and cost — and prints that rather than the screen. Your browser's print dialogue saves it as a PDF.

Save or send as a spreadsheet (Excel) builds a real .xlsx, one row per position, formatted, with the header frozen and a filter on it. On a phone this opens the share sheet rather than downloading quietly, so you can send it to your team, mail it to yourself, or save it to Files. On a computer it lands in your downloads.

Any position whose step you haven't set reads not set rather than a number, and the sheet says what the unset steps are worth — so nobody receiving it mistakes an estimate for a figure.

Both are built at the moment you ask for them, so neither can go stale, and both include the names you gave positions. Both are snapshots: once someone edits the spreadsheet, that copy and this tool will disagree, and the tool is not the one that knows.

Next year

Setup tab. One press in April, instead of typing the whole thing again.

When the year you built runs out, the forecast page says so and offers to move it on. You can also do it any time from Roll forward to next year on the Setup tab. It advances the fiscal year and applies twelve months of change:

  • Increments that have fallen due are applied — the salary moves to the next step and the next increment is dated a year on, until the position reaches the top of its range.
  • Dated changes stop being future events. A move to part time, a vacancy due to be filled, leave that has ended — if the date has passed, it becomes the position's ordinary state.
  • A departure leaves the position behind as a vacancy with no start date, so it costs nothing until you decide what happens to it. Nothing is deleted.

It shows you what it will do — how many increments, how many vacancies, what base salary comes out — before you commit, and it replaces what is on screen when you do. Create a backup first if this year still matters.

What it will not guess

Your budget and your six estimates carry over unchanged; neither can be known yet. Economic increases are not applied either — a raise that has not been signed is not in the published tables.

On your phone

Optional. It works perfectly as a link — this gives it an icon and makes it work with no signal.

On iPhone or iPad: tap the Share button — the box with an arrow coming out of the top, in the bar at the bottom — scroll the sheet up past the row of app icons into the grey list below, then tap Add to Home Screen and Add.

Not in the list? Scroll that list to the bottom and tap Edit Actions…; if "Add to Home Screen" is there with a green +, tap it and it comes back. If it isn't there at all, your phone is managed by your employer and the option is switched off — which doesn't matter, because the link works exactly the same in the browser.

Reading this inside another app? Links opened from email, Teams or LinkedIn run in a cut-down browser with no install option. Tap ••• or Open in Safari first.

On Android, or a computer: Chrome and Edge offer to install it themselves — a button appears under the two on the front page when they do. Otherwise look for Install app or Add to Home screen in your browser's menu. If yours doesn't offer it, nothing is lost.

Installed or not, what you have built stays in that browser on that device.

Your data

The short version: it never leaves your device.

No account, no server, no upload. Everything you type is stored by your own browser, on the device you typed it on. Nobody else can see it — not your colleagues, not your department, not me. That's why this link can be passed around freely.

Three consequences worth knowing:

  • It doesn't sync by itself. Set it up on your laptop and it is not on your phone. The quick way across is Move it to another device on Setup: it draws a code, you point the other device's camera at the screen and open what pops up. Nothing is sent anywhere — your positions are in the pattern itself, and your phone reads it off the screen. It is a snapshot, so show a fresh code after you change something, and names are never on it. For everything else — the budget, your estimates — Create a backup downloads a file, and Restore from a backup reads one back. The box on that card is not the backup: it shows what is in the browser now, and empties when the browser does. Restore only a backup you made yourself; this is the one place the tool accepts data it did not create.
  • Clearing your browser data clears this too — as does a private window, or an organisation that wipes browser storage on a schedule. For anything you'd hate to retype, make a backup.
  • Your device lock is the only lock. There is no password on what you save, so don't use Onstrength on a shared machine — it stays in that browser for the next person.
A costing tool, not a system of record

Check anything that matters against the ledger before you rely on it in a meeting.