Senior VoIP/Telephony Engineer — Live Inbound Call-Center Platform (Telnyx + Node)— Full Time

Posted 3 weeks ago

Worldwide

Summary

We run a live inbound call center and have built our own custom call-center platform on top of Telnyx. It's in production right now with 15 agents taking real calls daily. The core is built and working — we need a senior telephony engineer to take ownership, work out the remaining intermittent bugs, and get it fully across the finish line. Our stack: Telephony: Telnyx (SIP trunking, DIDs, call control API, recordings) Backend: Node.js / Express, single service, deployed on Render, Postgres database Softphone: Zoiper Pro on agent machines (we are open to replacing this — see below) Frontend: Custom admin panel + agent cockpit (browser-based), plus a partner/publisher reporting portal Agents: ~15 reps based in Pakistan. This is a primarily inbound operation — US customers call in to our Pakistan-based reps. Outbound is used only for manual dials and callbacks (occasionally Pakistan → US). Goal is to get 200+ reps on the system. What's already built and working: Full inbound call routing with center/team scoping and priority-based agent selection Agent cockpit: live call control, click-to-dial for manual/callbacks, disposition system, wrap-up handling Reps both close sales in-house and warm-transfer callers to external buyers/closers (three-way transfer) — both paths matter Live call monitoring + supervisor live-listen Call recording + transcript storage and playback, center-scoped Role-based access: admin, supervisor, QA, agent — each scoped and enforced at the API layer Break status tracking, hours reporting (online vs break vs unavailable), attendance alerting Sale disposition + supervisor sale-approval workflow with full audit trail Partner/publisher portal: publishers log in and see only their own calls, verdicts, payouts, and AI-sold stats (pay-per-call reporting with dedupe + duration rules) Scheduler, callback system, in-app alerting, CSV exports Session/state janitors, zombie-call cleanup, admin force-end tooling What we need help with — the remaining kinks (all intermittent, which is the hard part): Disposition / sale-submission forms occasionally don't pop up (cockpit ↔ server state drift) Callback feature works inconsistently Agents occasionally receive an inbound call while on a manual outbound call, or while offline Three-way transfer that disconnects mid-call sometimes gets stuck with no disposition, requiring agent logout/login to clear Break status flickering General hardening of the state-sync between the browser cockpit and the backend Most of these are timing / state-synchronization issues between the agent's browser and the server, driven by asynchronous Telnyx webhooks — not simple logic bugs. We need someone who understands SIP call state, webhook race conditions, and how to keep in-memory session state and database truth reconciled under real-world network conditions (our agents are on variable Pakistan connections, so latency and packet loss are real factors). Also on the table — audio quality & softphone: Call audio is sometimes noisy/low-quality for our Pakistan agents. We're on Zoiper Pro but open to a better solution, including a WebRTC browser-based softphone embedded directly in our cockpit to eliminate the separate app. Strong experience here — codec strategy (Opus/FEC/G.722), media routing, WebRTC vs native softphone on poor connections — is a big plus. The arrangement: Full-time to start — someone who can go deep, take ownership, and drive the remaining work to done. Part-time / retainer after — ongoing maintenance, new features, and being our on-call telephony expert once it's stable. We move fast, communicate directly, and make decisions quickly. You'd work closely with the owner. This is a real production system with real revenue running through it, so careful, verified changes matter more than speed-at-all-costs. To apply — answer both of the following. Applications that don't address these specifically will not be considered. Question 1 (one sentence): In a Telnyx (or FreeSWITCH) call-control setup, is webhook delivery guaranteed, ordered, and exactly-once? Question 2: Our call state lives in two places — in-memory session objects on our Node server, and rows in Postgres — both updated by asynchronous Telnyx webhooks that can arrive out of order, be delayed, or occasionally be lost entirely. Several of our intermittent bugs (calls stuck as "N/A" after a transfer disconnect, disposition screens not appearing, agents appearing busy when idle) come from these two sources of truth drifting apart. Walk us through: (1) how you'd architect the reconciliation so the server's live state is provably correct even when a webhook is dropped or arrives late; (2) when a three-way transfer's buyer leg disconnects, how you'd determine whether the customer is still on the line and keep that call dispositionable rather than orphaning it; and (3) how you'd detect and clean up "zombie" sessions without ever killing a call that's genuinely still connected. Tell us what you'd trust as the source of truth — the webhook stream, the Telnyx API, your DB, or your in-memory state — and why. Finally, briefly describe the most similar production system you've personally built or hardened (Telnyx, or FreeSWITCH/Asterisk) and its scale.

  • More than 30 hrs/week
    Hourly
  • 6+ months
    Duration
  • Expert
    Experience Level
  • Remote Job
  • Ongoing project
    Project Type

Contract-to-hire opportunity

This lets talent know that this job could become full time.
Learn more
Skills and Expertise
Mandatory skills
Web Application
Full-Stack Development
Activity on this job
  • Proposals:20 to 50
  • Last viewed by client:3 weeks ago
  • Hires:
    1
  • Interviewing:
    13
  • Invites sent:
    0
  • Unanswered invites:
    0
About the client
Member since Feb 24, 2019
  • United States
    New York1:52 AM
  • $71K total spent
    25 hires, 8 active
  • 986 hours
  • Individual client

Explore similar jobs on Upwork

JavaScript
Node.js
PHP
Web Application
AI App Development
DevOps
API
Git
MySQL
Cs2 Gambling SiteFixed-price‐ Posted 4 weeks ago
Gambling
Unity
Counter Strike
AR & VR
Online Gambling Website
Card Game
Board Game
Unreal Engine
MetaMask
Mystery Box
iGaming
WebGL
Game Development
Gaming
Multiplayer
Game UI/UX Design
UI/UX Prototyping
Steam API
AI Development
PixiJS

How it works

  • Post a job icon
    Create your free profile
    Highlight your skills and experience, show your portfolio, and set your ideal pay rate.
  • Talent comes to you icon
    Work the way you want
    Apply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
  • Payment simplified icon
    Get paid securely
    From contract to payment, we help you work safely and get paid securely.
Want to get started? Create a profile

About Upwork

  • Rating is 4.9 out of 5.
    4.9/5
    (Average rating of clients by professionals)
  • G2 2021
    #1 freelance platform
  • 49,000+
    Signed contract every week
  • $2.3B
    Freelancers earned on Upwork in 2020

Find the best freelance jobs

Growing your career is as easy as creating a free profile and finding work like this that fits your skills.

Trusted by

  • Microsoft Logo
  • Airbnb Logo
  • Bissell Logo
  • GoDaddy Logo