Senior Full-Stack Developer — SaaS, Meta API, AI Integration (Long-Term, Start ASAP)

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

TYPE OF WORK

Full Time

WAGE / SALARY

$1,800 - $2,500 USD/month

HOURS PER WEEK

40

DATE UPDATED

Jun 19, 2026

JOB OVERVIEW

We are building a multi-tenant SaaS product in the social-media and ecommerce space and are hiring a senior full-stack developer for a long-term engagement, starting immediately. Initial scope is a 12-week MVP build, with strong preference for the right person to continue as the ongoing technical owner for maintenance, Phase 2 features, and Meta partnership work.

I'm a non-technical founder hiring my first technical lead. I value clear communication, working software, honest answers about what you do and don't know, and someone who will push back when I'm wrong.

This is a senior role. Please don't apply if you are a junior, a generalist, or an agency.

Required experience:
- 4+ years senior full-stack development with production SaaS shipped
- Direct production experience with the Meta Graph API and/or Instagram Graph API — non-negotiable, proof required
- Completed Meta App Review and Business Verification at least once
- Real-time webhook architectures (idempotency, redelivery, retries)
- OAuth 2.0 token lifecycle (encrypted storage, refresh, expiry, reconnect flows)
- Multi-tenant SaaS architecture with strict tenant isolation
- Durable background job queues (Inngest, BullMQ, or equivalent)
- LLM API integration in production (Claude, OpenAI, or similar) — including structured outputs, RAG, and cost control at scale
- Postgres at production scale
- TypeScript / Next.js
- Stripe billing with usage-based metering
- Excellent written and spoken English

Bonus:
- Meta Tech Provider / Business Partner experience
- Shopify or ecommerce platform integrations
- Prior work on moderation, content intelligence, or social analytics products

Engagement terms:
- Long-term contract, full-time hours
- You work during your local business hours, available consistently — no US overlap required
- Aggressive MVP timeline, so steady weekly output matters more than which timezone you sit in
- Milestone-based payments tied to written acceptance criteria
- NDA signed at engagement start (required before any product details are shared)
- Full IP assignment of all code and work product to the client
- Client owns the GitHub repository and all third-party API credentials
- Weekly written status updates and a working demo at the end of each two-week sprint
- A short paid trial task (4–8 hours) before the full engagement begins, so we both confirm fit

Pay: We pay competitively for senior talent. Submit your weekly rate in USD with your application — strong candidates will not be filtered on rate alone.

To apply, send the following in writing:
1. Brief introduction and your weekly rate in USD
2. Years of senior development experience
3. Specific Meta API products you have shipped against (Graph API, Instagram Graph, Messenger, Marketing API) with a one-line description of each project
4. Your Meta App Review experience: which permissions were approved, how long it took, any rejection cycles and how you resolved them
5. One example of a webhook-driven, multi-tenant SaaS you have built, with brief architecture notes
6. How you would approach handling Meta's per-account API rate limits during a viral traffic burst (a few sentences — this is a sanity check)
7. Two references from prior SaaS clients (we will contact them)
8. Portfolio or GitHub link with relevant code samples
9. Your earliest start date and weekly availability

Applications that do not address items 3, 4, 5, and 6 will not be reviewed. We are evaluating multiple candidates this week and will respond to qualifying applicants within 3 business days. Generic copy-paste applications will be ignored.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0009
Controller Execution Time ( Jobseekers / Job )  0.0172
Total Execution Time  0.0187
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,511,664 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Developer-SaaS-Meta-API-AI-Integration-Long-Term-Start-ASAP-1672600
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0116 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0005   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1672600
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 907343
 LIMIT 1 
0.0013   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` = 1672600
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-23',ej.date_added) duration_daysDATEDIFF('2026-06-23',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-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1672600' 
0.0004   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1672600 
0.0016   UPDATE employer_jobs SET hit_counts '***Jun-19-2026=242***Jun-20-2026=114***Jun-23-2026=1' WHERE job_id'1672600'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Jun-2026=357' WHERE job_id'1672600'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1672600' 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` = 1672600 
0.0042   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '907343'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)