A small Gate NL feature became an independent academic opportunities platform. This is where the work stopped being about pages and started being about systems.
Gate NL had revealed the problem: PhD offers scattered across dozens of university sites, with no discovery, no filtering, no way to manage what you had applied to. The questions that followed were bigger than the feature. Why only the Netherlands. Why not real search. Why are resumes and offers not connected.
Development started July 2026. The first public-ready version landed 5 August 2026.
For the first time the data lifecycle was the product, not a detail of it. Data arrives from official university career sources through dedicated fetcher and adapter logic, then passes through parsing, normalisation, validation, deduplication and storage as structured offer data.
The hard questions were not technical so much as definitional: what counts as the source of truth, how is a duplicate recognised, what happens when a field is genuinely unknown.
The backend grew as a custom WordPress and PHP architecture with MySQL/MariaDB, custom tables, REST APIs, background jobs and scheduled processing. The private Workspace uses React, while the server stays authoritative for permissions, privacy and business rules.
Architecture is divided into separate domains (Core, Workspace, Matrix, Explicify, Mail and Marketing), so that public data and private user data never blur into each other.
Accounts, saved opportunities, application management, notes, reminders, resume tools, AI reports and user-specific data. The applicant journey is deliberately simple: find, understand, evaluate fit, prepare, manage application.
Five constraints govern where AI is allowed to act. Official source outranks AI. Evidence before assumption. Unknown is not the same as missing. No fabricated acceptance probability. A failed AI action is not a success.
These are not prompt tricks. They are product rules, documented and enforced, and they are the reason AI can be used for enrichment, interpretation, resume analysis and evidence-based matching without becoming the authority.
Early AI projects ran on prompt, output, fix. This one runs on requirement, context, architecture constraint, acceptance criteria, agent implementation, testing, bug reproduction, fix, regression, deployment, production validation.
Codex entered the workflow earlier; Claude Code was added during Opportunita. My role is defining the system, directing implementation, testing behaviour and being accountable for the output, not claiming to hand-write every line.