← things i made

July 2026–present · Independent platform

Opportunita

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.

Opportunita Independent academic opportunity platform
Opportunity pipeline: official source stays authoritative
Official sourceFetchingParsingNormalizationValidationDeduplicationStructured offerDatabaseIntelligencePublic platform

Phase one: website becomes platform

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.

Phase two: data lifecycle

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.

Phase three: architecture

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.

Phase four: the private workspace

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.

Phase five: AI as product rules, not prompts

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.

Phase six: how the work is actually done

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.

PHPWordPress plugin architectureMySQL/MariaDBREST APIJavaScriptReactOpenRouterGitBackground processing
Opportunita