Business Documentation

Noor Staffing — Timekeeping & Attendance Platform

Prepared for: SJ Innovation × Noor Staffing Group · Prototype v5 · Living document

1. Executive Summary

Noor Staffing Group places W-2 employees and 1099/C2C consultants across multiple client companies. Time capture today is fragmented — some clients use paper, some Excel, some their own systems — and approvals get stuck in email. The result is late payroll, invoicing disputes, and no single source of truth for hours worked.

This prototype demonstrates a unified Timekeeping & Attendance platform that:

  • Captures time in one place with geofenced punch-in for W-2 employees and weekly grids for consultants.
  • Routes every timesheet through a configurable approval chain (internal ops → client manager) with email quick-approve.
  • Syncs approved hours into Avionté for payroll and invoicing.

The build is a mock-data desktop prototype intended for the Thursday client meeting — no real backend, GPS, or Avionté connection yet. All flows and screens shown here are clickable in the live app.

Role picker — the demo entry point
/Role picker — the demo entry point

2. Personas & Roles

Four primary personas were identified in the Jul 13 discovery call and drive the four dashboards in the prototype.

PersonaPrimary goalPrototype dashboard
Internal Admin (Noor Ops)See every worker, every timesheet, every exception. Own final approval and Avionté push./admin
Client ManagerApprove their workers' hours quickly, ideally from an email link. See what they are being billed for./client
W-2 EmployeePunch in from the job site; see PTO balance; know what's approved./talent/employee
1099 / C2C ConsultantEnter hours weekly, submit, know when they are paid./talent/consultant

3. Product Principles

  • Mock-only for now — no real auth, no real GPS, no live Avionté API. Every seed is deterministic so the demo is repeatable.
  • Desktop-first — the prototype is optimised for a client meeting on a laptop; a native mobile app is a Phase-2 conversation.
  • Avionté-shaped data — placements, pay/bill rates, and sync logs use Avionté field names so the eventual integration is a one-to-one mapping.
  • Approvals are the product — the fastest path from clock-out to payroll wins the deal. Everything else supports that flow.

4. Information Architecture

The prototype has one landing route that switches into four role-scoped areas.

AreaRoutesNotes
Landing/Role picker (demo only)
Admin/admin, /admin/live, /admin/clients, /admin/talent, /admin/placements, /admin/approvals, /admin/funnel, /admin/exceptions, /admin/sync, /admin/roadmapNoor internal ops
Client/client, /client/approvals, /client/email, /client/workersExternal client manager
Talent (Employee)/talent/employee, /talent/employee/timesheet, /talent/employee/pto, /talent/employee/placementW-2
Talent (Consultant)/talent/consultant, /talent/consultant/timesheet, /talent/consultant/placement1099 / C2C

5. Design System

The visual language is intentionally understated — a professional operations tool, not a marketing site. All UI is composed from a small set of shared primitives so every page looks like it belongs in the same product.

  • Palette: Noor blue (`noor-600` / `noor-700`) as the primary; slate for text; emerald/amber/red for state.
  • Typography: system UI stack with a strong bold weight for headings and page titles.
  • Primitives: `PageHeader`, `StatCard`, `FilterBar`, `AvatarInitials`, `StatusBadge`, `ApprovalStepper`, `DetailDrawer`.
  • Layout: fixed left sidebar (`AppShell`) with role-specific navigation; every screen uses the same page header + card grid.

6. Admin Experience (Noor Ops)

The admin area is the internal source of truth. It shows every worker, every timesheet, every exception, and owns the final push to Avionté.

Admin operations dashboard with payroll cutoff banner, KPIs, hours-by-day chart and live activity feed
/adminAdmin operations dashboard with payroll cutoff banner, KPIs, hours-by-day chart and live activity feed
Live view — who is on the clock now, grouped by client site
/admin/liveLive view — who is on the clock now, grouped by client site
Placements list — links workers to clients with pay/bill rates and approver chain
/admin/placementsPlacements list — links workers to clients with pay/bill rates and approver chain
Talent directory — W-2 employees and 1099/C2C consultants with filters and detail drawer
/admin/talentTalent directory — W-2 employees and 1099/C2C consultants with filters and detail drawer
Internal approvals queue with bulk actions and per-entry stepper
/admin/approvalsInternal approvals queue with bulk actions and per-entry stepper
Approval funnel — bottleneck detection across internal and client stages
/admin/funnelApproval funnel — bottleneck detection across internal and client stages
Exceptions view — geofence violations and pending adjustments
/admin/exceptionsExceptions view — geofence violations and pending adjustments
Client accounts with contact roles and active placements
/admin/clientsClient accounts with contact roles and active placements
Avionté sync log — mocked field mappings and last successful push
/admin/syncAvionté sync log — mocked field mappings and last successful push

7. Talent Experience

Two variants of the same shell — employees clock in and out with geofence enforcement; consultants enter weekly hour grids. Both see their own placement details, adjustment history, and PTO / accrual where applicable.

The employee timesheet includes a live geofence simulation: toggling 'Outside Geofence' disables the clock-in button and triggers a blocking modal, mirroring the hard-block policy Noor asked for.

Employee timesheet — punch clock with geofence status and adjustment flow
/talent/employee/timesheetEmployee timesheet — punch clock with geofence status and adjustment flow
PTO balances and request form for W-2 employees
/talent/employee/ptoPTO balances and request form for W-2 employees
Consultant weekly grid — daily-hours entry for 1099/C2C
/talent/consultant/timesheetConsultant weekly grid — daily-hours entry for 1099/C2C
Talent's own placement detail — client, rate, approver chain
/talent/employee/placementTalent's own placement detail — client, rate, approver chain

8. Client Experience

The client portal is deliberately narrow — it only shows what a client manager needs to approve time and understand their spend. No worker PII beyond what's already in the placement, no billing rate details.

A 6-week hours & spend trend chart, an on-shift worker feed, a bulk approval queue, and an email-quick-approve preview cover the demo conversation.

Client portal dashboard — 6-week hours & spend trend, on-shift workers
/clientClient portal dashboard — 6-week hours & spend trend, on-shift workers
Client-side approvals — bulk approve worker time
/client/approvalsClient-side approvals — bulk approve worker time
Email-notification preview with working quick-approve buttons
/client/emailEmail-notification preview with working quick-approve buttons
Client's read-only worker roster
/client/workersClient's read-only worker roster

9. Cross-cutting Flows

  • Time capture → Approval → Sync: worker submits, internal ops reviews, client approves, Avionté sync runs.
  • Dynamic approval chain: each placement carries an `approvers[]` list. The `ApprovalStepper` renders that list live, so different placements can require different sign-offs.
  • Adjustments: any change to a submitted entry (e.g. 8h → 6h) creates an audit row with actor, timestamp, and reason.
  • Exceptions: geofence violations and pending adjustments are surfaced on the admin dashboard and in the exceptions view.
  • Bottleneck view: the approval funnel shows how long entries wait at each stage so ops can see where the queue is stuck.

10. Data Model (mocked)

The mock data in `src/lib/mock-data.ts` and `src/lib/demo-data.ts` uses Avionté-shaped entities. Field names below are what a real integration would map to.

EntityKey fieldsNotes
Talentid, firstName, lastName, type (Employee | Consultant), status, docs, ptoBalanceDocs include I-9, W-4, cert. of insurance for consultants
Clientid, name, contacts[], activePlacementsContacts carry approver role
Placementid, talentId, clientId, jobTitle, payRate, billRate, approvers[]Approvers drives the dynamic stepper
Timesheet Entryid, placementId, dayWorked, hours, status, geofence, adjustmentStatus: Saved → Submitted → Internal Approved → Client Approved → Synced
Approvalactor, stage, at, noteOne row per approver step
Sync Logat, direction, entriesPushed, resultMocked Avionté push responses

11. Build Log

  • Round 1 — Skeleton: four role dashboards, landing role picker, mock seed data, basic AppShell.
  • Round 2 — Depth: page headers, stat cards, filter bar, detail drawer, activity feed, hours-by-day chart, payroll cutoff banner.
  • Round 3 — Talent depth: tabbed detail drawer (Profile / Timesheets / Compliance / Notes), avatars, accrual history, sync history log.
  • Round 4 — Client polish: 6-week trend chart, on-shift feed, email quick-approve preview.
  • Round 5 — Spec gaps closed: geofence hard-block modal, dynamic approval stepper reading from `placement.approvers[]`, admin Live view, admin Funnel view, admin Roadmap / Business Doc (this page).

12. Gap Analysis vs Original Spec

The prototype covers every discovery-call requirement that can be demonstrated without a real backend. The table below shows the state of each.

RequirementStateNotes
Geofenced W-2 punch in/outSimulatedToggle in the employee timesheet
Consultant weekly hour entryBuiltWeekly grid with submit
Configurable approval chainBuiltDynamic from placement.approvers[]
Email quick-approve for clientsBuilt (preview)Buttons work in the in-app preview
Avionté syncStubbedMock sync log with realistic field map
Exceptions dashboardBuiltAdmin exceptions + funnel views
Live view of who's on shiftBuilt/admin/live
PTO accrual for W-2BuiltBalances, history, request form
Real GPSNot in prototypeSimulated toggle instead
Real auth / SSONot in prototypeRole picker on landing
Payroll processingNot in prototypeOut of scope for demo
Native mobile appNot in prototypeDesktop-only for demo

13. Proposed Roadmap

These are the items surfaced by the discovery call that are not in the current prototype. They are the menu for the Thursday scoping conversation.

Built in this prototype
See section 11 (Build Log) and section 12 (Gap Analysis) for the full inventory.
Proposed — discuss Thursday
Shift breadcrumb / movement playback
Replay a worker's on-site GPS trail during a disputed shift.
Exception trend chart
Geofence violations & missed punches trended over time by client.
Worker's own hours & earnings trend
Give the talent their own 6-week earnings chart in the app.
Full audit-trail timeline per entry
Who changed what, when — every edit, one clickable timeline.
Placement history as visual Gantt
See every talent's client tenure at a glance across a year.
Side-by-side client comparison rollup
Compare hours / spend / dispute-rate across all clients in one view.
Calendar view alternative to the table
Managers who prefer week-view calendars over row tables.

14. Open Questions & Next Steps

  • Tony to send Avionté API credentials and docs so integration can be scoped.
  • Contracts to be reviewed before any production work.
  • Separate personal check-in with Deris (missed the discovery call).
  • Confirm which two or three 'Proposed' items become the next build cycle.
  • Decide whether the mobile experience is a PWA or a native app.

15. Appendix — Screen Inventory

Thumbnails of every screen captured in this document, in nav order.

End of document · Print or save as PDF using the button at the top.