---
title: "Contractor Timesheets Against SOWs and POs | Kylon"
description: "Approve contractor timesheets against SOWs and PO balances in a fixed order, absorb extensions and holiday corrections, and close each week with people deciding."
url: "https://kylon.io/use-cases/contractor-timesheets"
language: "en"
---

[HOME](https://kylon.io/)\>[Use Cases](https://kylon.io/use-cases)\>Contractor Timesheet Approvals: Hours Paid Within the SOW and the PO Balance

Use Case7 min read

# Contractor Timesheet Approvals: Hours Paid Within the SOW and the PO Balance

Weekly contractor timesheets are checked against Box SOWs and Salesforce PO balances in one Kylon room, in a fixed order per project. Agents handle extensions, PO increases and holiday corrections, and a project lead approves every timesheet.

[Get started](https://app.kylon.io/sign-up)

Kylon TeamProduct

November 6, 2026

## Every approved hour draws down a purchase order

A contractor timesheet is approved when its hours fit three limits: the rate and weekly cap in the statement of work, the SOW's end date, and what is left on the purchase order. The PO limit is the one that bites, because it is shared. Two timesheets on the same project draw on one balance, so the order in which they are approved decides which one fits.

SOWs are PDFs in Box, PO balances sit on project records in Salesforce, each timesheet is an item in ClickUp, the policy and holiday calendar live in Google Drive, and project leads answer questions in Slack. When an SOW is extended, a PO is increased or the holiday calendar is corrected, approvals made earlier in the week may no longer hold, and nobody wants to learn that from a contractor's invoice.

## Who works in the room

People

-   Contractor program manager
    
    Owns the timesheet policy and signs the weekly closeout
    
-   Project leads
    
    Approve hours on their projects and confirm SOW extensions
    
-   Finance
    
    Owns PO balances, approves PO increases and names the timesheets for each spot-check
    
-   People operations
    
    Owns the holiday calendar and issues corrections to it
    

Agents

-   RyanTimesheet reviewer
    
    Checks each timesheet against its SOW in Box and the PO balance in Salesforce, in timesheet id order per project, and proposes approve or hold
    
    ClickUpBoxSalesforce
    
-   AdaSpot-check and closeout
    
    Runs finance's spot-check on the named timesheets and re-lists ClickUp at closeout so the held count matches the comments
    
    ClickUpGoogle Drive
    
-   MycoContractor notes
    
    Picks up project leads' answers in Slack and drafts notes to contractors and agencies about held timesheets
    
    [Gmail](https://kylon.io/integrations/gmail) [Slack](https://kylon.io/integrations/slack)
    

The contractor program keeps one Kylon room. Ryan is the default agent, so a question about any timesheet goes to it. Ada runs finance's spot-checks and the closeout count, and Myco handles anything that has to reach a contractor or an agency. When a correction touches every contractor, Ryan splits the reading of 28 SOWs and timesheets across parallel helpers and gets one result back before it proposes anything.

## One week of timesheets

The policy is in Google Drive, and the processing order is in the room guidelines: each project's queue is worked in ascending timesheet id, so PO balances are drawn down the same way every time.

```mermaid
flowchart TD
  queue([Each project's queue is worked<br>in ascending timesheet id])
  check["<b>Ryan</b> checks each timesheet<br>against its SOW and PO balance"]
  approve["<b>Project lead</b> approves before<br>the ClickUp status changes"]
  spot["<b>Ada</b> checks only the timesheets<br>finance names"]
  confirm["<b>Finance</b> confirms the results"]
  po["<b>Finance</b> approves<br>a PO increase"]
  hours([A contractor<br>corrects hours])
  holiday["<b>People operations</b> confirms<br>the corrected calendar"]
  rerun["<b>Ryan</b> re-runs held<br>timesheets in order"]
  requeue["<b>Ryan</b> re-runs the queue from<br>the corrected timesheet on"]
  reread["<b>Ryan</b> re-reads every<br>contractor's week"]
  leads["<b>Project leads</b> approve<br>the re-run timesheets"]
  notes["<b>Myco</b> drafts notes to contractors<br>for a person to send"]
  close["<b>Ada</b> re-lists ClickUp, one comment<br>on every held timesheet"]
  sign["<b>Contractor program manager</b><br>signs off the week"]
  queue -.- check
  check --> approve --> spot --> confirm
  confirm --> po & hours & holiday
  po --> rerun
  hours --> requeue
  holiday --> reread
  rerun & requeue & reread --> leads
  leads -->|held| notes
  leads --> close --> sign
  class check,spot,rerun,requeue,reread,notes,close agent
  class approve,confirm,po,holiday,leads,sign person
  class queue,hours event
  classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
  classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
  classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42
```

| Stage | What happens | Who acts | Who decides |
| --- | --- | --- | --- |
| Approvals | Each timesheet is checked against its Box SOW and the Salesforce PO balance, in timesheet id order per project | Ryan | The project lead approves before its ClickUp status changes |
| Spot-check | Finance names nine timesheets, only those nine are checked, and anything else in the batch comes out | Ada | Finance confirms the results |
| SOW extensions and PO increase | Held timesheets on an extended SOW or a topped-up PO are re-run in order | Ryan | Finance approves the increase; the project lead approves the timesheets |
| Hours corrections | A contractor's corrected hours re-run that project's queue from the corrected timesheet on | Ryan | The project lead approves |
| Holiday correction | Every contractor's week is re-read against the corrected calendar | Ryan, then Myco for the notes | People operations confirms the calendar; project leads approve |
| Closeout | ClickUp is re-listed and every held timesheet gets one closeout comment | Ada | The contractor program manager signs off |

Stages of one weekly timesheet cycle. Projects, ids and hours in this example are illustrative.

## Corrections that reach back into earlier approvals

Order matters most when something changes. If finance raises the PO on a project, the held timesheets on that project are re-run in ascending timesheet id, and a timesheet that was held for balance may now fit while a later one still does not. If a contractor corrects hours on an early timesheet, every later timesheet on that project is re-checked, because the balance each one saw has changed.

The holiday correction is the wide one. When people operations moves a company holiday, it affects all 28 contractors, and Ryan re-reads each week from current data in ClickUp and Salesforce rather than from what it proposed on Monday. At closeout, Ada lists the timesheets again from ClickUp and counts held timesheets against closeout comments. The two numbers have to agree before the week is signed.

## What the checks catch

-   A timesheet approved out of order, using balance that a lower-numbered timesheet needed
-   A spot-check batch that quietly includes timesheets finance did not name
-   Hours logged on a corrected holiday in a contractor's already-approved week
-   A held count at closeout that does not match the closeout comments in ClickUp
-   Hours approved past an SOW end date that was never extended

## What stays with people

-   Approving every timesheet on a project, which the project lead does
-   Approving PO increases and SOW extensions
-   Deciding how a holiday is treated for contractors
-   Sending notes to contractors and agencies, which Myco prepares as Gmail drafts

## Integrations in this workflow

Kylon is not a vendor management system and it does not replace one. It sits across the files, records and work tracker the team already keeps, and holds each week's coordination in one place.

-   Box
    
-   ClickUp
    
-   [Gmail](https://kylon.io/integrations/gmail)
-   Google Drive
    
-   Salesforce
    
-   [Slack](https://kylon.io/integrations/slack)

-   **ClickUp** holds one item per timesheet, with its status and closeout comment
-   **Box** holds each contractor's SOW: rate, weekly cap and end date
-   **Salesforce** holds the project records and each PO's remaining balance
-   **Google Drive** keeps the timesheet policy, the holiday calendar and finance's spot-check lists
-   **Gmail** carries notes to contractors and agencies, as drafts a person sends
-   **Slack** is where project leads confirm extensions and answer questions about hours

## Where to start

A single project and a single week make a good first cycle. Connect ClickUp and the Box folder of SOWs, and write one rule in the room guidelines: each project's timesheets are processed in ascending id, and a project lead approves every one before its status changes in ClickUp.

> “Closeout is counted from ClickUp as it stands, not from what the thread said on Tuesday.”

## Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Set up our contractor timesheet approval desk in this Room. Take it one step at a time and wait for my OK before you move on.

1. Connect Box, ClickUp, Gmail, Google Drive, Salesforce and Slack. Tell me which ones still need connecting.
2. Ask me who works this desk: the contractor program manager, the project leads, finance and people operations. Help me invite them to this Room.
3. Build a Timesheets App with Submitted, Checked, Approved and Held columns, one record per timesheet. Pull open timesheets from ClickUp to fill it.
4. Check each timesheet against its SOW in Box and the PO balance in Salesforce, processing every project in the order we set. Propose approve or hold for each, with a reason, and show me the ones that fail our checks.
5. Draft Gmail notes to contractors and agencies about held timesheets. Never send a draft and never change a ClickUp status until the project lead approves that project's timesheets. Finance confirms spot-check results. The contractor program manager signs the closeout.
6. Write the processing order and who approves what into this Room's guideline, so every week follows the same rules.
7. After one clean week, offer to turn the weekly timesheet review into an Automation.

Before you start, ask me for our rules one at a time.

[Get started](https://app.kylon.io/sign-up)

Your first company harness. Where humans and agents run your business together.

[Get started](https://app.kylon.io/sign-up)

## More Use Cases

[View all](https://kylon.io/use-cases)

[

### Prior Authorization Desk: Deadlines That Follow Each Payer's Current Rules

Each prior authorization case gets a disposition and a deadline from its payer's current rule page, and keeps the right one through documentation batches, payer corrections and peer reviews. The desk lead approves every change before Salesforce is updated.

Healthcare & life sciencesApprovals & reviewsEmail operations

](https://kylon.io/use-cases/prior-authorization-desk)[

### Provider Credentialing: Committee Files Backed by Verified Evidence

Five checks per provider, evidence split between Box and a verification mailbox, and drafted batches that need auditing before committee. In one Kylon room, agents assemble and audit each file, and the credentialing manager approves every disposition.

Healthcare & life sciencesCompliance & riskApprovals & reviews

](https://kylon.io/use-cases/provider-credentialing)
