Senior Full-Stack Engineer - Next.js + TypeScript + Programmatic SEO + AI Hardening

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

TYPE OF WORK

Full Time

WAGE / SALARY

$800 / Month

HOURS PER WEEK

48

DATE UPDATED

Jun 10, 2026

JOB OVERVIEW

ALL DOCUMENTS LISTED IN THE “TO APPLY” SECTION MUST BE PROVIDED. INCOMPLETE APPLICATIONS WILL NOT BE REVIEWED.

We’re hiring a senior full-stack engineer for two pieces of work, in order:

Project 1 — Marketing site (1–2 weeks): New Next.js site with tens of thousands of city-focused SEO pages, AI-generated unique content per city. Frontend and backend.

Ongoing — Main app engineering: Maintain and harden our production Next.js app. Build new features end-to-end. Tighten security, edge cases, performance, tests.

NOT for someone who wants to design AI agents, write prompts, or touch model logic — that work lives elsewhere. This is for someone who reads existing code carefully, ships clean Next.js features front and back, knows programmatic SEO at scale, and uses AI tools heavily in their own workflow.

WHAT YOU’LL DO
Marketing site:
• Build a new Next.js (App Router) site from scratch — frontend and backend
• Programmatic SEO at scale — tens of thousands of pages, unique AI-generated content persisted to Postgres
• Sitemap chunking + index, ---------- structured data per page
• GEO awareness — pages that perform in AI search results, not just Google
• Static generation strategy (SSG vs ISR vs on-demand), Core Web Vitals
Main app:
• Maintain our production Next.js app (App Router, TS, Postgres)
• Harden the existing AI integration — extreme inputs (too many files, malformed, rate limits, adversarial) get handled intelligently, not crashes
• Build new features end-to-end: UI, API routes, DB schema, migrations
• Tighten security: Zod validation, auth, rate limiting, secrets
• Tests where it matters — AI tool calls, payments, data integrity
You will NOT design AI agent flows, write prompts, or touch model logic.

STACK
Next.js 15+ (App Router), React 19, TypeScript, Tailwind, PostgreSQL with Drizzle or Prisma, Vercel AI SDK (consumer), Vercel hosting, Clerk or NextAuth, PostHog, GitHub.

WE’RE LOOKING FOR
Senior full-stack:
• 5+ years full-stack, 3+ years on production Next.js
• Strong TypeScript front AND back
• Real PostgreSQL — schema design, migrations, query plans
• Programmatic SEO at scale — actually shipped 10,000+ generated pages
• GEO awareness — how AI search engines rank differently from Google
• Vercel AI SDK as a consumer (streamText, generateObject, tool calls)
• Security-first, architecture-first, tests where they matter
• Reads existing code carefully before changing it
AI-native (non-negotiable):
• Heavy daily AI use for coding
• ONE primary tool you’ve gone deep on, not five name-dropped
• Real custom setup: skills, system prompts, project config
• You’ll share a real session with your custom setup visible
Bonus: AEC context, Three.js, city/local SEO at scale.

HOURS & PAY
• Full-time, 40 hrs/week, Mon–Fri
• 9 AM – 5 PM Pacific (12 AM – 8 AM Manila next day) — full overnight shift, apply only if sustainable long-term
• Remote
• Hubstaff for time. ---------- with screen share AND webcam ON during working hours
• Monthly via Wise in USD. Invoiced month-end, paid 14 days after cycle close (Oct 31 invoice ? paid by Nov 14)

RATE TIERS
6-month probation. Start at lower end. Movement based on delivered work, not promises.
• Probation (months 1–6): $5–7/hr
• Confirmed (month 7+): $7–10/hr
• Top performer + team lead: $10–15/hr — also manages 1–2 juniors as we grow

TO APPLY
Missing any of these = rejection:
• Resume
• GitHub profile (we look at real code)
• 3–5 min Loom, camera ON, no script. Walk through ONE feature you shipped involving either programmatic SEO at scale OR hardening an AI integration
• Your AI tool: name ONE primary tool, share a real session showing your custom skills/system prompts/project setup. Multiple tools name-dropped without depth = rejection
• First line of your application: write COMMIT
• Expected starting hourly rate

PROCESS
1. Application review
2. Technical interview
3. Verbal architecture call (15–30 min, no AI tools) — walk us through your planned approach to the assignment before any code
4. One-day unpaid take-home assignment — AI tools encouraged, 24 hours to build and submit
5. Onboarding form for selected candidates

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.1485
Total Execution Time  0.1499
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,527,120 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Engineer-Nextjs-TypeScript-Programmatic-SEO-AI-Hardening-1632870
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.1423 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1632870
 LIMIT 1 
0.0061   SELECT *
FROM `employers`
WHERE `employer_id` = 911596
 LIMIT 1 
0.1217   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1632870
AND `misc`.`idIS NULL 
0.0007   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-21',ej.date_added) duration_daysDATEDIFF('2026-06-21',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-06-21',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1632870' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1632870 
0.0015   UPDATE employer_jobs SET hit_counts '***Apr-26-2026=282***Apr-27-2026=168***Apr-28-2026=51***Apr-29-2026=35***Apr-30-2026=33***May-01-2026=10***May-02-2026=6***May-03-2026=71***May-04-2026=149***May-05-2026=139***May-06-2026=131***May-07-2026=149***May-08-2026=154***May-09-2026=144***May-10-2026=146***May-11-2026=147***May-12-2026=61***May-14-2026=2***May-15-2026=125***May-16-2026=144***May-17-2026=146***May-18-2026=108***May-19-2026=9***May-20-2026=51***May-21-2026=122***May-22-2026=148***May-23-2026=144***May-24-2026=144***May-25-2026=147***May-26-2026=148***May-27-2026=94***May-28-2026=76***May-29-2026=3***May-30-2026=1***May-31-2026=889***Jun-01-2026=173***Jun-02-2026=165***Jun-03-2026=156***Jun-04-2026=155***Jun-05-2026=152***Jun-06-2026=145***Jun-07-2026=149***Jun-08-2026=149***Jun-09-2026=157***Jun-10-2026=278***Jun-11-2026=192***Jun-12-2026=165***Jun-13-2026=159***Jun-14-2026=155***Jun-15-2026=155***Jun-16-2026=157***Jun-17-2026=147***Jun-18-2026=150***Jun-19-2026=148***Jun-20-2026=93***Jun-21-2026=1' WHERE job_id'1632870'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=569***May-2026=3806***Jun-2026=3201' WHERE job_id'1632870'  
0.0016   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1632870' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1632870 
0.0070   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '911596'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)