Hakuhodo Vietnam
HR Recruitment System
An Applicant Tracking System (ATS) built for sei-katsu-sha.
A high-level design for a recruitment system that meets every 2026 ATS expectation — and wins on three things off-the-shelf software cannot deliver in Vietnam.
A working brief for an ATS that fits Vietnam.
This site is the live working brief — requirement verification, high-level design, and a running view of how the project is being delivered.
Hakuhodo Group Vietnam runs three entities — Hakuhodo & Saigon Advertising, Hakuhodo Vietnam, and Hakuhodo Digital Vietnam — with ~800 people across HCMC and Hanoi.
The HR department needs a single system to manage recruitment end-to-end: requisitions, résumé intake, screening, interview scheduling, pipeline management, and a searchable archive of past candidates.
This site is the live working brief: requirement verification, high-level design, and a running view of how the project is being delivered.
- 01Manage recruitment workflows and candidate résumés.
- 02Score and match résumés against job descriptions.
- 03Schedule interviews across hiring panels.
- 04Manage and order candidates through the pipeline.
- 05Archive past applicants and re-search the talent pool against new roles.
- 06Make scoring granular — based on multiple weighted criteria.
Six requirements. Two of them are differentiators.
Parsing, scheduling and pipeline are universal across commercial products. Granular scoring (R3) and talent rediscovery (R6) are where this project earns its keep.
Résumé management
Upload, store, search and organise candidate files across PDF, DOCX and scanned documents.
Résumé parsing
Extract structured fields — contact, work history, education, skills, languages — into a queryable record.
Granular weighted scoring
Score a candidate against a JD across multiple criteria, with weights tunable per role family and per-criterion justification.
Interview scheduling
Calendar-synced, panel-aware booking with self-service slot selection for candidates.
Pipeline ordering
Stage progression with audit trail; bulk actions; structured rejection reasons.
Talent rediscovery
Re-search the archive against a new JD; surface silver medalists and prior strong applicants before sourcing externally.
Table stakes — built to match the market. Differentiators — built to beat it.
Every modern ATS has the first list. The second list is what wins this against Manatal, Greenhouse and Base.vn.
- Job & requisition managementVersioned JDs, approval flow, multi-entity routing across the three Hakuhodo VN entities.
- Résumé intakePublic job page, email-to-apply, LinkedIn import, dedupe.
- Résumé parsingLicensed parser wrapped behind a swappable interface so vendor lock-in is avoided.
- Candidate databaseMaster profile, application history, attachments, tags, notes.
- Pipeline managementConfigurable stages per requisition type; event-sourced state machine.
- Interview schedulingMicrosoft 365 + Google Calendar sync; slot-finder; panel coordination.
- CommsTemplated email + inbound parsing — every reply threaded back onto the candidate record.
- Hiring manager collaborationShareable shortlists, structured feedback forms, scorecards.
- Analytics & reportingTime-to-hire, source-of-hire, funnel conversion, recruiter throughput.
- Auth & RBACAzure AD SSO; recruiter / hiring manager / admin / read-only roles; per-entity scoping.
- IntegrationsJob boards, LinkedIn, calendar, HRIS handoff on offer accept.
Granular, explainable scoring
Per-JD weighted rubric across skills, experience, education, portfolio, language and culture-fit signals. Every score shows criterion-by-criterion breakdown plus the résumé evidence that produced it.
Why incumbents lose here — Manatal offers weighting but shallow explanation; foreign SaaS rubrics are opaque or non-portable.
Talent rediscovery as a first-class loop
Every new JD automatically re-searches the archive with semantic match and lifecycle filters before external sourcing spend. Silver medalists surface with their prior reject reason attached.
Why incumbents lose here — Greenhouse archive is keyword-only; SeekOut and Eightfold do this well but cost enterprise figures and don't host in-country.
PDPL-native data residency
Built natively against the PDPL — Vietnam's Personal Data Protection Law, effective 2026-01-01 (which extends the 2023 PDPD). Consent ledger with granular purposes, per-candidate retention timer, Cross-Border Transfer Impact Assessment workflow, DPO audit dashboard, breach notification timer.
Why incumbents lose here — Foreign SaaS treats Vietnamese data protection as a checkbox. With fines up to 5% of revenue for cross-border breaches under the PDPL, the legal posture deserves to be the platform.
Creative portfolio vault
First-class portfolio links (Behance, Dribbble, reel URLs), uploaded work samples with versioning, structured review forms per creative discipline.
Why incumbents lose here — Generic ATS jams portfolio links into a notes field. Agencies hire on craft; the tool should respect that.
Hakuhodo skills ontology
Curated taxonomy across creative, strategy, media, digital, PR/social, CRM-CDP, e-commerce, events and retail design. Synonyms collapse — “ATL planner” = “above-the-line strategist”; “ECD” = “Executive Creative Director”.
Why incumbents lose here — Generic ontologies (ESCO, O*NET) miss agency vocabulary and force recruiters to re-tag everything by hand.
Bias audit + explainability layer
Every AI decision logged with input, model version, weights, output and explanation. Quarterly impact-ratio audit job and a recruiter-facing fairness dashboard.
Why incumbents lose here — Aligns with EU AI Act high-risk hiring posture and gets Hakuhodo ahead of inevitable Vietnamese AI regulation.
Conversational scheduling
Candidate-facing scheduling via Zalo, WhatsApp and email — panel-aware slot picking and reschedule-without-recruiter flow. Zalo coverage matters because it is the messaging app most Vietnamese candidates already use.
Why incumbents lose here — Paradox dominates email + SMS but Zalo scheduling is wide open in the Vietnamese market.
Every module assumes VN-hosted by default; cross-border calls require a CTIA-logged consent path.
Every score, ranking and recommendation ships with a human-readable justification stored alongside the decision.
Wrap parsing and matching behind interfaces so vendors are swappable without touching workflows.
Every closed application enriches a searchable talent pool with consent state and re-contact timers.
Every state change, score change, weight change and AI invocation is event-sourced.
AI ranks and recommends; recruiters approve. No auto-reject, no auto-advance.
Architecture — VN-hosted core, gated external calls.
The shape in one frame: a VN-hosted core that splits cleanly into table-stakes services and the differentiator services that earn this project its keep. The dashed edge to external is CTIA-gated — every cross-border call passes through consent + impact assessment first.
Scoring engine — internals
The rubric profile is first-class data. Recruiters can clone, edit and version it without engineering involvement. Every score carries evidence anchors — “scored 9/10 on Skills because the résumé shows led Honda regional brand campaign 2023, which maps to Automotive FMCG planning via ontology node H4-AUTO-PLAN.”
PDPL layer — how compliance becomes infrastructure
The PDPL — Vietnam's Personal Data Protection Law, effective 2026-01-01 — extends the 2023 PDPD with stricter cross-border rules and fines up to 5% of revenue for breaches. Consent, retention and CTIA workflows are treated here as platform primitives, not bolt-ons.
End-to-end recruitment, with rediscovery in the loop.
Every new requisition sweeps the archive first. External sourcing only spends once the silver-medalist shelf has been checked.
Talent rediscovery — the deep loop
Rediscovery is opt-in per candidate via the consent ledger — no consent, no surfacing, no exception. Silver medalists (lost final round) get an explicit flag; industry data suggests they convert at roughly three times the rate of fresh applicants. Cooldown defaults to 90 days, tunable per role family.
Lean agile, CI on every push, working software over status reports.
The project does not run on slide decks. It runs on a backlog, one-week sprints, automated checks, and this site.
One-week sprints
Short cadence keeps feedback tight. Each sprint opens with a planning ceremony, ships a demoable increment, and closes with a retro that updates the backlog before the next planning.
Master backlog as one file
Stories are markdown blocks with YAML frontmatter — estimate, owner, status, acceptance criteria. The backlog is git-tracked so every scope change has an author, a timestamp and a diff.
Definition of Done is explicit
A story closes only with: code merged, type-checks + lint passing, deployed to preview, demoable on the project site, and an entry in the time log so velocity is real.
CI on every push
TypeScript, ESLint and unit tests run before any merge to master. Failures block the merge — no override path. The build that ships to production is byte-identical to the build that passed CI.
CD via static export + Cloudflare Pages
Master pushes trigger a Pages build. Production is one git push; preview environments come for free on every branch. Rollback is one redeploy of a prior commit.
Working software over status reports
This site is the status report. Every section reflects what is true in the repo right now, not a slide deck assembled the week before.
Daily async stand-up
Written in a shared thread, not a meeting. The lane state — what is in flight, what is blocked, what is parking — is visible at all times.
Decisions captured in a register
Architectural calls are written down with date, options considered, and the why. The register is the audit trail for every reversible choice.
Phased delivery — discovery now, MVP next.
Five phases across fourteen to sixteen weeks for the differentiated MVP. One-week sprints, parallel work where dependencies allow, single-entity go-live in week sixteen. Multi-entity rollout and differentiator hardening sit deliberately outside this envelope — listed below — so the timeline doesn't quietly absorb them.
- 0Discovery close-outIn progress
Confirm volume + residency hardness, pick parser vendor, lock the role-family rubric list, sign off on the assumption set.
→ Greenlit scope + vendor short-list.
Weeks 1–2 - 1FoundationNext
Job management, candidate ingest, parsing wrapped behind a swap-friendly interface, pipeline state machine, calendar scheduling, HR console, D3 consent ledger v1 — single entity (Hakuhodo VN) to start.
→ Recruiters can run a requisition end-to-end; PDPL-safe from day one.
Weeks 3–6 - 2Differentiators core
D1 scoring engine with role-family rubrics + per-criterion explanation; D2 rediscovery against archive with semantic match; D6 audit log of every AI decision.
→ Both differentiating requirements (R3, R6) live and explainable.
Weeks 7–10 - 3Agency + compliance depth
D4 portfolio vault, D5 ontology v1 across creative / strategy / media / digital, CTIA workflow + DPO dashboard.
→ Agency-specific value visible; PDPL posture audit-ready.
Weeks 11–13 - 4Polish + go-live
D7 email scheduling + Zalo prototype, D6 fairness dashboard read-only, recruiter training, HRIS handoff stub, cutover from existing process, week-one support.
→ Live for the lead entity. Candidates landing through the new system.
Weeks 14–16
Onboard Hakuhodo Digital Vietnam + Hakuhodo & Saigon Advertising onto the same instance with entity-scoped data isolation, separate Azure AD groups, and per-entity rubric profiles.
Production-grade D6 bias dashboard (impact-ratio reports), Zalo Official Account scheduling beyond prototype, on-prem LLM inference path if residency tightens, LinkedIn Recruiter deep integration.