Skip to content

Integrations

OpenScouter integrates with seven external services to handle payments, communication, AI inference, facial analysis, email delivery, scheduling, and data persistence. Each integration is described below with its role, configuration requirements, and failure behavior.

Stripe is used for payment processing and tester payouts. OpenScouter uses the Stripe Connect platform to enable direct payouts to tester bank accounts.

Businesses pay for studies through Stripe. Funds are held in the OpenScouter Stripe account until the study is complete and findings are confirmed. At completion, the platform distributes payment to each tester’s connected Stripe account minus the platform fee.

EndpointTriggerDescription
POST /api/webhooks/stripeStripe sends eventsHandles payment confirmation, payout status, and Connect account updates
POST /api/billing/checkoutBusiness creates a studyCreates a Stripe Checkout session for study payment
POST /api/billing/connectTester onboardsInitiates Stripe Connect onboarding for a new tester
POST /api/billing/payoutStudy completeTriggers payout to tester Stripe accounts
  • checkout.session.completed - Study payment confirmed; study transitions to active status
  • account.updated - Tester Connect account verification status changed
  • payout.paid - Payout successfully delivered to tester bank
  • payout.failed - Payout failed; triggers retry and notification

Webhook payloads are verified using HMAC-SHA256 with the Stripe webhook signing secret. See the Authentication page for verification implementation details.

Telegram is the primary communication channel between OpenScouter and testers. Testers do not log in to a notification dashboard. All study offers, status updates, and reminders are delivered via Telegram.

When a study is matched to a tester, the platform sends a Telegram message with the study brief, compensation amount, and an accept/decline link. Reminders are sent 24 hours and 2 hours before a test is due. Post-test confirmation prompts are also delivered via Telegram.

The integration uses the Telegram Bot API. The bot is configured with a webhook URL pointing to POST /api/webhooks/telegram.

TriggerBot Action
Study matchSend offer message with study details
Offer expires in 2hSend reminder
Tester acceptsConfirm acceptance, send test token
Test due in 2hSend preparation reminder
Test completeSend confirmation request link
Payout processedSend payment confirmation

The bot requires a TELEGRAM_BOT_TOKEN environment variable. Messages are sent using the sendMessage method with parse_mode: MarkdownV2 for structured formatting.

DeepFace is the facial expression analysis engine used to derive emotion metadata from tester webcam frames during tests.

The Chrome extension processes webcam frames locally on the tester’s device and sends only the derived emotion metadata (emotion labels, confidence scores, and Action Unit values) to the API. No raw images or video leave the tester’s computer. The metadata is stored as facial_snapshots records.

DeepFace runs as a self-hosted FastAPI service. The API communicates with it over an internal network endpoint.

POST /analyze
Content-Type: multipart/form-data
{
"actions": ["emotion"],
"enforce_detection": false,
"detector_backend": "retinaface"
}

The enforce_detection: false setting prevents errors when no face is detected in a frame. When the response indicates no face was found, the snapshot is stored with face_detected = false and excluded from analysis.

The extension processes frames locally and transmits only aggregated emotion metadata. The API stores the metadata for downstream analysis.

If local emotion analysis fails for a frame, the metadata record is stored with emotion = null and face_detected = false. The test continues. Emotion data is treated as optional; the corroboration engine can still produce findings from browser events and voice transcripts alone.

Resend handles transactional email delivery. Resend is used for business-facing communications only. Tester notifications go via Telegram.

Email TypeTrigger
Study commissionedBusiness completes payment
Tester matchedTester accepts study offer
Report readySynthesizer agent completes
InvoiceEnd of billing period
Password resetUser requests reset
Magic linkUser requests passwordless login

The Resend SDK is configured with a RESEND_API_KEY environment variable. All transactional emails use React Email templates rendered server-side before sending. Templates are stored in src/emails/.

Calendly is used for scheduling synchronous review calls between businesses and OpenScouter’s accessibility consultants. Scheduled calls are optional and available on paid plans.

After a study report is delivered, the business dashboard shows an option to schedule a review call. Clicking this link opens an embedded Calendly widget pre-filled with the business’s account details. When a meeting is booked, Calendly sends a webhook to POST /api/webhooks/calendly to record the booking in the OpenScouter database.

The Calendly integration uses the Calendly v2 API for event type management and the Calendly webhook API for booking notifications.

Webhook payloads are verified using the Calendly-Webhook-Signature header.

Supabase provides the PostgreSQL database, authentication, Row-Level Security, storage, and real-time subscriptions. Although Supabase is the foundational data layer rather than a third-party integration in the traditional sense, it has distinct configuration requirements.

Supabase ServiceUsage
PostgreSQLAll structured data storage
AuthUser sessions, JWT issuance, OAuth
Row-Level SecurityData isolation between organizations
StorageScreen recording clips, report PDFs, snapshot archives
RealtimeLive test progress updates in the business dashboard

Supabase is configured with the following environment variables:

  • NEXT_PUBLIC_SUPABASE_URL - Public Supabase project URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY - Public anon key for client-side requests
  • SUPABASE_SERVICE_ROLE_KEY - Service role key for server-side administrative operations

The service role key bypasses RLS. It is used only in server-side API routes where the operation legitimately needs to span multiple organizations, such as the Synthesizer agent aggregating data across all testers in a study.

OpenScouter uses three AI providers for the 4-agent analysis pipeline: OpenAI, Anthropic (Claude), and Google Gemini. The platform implements automatic failover across providers to ensure high availability.

All four agents in the AI pipeline use these providers for inference. The platform routes requests to the primary provider and falls back to alternative providers if the primary is unavailable or returns an error. Voice transcript segments flagged as containing personally identifiable information are excluded from AI analysis until they have been sanitised.

Each provider is configured with its own API key environment variable. The platform selects the appropriate provider based on availability and the failover strategy defined in the agent runner.

If all AI providers are unavailable, affected analysis steps are queued for retry. A background job retries unprocessed segments every 15 minutes.