

Software / Marketplace MVP
Industry: Recruitment / Staffing

4 (pending, reviewed, shortlisted, hired)
Application pipeline stages
In short
Arcetis built a bilingual (Danish/English) recruitment marketplace for a Denmark-based temporary staffing company serving the kitchen/canteen and cleaning sectors, using Laravel 10, MySQL 8.0+, Redis, and Tailwind CSS. The platform includes candidate profiles with CV upload and skills/experience tagging, a job posting and application-pipeline system, company dashboards with candidate search and contract tracking, an admin panel, and GDPR-compliant data handling covering export, right-to-erasure, cookie consent, and breach notification. The founder has confirmed the project as delivered.
Arcetis built a bilingual recruitment marketplace for a Denmark-based staffing company that places temporary workers into the kitchen/canteen and cleaning sectors. Danish companies in these sectors rely on flexible, short-notice staffing, and the client needed a purpose-built platform rather than generic job-board software or manual spreadsheet-and-email coordination. The engagement covered a candidate-facing recruitment experience, profile creation, CV upload, and skills/experience tagging, alongside an employer-facing side where companies could post jobs, review applications, search the candidate pool, and track active contracts. Because the platform handles personal data for individuals located in the EU, GDPR compliance was a core requirement rather than an afterthought, covering data export, right-to-erasure with a 30-day grace period, cookie consent, and a breach-notification workflow. The founder has confirmed this project as delivered.
Temporary staffing for kitchen/canteen operations and commercial cleaning is a high-churn, high-volume segment of the Danish labor market. Companies in these sectors need to fill shifts quickly, verify that a candidate has the right skills and experience for a specific role, and keep a record of who worked which contract and for how long. Coordinating this over email, phone calls, and spreadsheets does not scale once a staffing operation is juggling multiple client companies and a rotating pool of candidates. The client needed a marketplace that could sit between two audiences with different needs: candidates looking for temporary kitchen/canteen or cleaning work, and Danish companies looking to hire them. Candidates needed a way to build a profile once, including a CV upload and structured skills/experience tags, and have it apply across every relevant opening rather than resubmitting the same information for every job. Companies needed the reverse: a way to post open roles, review and manage an application pipeline, search the existing candidate pool by skill or experience, and track which contracts were active, completed, or pending, all from a dashboard rather than a shared inbox. Because the platform serves the Danish market and needed to be bilingual in Danish and English, it also had to work for a workforce that includes non-Danish speakers, common in the kitchen/canteen and cleaning labor pool, without the client maintaining two separate codebases or content systems. Underneath both of those user-facing problems sat a harder requirement: the platform would be a system of record for personal data, CVs, contact details, work history, and contract records, for two categories of EU data subjects: candidates and company users. That meant GDPR compliance could not be bolted on later. The client needed data export, a right-to-erasure process with a defined grace period, cookie consent, and a breach-notification workflow built into the platform's architecture from the outset, alongside access control so that company accounts, candidates, and platform administrators each saw only the data they were authorized to see.
Arcetis led the end-to-end design and development of the marketplace platform, acting as the technical partner for the build. Arcetis architected the Laravel 10 application and the MySQL 8.0+ data model to support two distinct user types, candidates and companies, plus an internal admin role, each with its own permission set. Arcetis built the candidate-facing profile system, including CV upload and skills/experience tagging, and the employer-facing job posting and application-pipeline workflow. Arcetis designed and implemented company dashboards for candidate search and contract tracking, and built the admin panel used to oversee the platform. Arcetis implemented the bilingual Danish/English content layer using Spatie's translation tooling, and engineered the GDPR compliance workflows, data export, right-to-erasure with a 30-day grace period, cookie consent, and breach notification, as core parts of the application rather than add-ons.
Arcetis designed and built the core Laravel 10 marketplace application connecting Danish companies with temporary kitchen/canteen and cleaning staff. The platform runs on PHP 8.2+ and MySQL 8.0+, with the full interface available in Danish and English using Spatie's translation package, so content, labels, and candidate-submitted data render correctly for both audiences from a single codebase. This gave the client one platform to maintain instead of parallel language-specific builds, and let candidates and company users switch languages without losing context or functionality.
Arcetis built the candidate-facing side of the marketplace: profile creation, CV upload, and structured skills/experience tagging, so candidates could describe their kitchen/canteen or cleaning experience once and have it apply across every job they applied to. Tagging was built to support company-side search and filtering rather than free-text-only profiles, so employers could narrow the candidate pool by specific skills or experience level instead of manually reading every CV submitted against an open role.
Arcetis built the job posting workflow that lets Danish companies list open temporary positions and manage the resulting applications through a structured pipeline rather than an email inbox. Candidates apply to postings from their profile, and companies review, shortlist, and progress applicants through the pipeline from their dashboard. This replaced ad hoc manual coordination between staffing coordinators and client companies with a single, auditable record of who applied to what and when.
Arcetis designed and built the company-facing dashboard, giving Danish companies a way to search the existing candidate pool by skill and experience tags, review applicants, and track contracts and placement status tied to their postings. The dashboard consolidates hiring activity in one place, so a company's hiring contact doesn't need to reconcile job postings, applications, and contract status across separate tools or spreadsheets.
Arcetis built an admin panel giving the platform operator oversight of candidates, companies, job postings, and contracts, backed by a role-based permission system built with Spatie's Laravel-permission package. Administrators, company users, and candidates each operate within defined access boundaries, so the platform enforces who can see or edit which records rather than relying on manual process to prevent one company from viewing another's candidate data or contract details.
Arcetis built GDPR compliance into the platform's core rather than treating it as a follow-on task: a self-service data export function, a right-to-erasure process with a 30-day grace period before permanent deletion, cookie consent handling, and a breach-notification workflow. Because the marketplace stores personal data, including CVs and contract history, for individuals in the EU, these workflows were engineered as first-class application features governing how candidate and company data is stored, retained, and removed.
The marketplace was built on Laravel 10 running PHP 8.2+, a standard, well-supported combination for a data-heavy, multi-role web application like this one. Laravel's application structure gave Arcetis a clear separation between the candidate-facing surface (profile creation, CV upload, job applications), the company-facing surface (job posting, candidate search, contract tracking), and the administrative surface, with each surface backed by controllers, form-request validation, and Eloquent models mapped to a MySQL 8.0+ schema. The data model needed to represent several related entities cleanly: candidates and their profiles, skills/experience tags, CVs and other uploaded documents, companies and their users, job postings, applications moving through a pipeline, and contracts tied to successful placements. Structuring these as normalized MySQL tables with proper foreign keys let the platform support the two core search-and-filter use cases, companies searching candidates by skill/experience, and candidates browsing relevant job postings, without duplicating data across the candidate and company sides of the application. Role and permission handling was built with Spatie's Laravel-permission package, a common, production-tested choice for Laravel applications that need more than Laravel's default authorization gates. This let Arcetis define distinct roles, candidate, company user, and administrator, and assign granular permissions per role, so a single codebase could serve three audiences with different capabilities without duplicating logic across separate applications. Bilingual support was handled with Spatie's translatable package, which stores translated content alongside the base model rather than in a fully separate content system. This let dynamic content, job postings, skill/experience tags, and platform copy, exist in both Danish and English from a single record, with the interface rendering in whichever language the user selected, rather than the client maintaining a parallel Danish-only or English-only version of the platform. Redis was used for the workloads that benefit from an in-memory store rather than round-tripping to MySQL: session storage, caching frequently-read data such as candidate search results and job listings, and backing Laravel's queue system for work that shouldn't block the request/response cycle, CV file processing, GDPR-related background jobs such as scheduled erasure after the 30-day grace period, and notification delivery around applications and contract status changes. The front end was built with Tailwind CSS, a utility-first framework well suited to building the range of interfaces this platform required, candidate profile forms, company dashboards with search/filter controls, and admin screens, consistently and without a heavy separate design-system build. Tailwind's utility classes let Arcetis keep the candidate, company, and admin surfaces visually consistent while still tailoring each to its specific workflow. GDPR requirements were treated as application logic rather than a policy document layered on top: data export was built as a feature that assembles a candidate's or company user's stored data into an exportable format on request; right-to-erasure was implemented as a request-and-grace-period flow, with a 30-day window before records are permanently removed, giving the client time to catch accidental requests or resolve open contracts before deletion; cookie consent was implemented at the front-end layer; and a breach-notification workflow was built so the client has both a defined process to follow and the technical means to identify affected records if a breach were ever to occur.
Rather than building separate Danish and English versions of the platform, Arcetis used Spatie's translatable package to store multiple language versions of dynamic content, job postings, skill/experience tags, and platform copy, on the same underlying record. This let the application serve both languages from a single MySQL schema and a single codebase, so adding or editing content only had to happen once per record regardless of which language a user viewed it in.
Access control was built with Spatie's Laravel-permission package rather than custom-rolled authorization logic. Candidates, company users, and administrators were each assigned roles with defined permissions, so the platform enforces, at the framework level, which records a given user can view or modify. This kept company data isolated from other companies, kept candidate data scoped appropriately, and gave the admin panel controlled oversight without requiring separate applications per user type.
Work that didn't need to happen synchronously with a user's request, CV processing, notification delivery, and scheduled GDPR erasure jobs, was pushed to Laravel's queue system backed by Redis. This kept the application responsive for candidates and company users during normal use, while ensuring background tasks like the 30-day right-to-erasure countdown ran reliably without depending on a user's browser session staying open.
The platform was built to handle the full lifecycle of the personal data it collects: export on request, erasure on request with a 30-day grace period before permanent deletion, cookie consent capture, and a breach-notification workflow. These weren't retrofitted onto an existing schema; they were designed into the candidate, company, and contract data models from the start, since the platform stores CVs and contract history for EU data subjects.
Candidates, skills/experience tags, job postings, applications, and contracts were modeled as related MySQL tables rather than flattened or duplicated data, so company-side candidate search and contract tracking could query structured, relational data. That structure is what lets a company dashboard filter candidates by skill/experience and track a contract's status without manually cross-referencing spreadsheets.
Application pipeline stages
Languages supported
Technology used
Key learnings
This engagement is a useful example of what a compliance-heavy, two-sided marketplace build looks like when there's no room to treat regulatory requirements as an afterthought. Because the platform sits in the Danish staffing market and holds personal data for candidates and company users, GDPR wasn't a checkbox added near launch, data export, right-to-erasure with a grace period, cookie consent, and breach notification had to be part of the data model and application logic from the start. That's a different exercise than adding a cookie banner to an existing site, and it shaped decisions from how candidate records were structured to how background jobs were queued. The bilingual requirement is a similar case: rather than building and maintaining two separate platforms or content sets for Danish and English, using a translation-aware data layer meant one codebase could serve both languages without ongoing duplication of effort every time content changed. No user, placement, or revenue figures were tracked or reported for this project, so this case study describes what was built and delivered rather than performance results. That's a deliberate choice: where a client hasn't measured outcomes, the honest answer is to describe the scope of the work rather than attach a number that was never collected. The founder has confirmed the project as delivered, which is the fact this case study can stand behind.
At minimum, a two-sided marketplace connecting temporary staff with hiring companies needs candidate profiles (with CV upload and structured skills/experience data), a job posting and application-pipeline system, a company-facing dashboard for searching candidates and tracking contracts, and an admin panel for platform oversight. For a platform operating in the EU, GDPR-compliant data handling, covering export, right-to-erasure, cookie consent, and breach notification, needs to be part of the build rather than added later.
A recruitment marketplace stores personal data, CVs, contact information, work history, and contract records, for two groups of EU data subjects: candidates and company users. That means the platform itself needs to support data export on request, a right-to-erasure process (built here with a 30-day grace period before permanent deletion), cookie consent, and a breach-notification workflow as core application features, not a policy document layered on top of an unrelated system.
For this marketplace, Arcetis used Laravel 10 on PHP 8.2+, MySQL 8.0+ for the relational data model, Redis for caching, sessions, and background job queues, Tailwind CSS for the front end, and Spatie's permission and translation packages for role-based access control and bilingual (Danish/English) content. That combination is a common, production-tested stack for a multi-role, data-heavy marketplace application.
Yes. For this Danish staffing marketplace, Arcetis built the platform to run in Danish and English from a single codebase and database, using a translation-aware data layer rather than maintaining separate language-specific versions of the application. That approach keeps content, job postings, skill tags, and platform copy in sync across languages without duplicating maintenance work.