From Excel Chaos to a Real-Time Seasonal Recruitment Platform
Starting point
The Nordic shipping company's seasonal recruitment process was handled through a network of Excel files sent between HR, recruiters, and half a dozen external parties: catering partner, staffing partner, payroll office, logistics partner, and crew planning. Each party needed its own subset of employee data, but everyone worked from the same source files. The result was version chaos: no one knew for sure which file was latest, changes were lost across email threads, and manual copy errors led to incorrect data for recipients.
Beyond the operational drag, there was a growing GDPR risk. Sensitive employee data (personal identity numbers, payroll details, health certificates) was distributed uncontrolled through email and shared folders without access control or traceability. There was no way to know who had seen or changed what. In an audit, the organization would not be able to account for the data flow.
At the same time, pressure increased before each recruitment season. The HR team spent a disproportionate amount of time manually compiling, filtering, and sending data extracts instead of focusing on its core work. Every new employee added meant manual updates in several tabs and several send-outs, a process that was neither scalable nor sustainable.
My contribution
- Real-time platform with role-based access: A complete web application was built with Next.js 16, React 19, TypeScript, and Supabase (PostgreSQL). Seven distinct roles (HR admin, recruiter, catering partner, staffing partner, payroll office, logistics partner, and crew) each get a tailored view of the same data source, governed by Row Level Security directly in the database.
- Hybrid schema with dynamic columns: Core data is stored relationally while party-specific fields are handled through JSONB (
custom_data). This gives HR admin full control over which columns each external party can see and edit, without database changes or a new deployment. - Automated reminders and notifications: Cron jobs on Vercel trigger daily staffing-partner master-data reminders and personnel-certification deadline notifications (Mon–Fri 06:00 UTC), eliminating manual follow-up and reducing the risk of missed deadlines.
- Import/export with validation: Support for CSV and Excel import with type checks and error reporting, plus filtered export with selectable fields. A crew-specific export for crew-ready employees is available as a dedicated flow.
- Complete change log and GDPR-ready foundation: All field changes are logged in
employee_column_changes. Soft delete (archiving instead of deletion), activity tracking per user, and session management with HTTP-only cookies provide a solid foundation for GDPR compliance. - Room and capacity management: Digital support for hotel room allocation based on gender and role, connected to staffing-partner dates and capacity planning, replacing a process that had previously been handled entirely on paper.
Measurable impact
Time to share data with an external party
↓ ~95%
Data quality and version control
Version chaos eliminated
Audit/GDPR traceability
From none → audit-ready
Time from concept to production
542 commits, 42 migrations
Outcome
The Nordic shipping company moved from a manual, error-prone Excel flow to a modern real-time platform where seven external parties can log in and see exactly the data they need, nothing more and nothing less. The HR team saves hours per week because it no longer has to compile and send extracts, and the risk of incorrect data for recipients has effectively been eliminated. Automated deadline monitoring means critical dates for the staffing partner and personnel-certification system no longer fall through the cracks.
Technically, the solution rests on a modern stack (Next.js, Supabase, TypeScript) with Row Level Security as the primary protection layer, a complete change log, and an architecture that can be extended with new roles or data fields without a rebuild. The platform is ready for production on Vercel with automated nightly database backups and a staging environment. It gives the Nordic shipping company the confidence to keep developing the system long after the engagement ends.