Sigma's App Templates are ready-to-use applications built on Sigma's native features and connected to sample data. Each one ships fully functional — you can explore it immediately, learn how it's built by switching to edit mode, and adapt it to your own projects without starting from scratch.
The Shift Management app — called Clockwork — gives restaurant and hourly-workforce teams a single surface for building weekly schedules, tracking attendance, logging clock-in and clock-out times, and monitoring labor costs against budget. Managers can spot coverage gaps at a glance, fill open shifts, flag attendance issues in real time, and get an AI-generated briefing on the week's operational priorities. The same structure adapts to any team that manages shift-based scheduling — retail, hospitality, healthcare, or operations.
This QuickStart walks through how the app works across each of its pages, how the AI summary is built, and how to adapt it for your own team.
Restaurant managers and operations leads evaluating Sigma for shift scheduling and workforce tracking. Solutions Engineers and technical stakeholders exploring the app as a reference design for input-table-driven scheduling, attendance tracking, and AI-assisted labor operations.
Templates > App Templates.
Navigate to Templates in the left sidebar. The Shift Management app appears in the Made by Sigma collection:

Click the template card to open a preview. Before clicking Use template, confirm both requirements shown on the detail page are met:
Once both are in place, click Use template. Sigma creates a personal copy in your workspace:

Click Save as and give the workbook a name:
Shift Management
The app opens on its README page — an orientation guide built directly into the workbook:

The README includes a demo video, a five-step getting-started guide, and a description of each application page. The recommended sequence is:
Place the workbook into Published mode:

Clockwork has four active pages and a hidden data backend:


The Weekly Schedule page is the manager's primary workspace for building and maintaining the week's shift assignments.
The header shows a live count of shifts that still need coverage this week and two KPI tiles on the right:
Greatest(SumIf(...)) across all seven daysLookup from the Weekly Budget input tableA date range control at the top lets you navigate between weeks. The date range title updates dynamically — {{[dates-input].start | %b %-d}} - {{[dates-input].end | %b %-d %Y}} — so the header always reflects the selected week.

Below the header, a seven-day strip shows open shift counts by day (SUN through SAT).
Each day's count comes from CountIf([New Schedule/Employee label] = "Open Shifts", ...) filtered to that specific day.
Days with open slots stand out at a glance, making it easy to prioritize which days to fill first.

The main schedule grid is a pivot table organized by employee (rows) and day (columns). Each cell shows the shift time range and role — for example, 11p-7a Shift Lead or 6p-2a Cashier — or Open Shifts for unfilled slots.
A Role segmented filter at the top of the grid lets you narrow the view to a single role — useful when staffing a specific position.
To assign an employee to an open slot, click the cell and select from the employee dropdown. The assignment is written to the Shift Assignments input table:

A Cost row at the bottom of the grid shows the total projected labor cost for each day of the week. This gives managers an immediate read on which days are most expensive before finalizing assignments:

A Scheduling Agent panel sits alongside the schedule grid. It is a Sigma Agent — a governed AI assistant scoped to the scheduling context — that lets managers ask questions and take actions in natural language:
Type a request in the Ask anything field to interact with the agent. For example: "Fill all open Cashier slots on Wednesday" or "Who is working Saturday night?":


The Attendance page gives managers a real-time view of who has shown up, who is late, and who has not appeared for their scheduled shift.
Three KPIs across the top of the page summarize the day at a glance:
Date navigation arrows and a Today button let you move between days. A shift filter — All Shifts, Opening, Morning, Mid, Afternoon, Evening, Closing — narrows the view to a single shift type:

Each employee scheduled for the selected day gets their own card. The card shows:
1 min early, 2 min late, or similarMessage and Add Note buttons for direct manager actions
The delta values — how early or late each punch is relative to the scheduled time — come from the Delta and Delta Out computed columns in the Attendance input table: DateDiff("minute", [scheduled_start], [actual_clock_in]).
A positive number means the employee clocked in late; negative means early. The FLAGGED KPI in the header counts employees with non-zero deltas or a no-show status.
WHY IT MATTERS:
Attendance records in Clockwork are write-surfaces, not read-only imports. Managers log notes and the app captures clock times directly, and those records immediately power the Labor Performance summary and AI briefing. A single input table connects the scheduling, attendance, and cost layers — no sync required.

The best way to understand Clockwork's scheduling workflow is to run through it end to end. This section walks through assigning an employee to an open shift on the Weekly Schedule page, then completing a clock-in on the Clock In/Out page.
Navigate to the Weekly Schedule page and click This week to jump to the current week. The Needed Coverage strip shows which days have open slots — Monday shows several unfilled shifts:
Scroll down to find Melissa Jordan in the schedule grid. Her Monday cell is empty. In the Open Shifts row, Monday lists the unfilled slots for the day.
Click the empty cell in Melissa Jordan's Monday row.

The available shifts and open slot count are displayed — select the 4p-12a · 05/18 Mon slot to assign her.

Click Submit.
The schedule grid now shows Melissa Jordan's slot filled, with the remaining open slot still visible in row three.

Navigate to the Clock In/Out page. The page displays a live clock and the current date, driven by the today-input control. The prompt reads "Who's clocking in?" with a name field below it.
Selecting Melissa Jordan from the select control loads the fixed sample data:

Once the date is made dynamic as mentioned above, the actual clock-in time is written to the Attendance input table's actual_clock_in field. The Delta column — DateDiff("minute", [scheduled_start], [actual_clock_in]) — computes the difference from the scheduled start automatically, so the Attendance page immediately reflects whether the clock-in was on time, early, or late.
The card then shows the Clocked In time and waits for the Clocked Out to be logged later.

The Clock In/Out page is intentionally minimal — a clock, a date, and a name search — so it works well embedded in a mobile app. Workers can clock in from their phones at the store without accessing the full workspace. Sigma's embed capability lets you surface any workbook page inside an external application.

The Labor Performance page gives managers a weekly cost summary — how much has been spent against budget, how projected and actual spending compares by day, and an AI-generated briefing on the week's most pressing operational priorities.
The headline KPI reads: "Labor cost is X% of budget this week." The percentage is computed dynamically — actual cost divided by the sum of actual plus remaining budget — and updates as attendance records come in:

Below the headline, a single line shows the dollar variance:
{{[WEEKLY BUDGET/Weekly Budget] - [ACTUAL SPEND/Sum of Actual Cost]}}over budget, at budget, or under budget based on the sign
The page includes a prominent AGENT SUMMARY panel that delivers a brief, action-oriented manager briefing. It is implemented as a CallText("ai_complete", "claude-sonnet-4-6", ...) formula directly in a text element — a live formula that runs each time the page loads or the date range changes:

The formula assembles a structured payload before passing it to the model. It concatenates the prompt control text with CountIf metrics computed inline:
The model — instructed by the Ai Weekly Ops Prompt control — returns a briefing in 75 words or fewer: one to two sentences on the most urgent priority, followed by up to three directive bullets. The format is designed for speed: a manager glancing at the page gets the three things that need action today, without reading through raw tables.
To see the formula, place the workbook in Edit mode and click the Agent Summary text element. The full CallText(...) expression appears in the element body:

WHY IT MATTERS:
The AI briefing is not a separate service or integration — it is a formula in a text element, governed by Sigma's existing permission model and driven by a prompt stored in an editable control. Operations managers can adjust the briefing's focus (e.g., emphasize overtime risk over coverage gaps) by editing the prompt on the Data page, without touching any formula. The model's inputs are explicit Sigma expressions — the same CountIf values a manager could read in the table below — which makes the output auditable and explainable.
Below the AI summary, a bar chart shows daily labor spend — actual cost, projected cost, and remaining budget — for each day of the selected week. This makes it easy to see which days ran over projection and how much runway remains for the week:

A table at the bottom of the page shows each employee's actual hours, projected cost, actual cost, and weekly totals. Overtime is visible here — employees whose actual hours exceed their weekly maximum appear with cost calculated at the overtime rate:


Place the workbook in Edit mode.
Six tabs organize everything that powers the app:
The Employees table is sourced from EXAMPLES.COLD_PROVISIONS.EMPLOYEES in the connected warehouse. It provides the employee directory: Employee Number, Employee Name, Role, Max Weekly Hours, and Hourly Rate Usd. This is the only warehouse table in the app — all scheduling data lives in input tables:

Five input tables store all application data. Four are editable in the published version by all users; the Open Shifts Employee placeholder is editable in draft only:

Shifts (Editable in published version, all users) — the shift template library. Each row defines a shift type: shift_id, store_id, date, day_of_week, shift_name, start_time, end_time, duration_hours, min_staff_needed, and week_id. Computed columns aggregate assigned employee names and look up projected and actual shift costs from Shift Assignments.
Shift Assignments (Editable in published version, all users) — the primary scheduling table. Each row links one employee to one shift on one date: assignment_id, shift_id, shift_name, employee_id, date, required_role, has_open_slot (checkbox), scheduled_start, and scheduled_end. Computed columns resolve employee names, look up clock-in and clock-out times from Attendance, and calculate Projected Cost and Actual Cost using the overtime-aware formula described below.
Attendance (Editable in published version, all users) — clock-in and clock-out records. Each row captures actual_clock_in, actual_clock_out, status (On Time / Late / No Show / Early Out / On Shift / Completed), scheduled_start, and scheduled_end. Two computed columns — Delta and Delta Out — calculate the difference between scheduled and actual times in minutes using DateDiff("minute", ...).
Weekly Budget (Editable in published version, all users) — per-week labor budget targets. Each row stores week_id, week_start, week_end, labor_budget, and store_id. Budget figures are looked up across the app using Lookup([Weekly Budget/labor_budget], [week_id], [Weekly Budget/week_id]).
Open Shifts Employee (Editable in draft) — a single-row placeholder (EMP-00000 / Open Shifts / Open Role) representing unfilled shift slots. When has_open_slot is true in Shift Assignments, this placeholder makes coverage gaps visible in the schedule grid as "Open Shifts" rather than nulls.
The Transformations tab holds two joined tables:
Employees — a union of the warehouse EMPLOYEES table and the Open Shifts Employee input table. This is the master employee list that powers all dropdowns and lookups across the app. The Open Shifts placeholder row (EMP-00000) participates in the union so unfilled slots resolve to "Open Shifts" rather than a null employee name.
Shift Assignments + 2 — the enriched master assignments table, joining Shift Assignments with employee data, rates, and computed cost columns. This is the table the Weekly Schedule pivot reads for its employee × day grid:

Six filtered views on the Helpers tab scope the master tables to the current date, week, or selection. They recalculate each time a date or selection changes:
max_hours_per_week limit
The Projected Cost and Actual Cost columns in Shift Assignments use a Least/Greatest pattern to split weekly hours at the employee's max_hours_per_week limit:
If([Weekly Total Projected Hours] = 0, 0,
[Effective Hours] * (
Least([Weekly Total Projected Hours], [max_hours_per_week]) / [Weekly Total Projected Hours] * [Hourly Rate]
+ Greatest(0, [Weekly Total Projected Hours] - [max_hours_per_week]) / [Weekly Total Projected Hours] * [Overtime Hourly Rate]
)
)

This formula apportions each shift's cost between the regular rate (for hours within the weekly limit) and the overtime rate (for hours above it).
The apportionment recalculates automatically whenever hours are added or removed — no manual adjustments needed when the schedule changes mid-week.
The AI tab holds two editable text controls that drive the app's AI features:
Ai Weekly Ops Prompt — the system prompt for the Agent Summary on the Labor Performance page. Instructs the model to return a briefing in 75 words or fewer: 1–2 sentences on the most urgent priority, followed by up to three directive bullets.
Ai Schedule Briefing Prompt — an alternate prompt for a shorter schedule-review briefing, focused on coverage gaps and cost highlights for the selected week.
Because these are editable text controls rather than hardcoded strings, you can change what the Agent Summary emphasizes — overtime risk, coverage gaps, attendance patterns — by editing the prompt text directly:

The Agent Summary on the Labor Performance screen is implemented as a CallText() formula in a text element — not a Sigma Agent, but a direct model call via a formula.
The formula assembles the model's input by concatenating the [Ai Weekly Ops Prompt] control value with CountIf and CountDistinctIf expressions:
CallText("ai_complete", "claude-sonnet-4-6",
[Ai Weekly Ops Prompt]
& " WEEK: " & Text(Min([Shift Assignments Current Week/date])) & " to " & Text(Max(...))
& " OPEN SLOTS: " & Text(CountIf([...Role] = "Open", ...))
& " OPEN BY ROLE AND DAY: Cashier-Sun=" & Text(CountIf(...))
... (additional role/day breakdowns)
& " EMPLOYEES IN OVERTIME: " & Text(CountDistinctIf(...))
& " LATE CLOCK-INS: " & Text(CountIf(...))
)

The model receives a structured text payload — not raw table data — and returns a formatted briefing. Because the model's inputs are explicit Sigma expressions, the briefing is grounded in the same numbers visible in the charts and tables on the page.
The Controls tab holds page coordination controls shared across the workbook:
05/05 Tue) used in page headers

Clockwork is designed to adapt. The scheduling structure — shift templates, employee assignments, attendance tracking, and cost calculations — works for any team that manages shift-based labor. The most common adaptation steps are below.
The app sources its employee directory from a warehouse table. In the template, this is EXAMPLES.COLD_PROVISIONS.EMPLOYEES. To connect your own employee data:
Edit mode, navigate to the Data page and select the Employees warehouse table
The Shifts input table defines the shift types available in your schedule. To configure shifts for your team:
Edit modeData page and select the Shifts input tableshift_name — the display name (e.g., Opening, Closing, Mid)start_time / end_time — shift hoursduration_hours — shift length in hoursmin_staff_needed — minimum number of employees required for coverage
Changes to the Shifts table immediately appear in the Weekly Schedule grid. The schedule grid's pivot groups by shift name, so new shift types become new rows automatically.
The Weekly Budget input table holds the labor budget targets the app tracks against. To configure it:
Data page and select the Weekly Budget input tableweek_id, week_start, week_end, labor_budget, and store_id
The Clock In/Out page uses a today-input control that is hardcoded to May 20, 2026 in the template so the sample data works correctly out of the box. In a production deployment, you'll want this to reflect the actual current date.
To make it dynamic, replace every reference to [today-input] with Today() throughout the workbook. The app's built-in info note (accessible via the ⓘ icon on the Clock In/Out page) documents this change.
The Ai Weekly Ops Prompt control on the Data page's AI tab can be edited to change what the Agent Summary emphasizes.
The default prompt focuses on open slots, overtime, and attendance patterns. For a retail context, you might adjust the prompt to reference your role names (e.g., Floor Associate, Shift Lead) and focus on foot-traffic-driven coverage requirements.


The Shift Management App Template demonstrates how Sigma's native features — input tables, Lookup joins, computed cost formulas, and CallText for AI-generated summaries — can be composed into a full scheduling and workforce management system without external tools or custom application code.
The scheduling layer is worth examining closely. Rather than tracking open shifts with nulls, Clockwork uses a placeholder employee unioned into the employee table — every slot in the schedule grid has a row, either assigned to a real employee or to "Open Shifts." This makes coverage gaps visible in the pivot table without special filtering, and means the same CountIf that drives the header KPI also feeds the AI briefing.
The cost calculation pattern is reusable across any hourly workforce context. The Least/Greatest split between regular and overtime hours means a single formula handles all schedule configurations correctly — no separate overtime columns, no manual adjustments when hours change. Connect it to an employee table with max_hours_per_week and hourly rates, and the cost math is automatic.
Additional Resource Links
Blog
Community
Help Center
QuickStarts
Be sure to check out all the latest developments at Sigma's First Friday Feature page!
