Full-Stack Developer (Backend-Heavy) for SMS Drip/Sequence Engine (Node, Supabase, Inngest, Telnyx)
Budget: $20.0 - $55.0
HOURLY / PART_TIME
⭐ 5.00 (5)
USA
node.js
About the project
We're a profitable, growing B2B SaaS company (vertical CRM with built-in calling and texting). Direct Applicants only, no agencies, please. Also, do not try to contact us through other routes, we will remove you from consideration, just follow this channel.
Our platform already has two-way SMS live in production (10DLC registered, send/receive). We're adding an automated texting sequence engine on top of it. Think drip campaigns:
Send a welcome text the moment a lead is created
Run a multi-step sequence (e.g., 15 messages, one every other day for 30 days)
Automatically stop the sequence the moment the lead replies or changes status
Respect quiet hours, timezones, and opt-outs
You will NOT be building the telephony layer as it already exists. You'll be building the sequence engine and its data model on top of it.
The work
Design and implement the sequence data model in Postgres/Supabase (campaigns, steps, enrollments, message log) — working with our lead developer, who owns final architecture review
Build the orchestration layer using Inngest (or Trigger.dev — tell us which you've used): durable delays between steps, cancellation on reply, retries, exactly-once sends
Wire into our existing outbound send function and inbound reply webhook
Build a simple form-based sequence builder UI in React (ordered list of steps: message + delay — NOT a drag-and-drop canvas)
Quiet hours / timezone-aware sending, opt-out enforcement, merge variables
Our stack
Node.js, Supabase (Postgres + RLS), React, Telnyx for messaging. We use Inngest-style durable execution for this project — direct experience with Inngest, Trigger.dev, or Temporal is a major plus.
The work is roughly 70% backend (data model, orchestration, send path integration) and 30% frontend (one form-based builder screen in React). You should be comfortable shipping both, but we're screening hardest on the backend.
Who we're looking for
You have built an SMS drip/sequence/cadence system before — at a SaaS company, marketing automation tool, sales engagement platform, or similar. This is the single most important qualification.
You can speak concretely about the failure modes: double-sends, race conditions between a reply arriving and the next message firing, idempotency, what happens when a job runner restarts mid-sequence.
Strong Postgres skills. You think in data models first.
You work well from a designed spec but flag problems instead of silently building around them.
Solid written English and reliable availability for async collaboration; some overlap with US Central time for check-ins.
We're building out a small, long-term development team. We'd rather find someone who learns the product and grows with us than someone optimizing for a quick engagement.
To apply
Please answer these in your proposal (proposals that don't will not be considered):
Describe a messaging/drip/sequence system you personally built. What did it do, what was the stack, and what was your specific role?
How did you (or how would you) prevent a duplicate message from being sent if a job retries?
When an inbound reply arrives while a delayed step is pending, how do you make sure that step never fires?
Have you used Inngest, Trigger.dev, or Temporal in production? Which, and for what?
Your availability (hours/week) and your timezone.
Ground rules
No agencies, no teams, no subcontracting. Individual freelancers only. Agency proposals will be declined without review.
All communication through Upwork only. Do not attempt to identify or contact the company, its staff, or the client outside this platform. Doing so will disqualify your proposal.
Generic or copy-paste proposals will be ignored. We read every proposal that answers the five questions above.
Ouvrir sur Upwork