AI Automation Engineer (n8n, Voice AI, API Integrations)

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

TYPE OF WORK

Any

WAGE / SALARY

$15/hr

HOURS PER WEEK

20

DATE UPDATED

Apr 21, 2026

JOB OVERVIEW

The Role:
Each dental practice we sign triggers the same 30-day deployment. You will own steps 2 through 8 of that sequence:
• AI voice agents in Bland AI for after-hours answering, missed-call recovery, and patient reactivation campaigns — including pathway design, prompt engineering, and edge-case handling.
• n8n automation workflows connecting Bland AI, Twilio, GoHighLevel, ---------- , Supabase, Stripe, and the client's practice management system (Open Dental via API, Dentrix via bridge, or Eaglesoft via CSV fallback).
• Per-client provisioning: Twilio subaccounts and A2P 10DLC registration, GoHighLevel sub-accounts with pipelines and SMS workflows, ---------- sub-teams with event types and round-robin distribution, Stripe subscription setup.
• QA and go-live testing — every deployment gets at least 15 scripted call scenarios before a client ever uses it.
• Ongoing monitoring and optimization of live workflows — catching failures before the client does, tuning prompts and sequences based on real performance data.
• Internal tooling on our own n8n and Supabase stack to support our growing client base.
• Clean, handoff-ready documentation of every build — so the system you ship is maintainable by the next engineer, not just by you.

Required Skills (Non-Negotiable):
• Strong n8n experience. You have built real workflows end-to-end — not tutorials. You can diagram a process, reverse-engineer an SOP, and build it in n8n without hand-holding. Portfolio or screenshots required.
• AI voice agent experience. You have built working voice pathways in Bland AI, Vapi, Synthflow, or Retell. You understand prompt design for voice, conditional routing, variable injection, and how to debug a call that went sideways.
• Solid API and webhook fundamentals. REST, webhooks, authentication (OAuth, API keys, bearer tokens), JSON manipulation. You can read API docs and build an integration from scratch.
• Development background. You are not just a no-code operator. You can read and write basic JavaScript or Python for custom n8n nodes, data transformation, and edge-case logic. Git familiarity expected.
• Troubleshooting under pressure. When a client's phone system stops routing calls at 5 PM on Friday, you know how to diagnose it, fix it, and document what happened.
• Clean documentation discipline. Every build you ship must be maintainable by a second engineer. You name things clearly, document credential storage, and draw data flow diagrams.
• Strong written English. All our internal communication is written. Async, clear, and concise.

Bonus (Not Required, But Valued)
• GoHighLevel build experience — sub-accounts, pipelines, SMS workflows, A2P 10DLC.
• Twilio experience — subaccounts, BYOT, 10DLC registration, Messaging Services.
---------- configuration at the Organizations tier.
• Supabase experience — schema, auth, row-level security.
• Lovable, Bolt, or similar AI-assisted frontend builders.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0832
Total Execution Time  0.0846
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,516,232 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/AI-Automation-Engineer-n8n-Voice-AI-API-Integrations-1629076
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0778 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1629076
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 749922
 LIMIT 1 
0.0673   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` = 1629076
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',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-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1629076' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1629076 
0.0007   UPDATE employer_jobs SET hit_counts '***Apr-21-2026=429***Apr-22-2026=205***Apr-23-2026=103***Apr-24-2026=64***Apr-25-2026=22***Apr-26-2026=12***Apr-27-2026=28***Apr-28-2026=29***Apr-29-2026=25***Apr-30-2026=28***May-01-2026=19***May-02-2026=9***May-03-2026=16***May-04-2026=8***May-05-2026=12***May-06-2026=15***May-07-2026=6***May-08-2026=10***May-09-2026=5***May-10-2026=6***May-11-2026=4***May-12-2026=6***May-13-2026=3***May-14-2026=7***May-15-2026=6***May-16-2026=4***May-17-2026=2***May-18-2026=4***May-19-2026=16***May-20-2026=8***May-21-2026=4***May-22-2026=4***May-23-2026=1***May-24-2026=6***May-25-2026=14***May-26-2026=4***May-27-2026=7***May-28-2026=5***May-29-2026=3***May-30-2026=32***May-31-2026=79***Jun-01-2026=46***Jun-02-2026=32***Jun-03-2026=11***Jun-04-2026=9***Jun-05-2026=5***Jun-06-2026=4***Jun-07-2026=3***Jun-08-2026=9***Jun-09-2026=3***Jun-10-2026=6***Jun-11-2026=4***Jun-12-2026=16***Jun-13-2026=8***Jun-20-2026=1' WHERE job_id'1629076'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=945***May-2026=325***Jun-2026=156' WHERE job_id'1629076'  
0.0016   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1629076' 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` = 1629076 
0.0039   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '749922'
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)