Senior Platform Engineer — Next.js + Supabase + AI Stack

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

$10 - $25 USD/hour

HOURS PER WEEK

TBD

DATE UPDATED

Apr 18, 2026

JOB OVERVIEW

We run 10+ production Next.js apps on Supabase. Quiz software, talent platforms, client portals, creative automation, sales systems. Everything integrated with Claude, Gemini, and HeyGen.

Right now the founder holds the backend together with Claude Code and caffeine. We need a senior platform engineer to actually own it.

## What you'll do

- Own the data layer (Supabase, RLS, migrations) across 12 schemas
- Wire complex systems end to end: API integrations, webhooks, cron jobs, LLM pipelines
- Finish what our AI coding tools start. Wire them properly. Harden them. Ship them.
- Keep security discipline tight. We had a key leak once. Not doing that again.
- Work directly with the founder on architecture decisions

## What you need

- 5+ years production Next.js, React, TypeScript
- Deep Supabase and Postgres. You write RLS policies from scratch. You know what a CTE is.
- Shipped production features using OpenAI, Anthropic, or Gemini. ChatGPT for personal use doesn't count.
- Claude Code or similar AI coding tool as your daily driver
- Vercel, deploy pipelines, env management
- Security-first thinking. You never commit keys.
- Strong async written English

Bonus if you know any of: ---------- v, Railway, Remotion, ---------- , Stripe webhooks, GoHighLevel API, Meta CAPI.

Double bonus if you know: Jobs To Be Done (JTBD), The Mom Test, Switch framework, or similar product-thinking methodologies. We think in outcomes, not features — if you do too, we'll move very fast together.

## The deal

$2,500 - $4,000 USD/month, 30-40 hrs/week. Biweekly payment via EasyPay.

Trial project first (2-3 days, paid $ ---------- ). If the trial proves out, retainer starts. Rate review at 90 days.

First engineering hire. Growth path: Lead Engineer ? team ownership ? profit-share for strong performers.

## This role is for you if

- You think from first principles. You understand the problem before you write the code. You know that a well-defined problem is 90% of the solution — the rest is wiring.
- You're proactive at an elite level. You don't wait to be told what's broken.
- You've shipped production code that real users depend on — not demos, not templates, not agency throwaways
- You catch what AI coding tools get wrong instead of merging their bugs
- You treat security as a constant, not a feature request
- You want to stick around for 2+ years and grow as we grow
- You read job posts carefully (and you'll follow the subject line rule below)

## This is NOT for you if

- You just execute specs without asking why — "why" is the most important question you'll ask here
- You've never written an RLS policy from scratch, or you think RLS is the same as middleware auth
- You've never used Claude Code, Cursor, or a similar AI coding tool in real work
- You're looking for 3 months of work then moving on
- You're an agency, team, or staffing firm bidding on behalf of someone else
- You write proposals with ChatGPT and don't read job descriptions carefully

## How to apply

Change your email subject line to: JOBURN-ENG | [your favorite programming language]

Example: JOBURN-ENG | TypeScript

Then answer these 3 questions inside your application:

1. Paste an RLS policy you wrote. What table, what rule, why it exists.
2. What kind of work makes you lose track of time? Doesn't have to be code — could be anything.
3. When you hit a wall on a hard problem, what do you usually do?

Wrong subject line format = auto-reject. Generic ChatGPT-style answers = auto-reject. We read every word.

## About Joburn

Joburn Pte. Ltd., Singapore-registered. We build AI-powered growth infrastructure for SaaS companies, agencies, creators, and coaching businesses. We've helped clients generate multi-seven-figures in revenue.

Small distributed team. We move fast, ship quality, and get shit done. No corporate politics, no committee meetings, no busywork.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0128
Total Execution Time  0.0147
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,517,576 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Platform-Engineer-Nextjs-Supabase-AI-Stack-1626918
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0060 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0017   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1626918
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 598333
 LIMIT 1 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1626918
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-19',ej.date_added) duration_daysDATEDIFF('2026-04-19',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1626918' 
0.0002   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1626918 
0.0006   UPDATE employer_jobs SET hit_counts '***Apr-18-2026=72***Apr-19-2026=2' WHERE job_id'1626918'  
0.0005   UPDATE employer_jobs SET monthly_hits '***Apr-2026=74' WHERE job_id'1626918'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1626918' AND status LIKE 'sent%' ORDER BY id DESC  
0.0002   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1626918 
0.0005   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '598333'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)