Add Attio as a connected source (call recording transcripts) - #824
Open
henry-dowling wants to merge 1 commit into
Open
Add Attio as a connected source (call recording transcripts)#824henry-dowling wants to merge 1 commit into
henry-dowling wants to merge 1 commit into
Conversation
Attio joins the connected-source lineup alongside Gong: each Attio call recording's transcript is indexed into attio_documents as a speaker-labelled, FTS-searchable document. - OAuth provider (standard authorization-code app). Attio access tokens don't expire and aren't refreshable, same shape as GitHub user tokens. - Indexer walks meetings (90-day window) -> call recordings -> transcripts. - Migration 0152 creates the copied-content attio_documents table. - Frontend connector card + brand icon. Requires an Attio OAuth app and ATTIO_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI env vars (meeting:read + call_recording:read scopes). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds Attio as a connected source, alongside Gong. Each Attio call recording's transcript is indexed into a new
attio_documentstable as a speaker-labelled, FTS-searchable document — so Attio calls become searchable/askable from within Stash.Why
We want to pull Attio call transcripts (e.g. sales/customer calls) into Stash to search and summarize them, the same way Gong calls already work.
How it works
backend/integrations/attio/provider.py) — standard OAuth 2.0 authorization-code app. Attio access tokens don't expire and aren't refreshable (same shape as GitHub user tokens), sosupports_refresh = False. Scopes:meeting:read,call_recording:read.GET /v2/selfsupplies the workspace name for the account label.backend/integrations/attio/indexer.py) — pages meetings over a rolling 90-day window → each meeting's call recordings → each recording's transcript, renders# title / Date / [Speaker N]: …, and upserts intoattio_documents. Recordings that age out of the window are soft-deleted.0152— creates the copied-contentattio_documentstable (FTS + embeddings), on the currentowner_user_id/user_sourcesconvention.attioprovider +attio_callssource type acrosstasks/sources.py,services/source_service.py, androuters/sources.py(one-connection-per-user resolver). AddedATTIO_OAUTH_CLIENT_ID/SECRET/REDIRECT_URItoconfig.py.Deploy steps (required before it works)
meeting:read+call_recording:read.ATTIO_OAUTH_CLIENT_ID,ATTIO_OAUTH_CLIENT_SECRET,ATTIO_OAUTH_REDIRECT_URI(e.g.https://api.joinstash.ai/api/v1/integrations/attio/callback) — locally inbackend/.env, in prod on Render (stash_backend).Testing
ruff check/ruff format: clean0152applies cleanly and the table shape is correcttsc/ lint show no Attio-related errorsCaveat
API request/response shapes are modeled on Attio's published docs (couldn't hit the live API without an app/token). The first real sync after connecting is the true validation; will adjust quickly if any field names differ.
Product screenshot of the integrations page (Attio card) to follow in a thread comment.
🤖 Generated with Claude Code