Internal HR Management Platform
A 200-person Paris scale-up had outgrown a collection of Notion databases and Google Sheets for HR operations. Onboarding checklists were completed inconsistently, leave requests were tracked in a shared spreadsheet with frequent conflicts, and performance review cycles required the HR team to manually send 200+ emails. They needed a single source of truth before their next headcount doubling.
Build something similar →The Challenge
A 200-person Paris scale-up had outgrown a collection of Notion databases and Google Sheets for HR operations. Onboarding checklists were completed inconsistently, leave requests were tracked in a shared spreadsheet with frequent conflicts, and performance review cycles required the HR team to manually send 200+ emails. They needed a single source of truth before their next headcount doubling.
Our Solution
We built a WeWeb internal app backed by Xano as the API layer and Supabase for structured data. The key design decision was to model HR processes as state machines in Xano — onboarding has 14 stages, each with assigned owners and SLA timers. Slack webhook integrations fire on overdue tasks. WeWeb's role-based visibility meant managers see their team's data, HR sees everything, and employees see only their own records.
Modelling HR processes as state machines
Every HR process has stages, owners, deadlines, and valid transitions. We modelled these in Xano as workflow definitions stored in a JSON column: each stage has an id, a display name, required fields, an owner role, an SLA in hours, and an array of valid next stages. The Xano API enforces transitions — you cannot mark "equipment issued" as complete before "equipment ordered" is done. This eliminated the most common HR complaint: tasks marked done out of sequence creating compliance gaps.
Leave management without calendar conflicts
The existing spreadsheet had no conflict detection: two people on the same team could both take the same week off without any warning. Our Xano leave engine queries all approved leaves for a team before allowing a new request: if the team coverage would fall below a configurable threshold (e.g. 70% must be present), the system rejects the request and suggests alternative dates. Approved leaves sync to both Google Calendar (via Google API) and Outlook (via Microsoft Graph) so the approved leave appears in the manager's calendar automatically.
360-degree performance reviews
Performance review cycles are configured by HR: select a cohort, set review dates, choose which question templates apply. Xano generates a review record for each employee-reviewer pair and sends invitation emails via Resend. Reviewers complete forms in WeWeb — the UI adapts based on whether you're reviewing a peer, a direct report, or your manager. Results are aggregated in Supabase and HR can export a calibration matrix as CSV. The entire cycle for 200 employees runs with one HR manager spending approximately 2 hours on setup.
Migration and rollout
Data migration from Notion and Google Sheets to Supabase ran in three phases: read-only import for validation, parallel running for 2 weeks (old and new systems side by side), then cutover. We wrote migration scripts in Node.js that parsed the Notion CSV exports, normalised inconsistent field formats (leave types had 11 different spellings across spreadsheets), and inserted via the Xano API. Zero records were lost. The entire 200-person company was migrated over a single weekend.
Features delivered
Technology stack
Want similar results?
Book a free call and we'll scope your project and give you a fixed quote within 48h.
Get a free quote →Our HR team went from spending Monday mornings firefighting spreadsheet conflicts to having a 9am coffee and checking a dashboard. The ROI was immediate.Marie-Claire B.Head of People, Series B Scale-up (Paris)
Ready to build yours?
Every project starts with a free 30-minute call. We'll scope your idea, answer your questions, and give you a fixed quote.
Book a free call →