Pilot workspace

Control plane · Sarvam voice

Settings

Connect Google Sheets and Sarvam for the pilot loop.

Calling window

Control when instant dials and campaign launches are allowed. Consent + DND still apply either way.

Closed now

Start

End

Timezone

Webhooks & tunnel

Sarvam cannot call localhost. After each dial it POSTs results to this public URL (ngrok). That is how Call log + lead status update. You usually do not set anything inside Sarvam if we send webhook_config on each call — just keep ngrok running.

Local only

Google Sheets

OAuth sync + write-back. Falls back to local CSV if not connected. Per-tenant — use a tenant account, not Super Admin.

OAuth not configured

How to obtain Google OAuth (save into .env)

  1. Open Google Cloud Console → create/select a project.
  2. Enable Google Sheets API + Google Drive API.
  3. OAuth consent screen → External → add your Gmail as Test user. Scopes: spreadsheets, drive.file.
  4. Credentials → OAuth client → Web application. Redirect URI (exact):http://localhost:4000/api/v1/integrations/google/callback
  5. Paste into .env and packages/api/.env:
    GOOGLE_CLIENT_ID="….apps.googleusercontent.com"
    GOOGLE_CLIENT_SECRET="GOCSPX-…"
    GOOGLE_OAUTH_REDIRECT_URI="http://localhost:4000/api/v1/integrations/google/callback"
  6. Restart API → badge becomes Ready to connect → Connect Google.

Full checklist: docs/GOOGLE-SHEETS-SETUP.md. CSV sync works without OAuth.

Spreadsheet
Tab
Leads
Last sync
Never
Sync status
IDLE

Sync uses Google if connected; otherwise falls back to data/leads-sheet.csv. Seed upserts sample RE leads without Google.

Sarvam

API key is encrypted at rest. After you edit+publish the agent in Indus, bump Agent version here — otherwise dials keep using the old Skyline defaults.

Missing key
Org
from .env
Workspace
from .env
Default agent
from .env

API key

Agent version

Indus prompt must use {{property_viewed}} / {{enquiry_location}} — not hardcoded “Skyline”. After Publish in Indus, set the new version number here.