Full-Stack SaaS Developer – Bubble + API Integrations + Workflow Automation

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

TYPE OF WORK

Full Time

SALARY

4/hour

HOURS PER WEEK

30

DATE UPDATED

Oct 3, 2026

JOB OVERVIEW

We are building system, a simple SaaS platform for service-based businesses to create proposals, contracts, bookings, invoices/payment requests, and automated client follow-ups.

We already have the UI designs and detailed workflows. We need an experienced developer who can take the designs and build the complete working application.

This is not just a website design job. We need someone experienced with Bubble workflows, database architecture, calculations, APIs, responsive design, user accounts, and SaaS applications.

Core PayMe workflow

Business creates packages and add-ons → creates a proposal or event → enters client/event details → PayMe automatically calculates pricing → sends client a private link → client reviews → signs contract → PayMe redirects client to the business’s connected payment provider → client returns to PayMe → booking is confirmed → automated reminders are sent.

Important: PayMe does NOT process or hold customer funds. Payments are completed through the business’s connected payment processor such as Stripe.

Features to build

• Business dashboard
• Client management
• Packages and add-ons
• Public booking links
• Private/custom booking links
• Proposal builder
• Proposal Accept / Decline
• Electronic contracts and signatures
• Booking management
• Calendar
• Payment-status tracking
• Stripe/payment-provider redirect
• Email notifications
• SMS notifications
• Automated client reminders
• Business settings
• Pricing and fee settings
• Responsive mobile experience

Automatic pricing rules

PayMe must automatically calculate pricing based on business settings, including:

• Start time + end time = total event hours
• Package minimum hours
• Hourly or flat-rate package pricing
• Additional hours
• Guest count
• Required staffing
• Example: 1 bartender included up to 60 guests; 61+ automatically adds an additional bartender
• Add-on pricing
• Mileage/travel fees
• Example: first 30 miles included, then configurable price per mile
• Gratuity/service charge
• Ability to choose which items gratuity applies to
• Sales tax
• Deposits — percentage or fixed amount
• Manual override when needed

Client booking flow

Public link:

Choose Package → Event Details → Optional Add-Ons → Review Pricing → Sign Contract → Continue to Payment Provider → Booking Confirmed

Private proposal:

Receive Proposal → Review Preselected Package → Confirm Event Details → Add-Ons → Review Pricing → Accept/Decline → Sign Contract → Continue to Payment Provider → Booking Confirmed

Payment integration

PayMe should never look like it is processing payments.

The client should see:

“Continue to Stripe”

followed by:

“You are leaving PayMe and will be redirected to Stripe to securely complete your payment. PayMe does not process or hold funds.”

After successful payment, the client should return to their PayMe booking page.

Automated client communication

• Initial booking/proposal link
• Deposit confirmation
• Final-balance reminder only when a balance remains
• Event reminder one day before
• Thank-you text one day after event
• Automatic Google Review link in the thank-you message

We want the system to be extremely simple for businesses and clients. Avoid unnecessary screens and settings.

Required experience

• Strong ---------- development experience
• SaaS application experience
• Bubble database architecture
• Backend workflows
• Conditional logic
• API Connector
• Stripe integration
• Webhooks
• Responsive/mobile Bubble development
• Authentication and account permissions
• Email/SMS automation
• Calendar integrations
• Experience debugging production applications

Experience with Twilio, Google Calendar, QuickBooks APIs, Make, n8n, or similar platforms is a plus.

When applying, please include:

1. Links to 2–3 SaaS applications you personally built in Bubble
2. Describe a project where you built complex calculations or conditional workflows
3. Describe your Stripe/API integration experience
4. Tell us whether you built the backend/database yourself
5. Your hourly or project rate
6. Your weekly availability

Please start your application with the words “PAYME WORKFLOW” so we know you read the entire

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0021
Controller Execution Time ( Jobseekers / Job )  0.0350
Total Execution Time  0.0378
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,516,144 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-SaaS-Developer-Bubble-API-Integrations-Workflow-Automation-1480154
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0220 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0012   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1480154
 LIMIT 1 
0.0005   SELECT *
FROM `employers`
WHERE `employer_id` = 859928
 LIMIT 1 
0.0035   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1480154
AND `misc`.`id` IS NULL 
0.0028   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-03',ej.date_added) duration_days, DATEDIFF('2026-10-03',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_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-10-03',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1480154' 
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1480154 
0.0044   UPDATE employer_jobs SET hit_counts = '***Sep-29-2025=104***Sep-30-2025=130***Oct-01-2025=15***Oct-02-2025=7***Jan-24-2026=244***Jan-25-2026=27***Jan-26-2026=11***Jan-27-2026=5***Jan-29-2026=2***Jan-30-2026=1***Feb-03-2026=2***Feb-04-2026=3***Feb-07-2026=2***Feb-11-2026=2***Feb-21-2026=220***Feb-22-2026=31***Feb-23-2026=27***Feb-24-2026=15***Feb-25-2026=12***Feb-26-2026=3***Feb-27-2026=7***Feb-28-2026=9***Mar-02-2026=179***Mar-03-2026=167***Mar-04-2026=15***Mar-05-2026=13***Mar-06-2026=8***Mar-07-2026=3***Mar-08-2026=1***Mar-09-2026=2***Mar-10-2026=1***Mar-11-2026=3***Mar-13-2026=2***Mar-15-2026=1***Mar-16-2026=2***Mar-17-2026=41***Mar-18-2026=8***Mar-19-2026=2***Mar-20-2026=4***Mar-22-2026=1***Mar-23-2026=7***Mar-24-2026=2***Mar-25-2026=1***Mar-26-2026=8***Mar-27-2026=3***Mar-30-2026=1***Mar-31-2026=1***Apr-01-2026=1***Apr-02-2026=2***Apr-03-2026=1***Apr-04-2026=1***Apr-06-2026=1***Apr-11-2026=334***Apr-12-2026=254***Apr-13-2026=190***Apr-14-2026=90***Apr-15-2026=69***Apr-16-2026=35***Apr-17-2026=27***Apr-18-2026=18***Apr-19-2026=34***Apr-20-2026=78***Apr-21-2026=28***Apr-22-2026=5***Apr-23-2026=6***Apr-24-2026=3***Apr-25-2026=3***Apr-26-2026=4***Apr-27-2026=3***Apr-28-2026=1***Apr-29-2026=4***Apr-30-2026=1***May-01-2026=1***May-02-2026=1***May-03-2026=2***May-04-2026=2***May-05-2026=1***May-06-2026=1***May-07-2026=3***May-08-2026=1***May-09-2026=1***May-11-2026=3***May-12-2026=1***May-13-2026=3***May-14-2026=2***May-15-2026=1***May-18-2026=2***May-21-2026=2***May-22-2026=3***May-23-2026=1***May-25-2026=1***May-26-2026=2***May-27-2026=2***May-28-2026=1***May-29-2026=1***May-30-2026=2***May-31-2026=2***Jun-02-2026=4***Jun-03-2026=3***Jun-04-2026=1***Jun-06-2026=1***Jun-07-2026=4***Jun-09-2026=1***Jun-10-2026=4***Jun-11-2026=1***Jun-12-2026=1***Jun-13-2026=1***Jun-14-2026=1***Jun-15-2026=2***Jun-17-2026=3***Jun-18-2026=1***Jun-19-2026=1***Jun-21-2026=3***Jun-22-2026=1***Jun-26-2026=1***Jun-27-2026=1***Jun-28-2026=3***Jun-29-2026=1***Jun-30-2026=1***Jul-01-2026=309***Jul-02-2026=66***Jul-03-2026=39***Jul-04-2026=21***Jul-05-2026=14***Jul-06-2026=12***Jul-07-2026=14***Jul-08-2026=13***Jul-09-2026=14***Jul-10-2026=12***Jul-11-2026=13***Jul-12-2026=2***Jul-13-2026=3***Jul-14-2026=6***Jul-15-2026=2***Jul-16-2026=3***Jul-17-2026=1***Jul-19-2026=1***Jul-20-2026=3***Jul-21-2026=2***Jul-22-2026=1***Jul-23-2026=3***Jul-25-2026=11***Jul-26-2026=12***Jul-27-2026=11***Jul-28-2026=13***Jul-29-2026=17***Jul-30-2026=12***Jul-31-2026=12***Aug-01-2026=15***Aug-02-2026=18***Aug-03-2026=14***Aug-04-2026=10***Aug-05-2026=11***Aug-06-2026=8***Aug-07-2026=17***Aug-08-2026=21***Aug-09-2026=18***Aug-10-2026=16***Aug-11-2026=22***Aug-12-2026=20***Aug-13-2026=16***Aug-14-2026=20***Aug-15-2026=21***Aug-16-2026=20***Aug-17-2026=23***Aug-18-2026=25***Aug-19-2026=25***Aug-20-2026=27***Aug-21-2026=27***Aug-22-2026=33***Aug-23-2026=25***Aug-24-2026=27***Aug-25-2026=22***Aug-26-2026=22***Aug-27-2026=75***Aug-28-2026=11***Aug-29-2026=3***Aug-30-2026=3***Sep-02-2026=1***Sep-03-2026=1***Sep-05-2026=2***Sep-06-2026=1***Sep-07-2026=1***Sep-08-2026=1***Sep-10-2026=3***Sep-12-2026=2***Sep-16-2026=2***Sep-17-2026=4***Sep-19-2026=2***Sep-21-2026=2***Sep-22-2026=3***Sep-23-2026=2***Sep-24-2026=1***Sep-25-2026=3***Sep-26-2026=1***Sep-29-2026=1***Sep-30-2026=1***Oct-03-2026=622' WHERE job_id= '1480154'  
0.0009   UPDATE employer_jobs SET monthly_hits = '***Sep-2025=234***Oct-2025=22***Jan-2026=290***Feb-2026=333***Mar-2026=476***Apr-2026=1191***May-2026=42***Jun-2026=40***Jul-2026=642***Aug-2026=615***Sep-2026=34***Oct-2026=622' WHERE job_id= '1480154'  
0.0012   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1480154' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1480154 
0.0038   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '859928'
AND `date_added` >= '2022-06-08' 
0.0018   select * from teasers 
0.0003   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)