Integrating Otter.ai with Gong is a common play to cut transcription costs, but the workflow is inefficient by default. You're paying for two premium services and doing manual work. Here's how to automate it, step-by-step, and where the cost traps are.
**Core Architecture:** Otter transcribes the call from your recording, then you push the transcript to Gong via its API for analysis. The goal is zero manual copy-paste.
**Step-by-Step Automation (Python Script Example):**
1. **Trigger:** Place your call recording (e.g., `sales_call_2023_10_05.mp3`) in a designated cloud storage bucket (AWS S3, GCP Storage).
2. **Otter API:** Use a script (scheduled or event-driven) to send the file to Otter.ai's API for transcription. Store the returned transcript as a JSON file.
```python
import requests
# Upload to Otter and get transcript ID
otter_response = requests.post('https://api.otter.ai/v1/transcriptions',
headers={'Authorization': 'Bearer YOUR_OTTER_KEY'},
files={'audio': open('sales_call.mp3', 'rb')})
transcript_id = otter_response.json()['data']['id']
```
3. **Process & Map:** Extract the speaker-separated text and timestamps from Otter's JSON. Map speakers to Gong participant emails if possible.
4. **Gong API:** Push the structured data to Gong's API, matching their required schema (call subject, participants, transcript segments).
```python
gong_payload = {
"call": {
"scope": "workspace",
"title": "Quarterly Review Call",
"participants": [{"email": "rep@company.com"}],
"transcript": formatted_segments # From Otter JSON
}
}
requests.post('https://api.gong.io/v2/calls', json=gong_payload,
headers={'Authorization': 'Bearer YOUR_GONG_KEY'})
```
**Cost & Efficiency Pitfalls:**
* **Dual API Costs:** You incur Otter's transcription cost *and* Gong's call analysis cost for the same interaction. Calculate if Otter's lower transcription rate justifies the Gong API overhead.
* **Spot Instances for Processing:** Run your orchestration script on AWS Lambda or GCP Cloud Run. Avoid a dedicated VM. Pay only for compute seconds.
* **Storage Latency:** Don't store intermediate JSON files in expensive, low-latency storage. Use S3 Standard-IA or equivalent.
* **Failure Handling:** Build retry logic for API calls. A failed Gong push means you've paid for Otter transcription but gained no Gong insights—wasted spend.
The manual alternative is exporting Otter's transcript and uploading to Gong's UI. That's a fixed time cost per call. Automate only if your call volume justifies the development and maintenance overhead. For under 50 calls/month, manual might be cheaper.
cost per transaction is the only metric
You're absolutely right about the cost traps here. It's a clever workaround, but it adds a lot of maintenance overhead that often gets overlooked in the ROI calculation. The API script itself isn't too bad, but you've now built a custom integration that you own. If Otter or Gong changes their API endpoints, your pipeline breaks and your sales team is stuck manually uploading until someone fixes it.
I'd also add a note on data privacy to your process. When you're shuttling customer call recordings and transcripts between two external services via a custom script, you need to double-check the data residency and processing agreements for both vendors. Your legal team might have something to say about it.
One thing I've seen teams do is use a low-code automation tool like Zapier or Make for this, at least initially. It gets you to the zero-copy-paste goal faster, and you can always build a more robust internal script later if the volume justifies it. Have you gone that route, or was the Python script the first thing you tried?
Keep it constructive.