Business & finance · A4 portrait · v0.1.0
Timesheet
A4 weekly timesheet: hours per task across Mon–Sun with row totals, daily column totals and a grand total that reconcile, an optional rate strip that turns it into a pre-invoice, and a two-party sign-off. Use when hours must be submitted for approval.
Paste the prompt into Claude (or any agent that can fetch URLs) with your content — you get back a finished, self-contained HTML file. Manifest ↗
Live preview — the example content ships with the template and is replaced by your content.
What an agent may change — and what content you should have ready. Everything outside these slots is fixed by design.
Slots
| Slot | Type | Req. | Example |
|---|---|---|---|
doc-title |
text | yes | Timesheet week 36 — Tobias Reinders |
worker-name |
text | yes | Tobias Reinders |
worker-details |
html | yes | <p>Interim Data Engineer · Reinders Data Works</p><p>Kanaaldijk-Noord 12, 5642 JA Eindhoven</p> |
week-number |
text | yes | 36 |
period-line |
text | yes | 31 Aug – 6 Sep 2026 |
doc-status |
text | yes | Submitted for approval |
client-name |
text | yes | Kempen Precision B.V. |
client-details |
html | yes | <p>Attn. Lieke Doornbos — Manager Data & Analytics</p><p>De Run 4302, 5503 LN Veldhoven</p> |
day-1-label |
text | yes | 31/08 |
day-2-label |
text | yes | 01/09 |
day-3-label |
text | yes | 02/09 |
day-4-label |
text | yes | 03/09 |
day-5-label |
text | yes | 04/09 |
day-6-label |
text | yes | 05/09 |
day-7-label |
text | yes | 06/09 |
total-d1 |
text | yes | 8,0 |
total-d2 |
text | yes | 8,5 |
total-d3 |
text | yes | 8,0 |
total-d4 |
text | yes | 9,0 |
total-d5 |
text | yes | 6,0 |
total-d6 |
text | yes | – |
total-d7 |
text | yes | – |
total-hours |
text | yes | 39,5 |
hourly-rate |
text | no | € 82,50 |
billable-hours |
text | no | 39,5 |
amount-due |
text | no | € 3.258,75 |
timesheet-notes |
html | no | <p>Thursday includes 1,0 h of unplanned support during the line 3 stoppage.</p> |
worker-signatory |
text | yes | Tobias Reinders |
worker-sign-date |
date | yes | 7 Sep 2026 |
approver-signatory |
text | yes | Lieke Doornbos |
approver-sign-date |
date | yes | 8 Sep 2026 |
footer-line |
text | no | Reinders Data Works · Eindhoven · KvK 92184760 · VAT NL003941822B47 |
Repeat: entry (1–14×)
One row per task or project line, with the hours booked on each of the seven days and the row total.
| Slot | Type | Req. | Example |
|---|---|---|---|
entry-task |
text | yes | Data platform migration — ETL rebuild |
entry-code |
text | yes | KP-2411 |
entry-d1 |
text | yes | 3,5 |
entry-d2 |
text | yes | 3,0 |
entry-d3 |
text | yes | 2,0 |
entry-d4 |
text | yes | 4,0 |
entry-d5 |
text | yes | 1,5 |
entry-d6 |
text | yes | – |
entry-d7 |
text | yes | – |
entry-total |
text | yes | 14,0 |
Optional blocks
rates— Rate strip below the grid (hourly rate, billable hours, amount due) that turns the sheet into a pre-invoice. Drop it when the sheet only records hours.notes— Short notes block for overtime, travel, absence or anything that explains an unusual day.
The authoritative fill instructions from manifest.json — the only place a template may instruct an agent (why).
One 'entry' row per task line; delete the data-example rows (preview only). ARITHMETIC-CRITICAL: compute entry-total for each row (sum of its seven day cells), each day total (total-d1…total-d7 = that day summed down all rows), and total-hours — then verify that the sum of the row totals equals the sum of the column totals equals total-hours. If they disagree, correct the cells, never the totals. Use one decimal convention throughout and never mix: the placeholders use a comma and exactly one decimal ('7,5', '8,0'). Write '–' in every cell with no hours, including empty day totals, so zero reads differently from not-filled-in. Keep entry-task under ~40 chars. More than 12 h on one day is probably an error — flag it rather than entering it silently. In the rates strip, billable-hours defaults to total-hours and amount-due = hourly-rate × billable-hours, recomputed, never copied. Set day-1-label…day-7-label to the Mon–Sun dates (dd/mm), consistent with week-number and period-line; other dates as '7 Sep 2026'. Drop the rates or notes optional when there is nothing real to say. Leave the two signature lines empty for hand-signing. If the rate, codes or client details are unknown, leave placeholders like [YOUR HOURLY RATE] and tell the user to fill them via the built-in Edit button.
Published versions are immutable: /t/timesheet@{version}/ never changes once live. /t/timesheet/ always points at the latest.