The employee side of the system Pardes runs every day, packaged as a template you copy into your own Google Drive. Staff clock in on a Google Form. The spreadsheet turns those taps into clean hours and payroll, for salaried and hourly staff alike, and the code that does it comes along inside your copy.
Free. No vendor, no subscription, nothing leaves your Google account.
Staff, Clock-Ins, PTO Log, School Calendar, Hours, Settings, a sample payroll, and a Start Here page. It arrives filled with a pretend school so nothing is an empty mystery.
Most schools have all three. Hourly staff are paid for what they clock. Salaried staff are paid the school days in the period, so one day is worth (annual salary รท school days in the year). Subs and anyone paid by the day are paid for days actually worked, with a short day counting as half. Payroll prints each group as its own table.
Put a Group against each person and setup builds a separate clock-in form for each one, with its own link and QR code. Nobody scrolls past two hundred names to find their own. Leave the column empty and you get one form, exactly as before.
Give each person a yearly allowance and time off is paid automatically until it runs out, then the extra comes off their pay. A single day is split across the boundary if it lands there. Nobody has to keep the running total in their head.
Optional weekly email that sends each person their own clock-in times, so the one individual who knows what really happened on Tuesday is the one who catches the mistake. Off until you turn it on.
One menu click creates your staff clock-in Google Form, wires it to the sheet, and drops the staff link and a printable QR code onto the Settings tab.
Pairs every Clock In with the next Clock Out, so a lunch break is not paid time. Flags missing punches and late arrivals instead of hiding them.
Sunday to Friday, Monday to Friday, whatever you run. Weeks start on the day you start, so a Sunday does not get counted against last week's overtime. Short Fridays and per-day schedules are read from the text you already keep.
One button that names exactly what is still missing: who has no salary, who is on the clock but not the roster, two people with the same name, a calendar you have not built yet. Silent problems are the expensive kind.
Tap Make your copy above while signed into the Google account your school uses. Google asks once, you click Make a copy, and the whole system lands in your Drive. Google even says it right on that page: "The attached Apps Script file and functionality will also be copied." From that moment it is entirely yours.
On the Staff tab, one row each: name, Pay Type (Salary, Hourly or Day), then whichever of Annual Salary, Hourly Rate or Day Rate fits. Add a Group if you want a separate clock-in form per building, and PTO Days Allowed if you want days off to count themselves. On Settings: your school's name and which day your week starts on. The sample school shows exactly how each column should look.
Already keep your schedules as text, like "Sunday 845-1215 Mon-Thurs 815 - 415 Friday 815 - 145"? Paste it straight into Schedule Notes. The kit reads that shorthand and works out the right expected start time for each day of the week, so nobody has to retype anything into columns.
Columns are found by their heading, not their position, so adding or reordering a column of your own will not quietly shift everyone's pay.
In your copy, open the menu:
It builds your clock-in form with your staff names in the dropdown, links it to the sheet, and puts the staff link and QR code on Settings. Print the QR and tape it by the door.
Google will ask permission once. Here is the exact path.
The first time you run the menu, a small dialog says Authorization required. Click OK and a Google window opens. Everything it asks about lives inside your copy and touches only your account; you can read every line of the code (Extensions โ Apps Script). The clicks are:
One time only. After that the menu just works.
Only needed if you pay anyone a salary. In your copy, open the menu:
It asks three things: your first day, your last day, and which days of the week you have school. Then it writes every date onto the School Calendar tab so you can mark holidays and breaks as No. Run it again whenever you need to fix a date; it asks first, and the days you marked by hand are kept.
This is the number that decides what one day of salary is worth, so it is worth getting right. A $170,000 salary across 170 school days is $1,000 a day. Skip it and payroll will refuse to guess; it will tell you to come back here.
Then run ๐งน Clear the sample data and ๐ฉบ Check my setup. When the checker says you are ready, you are live.
Staff scan the QR or tap the link, pick their name, choose In or Out, submit. That is their whole job. Yours is two menu clicks:
Rebuilds every day for every person from the raw clock-ins: first in, last out, breaks, hours, and a Status column that tells on itself: missing punches, late arrivals, names that are not on your roster.
Give it a start and end date (it suggests the usual 1st to 15th and 16th to month-end periods) and it writes a ready-to-pay tab: salaried, paid-by-the-day and hourly each in their own table, gross per person, days off remaining, totals, and a flags column.
Someone forgot to clock out? Add the missing row on the Clock-Ins tab, refresh, and the day is whole again. Nothing is ever locked away.
A forgotten punch never costs a salaried person money.
It would be easy to pay salaried staff for the days they remembered to tap. That is also how a teacher quietly loses a thousand dollars because the tablet by the door was asleep on a Tuesday. So this kit does the opposite: salaried people are paid the school days in the period, and a day with no clock-in and no time-off row is only flagged for the office to look at. It is still paid.
The only thing that reduces salary pay is a row you put on the PTO Log yourself, marked Paid? = No. Half days work too. Deciding to dock someone stays a human decision, never a side effect of a punch clock.
The whole system is one readable file inside your copy (Extensions โ Apps Script). Paste it into ChatGPT, Claude, or whatever you use, describe the change in plain English, and paste the answer back. Some starters:
"Email me a weekly hours summary every Friday afternoon."
A few lines with a time trigger. Your AI will know what to do.
"Email the office at 6 PM if anyone forgot to clock out."
The missing-punch flags are already computed; this just mails them.
"Add Sick and Personal types to the PTO Log."
One new column and a small payroll tweak.
"Give each teacher a private link to see their own hours."
A bigger project, and a fun one. The data is all there.
Yes. Google Sheets, Forms, and Apps Script come with every Google account. There is no vendor, no subscription, and nothing to renew. Pardes shares it because we wished someone had handed us one.
In your copy, in your Drive, in your form. Nothing reports back to Pardes or anywhere else; there is no server behind this, only your spreadsheet. Delete the file and every trace is gone.
No, a free Gmail account works. If you do run Google Workspace, the setup turns off the sign-in requirement on the form so a shared tablet by the door works for everyone. On a free account, staff just use the link or QR from their own phones.
The Hours tab flags the day: โ Missing clock-out, and pays zero for the open shift so a mistake can never inflate a paycheck. Add the missing row on the Clock-Ins tab (date, name, Clock Out), refresh, and it heals. Payroll reports carry the same flags so nothing slips through on payday.
Rename the spreadsheet itself freely. The tab names matter to the code; if you rename a tab, update the short TABS list at the very top of the script (Extensions โ Apps Script), or ask your AI to do it.
Nachas. If you build something good on top of it, tell us about it, that is the whole trade. This is the same design our own staff system grew from, shared school to school.
Ten minutes from copy to a working clock-in form. If anything is unclear, the Start Here tab inside the sheet walks the same steps, and Levi is an email away.