Full-Stack IVR & AI Developer (Telnyx, ChatGPT, Docker)

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

TYPE OF WORK

Any

SALARY

TBD

HOURS PER WEEK

TBD

DATE UPDATED

Jan 6, 2025

JOB OVERVIEW

We are looking for a skilled and self-driven developer who can single-handedly design, build, and maintain a smart, AI-enabled IVR system. This system will integrate Telnyx Programmable Voice, OpenAI/ChatGPT (or Amazon Polly/Whisper), and Google My Business data. You will be responsible for end-to-end development—from server setup on Hetzner (Docker) to creating a user-friendly admin panel for multiple store locations.

If you are passionate about VoIP, containerized deployments, AI-based speech technologies, and enjoy working on innovative telephony solutions, we’d love to hear from you!

Responsibilities
IVR System Architecture & Development

Design, implement, and maintain a multi-location IVR using Telnyx Programmable Voice (webhooks/call control).
Set up call routing logic, handling both voice commands (speech-to-text) and DTMF (keypad) inputs.
Speech-to-Text & Text-to-Speech Integration

Integrate OpenAI/ChatGPT or Amazon Polly/Whisper for conversational IVR, dynamic responses, and language support.
Pre-generate and cache audio files for store greetings/marketing messages.
Google My Business Data Handling

Develop a background service or cron job to fetch and update store details (hours, address, etc.) for use in dynamic IVR prompts.
Cache data to minimize external API calls.
Voicemail & Queue Management

Implement a queue system for callers on hold, including marketing messages.
Set up voicemail recording, transcription (via STT), and auto-emailing to store owners.
Outbound SMS

Utilize Telnyx Messaging API to send directions or marketing texts to callers who opt in.
Capture and store phone numbers in a database for future marketing campaigns (with compliance considerations).
High Availability & Failover

Configure Docker-based deployment on Ubuntu (Hetzner).
Set up a secondary failover server or floating IP for continuous operation if the primary server goes down.
Admin Panel / GUI

Create a web-based admin dashboard (React, Vue, or Angular + Node.js/Express backend) to manage store settings, greetings, marketing messages, voicemail emails, etc.
Implement user roles (multi-tenant access) so different store owners can log in and manage their own data.
Testing & Maintenance

Write unit/integration tests for stability.
Monitor call volumes, handle concurrency, optimize performance, and troubleshoot production issues.
Qualifications
Technical Skills

Strong experience with Node.js (Express or similar) OR Python (FastAPI) for backend development.
Proficiency in Docker (Docker Compose or Kubernetes a plus) for containerized deployments.
Experience with VoIP/Telephony APIs (Telnyx, Twilio, or similar).
Knowledge of Speech-to-Text and Text-to-Speech technologies (OpenAI, Amazon Polly, Google Cloud STT).
Frontend development skills (React, Vue, or Angular) for building the Admin GUI.
Familiarity with databases (PostgreSQL or MySQL) for multi-tenant data management.
System Architecture & DevOps

Comfortable setting up Ubuntu servers on Hetzner and configuring SSL (Cloudflare or Let’s Encrypt).
Experience with CI/CD, load balancing, failover, and high-availability architectures.
Soft Skills

Ability to work independently and take full ownership of the project from concept to deployment.
Good communication skills in English, both written and verbal.
Problem-solving attitude—you enjoy tackling new challenges and optimizing solutions.
Preferred Experience

Hands-on with CRM integration, multi-language IVR solutions, or large-scale telephony projects.
Experience with PCI compliance and secure handling of sensitive data.
Tools & Technologies You’ll Work With
Node.js / Express (or Python / FastAPI)
Docker & Docker Compose
Telnyx Voice & Messaging APIs
OpenAI / ChatGPT, Amazon Polly, or other STT/TTS solutions
PostgreSQL or MySQL for data storage
Nginx, Let’s Encrypt/Cloudflare for SSL & reverse proxy
Google My Business / Google Maps APIs
Git for version control

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0169
Total Execution Time  0.0188
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,521,536 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Full-Stack-IVR-AI-Developer-Telnyx-ChatGPT-Docker-1290576
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0100 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1290576
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 88908
 LIMIT 1 
0.0015   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1290576
AND `misc`.`idIS NULL 
0.0009   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-19',ej.date_added) duration_daysDATEDIFF('2026-04-19',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-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1290576' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1290576 
0.0027   UPDATE employer_jobs SET hit_counts '***Jan-06-2025=26***Jan-07-2025=73***Jan-08-2025=9***Jan-09-2025=9***Jan-10-2025=7***Jan-11-2025=1***Jan-12-2025=2***Jan-13-2025=10***Jan-14-2025=4***Jan-15-2025=1***Jan-16-2025=2***Jan-17-2025=1***Jan-18-2025=4***Jan-19-2025=3***Jan-20-2025=2***Jan-21-2025=1***Jan-22-2025=2***Jan-23-2025=1***Jan-25-2025=2***Jan-26-2025=1***Jan-29-2025=1***Jan-30-2025=1***Feb-03-2025=1***Feb-05-2025=2***Feb-06-2025=1***Feb-07-2025=1***Feb-08-2025=3***Feb-09-2025=2***Feb-10-2025=5***Feb-11-2025=1***Feb-15-2025=1***Feb-16-2025=1***Feb-20-2025=1***Feb-21-2025=2***Feb-23-2025=1***Feb-24-2025=4***Feb-25-2025=3***Feb-26-2025=1***Feb-27-2025=1***Mar-02-2025=2***Mar-03-2025=1***Mar-04-2025=1***Mar-06-2025=4***Mar-09-2025=1***Mar-10-2025=1***Mar-15-2025=1***Mar-18-2025=2***Mar-21-2025=5***Mar-22-2025=3***Mar-23-2025=1***Mar-24-2025=3***Mar-25-2025=1***Mar-26-2025=1***Mar-27-2025=1***Mar-28-2025=1***Mar-29-2025=1***Mar-31-2025=1***Apr-01-2025=1***Apr-07-2025=1***Apr-08-2025=2***Apr-10-2025=1***Apr-11-2025=1***Apr-15-2025=1***Apr-22-2025=1***Apr-25-2025=1***May-04-2025=2***May-07-2025=3***May-10-2025=2***May-27-2025=1***May-29-2025=1***Jun-02-2025=1***Jun-12-2025=2***Jun-18-2025=3***Jun-19-2025=1***Jun-25-2025=1***Jun-27-2025=2***Jun-28-2025=1***Jul-04-2025=1***Jul-05-2025=1***Jul-09-2025=1***Jul-11-2025=3***Jul-17-2025=2***Jul-19-2025=1***Jul-25-2025=1***Jul-31-2025=1***Aug-06-2025=1***Aug-14-2025=1***Aug-18-2025=1***Aug-21-2025=1***Aug-30-2025=1***Sep-08-2025=1***Sep-12-2025=1***Sep-15-2025=2***Sep-19-2025=1***Sep-21-2025=1***Sep-24-2025=2***Sep-25-2025=1***Sep-27-2025=1***Sep-28-2025=1***Oct-03-2025=1***Oct-07-2025=1***Oct-08-2025=3***Oct-10-2025=1***Oct-12-2025=1***Oct-21-2025=1***Oct-23-2025=2***Oct-27-2025=2***Nov-04-2025=1***Nov-14-2025=2***Nov-15-2025=1***Nov-23-2025=1***Dec-04-2025=1***Dec-08-2025=2***Dec-15-2025=1***Dec-26-2025=1***Jan-05-2026=1***Jan-07-2026=2***Jan-15-2026=1***Jan-24-2026=1***Jan-28-2026=1***Feb-01-2026=2***Feb-02-2026=1***Feb-11-2026=1***Feb-18-2026=1***Feb-23-2026=1***Mar-08-2026=1***Mar-10-2026=1***Mar-15-2026=1***Mar-26-2026=3***Mar-28-2026=1***Mar-30-2026=2***Mar-31-2026=79***Apr-01-2026=46***Apr-05-2026=1***Apr-07-2026=1***Apr-19-2026=1' WHERE job_id'1290576'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jan-2025=163***Feb-2025=31***Mar-2025=31***Apr-2025=9***May-2025=9***Jun-2025=11***Jul-2025=11***Aug-2025=5***Sep-2025=11***Oct-2025=12***Nov-2025=5***Dec-2025=5***Jan-2026=6***Feb-2026=6***Mar-2026=88***Apr-2026=49' WHERE job_id'1290576'  
0.0014   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1290576' AND status LIKE 'sent%' ORDER BY id DESC  
0.0002   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1290576 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '88908'
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)