Genuine Solutions.

Laravel, React

App icon for Genuine Solutions

Headhunter-style recruitment platform that aims to minimize friction between employers and job seekers.

Wrote the PRD designed the initial ERD. Helped UI/UX designers with the UX flow. Implemented the design into code with Laravel, Inertia, and React. Responsible for features such as CSV imports, CV parsing, OAuth and Google Calendar integration, SMTP setup, and of course CRUD work.

Year

2026

Client

Interlace Studies

Role

Frontend Developer

Backend Developer

CV Parser Demo

Overview

During my internship at Interlace Studies, I got assigned to build an internal tool from the ground up. It's an headhunter-style recruitment platform. The main users are the call center staffs at the company, with job seekers and employers treated as secondary users. Besides implementing the UI design, I was also heavily involved in designing the flow and the ERD of the app. The platform runs on Laravel, React and Inertia.

Here are some cool things that I built on the app that isn't standard CRUD:

1. CSV import with flagging

Most of the employer and job data comes in as a CSV file, and those files can be messy. Company names go missing, state codes are wrong, and sometimes an email and a phone number belong to two different employers.

This module helps the staff clean data before importing. Every row gets checked and flagged first, and staff can look through those flags on a preview screen before they actually import anything. Rows that are clearly broken get skipped automatically. Rows that are only maybe wrong, like possible duplicates between rows, still get imported since it may be intentional. Rejected rows are saved to a separate CSV file, it gets exported along with the reason attached. So the team can follow up with wherever the data came from.

Anyways, this flagging step is more of a tool within the platform than the core business process.

2. CV parsing

I find that manually inputting the same CV data over and over again can get tiring. So, I built a CV parser. It's really simple, we use this new magical technology called 'Large Language Models'.

When a job seeker onboards, they're immediately asked for their resume so it can be parsed to JSON and fill candidate information automatically. The CV is sent to OpenRouter for parsing. We used OpenRouter so we can switch models without touching any code. It's also much easier since it's just a RESTful API and not a full on SDK.

The parsing is completely optional. If job seekers don't want their CV parsed (usually for privacy concerns, which is fair), they can skip parsing and input their information manually.

3. Interview scheduling with Google Meet

Google Calendar is too easy to not use. It shows up in attendees calendar, sends an email notification, creates a meet link, and we get responses so it's trackable on the platform. I think that itself explained everything. Also I re-learned token refreshing, moving on.

4. Candidate email

Email tracking is essential to the platform. We tried two ways of tracking staff emails. The first is for staff to manually log their inbound/outbound emails. The other is to send the email straight from the platform. The latter made it easier since staffs can send and track emails at once. However, it still misses with email replies, it’s a tradeoff that we decided to take.