Full-Stack Engineer — Amazon Ads API (NestJS + Next.js) to finish a Sponsored Products dayparting tool

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

TYPE OF WORK

Part Time

SALARY

$8 -$10 neg

HOURS PER WEEK

20

DATE UPDATED

Aug 3, 2026

JOB OVERVIEW

We have a substantially built Amazon Sponsored Products dayparting tool and need an experienced engineer to complete it. The analysis side is done: OAuth account linking, hourly performance ingestion (CSV report + Amazon Marketing Stream), and an interactive CPC/ACOS heatmap that lets us design hourly bid-modifier schedules. The main missing piece is the execution layer — pushing bid adjustments back to Amazon — plus hardening auth and a few correctness fixes. The data model and scheduler scaffolding for this already exist; we need someone who can build on an existing, well-structured codebase rather than start from scratch.

Required skills
NestJS (v11) and TypeScript — strong. You'll be extending existing modules, DTOs, guards, and services, not greenfield.
Amazon Advertising API — demonstrable, hands-on. Specifically the Sponsored Products endpoints for campaigns, ad groups, bidding, and bid adjustments/dayparting, plus how bid rules are actually applied. This is the single most important skill — please describe a real Amazon Ads integration you've shipped.

Amazon LWA OAuth and token/refresh lifecycle.
Prisma (v7) with PostgreSQL, including migrations and raw SQL.
Next.js (v16, App Router) and React (v19) — React Query, Zod, Jotai a plus.
Auth implementation: JWT / session-based auth wired end-to-end (frontend ? backend).
Comfortable with an existing test suite (Jest), Docker, and reading someone else's code carefully.

Nice to have
AWS SNS/SQS (the Marketing Stream ingestion uses them) and S3.
OpenTelemetry / Sentry.
Experience with Amazon Ads API rate limits and throttling at scale.

Renumeration will be discussed with shortlisted candidates. Estimate provided.
In your application, please:

1. Link an Amazon Advertising API integration you've built and say which endpoints you used.
2. Tell us, in your own words, how Amazon Sponsored Products handles hourly bid adjustments/dayparting today, and any constraints or gotchas.
3. Confirm you're comfortable extending an existing NestJS + Next.js codebase (~90 backend files, Prisma schema, existing tests).

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.0134
Total Execution Time  0.0146
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,501,424 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-Engineer-Amazon-Ads-API-NestJS-Nextjs-to-finish-a-Sponsored-Products-dayparting-tool-1701731
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0084 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1701731
 LIMIT 1 
0.0008   SELECT *
FROM `employers`
WHERE `employer_id` = 442700
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1701731
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-08',ej.date_added) duration_daysDATEDIFF('2026-08-08',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-08-08',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1701731' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1701731 
0.0007   UPDATE employer_jobs SET hit_counts '***Aug-03-2026=387***Aug-04-2026=127***Aug-05-2026=66***Aug-06-2026=22***Aug-07-2026=9***Aug-08-2026=9' WHERE job_id'1701731'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Aug-2026=620' WHERE job_id'1701731'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1701731' 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` = 1701731 
0.0027   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '442700'
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)