Tutorials

Availability Form Template with a Team Coverage Sheet

A team availability form and coverage template using stable person and slot IDs, explicit unknown answers, and unique-person headcount checks.

Start building for free
3 min readPublished
Team availability answers mapped to dated shift slots and headcount gaps
On this page

An availability form template works best when every answer belongs to one person and one dated time slot. This template separates availability from shift assignment, so a manager can count unique available people and compare that count with required coverage.

Download the Excel workbook · Coverage requirements (CSV) · Example rows (CSV) · Slots (CSV) · Application field specification (JSON)

Define dated slots before asking people to respond

Team availability answers mapped to dated shift slots and headcount gaps

AI-generated editorial illustration.

Give each slot a stable ID and store its start, end, and time zone. A label such as “Saturday evening” becomes ambiguous across dates and locations; a row like EVT-2026-11-07-1800-2200 identifies the actual local interval. For overnight work, store separate start and end dates.

Ask for a response of available, unavailable, or unknown for each slot. A blank or unknown answer must not count toward coverage. Record the submission time and source so a later response can replace that person’s earlier answer without creating a second person.

Person ID Slot ID Answer Submitted at
P-031 EVT-2026-11-07-1800-2200 available 2026-10-02 09:12 ET
P-044 EVT-2026-11-07-1800-2200 unavailable 2026-10-02 09:27 ET
P-031 EVT-2026-11-08-2200-0200 unknown 2026-10-03 05:00 ET

These are synthetic rows. For each slot, count distinct person IDs whose latest answer is available. The download includes a later unavailable answer from P-031. That replaces their earlier available answer. P-052 remains available, so the latest responses give one available person against a requirement of four: a gap of three. P-031 still contributes only one current answer.

Keep preferences separate from assignments

Availability is a person's stated preference for a time window. An assignment is a manager's decision that places the person on a shift. Store assignments in a separate schedule table with an assigned-by field and assignment status. A person's availability response does not promise a shift, reserve labor, or update payroll.

For a manager’s weekly review, show the date, local time zone, required headcount, available unique people, gap, and names of people who selected available. Restrict names and contact details to coordinators who need them; share aggregate coverage with a wider group when individual responses are private.

Use the included CSV and form specification

sample.csv contains one row per person-slot response. slots.csv defines the dated intervals, including an overnight example, and coverage_requirements.csv sets the headcount target. form-template.json lists the response fields and proposed constraints. The files are synthetic starter data; adjust slot lengths, roles, and privacy rules to your team.

The coverage calculation should use the latest response for each (person_id, slot_id) pair, then count unique people with an available answer. Preserve submission history by unique response ID, and derive one current answer per person and slot. Reject duplicate response IDs and conflicting answers with identical person, slot, and timestamp. Do not count unknown as available or carry a response into a different week.

Build a coverage tool in Atoms

An Atoms app can use Atoms Cloud or a connected Supabase project as its backend; the two are alternatives for one project. Connecting a backend does not itself produce the form, calculation, or saved records. Build the response and coverage views, then save a test answer, refresh, and verify the stored row. If using Supabase, write and test row-level security for the roles that can read individual responses.

Participants should be able to update their own responses. Coordinators can view the responses needed to make a schedule, while aggregate coverage can be shared more broadly. Enforce access in server-side operations and the database. Verify each role with separate accounts, and report any test that has not been run.

Atoms backend connection guide · Supabase access policies

Build prompt

Copy this prompt into your Atoms project chat to request a first implementation. Check the generated slot calculation, access rules, and saved data before using it for staffing.

text
Build an availability collection and team coverage app for a manager coordinating employees or volunteers. Use either Atoms Cloud or the connected Supabase backend for this project. Create people, availability_submissions, availability_slots, and coverage_requirements tables with stable IDs and foreign keys. Keep shift assignments separate from availability answers.

Each slot has slot_id, start_datetime, end_datetime, time_zone, and a human-readable label. Store start and end dates separately so overnight slots remain unambiguous. Each person-slot answer is available, unavailable, or unknown and includes a submitted_at timestamp and source ID. Keep the latest answer per (person_id, slot_id), replacing an earlier answer rather than adding another count. Coverage requirements store the slot ID and required unique-person headcount. Calculate available_count from distinct people whose latest answer is available, and gap = max(required_count - available_count, 0). Unknown and missing responses do not count.

Roles: a participant can create and update only their own availability; a coordinator can read individual responses and set coverage requirements; other viewers can see aggregate counts only. Enforce organization and owner access on the server and database. Do not treat a hidden UI control as permission enforcement. Validate date/time values, time zones, allowed answer values, and nonnegative headcount. Do not assign shifts automatically or imply that an availability answer guarantees a shift.

Seed synthetic examples: for slot EVT-2026-11-07-1800-2200 require 4 people; P-031 and P-052 answer available; P-044 answers unavailable; P-031 later changes their answer to unavailable. The final available count must be 1 and the gap 3. Preserve both P-031 submissions in history while counting only the latest answer. Reject conflicting equal-timestamp answers. Add overnight slot EVT-2026-11-08-2200-0200 with separate start and end dates. Show the count, requirement, and gap for each dated slot.

Save one changed answer, refresh the app, and verify the new answer in the app and selected backend. Test participant access to another person's record and coordinator access with separate accounts. Report completed and uncompleted checks. Do not assume an external calendar or payroll integration.

Copy the build brief and use it to create your version in Atoms.

Build a team availability app

For a known repeating cycle, use the rotating shift schedule generator.

Share this article
Made with Atoms

Your next idea starts here.

Turn what you learned into a working app or website.

Start building for free