SP Photo Station

Product · Business Operations

Schedule, clock in, hire, and sign — on the platform that already runs the venues.

The staffing and contract path is conventionally four tools: a spreadsheet for the schedule, a separate punch clock, a tracker for the hiring pipeline, and DocuSign for contracts. SP Photo Station collapses all four into the same platform that runs the capture and sales side. One staff record per person. One audit log per tenant. One reminder surface.

Recurring shift templates

Publish a season or year of schedule from one template. Staff claim against availability, conflicts rejected atomically at the database layer.

Punch clock that knows the schedule

In and out punches with break tracking, late-punch detection against expected starts, overtime accrual into pay-period math. Full audit history per punch.

Hiring pipeline, applied to hired

Six-stage flow (applied, test, interview, offer, onboarding, hired) with auto-mailed offer letters and onboarding training gated to the hired transition.

Contracts that sign and file themselves

Stripe-backed e-signature or native browser capture. Three-email reminder cron over three days. Final PDFs flattened atomically and filed by year and location.

Why one staff record matters.

Splitting staff data across a scheduler, a clock, an HR tracker, and a contract system means every change is N reconciliations: the new hire goes in the HR tracker, gets added to the scheduler, gets a punch-clock profile created, gets a contract emailed. Each system has its own identity model; payroll month-end is a manual cross-check; and when someone leaves, removing them is N delete operations across N systems with N chances to leave a stale account active.

SP Photo Station starts from the working assumption that an operator shouldn't be the integrator. One staff_members row carries the person through hiring, onboarding, scheduling, shift claims, punches, ratings, badges, and contract signing. Every event references that one record. Reliability grades aggregate across all four signals. Audit trail is single-tenant and queryable from one place.

Where it earns its license

Six places the suite saves an integration.

Shifts you can publish forward

Recurring shift templates per venue. Define the standard week (Tuesday-Sunday 11am-7pm, two breaks, two photographers, one set manager) and publish it forward by season or year. The platform regenerates the schedule without manual recreation.

Inventory: §B.5

Staff claim shifts against their own availability

Photographers, performers, and managers set their availability windows. Open shifts post against a venue's coverage requirements; staff claim from the open pool. Conflicts are prevented atomically — slot collision rejection, not a 'let me check the spreadsheet' workflow.

Inventory: §B.5

Time clock that runs alongside the schedule

In and out punches with break tracking. The clock knows the schedule: late punches surface against expected start times; mid-shift breaks deduct correctly; overtime accrual rolls into pay-period math. Full audit history per punch — who clocked, where (station ID), and when (to the second).

Inventory: §B.6

Reliability grades that aggregate four signals

A rolling per-staff score updated every minute, computed from attendance (punch-vs-schedule deltas), photo critique scores from managers, customer rating averages, and sales effectiveness from POS attribution. Surfaces in the staff list as a single number.

Inventory: §B.6

Hiring pipeline from applied to hired

Six-stage flow with auto-mailed offer letters and onboarding training assignments that fire on offer acceptance. Public application landing page per venue captures inbound candidates without an applicant-tracking-system dependency.

Inventory: §B.11

Contracts that sign themselves and file themselves

Multi-role signing via Stripe-backed e-signature or native browser capture. Three-email reminder cron over three days. Signatures aspect-preserving; final PDF flattens atomically once all required signers complete. Contracts file by year, template type, and location.

Inventory: §B.11

Under the hood

Technical specs.

Identity model

One staff_members row per person per tenant. FK target for shifts, punches, hiring pipeline, contracts, critiques, customer ratings, badges. Soft-deletes preserve the audit chain.

Schedule durability

Recurring templates serialize into the database; publishing forward materializes individual shift rows. Shift cancellations check active customer bookings — shifts with reservations cannot be bulk-cancelled.

Reminder dispatch

Onboarding, contract, and shift-publication reminders flow through the notification outbox with exponential backoff (30s → 2m → 10m → 1h). Delivery retries survive replica restarts; webhooks reconcile delivered / bounced state.

Reliability aggregator

A worker reads from staff_activity_events and writes a per-staff rolling score every minute. Underlying signals stay queryable per-category.

Permissions

Per-role bundles plus per-staff overrides. New sensitive permissions ship as “default = nobody” — studio owner explicitly chooses who gets each capability. Admin banner surfaces unassigned permissions.

Multi-venue

Per-venue schedules with per-staff multi-venue assignments. Regional managers see all covered venues via org-chart hierarchy FKs. Set managers see only their own venue.

Common questions

FAQ.

Can my existing payroll service ingest the time clock data?

Punch records export as CSV via the admin portal. ADP, Gusto, and Paychex all consume CSV. Direct API export to specific payroll vendors is on the roadmap but not yet shipped.

Does the hiring pipeline integrate with applicant-tracking systems?

The pipeline is self-contained — applications come in through a public landing page per venue; candidates move through stages in the admin portal; offers auto-mail from there. No current integration with Greenhouse, Lever, or Workable; intentional scope for venues where SP Photo Station is the primary recruitment channel.

What happens to staff records when someone is terminated?

Soft-delete preserves the audit chain. The row gets a terminated_at timestamp and drops from active rosters, but historical punches, shifts, ratings, and contract records remain queryable. Re-hiring uses a new row by design.

Are contracts legally binding without DocuSign?

The e-signature implementation captures intent (typed name + checkbox acceptance) and method (Stripe Identity OTP for high-value contracts, native browser signature for routine ones) consistent with the ESIGN Act. Not a notary substitute — notarization-required contracts still need that out-of-band step.

How does scheduling handle multi-venue operators?

Per-venue schedules with per-staff multi-venue assignments. A photographer at three venues sees all three venues' open shifts; venue managers see only their own venue; regional managers see all covered venues via org-chart hierarchy FKs.

What does “default = nobody” mean for permissions?

New sensitive capabilities (booking-cancellation, contract-void, shift-bulk-edit) ship without seeded grants. On a fresh deploy nobody has the permission except the studio owner. An admin banner surfaces unassigned permissions so the studio owner knows to assign before staff hit a permission-denied wall.

See the four-in-one stack live.

We'll walk through your week from the schedule view to the punch clock to a sample hiring pipeline to a contract signing, on one platform with one staff record per person.

Schedule a demo