All Shipped by HR

Shipped by HR

Building a Time & Attendance engine for Carwow

Idan Shteinberg · Carwow

In this episode Adam is joined by Idan Shteinberg, People Operations Manager at Carwow who walks us through how (& why) he built what he calls an 'attendance' engine for Carwow to help the business track time and attendance and manage office capacity across 4 UK & European offices

What they built

A custom Time & Attendance engine for Carwow (~650 employees across London, Lisbon, Madrid, and Berlin) that handles:

  • Daily check-in via a rotating one-minute code or QR code displayed on an office tablet; employees select their status (office, home, or on the road)
  • Location-aware rules: EU employees must check in and out and have access to a monthly timesheet; UK employees check in only
  • 4-week compliance tracker visible to each employee, with a tile-based colour-coded view
  • Amendment/retroactive request flow that routes to the manager for approval
  • Manager dashboard: pending timesheet approvals, amendment requests, tiered compliance alerts, and a full team view
  • Leadership dashboard: company-wide compliance and attendance trends vs. headcount baseline, filterable by business area, office, and date range (weekly or daily)
  • Office capacity dashboard: heat map of attendance by day per office, benchmarked against desk capacity
  • Natural-language query interface (ChatGPT-style) embedded in the dashboard for ad-hoc questions (e.g. "which manager is most compliant?")
  • Downloadable Excel reports for org-level attendance data
  • Automated sync with HiBob every 30 minutes, pulling employee data and annual leave so the system stays current

Why they built it

  • CEO mandated increased office attendance; no off-the-shelf system could handle Carwow's varied office setups (full Wi-Fi/access control in London vs. a simple key-entry door in Portugal)
  • Vendors that came close were prohibitively expensive and operationally complex
  • Legal requirement in EU jurisdictions to track time and attendance
  • Leadership needed trend data: which days are busiest, why people aren't coming in, how often staff are visiting clients
  • Office managers needed capacity data to assess whether office space matched headcount
  • Estimated cost of a commercial solution: ~£50,000/year; actual running cost of the build: ~£3/month

Tools used

ToolPurpose
ChatGPTInitial solution design, architecture guidance, iterative troubleshooting
Claude + Claude CodePrimary coding assistant for V2; writes and edits code based on plain-English prompts
Firebase (Firestore + Hosting)Backend database and app hosting
Google Cloud ShellEnvironment for writing and deploying code
Google Apps ScriptScheduled sync (every 30 min) between HiBob and Firestore
HiBob (HRIS)Source of truth for employee data, locations, and annual leave via API/report export
Google SheetsUsed minimally in V2 for lightweight data handling

Note: V1 was built entirely on Google Sheets + Google Apps Script + HTML pages - it worked initially but couldn't handle ~500 daily users and became unstable.


How you could build this yourself

  1. Define your requirements before touching any tool. List every stakeholder's need: employee UX, manager visibility, leadership reporting, legal compliance, office capacity. Idan had at least four distinct requirement sets before he started.

  2. Audit what your HRIS can expose. Check whether your HR system (e.g. Shapes.co) has an API or scheduled report export. Identify the minimum data fields you need (name, email, location, leave status) - don't pull more than necessary.

  3. Start with a ChatGPT or Claude conversation, not a blank screen. Describe your problem, your constraints (budget, office setups, legal requirements), and what you tried. Ask it to recommend an architecture. Idan's prompt was essentially: "We can't afford a vendor - how do I build this internally?"

  4. Prototype in Google Sheets + Apps Script first if you're non-technical. It's a fast way to validate logic and flows. Expect it to break under real traffic - treat it as a learning exercise, not a production system.

  5. Migrate to Firebase for scale. Use Claude or ChatGPT to guide you through setting up Firestore (database) and Firebase Hosting (front end). You don't need to understand the code line-by-line - follow the instructions step by step and ask the AI to explain anything confusing.

  6. Build the sync between your HRIS and Firestore using Google Apps Script. Set it to run on a schedule (e.g. every 30 minutes). Scope it tightly - only pull the fields you actually need.

  7. Design location-aware logic early. Decide upfront which rules apply to which offices (e.g. check-out required in EU, not in UK). Build these as conditions in your data model so the front end can show or hide features per user.

  8. Add the verification layer for office check-ins. A tablet displaying a rotating code (or QR code) is a low-cost, low-infrastructure way to confirm physical presence without needing badge readers or Wi-Fi integration.

  9. Build the amendment/approval flow before launch. Employees will miss check-ins. Having a self-serve retroactive request that routes to a manager prevents support tickets and builds trust in the system.

  10. Collect feedback fast and feed it back to Claude/ChatGPT. Because it's internal, you can iterate immediately. Idan used real user complaints as prompts to improve the system - treat your users as co-designers.

  11. Add dashboards last, once the data is clean. Build the heat maps, compliance trends, and capacity charts after the core check-in data is reliable. Use Claude Code to generate chart components from plain-English descriptions of what you want to see.


Source

Built by Idan Shteinberg, People Ops Manager at Carwow, and presented as part of an Open Org "Shipped by HR" session.