What it is
A centralised place where Mozambican students and graduates could be found by employers, and where they could find employment, entrepreneurial and academic opportunities. Four kinds of account share one opportunity model: talent, companies, institutions and investors.
The interesting constraint: browsing without being seen
The requirement that shaped the design was anonymous browsing.
Someone currently employed who wants to look at opportunities has a real problem: visible interest is career risk, especially in a small market where everyone knows everyone. If the platform makes browsing visible, the people most worth recruiting will not use it.
So the profile model separated what is discoverable from what is identifying. A recruiter could search skills and see a match without seeing a name until the candidate chose to be seen. A blacklist let a candidate exclude specific organisations, which in a market the size of Mozambique usually means “my current employer”.
That is a data modelling problem more than a UI one. Every query had to be written knowing which fields it was allowed to return, which is the same reasoning I later applied properly with row level security and anonymized views in Postgres.
What is in it
- Four account types: talent, companies, institutions and investors, over a shared opportunity model.
- Skills-based matching with opportunity notifications, rather than a search box and hope.
- Advanced search and filtering, with anonymous browsing.
- Privacy controls and blacklisting.
- Event listings and scholarships, since academic opportunity mattered as much as employment for the target audience.
How it is built
Django with a REST API, Vue 3 and Quasar on the frontend, PostgreSQL for storage.
What I would do differently
Put the privacy rules in the database. I enforced visibility in application code. It worked, but it meant every new query was a chance to leak a name, and correctness depended on me remembering. The version of me that has since built anonymized views and row level security policies would not make that choice again.
Fewer account types at launch. Four profile types multiplied the surface area of every feature. Two would have proved the concept, and the other two could have followed.
Status
Archived. The platform is still reachable but is no longer being developed. It is here because the privacy modelling is genuinely the most interesting thing about it, and because it is the direct ancestor of thinking I now apply as a matter of course.




