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.
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
ClickUp
Box
Salesforce
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
ClickUp
Google Drive
MycoContractor notes
Picks up project leads' answers in Slack and drafts notes to contractors and agencies about held timesheets
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.
- Agent works
- Person decides
- Arrives or gets recorded
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 |
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.
- 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 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.
Your first company harness. Where humans and agents run your business together.
More Use Cases
View allPrior 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.
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.




