The problem
A certification business grows by reaching teachers who are looking for work. A job portal brings those teachers to the site, but only if the listings stay current and the business learns who the candidates are.
The blog ran on hardcoded template content, so every new post needed a code change. The business needed content that updates itself, or that the team can update, on a site search engines can crawl.
What I built
- The main site for the certification and placement business, on Next.js.
- A teaching job portal fed by nightly ingestion from the Adzuna and Reed job APIs.
- Lead capture that records each candidate before redirecting them to the original apply link.
- A Supabase-backed blog that replaced the hardcoded template content.
The candidate journey
- A teacher finds a listing on the portal.
- They click to apply.
- The portal captures their details as a lead for World Teachers Academy.
- They continue to the original listing to complete their application.
Key technical decisions
Store jobs instead of fetching them live
A nightly job pulls listings into Supabase. Serving jobs from Postgres, rather than calling Adzuna and Reed on every page view, keeps listing pages fast and lets the portal search, filter and de-duplicate them.
Capture the lead, not the application
The portal records the candidate and then sends them to the original listing. The business builds an audience from every click to apply, and the site never has to host or process applications itself.
Move content into the database
Blog posts live in Supabase, so the team publishes without a developer. It is the same Next.js and Supabase pairing I compare in Supabase vs Firebase for SaaS.
Stack
- Next.js for the site, portal and blog.
- Supabase (PostgreSQL) for jobs, leads and posts.
- Adzuna and Reed APIs as job sources.
- Resend for email.
- Vercel for hosting.
Outcome
- Job listings refresh every night from Adzuna and Reed without manual work.
- Every click to apply creates a lead for the business.
- The team publishes blog posts from the database instead of editing template code.
- Next on the roadmap: certificate verification with QR codes.
This is the kind of build I deliver through my Next.js developer service.