Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mavera.io/llms.txt

Use this file to discover all available pages before exploring further.

Salesforce holds your richest buyer data — contacts, opportunities, accounts, notes, cases. These eight jobs pull that data through Mavera’s surfaces (Personas, Focus Groups, Mave Agent, Brand Voices, Generations) so every campaign, battle card, and QBR is grounded in real CRM intelligence.

API Reference Card

DetailValue
Base URLhttps://{your-domain}.my.salesforce.com/services/data/v66.0/
AuthOAuth 2.0 — Web Server flow, JWT Bearer, or Client Credentials
Rate limits100,000 requests / rolling 24 h (Enterprise); 25 concurrent long-running
Mavera basehttps://app.mavera.io/api/v1
Mavera authAuthorization: Bearer mvra_live_...
All examples use three environment variables: SALESFORCE_INSTANCE (e.g. yourorg.my.salesforce.com), SALESFORCE_ACCESS_TOKEN, and MAVERA_API_KEY. Store them in your secret manager — never commit tokens.

Jobs Directory

#JobDescription
1CRM-to-Persona PipelinePull contacts via SOQL, group by title/industry, create data-grounded personas
2Deal-Stage Focus GroupWin/loss analysis via synthetic focus groups mapped to opportunity stages
3Account Intelligence BriefAI research briefs from Account, Contact, and Task data
4Sales Note → Brand VoiceExtract winning language from Closed Won deal notes into a Brand Voice profile
5Lead Scoring ValidationValidate lead scoring models with synthetic focus group feedback
6Pipeline-Aware Content GenerationGenerate stage-specific nurture content tied to your real pipeline
7Competitive Displacement TrackerAI-generated battle cards from competitor mentions in opportunities
8Customer Success Interview PrepQBR prep documents from Account health, Cases, and Activities

CRM-to-Persona Pipeline

Pull contacts via SOQL, group by title/industry, create data-grounded personas

Deal-Stage Focus Group

Win/loss analysis via synthetic focus groups mapped to opportunity stages

Account Intelligence Brief

AI research briefs from Account, Contact, and Task data

Sales Note → Brand Voice

Extract winning language from Closed Won deal notes into a Brand Voice profile

Lead Scoring Validation

Validate lead scoring models with synthetic focus group feedback

Pipeline-Aware Content Generation

Generate stage-specific nurture content tied to your real pipeline

Competitive Displacement Tracker

AI-generated battle cards from competitor mentions in opportunities

Customer Success Interview Prep

QBR prep documents from Account health, Cases, and Activities

Production Tips

Token refresh — Access tokens expire. Use the OAuth 2.0 refresh token flow or JWT Bearer for server-to-server jobs. Never hardcode tokens.
Rate limit budgeting — Enterprise orgs get 100,000 API calls per rolling 24 hours. Each SOQL query counts as one call. Batch queries and cache responses. Monitor usage at GET /services/data/v66.0/limits.
SOQL pagination — Queries returning more than 2,000 rows include a nextRecordsUrl field. Follow it until done: true:
results = []
url = f"https://{SF}/services/data/v66.0/query?q={soql}"
while url:
    resp = requests.get(url, headers=SF_HEADERS).json()
    results.extend(resp["records"])
    url = resp.get("nextRecordsUrl")
    if url:
        url = f"https://{SF}{url}"
Error handling checklist:
ErrorCauseFix
401 UnauthorizedExpired or invalid SF tokenRefresh via OAuth; check Connected App scopes
403 ForbiddenUser lacks object/field permissionsVerify profile permissions; check field-level security
429 Too Many RequestsRate limit exceededBack off exponentially; check /limits endpoint
400 MALFORMED_QUERYSOQL syntax errorValidate query in Developer Console first
INVALID_FIELDCustom field API name wrongUse Describe endpoint to verify field names
Mavera 401Invalid or expired API keyRotate key at app.mavera.io/settings
Mavera 422Malformed request bodyCheck required fields in API docs
Concurrency — Salesforce allows 25 concurrent long-running requests. For batch jobs across hundreds of accounts, use a semaphore or queue (asyncio.Semaphore(25) in Python, p-limit(25) in Node). Custom field discovery — Not sure if Competitor__c or Health_Score__c exists in your org? Use the Describe endpoint:
GET /services/data/v66.0/sobjects/Opportunity/describe

What’s Next

HubSpot Integration

8 jobs — lifecycle personas, deal replay, meeting analysis

Personas API

Full reference for POST /api/v1/personas

Focus Groups API

Full reference for POST /api/v1/focus-groups

Mave Agent

Full reference for POST /api/v1/mave/chat