Senior Full-Stack Developer — iOS Swift + NestJS (AI-Powered Maternal Health App)

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

TYPE OF WORK

Full Time

SALARY

1500

HOURS PER WEEK

40

DATE UPDATED

Apr 16, 2026

JOB OVERVIEW

About ProMom

ProMom (promom.ai) is an AI-powered maternal health platform helping women navigate every stage of motherhood — from fertility and preconception through pregnancy and postpartum. Our features include Maia, an AI assistant that answers real-time health questions; BellySafe, an instant food and medication safety checker; a Smart Calendar for tracking milestones and appointments; and AI Finds, a curated product recommendation engine. We're live on iOS and web, growing fast, and building the most trusted companion for maternal health. Android is next. This is early-stage, high-impact work.

The Role

We're looking for a Senior Full-Stack Developer who owns both the iOS (Swift) and backend (NestJS/Node.js) sides of the product. You won't be handed pixel-perfect specs — you'll work closely with the founding team to build real features that real moms use every day. You must be a confident, independent engineer who ships.

This role requires you to be a vibe coder. That means you use Claude CLI (Claude Code by Anthropic) as a core part of your development workflow — to write, refactor, scaffold, debug, and architect code. We don't want someone who dabbles with AI tools. We want someone who has genuinely integrated Claude CLI into how they think and build. This is non-negotiable.

What You'll Do

1. Build and maintain the ProMom iOS app using Swift and SwiftUI, owning architecture, performance, and UX quality
2. Develop and extend backend services using NestJS (Node.js/TypeScript), including REST APIs, authentication, and data pipelines
3. Integrate and maintain AI features — including the Maia assistant, BellySafe safety checks, and future LLM-powered workflows
4. Own the full feature lifecycle: design discussions -> implementation -> testing -> deployment
5. Work directly with the founders to prioritize, scope, and ship features on tight timelines
6. Maintain App Store submissions, versioning, and release processes
7. Write clean, well-structured code using Claude CLI as your primary AI development accelerator — and document your approach
8. Implement and maintain push notifications, background sync, and real-time data features on iOS
9. Contribute to API design decisions and data modeling for a health-sensitive, privacy-first product
10. Proactively catch and fix bugs before users report them — own quality, don't just close tickets
11. Collaborate asynchronously with a small, distributed team; communicate clearly in writing and on video calls

Hard Requirements

- Swift / SwiftUI — 4+ years building production iOS apps, with App Store releases you can point to
- NestJS / Node.js / TypeScript — 2+ years building production-grade backend APIs in NestJS
- Claude CLI (vibe coding) — You actively use Claude Code in your daily dev workflow. You can show us, on camera, how you use it to build real things. This is required, not nice-to-have.
- Full-stack ownership — Comfortable moving between iOS and backend in the same sprint
- PST overlap — Must be available and online during US Pacific time core hours (at minimum 9am-1pm PST Mon-Fri)
- English communication — Strong written English; can write clear messages, PR descriptions, and async updates without ambiguity
- Direct hire only — You must be applying as an individual, not through an agency

Nice to Haves

- Experience with health, wellness, or consumer subscription apps
- Familiarity with HealthKit, CoreData, or CoreML
- Exposure to OpenAI, Anthropic, or other LLM API integrations
- Knowledge of HIPAA-adjacent data privacy practices
- Experience with PostgreSQL, Prisma, or similar ORM in a NestJS stack
- Prior startup experience

What We Offer

- $1,500-$2,000/month USD — paid consistently, on time
- Fully remote — work from wherever you're most productive
- Meaningful product — you're building tools that support women during some of the most important ---------- nts of their lives
- Real ownership — small team, real autonomy, visible impact
- AI-forward culture — we use Claude CLI, we iterate fast
- Growth — as ProMom scales, this role scales with it

How to Apply

Your application MUST include:
1. A short Loom video (3-5 minutes) — introduce yourself AND show your Claude CLI workflow live (a real project, real usage). Applications without a Loom video showing Claude CLI usage will not be reviewed.
2. Links to at least two shipped iOS apps on the App Store
3. A link to backend code you've written (GitHub or live NestJS API)
4. Your PST availability hours

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0022
Controller Execution Time ( Jobseekers / Job )  0.0137
Total Execution Time  0.0167
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,008 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Developer-iOS-Swift-NestJS-AI-Powered-Maternal-Health-App-1609806
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0057 seconds)  (Hide)
0.0012   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1609806
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 917717
 LIMIT 1 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1609806
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-22',ej.date_added) duration_daysDATEDIFF('2026-04-22',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-22',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1609806' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1609806 
0.0008   UPDATE employer_jobs SET hit_counts '***Mar-25-2026=497***Mar-26-2026=12***Mar-27-2026=12***Mar-28-2026=3***Mar-29-2026=1***Mar-30-2026=38***Mar-31-2026=140***Apr-01-2026=89***Apr-02-2026=11***Apr-03-2026=29***Apr-04-2026=26***Apr-05-2026=13***Apr-06-2026=7***Apr-07-2026=16***Apr-08-2026=373***Apr-09-2026=67***Apr-10-2026=42***Apr-11-2026=20***Apr-12-2026=21***Apr-13-2026=18***Apr-14-2026=15***Apr-15-2026=11***Apr-16-2026=188***Apr-17-2026=106***Apr-18-2026=21***Apr-22-2026=1' WHERE job_id'1609806'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Mar-2026=703***Apr-2026=1074' WHERE job_id'1609806'  
0.0003   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1609806' 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` = 1609806 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '917717'
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)