← back
Complete AI Outbound Call System for Construction

Complete AI Outbound Call System for Construction

Pending
💰 AUD 70–150 👤 Unknown 🕒 7d ago status: new
PHP Java Cold Fusion Node.js PostgreSQL Twilio REST API OpenAI Voice Synthesis AI Development
AI Outbound Caller for Construction Contractor — Complete, Integrate, Test & Deploy We have an existing Node.js / TypeScript AI outbound caller project that needs to be proof-checked, completed, connected to live services, debugged, tested, and prepared for deployment. This is for a construction contractor. The system will call prequalified commercial construction leads from HubSpot, speak with builders / estimators / PMs / CAs, identify the correct project contact, request project documents, update HubSpot, create follow-up tasks, and notify the business owner/director when documents are received. This is not a prototype job. We need someone who can complete the full working system. Current Project Includes The existing ZIP already contains: Node.js / TypeScript / Express backend PostgreSQL schema and migrations Project/contact/call-session logic Call eligibility logic Suppression / do-not-call logic 7-day contact cooldown rule 72-hour project cooldown rule Twilio outbound call initiation Twilio Voice webhook Twilio status webhook Twilio Media Streams WebSocket endpoint OpenAI Realtime bridge concept Construction contractor AI sales-agent prompt Structured outcome extraction logic HubSpot workflow service Follow-up action service SMS STOP / opt-out handling concept API authentication, rate limiting, Helmet, logging Dockerfile, docker-compose, .env.example, README notes However, it is not production-ready. It needs full audit, bug fixing, integration, real testing, and deployment preparation. Final System Must Do The final system must: Pull/read prequalified companies, contacts and projects from HubSpot. Select eligible contacts based on cooldown, suppression and project rules. Call contacts through Twilio. Connect call audio to OpenAI Realtime using Twilio Media Streams. Use the construction contractor sales-agent prompt. Ask whether the person answering is the correct PM / CA / estimator. If not, collect the correct person’s name, role, email and phone. Create the new contact in HubSpot if needed. Link the new contact to the correct company and exact project/deal. Call the correct PM / CA / estimator. Ask about project/package status, documents, specs, deadline and expected start date. Capture transcript and structured outcome. Update PostgreSQL and HubSpot. Create HubSpot notes, tasks and stage updates. Send/queue follow-up email or SMS where required. Detect opt-out / do-not-call and suppress future calls. Notify owner/director when documents are received. Create calendar reminder 2 days before quote/tender deadline. Generate daily/weekly summary reports. Be deployable with clear documentation. Mandatory Call Flow 1. First call The AI calls the contact linked to the project/deal and asks: “Hi [Name], I’m calling regarding [Project Name]. Are you the person handling this package, or would that sit with the PM, CA or estimator?” 2. If correct person The AI asks: Is the package still open? Are you accepting pricing? Can you send project documents/drawings/specs/schedules? What is the quote/tender deadline? When is the expected start date? Who should be copied in? Then the system logs the call and updates HubSpot. 3. If wrong person The AI must ask for the correct PM / CA / estimator details: Name Role Email Phone/mobile Company Project relationship Then the system must: Search HubSpot by email/phone Avoid duplicate contacts Create new contact if needed Link contact to company Link contact to exact project/deal Add HubSpot note explaining how contact was found Schedule or trigger a call to the new contact 4. Second call The AI calls the newly discovered contact using project context: “Hi [Name], I was given your details regarding [Project Name]. I understand you may be handling the package on that project. I’m just checking where that package is sitting at the moment.” Required HubSpot Stages / Filters The system must update the project/deal into the correct stage/filter: Not Contacted Didn’t Answer Contact Mapping Required New Contact Found Contacted – Waiting for Documents Documents Received Quoted Not Interested Already Got Contractor Project Not Ready Completed Do Not Call / Suppressed Developer must document whether these are deal stages, custom properties, lists/views, or a combination. Required Call Outcomes Every call must produce one structured outcome: Didn’t Answer Contact Mapping Required New Contact Found Contacted – Waiting for Documents Documents Received Quoted Not Interested Already Got Contractor Project Not Ready Completed Opt-Out / Do Not Call Each outcome must trigger the correct HubSpot update, follow-up task, suppression rule, or next call. Documents Received Workflow When documents/drawings/specs/schedules are received, the system must: Mark project/deal as Documents Received. Link/attach documents to the project if possible. Notify owner/director by email or task. Include project name, company, contact details, call summary, deadline and expected start date. Create a calendar reminder 2 days before the quote/tender deadline. Include all key notes in the calendar event. Calendar can be Google Calendar, Microsoft Calendar or HubSpot task/calendar workflow. Main Work Required Full Audit & Fixes Review and fix: TypeScript code quality Broken imports / dead code Environment variables Database schema and migrations Internal/external ID consistency API routes and middleware Authentication and rate limiting Twilio webhook validation OpenAI Realtime bridge HubSpot workflow logic Follow-up logic Outcome extraction SMS opt-out handling Deployment setup Security risks Race conditions Duplicate call/contact risks Twilio Integration Fully connect and test: Outbound calls Caller ID / phone number Voice webhook Status callback Media Streams WebSocket Signature validation No-answer / busy / failed / completed handling Call SID, duration and recording URL storage OpenAI Realtime Integration Fully connect and test: Twilio audio → OpenAI OpenAI audio → Twilio Prompt injection with project/contact context Transcript capture Fallback responses Escalation for technical/warranty/capacity/contract questions Timeout/silence/error handling HubSpot Integration Fully connect and test: Contact/company/deal mapping New contact creation Contact-to-company association Contact-to-project/deal association Call notes Tasks Deal stage updates Duplicate prevention Idempotency protection Required HubSpot fields/stages documentation Eligibility Rules Implement and verify: No calls to do-not-call contacts No calls to suppressed/completed/lost projects Same contact max once every 7 days Same project max once every 72 hours unless override Respect SMS STOP / opt-out Max failed attempts Batch multiple projects for same contact where possible Prevent duplicate calls Outcome Extraction Extract and validate: Call outcome Correct contact found New contact details Package/project status Documents/specs/schedules status Quote/tender deadline Expected start date Objection/rejection reason Sentiment Follow-up required/date Escalation required/reason Opt-out detected Suggested HubSpot stage Summary note Invalid AI JSON must retry or fail safely. Testing Required Developer must provide proof of: npm install npm run build npm test Database migration test API route tests Eligibility tests Contact discovery tests HubSpot contact creation test HubSpot association test Twilio test call AI voice response test Transcript capture test Outcome extraction test HubSpot note/task/deal update test No-answer test Opt-out test Suppression/cooldown test Documents received workflow test Director notification test Calendar reminder test Do not claim completion unless the full flow has been tested. Final Deliverables Freelancer must provide: Updated full source code ZIP GitHub repo/branch with clean commits Working deployed backend PostgreSQL schema/migrations .env.example Full README Twilio setup guide HubSpot setup guide OpenAI setup guide Calendar setup guide Deployment guide Testing report Required environment variables Required HubSpot fields/stages Proof of successful build Proof of successful test call Proof of HubSpot contact creation/association Proof of HubSpot note/task/stage update Proof of director notification and calendar event Short Loom/video walkthrough Final handover document Required Experience Please only apply if you have experience with: Node.js / TypeScript / Express PostgreSQL REST APIs and WebSockets Twilio Programmable Voice / Media Streams OpenAI Realtime or AI voice agents HubSpot CRM API and associations Webhook validation CRM workflow automation Calendar API integration Docker / deployment Security best practices Bonus: experience with outbound sales automation, construction/B2B CRM workflows, Twilio + OpenAI voice agents. Acceptance Criteria The project is complete only when the system can: Select eligible HubSpot contacts Call through Twilio Speak with AI voice Identify whether the person is the correct PM / CA / estimator Collect and create/link new contacts if needed Call the correct contact Classify the outcome Update HubSpot correctly Create follow-up tasks Notify owner/director when documents are received Create calendar reminder 2 days before quote deadline Respect do-not-call and cooldown rules Run safely in a controlled pilot with real contacts
↗ View on Freelancer