Playbook

Replace your time off requests spreadsheet with an app

Learn how to replace a shared time off spreadsheet with a small web app for requests, approvals, balances, calendars, and audit history.

By the Cloudverg engineering team · · 5 min read

The problem

A shared time off spreadsheet works until two people edit the same week. Rows get overwritten, formulas for remaining days break, and the manager cannot tell whether a request was approved, denied, or just typed in. Employees resend email to confirm. HR rebuilds balances by hand. The file also holds private information such as sick leave, so broad edit access becomes a problem.

Spreadsheets hide the real rules. A request may need a manager and then HR. A half day, a holiday, or a different time zone changes the answer. If someone asks for three days next month, the sheet cannot show whether the team already has too many people out. Managers scan rows and guess.

The spreadsheet also has no reliable history. You cannot see who changed a date, who approved it, or what the balance was at the time. When payroll or finance asks for a report, someone copies data into another file. Errors surface later. That is the point where a small app pays for itself.

What a good solution looks like

A good app treats a time off request as a record with a clear life cycle. It stores employee, leave type, start date, end date, partial day hours, note, status, approver, decision time, and the policy version used. Status should move through draft, submitted, approved, denied, and cancelled. Only a submit action creates an approval task. A manager can approve, deny with a reason, or send back for changes.

Balances belong in a ledger, not a single cell. Each accrual, request, cancellation, and adjustment is a row with a date and a reason. The app shows the current balance by adding the rows. This makes corrections traceable and avoids silent edits. A policy table defines accrual rules, carryover limits, and who can see which leave types. If your policies are complex, start with the common cases and leave the rest manual with an adjustment reason.

The app needs three views: my time off, team calendar, and admin. Employees submit and cancel. Managers see pending requests, team availability, and a calendar with approved leave. HR admins manage policies, holidays, adjustments, and exports. Sign in through your identity provider so access follows your existing groups. Map an employee group, a manager group, and an HR group to roles. Keep notifications simple: email or chat message on submit and decision, plus a daily digest for approvers.

How to build it

Start by copying the current spreadsheet into a test sheet, then list every column and every manual decision. Group them into requests, balances, policies, holidays, and approvals. Decide what stays manual. A useful first release covers one leave policy and one approval step. Add multi step approval after people trust the basics.

Model the data before writing screens. Use a relational database such as Postgres. Tables for employees, leave types, policies, policy versions, balances, balance entries, requests, approvals, holidays, and audit events. Store dates as dates and partial day hours as decimals. Store timestamps with time zone. Add constraints so an end date cannot precede a start date and a request cannot overlap an existing approved request for the same person unless an admin overrides it.

Build a small API and a web UI. Endpoints for creating a draft, submitting, deciding, cancelling, listing my requests, listing team requests, and reading balances. Check roles on the server for every call, not only in the browser. Put the approval state machine in one place so a request cannot jump from denied to approved. Write an audit event for every state change, balance adjustment, and export. Send notifications after the database transaction commits.

Import the current data with a CSV file. Clean names and leave types first. Run the app in parallel with the spreadsheet for one or two leave cycles. Let employees submit in the app while a manager keeps a read only copy of the sheet for comparison. Then freeze the sheet, remove edit access, and keep it as an archive. Train managers on the pending queue and employees on cancelling a request. Write a one page runbook for common fixes: adding a holiday, correcting a balance, and delegating an approver.

Risks and how to manage them

Privacy is the first risk. Time off data can include sick leave and medical details. Do not put diagnosis or free text medical notes in the request. Limit visibility by role. Managers should see their team, HR should see all, and peers should see only approved leave on the calendar. Log access to exports and keep exports limited to finance and HR.

Balance drift is the second risk. A missed accrual or a manual correction can leave an employee with the wrong number. Add a monthly reconciliation report that lists balance entries and flags negative balances or entries without a reason. Let HR adjust a balance only with a reason and an audit event. Version your policy rules so a later change does not rewrite past decisions.

Adoption and edge cases are the third risk. People will keep using chat or email if the app is slow or unclear. Keep the form short, show the resulting balance before submit, and send a confirmation. Handle holidays, half days, time zones, and overlapping team leave in the first release or state clearly what is manual. Have a named owner for the app. If the owner leaves, the runbook and admin role should let someone else take over.

How to measure success

Measure the process, not vanity numbers. Count requests submitted in the app, requests still in the spreadsheet, and requests decided outside the app. Count balance corrections per pay period and missed approver responses. Count calendar conflicts caught before approval. These counts show whether the app is replacing the sheet or sitting beside it.

Track time from submit to decision and time from decision to payroll export. Compare the same counts before and after launch. A drop in missed approvals matters more than a pretty dashboard. Ask managers whether they still scan the old sheet. If they do, find out which field or view is missing.

If you want a fixed scope, the Internal tool sprint from Cloudverg at $16,500 builds one workflow end to end in four weeks, including sign-in with your identity provider, roles, change history, import, exports, training, and a runbook. It is one option among a custom build, an off the shelf HR system, or a low code tool. Choose based on your policy complexity and how much control you need.

Frequently asked questions

Can we keep using a spreadsheet for time off requests?

You can for a small team with one approver and simple policies. The spreadsheet breaks when balances change, requests overlap, or you need an audit trail. Move to an app when someone spends regular time fixing rows or when privacy requires limited access.

What should a time off request app include?

At minimum: sign in, request form, approval queue, team calendar, balance ledger, holiday table, and export. Add roles so employees, managers, and HR see different data. Keep medical details out of free text fields.

How do we handle accruals and carryover?

Store accruals as dated ledger entries and calculate the balance from the entries. Set carryover rules in a policy version and record which version a request used. Let HR make manual adjustments with a reason and an audit event. Test the rules against a full leave year before launch.

Fixed price

Want help with this? Internal tool sprint

$16,500 fixed price

4 weeks · Starts within 10 business days

Four weeks to replace one spreadsheet process with a working internal tool your team signs into, with roles, history and exports.

What is included

Related guides

More custom software guides   Custom software

Smallest way to start

Get a senior architect on your problem this week

Ninety minutes on the cloud, AI or security question that is blocking you, a pre-read of your material and a written summary within two business days.

$450 one-time