Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.
Start date for event time range (ISO 8601 format). Defaults to 14 days ago if not provided; the response's dataWindow echoes what was used.
endDate
string<date-time> | null
End date for event time range. Defaults to the time of the request, so events stamped in the future (a lost deal's placeholder close date, for example) are left out; pass an explicit later endDate to include them. The response's dataWindow echoes what was used.
filters
object
Filters to INCLUDE events: event type/category, company, contact, sentiment, call purpose, outcome, deal amount, library entity oIds (offerings, personas, segments, tags, use cases, competitors, alternatives, buying triggers, core features, objections, proof points, references), motion types, customer scope, custom extractor answers, and CRM deal context (opportunityIds, opportunityStatuses, dealMotions, dealTypes, dealStages, pipelinePhases, crmPipelines, minStalledDays). Deal filters AND on the same linked deal; values within one filter are OR'd. Events default to the activity feed's types, which leave out knowledge collection pages (docs, release notes): name their event types in eventTypes to read them.
Show child attributes
exclude
object
Filters to EXCLUDE events matching these criteria (same shape as the entity/outcome match filters)
Show child attributes
excludeTags
string[]
Exclude events matching any library entity that carries these reporting tag oIds. Use list_tag_groups to resolve tag oIds. Multiple tags are OR'd.
cohortB
object
The comparison group. OMIT it to compare cohort A against every other deal in the window — the usual question ('do deals where X came up win more than deals where it didn't?').
Show child attributes
dealFilters
object
Deal-level cuts applied to BOTH sides, like the shared filters are for events: account segment, account headcount band, stakeholder persona, buyer title. E.g. { companySizeBands: ['1000-4999', '5000+'] } compares the cohorts among enterprise deals only.
Show child attributes
outcome
object
The outcome the two cohorts are compared on. win_rate (default): won / closed — the truest and the slowest. advanced_within_days: the deal reached a later pipeline phase (not closed-lost) within days of its first matching conversation. faster_than_stage_median: the deal left the CRM stage it was in at that conversation, for a stage other than closed-lost, in less time than this workspace's median for that stage. next_conversation_positive: the deal's next conversation after it had POSITIVE overall sentiment. Use a leading outcome when win_rate returns insufficient_evidence; say which outcome a figure is about whenever you quote it.
Option 1
Option 2
Option 3
Option 4
Show child attributes
linkScope
enum<string>
Which conversations count as belonging to a deal. OMIT it to use the workspace's own default (set beside its CRM mappings), or the product default, outcome_attribution, when the workspace never chose; the response says which applied in linkScopeSource. Which event-to-deal links establish that a conversation belongs to a deal. outcome_attribution (default): the product's own rule, the one behind the win rates in Insights — attribution links, links the CRM or a person made, links by a participant's contact email, and company-domain links only on a deal with at least two of them. Figures at this scope are comparable with Insights; at the others they are not. Where an event reaches several deals at one account, each link is graded on how well the event fits that deal (its contacts, timing and motion), and only the deal(s) it belongs to count; a graded-out link is read only at account_associated. crm_linked: only links the CRM or a person made — 'CRM-linked deals with a matching conversation'. The firmest association and a much smaller, differently selected population; not an unbiased one. single_candidate: crm_linked plus an inferred link when the event reaches exactly one deal and belongs to it. account_associated: every link, graded or not — the before/after view of the grading. The response reports the comparison under all four (acrossLinkScopes), so you can see whether the direction holds.
Available options:
crm_linked,
single_candidate,
outcome_attribution,
account_associated
stratifyBy
object
Also make the comparison WITHIN each value of this dimension and pool the result. Use { by: 'segment' } (or a tag group, or deal_stage_at_event) whenever the cohorts could simply sit in different kinds of deal — it is what tells a real effect from a mix effect.
Show child attributes
materialGapPoints
number
default:10
The gap, in PERCENTAGE POINTS, below which two rates count as alike — what the business would not act on. Only used to decide no_material_difference. Choose it BEFORE looking at the result. The default is a software default, not a threshold anyone has endorsed; at a low base rate (say 15%) a smaller margin such as 5 is more sensible. It never suppresses the observed difference.
Required range: 1 <= x <= 50
comparisonsDeclared
integer
default:1
How many comparisons you are making in this analysis, INCLUDING this one. If you are testing 12 use cases to see which wins more, pass 12 on each call: some will look significant by chance, and the verdict corrects for it. Leave at 1 only for a single, pre-planned question.
Required range: 1 <= x <= 1000
Response
Compare Cohorts
_metadata
object
required
Show child attributes
definition
object
required
How every number here is defined: what is counted, over which clock, and what is left out. State the relevant parts when quoting a figure.
Show child attributes
linkScope
enum<string>
required
Which event-to-deal links establish that a conversation belongs to a deal. outcome_attribution (default): the product's own rule, the one behind the win rates in Insights — attribution links, links the CRM or a person made, links by a participant's contact email, and company-domain links only on a deal with at least two of them. Figures at this scope are comparable with Insights; at the others they are not. Where an event reaches several deals at one account, each link is graded on how well the event fits that deal (its contacts, timing and motion), and only the deal(s) it belongs to count; a graded-out link is read only at account_associated. crm_linked: only links the CRM or a person made — 'CRM-linked deals with a matching conversation'. The firmest association and a much smaller, differently selected population; not an unbiased one. single_candidate: crm_linked plus an inferred link when the event reaches exactly one deal and belongs to it. account_associated: every link, graded or not — the before/after view of the grading. The response reports the comparison under all four (acrossLinkScopes), so you can see whether the direction holds.
Available options:
crm_linked,
single_candidate,
outcome_attribution,
account_associated
observed
object
required
The descriptive result. ALWAYS reportable, in every verdict state: say which side is higher, by how much and on how many deals. It needs no significance test. What the verdict adds is how far you may go beyond these deals.
Show child attributes
exclusions
object
required
Deals that matched but were not compared, by reason. Each deal is counted under one reason.
Show child attributes
membershipBasis
object
required
How the compared deals were shown to have a conversation before their outcome, as counts of deals. When most rest on the sync-lag assumption, read timingSensitivity.
Show child attributes
timingSensitivity
object
required
The same comparison keeping only deals whose order is KNOWN: still open, or closed at a time the CRM recorded. It drops every deal admitted under the sync-lag assumption or a date-only close, so it is smaller. If the direction changes here, the main result rests on an assumption about timing — say so.
Show child attributes
acrossLinkScopes
object
required
The same comparison under each link scope, firmest first. A firmer scope is a smaller and differently selected population, not simply a more correct one: deals a rep attaches activity to in the CRM are not a random sample, and the direction of that difference is not stable.
Show child attributes
cohortA
object
required
Show child attributes
cohortB
object
required
Show child attributes
overlappingDeals
integer
required
Deals that matched BOTH cohorts. They are left out of both arms so the two samples are independent; always 0 when cohort B is 'everything else'.
difference
object
required
The gap between the two sides on the compared outcome, with a 95% interval.
Show child attributes
verdict
object
required
Show child attributes
sampleNeeded
object
required
Deals with an observable outcome (closed deals, for win_rate) EACH cohort would need to confirm a gap of the size observed (95% confidence, 80% power), next to what the smaller cohort has. When the evidence is insufficient this says how far away an answer is.
Show child attributes
stratified
object | null
required
The same comparison made within each value of stratifyBy, then pooled. Null unless stratifyBy was given.
Show child attributes
caveats
string[]
required
Things about this data that limit what the numbers support. Read them before quoting.
summary
string
required
The readout in plain words: the observed result, the verdict, and, when a side has no readable outcome, why and which linkScope would read it. Quote counts from the structured fields.
dataWindow
object
required
The time span these numbers cover. Compare numbers from two tools only when their dataWindow kind and dates match.
Show child attributes
lossReasons
object
required
Each cohort's lost deals by the CRM's own loss reasons (a = cohortA, b = cohortB or every other deal). Ground any claim about why deals were lost in these verbatim reasons.
Show child attributes
attribution
object
required
How each compared side's deals were tied to their conversations: deal (a CRM or manual link, or the only deal a conversation reaches) or account (contact-email or domain matching, which also reaches sibling deals), and how many share a conversation with a sibling deal that closed the other way. list_cohort_deals carries the same per deal.
Show child attributes
linkScopeSource
enum<string>
required
Where linkScope came from: request (the caller named it), workspace_default (the workspace's deal matching rule, set beside its CRM mappings) or product_default (outcome_attribution, when the workspace never chose). The Insights win rates use the workspace's rule, so only a comparison made under a request scope is expected to differ from them.
Available options:
request,
workspace_default,
product_default
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Octave API","colors":{"primary":"#333999","light":"#4B53C3","dark":"#3D3299"},"logo":{"light":"https://mintcdn.com/octave/SNMu0rTVOCvjTqcW/logo/logo.svg?fit=max\u0026auto=format\u0026n=SNMu0rTVOCvjTqcW\u0026q=85\u0026s=4f2d9698f4a42a583deee9e8721a9211","dark":"https://mintcdn.com/octave/SNMu0rTVOCvjTqcW/logo/logo.svg?fit=max\u0026auto=format\u0026n=SNMu0rTVOCvjTqcW\u0026q=85\u0026s=4f2d9698f4a42a583deee9e8721a9211"},"favicon":"https://mintcdn.com/octave/SNMu0rTVOCvjTqcW/favicon.svg?fit=max\u0026auto=format\u0026n=SNMu0rTVOCvjTqcW\u0026q=85\u0026s=f2d2b56c810a0fd21cf18ef023ddfab4","api":{"mdx":{"auth":{"method":"key","name":"api_key"}}},"navbar":{"links":[{"href":"mailto:support@octavehq.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.octavehq.com"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/octavehq"}},"seo":{"metatags":{"og:site_name":"Octave API Documentation","og:type":"website","og:locale":"en_US"},"indexing":"navigable"},"integrations":{"ga4":{"measurementId":"G-QW3B8BG664"},"posthog":{"apiKey":"phc_J3I5lz22TVmvufdByV6yBKkp0FTbjAAR9LiYPX7ss7k","apiHost":"https://us.i.posthog.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"octave","hasAudioNarration":false,"actualSubdomain":"octave","customDomains":["docs.octavehq.com"],"gitSource":{"type":"github","owner":"octavehq","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af30c5e84c63df7259845b9","clientVersion":"0.0.4138","searchFilterCounts":[{"language":"default","tag":"V2 API Reference","count":252},{"language":"default","tag":"Getting Started","count":45},{"language":"default","tag":"Concepts","count":29},{"language":"default","tag":"Asset","count":25},{"language":"default","tag":"Agents","count":18},{"language":"default","tag":"MCP","count":12},{"language":"default","tag":"Events","count":11},{"language":"default","tag":"Custom Extractors","count":10},{"language":"default","tag":"Sources","count":8},{"language":"default","tag":"Data warehouse","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v2-api-reference/events/compare-cohorts","slug":"/v2-api-reference/events/compare-cohorts","pageMetadata":{"openapi":"post /api/v2/event/compare","title":"Compare Cohorts","description":"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.","href":"/v2-api-reference/events/compare-cohorts"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /api/v2/event/compare","title":"Compare Cohorts","description":"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.","href":"/v2-api-reference/events/compare-cohorts"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/octave/ad2757b864166314/schema.js"],"openApiReferenceData":{"operation":{"deprecated":false,"operationId":"compareCohorts","summary":"Compare Cohorts","description":"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.","tags":["Events"],"x-visibility":"public","x-preview":true,"requestBody":"ff96927d-ea50-4e36-a94c-dd183bf50f02","responses":{"200":"5f3ce7b5-d634-4739-88c3-38b8304d0ef1","400":"e8fb41f0-c58b-467b-9e88-84d245f35ef0"},"method":"post","type":"path","servers":["f63d943e-e794-4d9b-9a7b-416941042663"],"security":["3d8accbd-55f3-4c87-a1ae-93a55ea5cbe6"],"path":"/api/v2/event/compare","baseUrlOptions":["https://app.octavehq.com"],"title":"Compare Cohorts","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"description":"Event window, shared filters and the two cohorts","content":{"application/json":{"schema":{"type":"object","properties":{"cohortA":{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"Short name used in the verdict, e.g. 'Intake mentioned'.","isRequired":true,"uniqueKey":"cohortA.label","typeLabel":"string"},"filters":{"type":"object","properties":{"entityMatchAll":{"type":"boolean","description":"Require every selected library entity, including entities of the same category","uniqueKey":"cohortA.filters.entityMatchAll","typeLabel":"boolean"},"eventOIds":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.eventOIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to these event oIds only","uniqueKey":"cohortA.filters.eventOIds","typeLabel":"string[]"},"opportunityIds":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.opportunityIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to these opportunities. Accepts Octave opportunity oIds (crmo_*) or the CRM's own deal ids (Salesforce Id, HubSpot object id, Attio record UUID) interchangeably","uniqueKey":"cohortA.filters.opportunityIds","typeLabel":"string[]"},"eventCategories":{"type":"array","items":{"type":"string","enum":["EMAIL","CALL","CRM","RESOURCE","REVISION","SOCIAL","ADS","PRODUCT","UNKNOWN"],"uniqueKey":"cohortA.filters.eventCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by event categories (CALL, EMAIL, CRM)","uniqueKey":"cohortA.filters.eventCategories","typeLabel":"enum\u003cstring>[]"},"eventTypes":{"type":"array","items":{"type":"string","enum":["EMAIL_SENT","EMAIL_REPLY_RECEIVED","CALL_TRANSCRIPT","DEAL_WON","DEAL_LOST","OPPORTUNITY_CREATED","MEETING_BOOKED","RESOURCE_INDEXED","RESOURCE_REINDEXED","PRODUCT_DOC_INDEXED","PRODUCT_DOC_REINDEXED","DEVELOPER_DOC_INDEXED","DEVELOPER_DOC_REINDEXED","RELEASE_NOTE_INDEXED","RELEASE_NOTE_REINDEXED","PROJECT_UPDATE","TASK_COMPLETED","ENTITY_CREATED","ENTITY_UPDATED","SOCIAL_MESSAGE_SENT","SOCIAL_MESSAGE_RECEIVED","SOCIAL_CONNECTION_SENT","SOCIAL_CONNECTION_ACCEPTED","AD_SET_PUBLISHED","AD_PERFORMANCE_SNAPSHOT","BULK_IMPORT_SUMMARY","PROCESSING_NOT_APPLICABLE","PROVIDER_EVENT_TYPE_UNKNOWN","UNKNOWN"],"uniqueKey":"cohortA.filters.eventTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by specific event types (CALL_TRANSCRIPT, EMAIL_SENT, DEAL_WON, etc.)","uniqueKey":"cohortA.filters.eventTypes","typeLabel":"enum\u003cstring>[]"},"sentiments":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE","UNKNOWN"],"uniqueKey":"cohortA.filters.sentiments.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by sentiment (POSITIVE, NEGATIVE, NEUTRAL, MIXED)","uniqueKey":"cohortA.filters.sentiments","typeLabel":"enum\u003cstring>[]"},"contactEmails":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.contactEmails.items.[INDEX]","typeLabel":"string"},"description":"Filter by participant email addresses","uniqueKey":"cohortA.filters.contactEmails","typeLabel":"string[]"},"companyDomains":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.companyDomains.items.[INDEX]","typeLabel":"string"},"description":"Filter by company domains","uniqueKey":"cohortA.filters.companyDomains","typeLabel":"string[]"},"replyOutcomes":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE"],"uniqueKey":"cohortA.filters.replyOutcomes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by how the reply to an outbound event was classified (POSITIVE, NEUTRAL, NEGATIVE). Independent of any deal.","uniqueKey":"cohortA.filters.replyOutcomes","typeLabel":"enum\u003cstring>[]"},"opportunityStatuses":{"type":"array","items":{"type":"string","enum":["OPEN","WON","LOST"],"uniqueKey":"cohortA.filters.opportunityStatuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals with this status (OPEN, WON, LOST)","uniqueKey":"cohortA.filters.opportunityStatuses","typeLabel":"enum\u003cstring>[]"},"lossReasonCategories":{"type":"array","items":{"type":"string","enum":["nurture_recycle","lost_to_competitor","product_fit","self_solve","not_qualified","internal_change","no_decision","ghosted","product_quality","security_compliance","timing","budget","merged_duplicate","churn","other"],"uniqueKey":"cohortA.filters.lossReasonCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"maxItems":50,"description":"Normalized CRM loss reason categories. Categories may be inferred from CRM text; they are not verified causal explanations.","uniqueKey":"cohortA.filters.lossReasonCategories","typeLabel":"enum\u003cstring>[]"},"minDealValue":{"type":"number","description":"Minimum linked-deal value in workspace home currency, inclusive; missing/unconvertible values do not match. Reads the same linked opportunity as owner and stage.","uniqueKey":"cohortA.filters.minDealValue","typeLabel":"number"},"maxDealValue":{"type":"number","description":"Maximum linked-deal value in workspace home currency, inclusive","uniqueKey":"cohortA.filters.maxDealValue","typeLabel":"number"},"minDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Minimum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"cohortA.filters.minDealAgeDays","typeLabel":"number"},"maxDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"cohortA.filters.maxDealAgeDays","typeLabel":"number"},"maxStalledDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed days in the OPEN deal's current recorded stage. Missing stage history does not match.","uniqueKey":"cohortA.filters.maxStalledDays","typeLabel":"number"},"dealCreatedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or after this UTC date","uniqueKey":"cohortA.filters.dealCreatedAfter","typeLabel":"string"},"dealCreatedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or before this UTC date","uniqueKey":"cohortA.filters.dealCreatedBefore","typeLabel":"string"},"dealClosedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or after this UTC date; excludes open deals' forecast close dates","uniqueKey":"cohortA.filters.dealClosedAfter","typeLabel":"string"},"dealClosedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or before this UTC date","uniqueKey":"cohortA.filters.dealClosedBefore","typeLabel":"string"},"stageTransition":{"type":"object","properties":{"fromStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"cohortA.filters.stageTransition.fromStage","typeLabel":"string"},"toStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"cohortA.filters.stageTransition.toStage","typeLabel":"string"},"minDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"cohortA.filters.stageTransition.minDays","typeLabel":"number"},"maxDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"cohortA.filters.stageTransition.maxDays","typeLabel":"number"}},"required":["fromStage","toStage"],"additionalProperties":false,"description":"A recorded completed direct stage transition, measuring entry into fromStage to entry into the immediately following different stage toStage. Any completed visit can match. Ongoing stages do not match. Historical analysis only; unavailable to live extraction.","uniqueKey":"cohortA.filters.stageTransition","typeLabel":"object"},"dealOwnerIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512,"uniqueKey":"cohortA.filters.dealOwnerIds.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"Current CRM owners of linked deals, using provider-scoped owner keys returned by getDealOwners. Values OR; match-side deal conditions must hold on the same deal. This is current ownership, not the owner at event time or the conversation participant.","uniqueKey":"cohortA.filters.dealOwnerIds","typeLabel":"string[]"},"dealMotions":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","RENEW_AND_RETAIN","CONVERT_FREE_TO_PAID","DISPLACE_INCUMBENT","SERVICES","PARTNER","NON_COMMERCIAL"],"uniqueKey":"cohortA.filters.dealMotions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose CRM deal type maps to these motions (NET_NEW, UPSELL, CROSS_SELL, RENEW_AND_RETAIN, CONVERT_FREE_TO_PAID, DISPLACE_INCUMBENT, SERVICES, PARTNER, NON_COMMERCIAL)","uniqueKey":"cohortA.filters.dealMotions","typeLabel":"enum\u003cstring>[]"},"dealTypes":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.dealTypes.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals with these raw CRM deal-type labels (Salesforce Type, HubSpot dealtype), case-insensitive","uniqueKey":"cohortA.filters.dealTypes","typeLabel":"string[]"},"dealStages":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.dealStages.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals currently in these CRM stages, by stage label or stage id, case-insensitive","uniqueKey":"cohortA.filters.dealStages","typeLabel":"string[]"},"dealStagesAtEvent":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.dealStagesAtEvent.items.[INDEX]","typeLabel":"string"},"description":"Filter to events whose linked deal was in one of these CRM stages WHEN THE EVENT HAPPENED (by stage label, case-insensitive), from the deal's stage history — unlike dealStages, which reads the deal's stage today. Use it for 'what came up on calls during Discovery'. An event whose deal has no recorded stage at that time does not match.","uniqueKey":"cohortA.filters.dealStagesAtEvent","typeLabel":"string[]"},"pipelinePhases":{"type":"array","items":{"type":"string","enum":["prospecting","discovery","evaluation","negotiation","commitment","closed_won","closed_lost"],"uniqueKey":"cohortA.filters.pipelinePhases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose stage maps to these pipeline phases (prospecting, discovery, evaluation, negotiation, commitment, closed_won, closed_lost)","uniqueKey":"cohortA.filters.pipelinePhases","typeLabel":"enum\u003cstring>[]"},"crmPipelines":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.crmPipelines.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals in these CRM pipelines, by pipeline id or name (case-insensitive name)","uniqueKey":"cohortA.filters.crmPipelines","typeLabel":"string[]"},"minStalledDays":{"type":"number","description":"Filter to events linked to an OPEN deal that has sat in its current stage at least this many days","uniqueKey":"cohortA.filters.minStalledDays","typeLabel":"number"},"offerings":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.offerings.items.[INDEX]","typeLabel":"string"},"description":"Filter by offering oIds","uniqueKey":"cohortA.filters.offerings","typeLabel":"string[]"},"personas":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.personas.items.[INDEX]","typeLabel":"string"},"description":"Filter by persona oIds (events must match these personas)","uniqueKey":"cohortA.filters.personas","typeLabel":"string[]"},"segments":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.segments.items.[INDEX]","typeLabel":"string"},"description":"Filter by segment oIds","uniqueKey":"cohortA.filters.segments","typeLabel":"string[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.tags.items.[INDEX]","typeLabel":"string"},"description":"Filter by reporting tag oIds (from any tag group, on any library entity type). Resolved to the entities carrying those tags; multiple tags are OR'd.","uniqueKey":"cohortA.filters.tags","typeLabel":"string[]"},"customExtractors":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.customExtractors.items.[INDEX]","typeLabel":"string"},"description":"Filter by custom extractor answers: events on which the custom extractor found something. Each value is a custom extractor oId (cex_…) for any answer, or \u003cextractorOId>:\u003cclassValue> for one answer of a yes/no or choice custom extractor (e.g. cex_abc:asked_for_it; yes/no custom extractors use true or false). Multiple values are OR'd. list_custom_extractors gives custom extractor oIds and their class values.","uniqueKey":"cohortA.filters.customExtractors","typeLabel":"string[]"},"useCases":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.useCases.items.[INDEX]","typeLabel":"string"},"description":"Filter by use case oIds","uniqueKey":"cohortA.filters.useCases","typeLabel":"string[]"},"references":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.references.items.[INDEX]","typeLabel":"string"},"description":"Filter by reference customer oIds","uniqueKey":"cohortA.filters.references","typeLabel":"string[]"},"competitors":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.competitors.items.[INDEX]","typeLabel":"string"},"description":"Filter by competitor oIds","uniqueKey":"cohortA.filters.competitors","typeLabel":"string[]"},"alternatives":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.alternatives.items.[INDEX]","typeLabel":"string"},"description":"Filter by alternative oIds","uniqueKey":"cohortA.filters.alternatives","typeLabel":"string[]"},"buyingTriggers":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.buyingTriggers.items.[INDEX]","typeLabel":"string"},"description":"Filter by buying trigger oIds","uniqueKey":"cohortA.filters.buyingTriggers","typeLabel":"string[]"},"coreFeatures":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.coreFeatures.items.[INDEX]","typeLabel":"string"},"description":"Filter by core feature oIds","uniqueKey":"cohortA.filters.coreFeatures","typeLabel":"string[]"},"objections":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.objections.items.[INDEX]","typeLabel":"string"},"description":"Filter by objection oIds","uniqueKey":"cohortA.filters.objections","typeLabel":"string[]"},"proofPoints":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.filters.proofPoints.items.[INDEX]","typeLabel":"string"},"description":"Filter by proof point oIds","uniqueKey":"cohortA.filters.proofPoints","typeLabel":"string[]"},"motionTypes":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","CONVERT_FREE_TO_PAID","RENEW_AND_RETAIN","DISPLACE_INCUMBENT"],"uniqueKey":"cohortA.filters.motionTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by motion type (NET_NEW, UPSELL)","uniqueKey":"cohortA.filters.motionTypes","typeLabel":"enum\u003cstring>[]"},"customerScope":{"type":"string","enum":["ALL","NEW_CUSTOMERS","EXISTING_CUSTOMERS"],"description":"Customer-scope view (NEW_CUSTOMERS / EXISTING_CUSTOMERS); ALL or absent applies no filter","uniqueKey":"cohortA.filters.customerScope","typeLabel":"enum\u003cstring>"},"callPurposes":{"type":"array","items":{"type":"string","enum":["DISCOVERY","DEMO","TECHNICAL_EVALUATION","WORKING_SESSION","NEGOTIATION_PRICING","ONBOARDING","CHECK_IN_SUCCESS","QBR_RENEWAL","EXPANSION_UPSELL","ESCALATION_CHURN_RISK","SUPPORT","CUSTOMER_INTERVIEW","INTERNAL_SYNC","OTHER"],"uniqueKey":"cohortA.filters.callPurposes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter calls by classified purpose (DISCOVERY, DEMO, TECHNICAL_EVALUATION, WORKING_SESSION, NEGOTIATION_PRICING, ONBOARDING, CHECK_IN_SUCCESS, QBR_RENEWAL, EXPANSION_UPSELL, ESCALATION_CHURN_RISK, SUPPORT, CUSTOMER_INTERVIEW, INTERNAL_SYNC, OTHER)","uniqueKey":"cohortA.filters.callPurposes","typeLabel":"enum\u003cstring>[]"},"unmatchedOnly":{"type":"boolean","description":"When true, only return events that have findings with no library entity matches","uniqueKey":"cohortA.filters.unmatchedOnly","typeLabel":"boolean"}},"description":"What puts a deal in this cohort: event filters, ANDed with the shared `filters`. A deal belongs if ANY of its events in the window match — e.g. { useCases: ['uc_…'] } is 'deals where this use case came up'.","uniqueKey":"cohortA.filters","typeLabel":"object"},"dealFilters":{"type":"object","properties":{"accountSegments":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.dealFilters.accountSegments.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Segment oIds (sg_…): deals whose account the workspace classified into one of these segments — the segment shown on a deal row's account.segment. Not the segments a conversation mentioned (that is the event filter `segments`). Deals whose account has no company record never match.","uniqueKey":"cohortA.dealFilters.accountSegments","typeLabel":"string[]"},"companySizeBands":{"type":"array","items":{"type":"string","enum":["1-49","50-199","200-999","1000-4999","5000+"],"uniqueKey":"cohortA.dealFilters.companySizeBands.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Headcount bands of the deal's account (1-49, 50-199, 200-999, 1000-4999, 5000+), from the workspace's company record — the employeeCount on a deal row. Deals with no known headcount never match.","uniqueKey":"cohortA.dealFilters.companySizeBands","typeLabel":"enum\u003cstring>[]"},"stakeholderPersonas":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.dealFilters.stakeholderPersonas.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Persona oIds (pe_…): deals with at least one buyer-side stakeholder whose contact is classified as one of these personas. Stakeholders are the external participants on the deal's own conversations (the deal-membership rule get_deal's stakeholders use) plus the deal's CRM contacts (primary contact and contact emails); people seen only on CRM-logged emails, which get_deal also lists, are not read.","uniqueKey":"cohortA.dealFilters.stakeholderPersonas","typeLabel":"string[]"},"buyerTitles":{"type":"array","items":{"type":"string","minLength":2,"uniqueKey":"cohortA.dealFilters.buyerTitles.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"Job-title fragments, case-insensitive, e.g. ['VP Sales', 'Chief Revenue']: deals with at least one buyer-side stakeholder (as stakeholderPersonas) whose title contains one of them. With stakeholderPersonas too, each can be met by a different person.","uniqueKey":"cohortA.dealFilters.buyerTitles","typeLabel":"string[]"}},"description":"Deal-level cuts, ANDed with `filters`: the deal's account segment and headcount band, and a buyer-side stakeholder's persona or job title (who is on the deal, not who a conversation mentioned). E.g. { buyerTitles: ['VP Sales'] } is 'deals with a VP Sales on them'. Deal type and motion are event filters: filters.dealTypes / filters.dealMotions.","uniqueKey":"cohortA.dealFilters","typeLabel":"object"},"motions":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.motions.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Authored Motion oIds (mot_…, from list_motions): the deals behind the conversations a Motion applies to. No deal or conversation records a Motion, so it is inferred: a conversation that mentions the Motion's offering, on a deal of the Motion's type. ANDed with `filters`; with motionPlaybooks, a conversation either applies to is in. Naming a Motion or playbook on either side keeps only deals of the Motion's type on BOTH sides, so cohort B omitted is every other deal of that type; every Motion and playbook in one comparison must share a type.","uniqueKey":"cohortA.motions","typeLabel":"string[]"},"motionPlaybooks":{"type":"array","items":{"type":"string","uniqueKey":"cohortA.motionPlaybooks.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Motion Playbook oIds (mpb_…, from list_motion_playbooks): as `motions`, through the playbook that applies to a conversation: the one on a Motion ICP whose persona and segment it matches, or a Motion's only playbook. A conversation whose Motion has several playbooks and matches none of its ICPs has no playbook.","uniqueKey":"cohortA.motionPlaybooks","typeLabel":"string[]"}},"required":["label"],"isRequired":true,"uniqueKey":"cohortA","typeLabel":"object"},"startDate":{"oneOf":[{"type":"string","format":"date-time","description":"Start date for event time range (ISO 8601 format). Defaults to 14 days ago if not provided; the response's dataWindow echoes what was used.","uniqueKey":"startDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"Start date for event time range (ISO 8601 format). Defaults to 14 days ago if not provided; the response's dataWindow echoes what was used.","uniqueKey":"startDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"startDate","typeLabel":"string\u003cdate-time> | null"},"endDate":{"oneOf":[{"type":"string","format":"date-time","description":"End date for event time range. Defaults to the time of the request, so events stamped in the future (a lost deal's placeholder close date, for example) are left out; pass an explicit later endDate to include them. The response's dataWindow echoes what was used.","uniqueKey":"endDate.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"End date for event time range. Defaults to the time of the request, so events stamped in the future (a lost deal's placeholder close date, for example) are left out; pass an explicit later endDate to include them. The response's dataWindow echoes what was used.","uniqueKey":"endDate.oneOf.1","typeLabel":"null"}],"uniqueKey":"endDate","typeLabel":"string\u003cdate-time> | null"},"filters":{"type":"object","properties":{"entityMatchAll":{"type":"boolean","description":"Require every selected library entity, including entities of the same category","uniqueKey":"filters.entityMatchAll","typeLabel":"boolean"},"eventOIds":{"type":"array","items":{"type":"string","uniqueKey":"filters.eventOIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to these event oIds only","uniqueKey":"filters.eventOIds","typeLabel":"string[]"},"opportunityIds":{"type":"array","items":{"type":"string","uniqueKey":"filters.opportunityIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to these opportunities. Accepts Octave opportunity oIds (crmo_*) or the CRM's own deal ids (Salesforce Id, HubSpot object id, Attio record UUID) interchangeably","uniqueKey":"filters.opportunityIds","typeLabel":"string[]"},"eventCategories":{"type":"array","items":{"type":"string","enum":["EMAIL","CALL","CRM","RESOURCE","REVISION","SOCIAL","ADS","PRODUCT","UNKNOWN"],"uniqueKey":"filters.eventCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by event categories (CALL, EMAIL, CRM)","uniqueKey":"filters.eventCategories","typeLabel":"enum\u003cstring>[]"},"eventTypes":{"type":"array","items":{"type":"string","enum":["EMAIL_SENT","EMAIL_REPLY_RECEIVED","CALL_TRANSCRIPT","DEAL_WON","DEAL_LOST","OPPORTUNITY_CREATED","MEETING_BOOKED","RESOURCE_INDEXED","RESOURCE_REINDEXED","PRODUCT_DOC_INDEXED","PRODUCT_DOC_REINDEXED","DEVELOPER_DOC_INDEXED","DEVELOPER_DOC_REINDEXED","RELEASE_NOTE_INDEXED","RELEASE_NOTE_REINDEXED","PROJECT_UPDATE","TASK_COMPLETED","ENTITY_CREATED","ENTITY_UPDATED","SOCIAL_MESSAGE_SENT","SOCIAL_MESSAGE_RECEIVED","SOCIAL_CONNECTION_SENT","SOCIAL_CONNECTION_ACCEPTED","AD_SET_PUBLISHED","AD_PERFORMANCE_SNAPSHOT","BULK_IMPORT_SUMMARY","PROCESSING_NOT_APPLICABLE","PROVIDER_EVENT_TYPE_UNKNOWN","UNKNOWN"],"uniqueKey":"filters.eventTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by specific event types (CALL_TRANSCRIPT, EMAIL_SENT, DEAL_WON, etc.)","uniqueKey":"filters.eventTypes","typeLabel":"enum\u003cstring>[]"},"sentiments":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE","UNKNOWN"],"uniqueKey":"filters.sentiments.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by sentiment (POSITIVE, NEGATIVE, NEUTRAL, MIXED)","uniqueKey":"filters.sentiments","typeLabel":"enum\u003cstring>[]"},"contactEmails":{"type":"array","items":{"type":"string","uniqueKey":"filters.contactEmails.items.[INDEX]","typeLabel":"string"},"description":"Filter by participant email addresses","uniqueKey":"filters.contactEmails","typeLabel":"string[]"},"companyDomains":{"type":"array","items":{"type":"string","uniqueKey":"filters.companyDomains.items.[INDEX]","typeLabel":"string"},"description":"Filter by company domains","uniqueKey":"filters.companyDomains","typeLabel":"string[]"},"replyOutcomes":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE"],"uniqueKey":"filters.replyOutcomes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by how the reply to an outbound event was classified (POSITIVE, NEUTRAL, NEGATIVE). Independent of any deal.","uniqueKey":"filters.replyOutcomes","typeLabel":"enum\u003cstring>[]"},"opportunityStatuses":{"type":"array","items":{"type":"string","enum":["OPEN","WON","LOST"],"uniqueKey":"filters.opportunityStatuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals with this status (OPEN, WON, LOST)","uniqueKey":"filters.opportunityStatuses","typeLabel":"enum\u003cstring>[]"},"lossReasonCategories":{"type":"array","items":{"type":"string","enum":["nurture_recycle","lost_to_competitor","product_fit","self_solve","not_qualified","internal_change","no_decision","ghosted","product_quality","security_compliance","timing","budget","merged_duplicate","churn","other"],"uniqueKey":"filters.lossReasonCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"maxItems":50,"description":"Normalized CRM loss reason categories. Categories may be inferred from CRM text; they are not verified causal explanations.","uniqueKey":"filters.lossReasonCategories","typeLabel":"enum\u003cstring>[]"},"minDealValue":{"type":"number","description":"Minimum linked-deal value in workspace home currency, inclusive; missing/unconvertible values do not match. Reads the same linked opportunity as owner and stage.","uniqueKey":"filters.minDealValue","typeLabel":"number"},"maxDealValue":{"type":"number","description":"Maximum linked-deal value in workspace home currency, inclusive","uniqueKey":"filters.maxDealValue","typeLabel":"number"},"minDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Minimum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"filters.minDealAgeDays","typeLabel":"number"},"maxDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"filters.maxDealAgeDays","typeLabel":"number"},"maxStalledDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed days in the OPEN deal's current recorded stage. Missing stage history does not match.","uniqueKey":"filters.maxStalledDays","typeLabel":"number"},"dealCreatedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or after this UTC date","uniqueKey":"filters.dealCreatedAfter","typeLabel":"string"},"dealCreatedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or before this UTC date","uniqueKey":"filters.dealCreatedBefore","typeLabel":"string"},"dealClosedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or after this UTC date; excludes open deals' forecast close dates","uniqueKey":"filters.dealClosedAfter","typeLabel":"string"},"dealClosedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or before this UTC date","uniqueKey":"filters.dealClosedBefore","typeLabel":"string"},"stageTransition":{"type":"object","properties":{"fromStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"filters.stageTransition.fromStage","typeLabel":"string"},"toStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"filters.stageTransition.toStage","typeLabel":"string"},"minDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"filters.stageTransition.minDays","typeLabel":"number"},"maxDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"filters.stageTransition.maxDays","typeLabel":"number"}},"required":["fromStage","toStage"],"additionalProperties":false,"description":"A recorded completed direct stage transition, measuring entry into fromStage to entry into the immediately following different stage toStage. Any completed visit can match. Ongoing stages do not match. Historical analysis only; unavailable to live extraction.","uniqueKey":"filters.stageTransition","typeLabel":"object"},"dealOwnerIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512,"uniqueKey":"filters.dealOwnerIds.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"Current CRM owners of linked deals, using provider-scoped owner keys returned by getDealOwners. Values OR; match-side deal conditions must hold on the same deal. This is current ownership, not the owner at event time or the conversation participant.","uniqueKey":"filters.dealOwnerIds","typeLabel":"string[]"},"dealMotions":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","RENEW_AND_RETAIN","CONVERT_FREE_TO_PAID","DISPLACE_INCUMBENT","SERVICES","PARTNER","NON_COMMERCIAL"],"uniqueKey":"filters.dealMotions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose CRM deal type maps to these motions (NET_NEW, UPSELL, CROSS_SELL, RENEW_AND_RETAIN, CONVERT_FREE_TO_PAID, DISPLACE_INCUMBENT, SERVICES, PARTNER, NON_COMMERCIAL)","uniqueKey":"filters.dealMotions","typeLabel":"enum\u003cstring>[]"},"dealTypes":{"type":"array","items":{"type":"string","uniqueKey":"filters.dealTypes.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals with these raw CRM deal-type labels (Salesforce Type, HubSpot dealtype), case-insensitive","uniqueKey":"filters.dealTypes","typeLabel":"string[]"},"dealStages":{"type":"array","items":{"type":"string","uniqueKey":"filters.dealStages.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals currently in these CRM stages, by stage label or stage id, case-insensitive","uniqueKey":"filters.dealStages","typeLabel":"string[]"},"dealStagesAtEvent":{"type":"array","items":{"type":"string","uniqueKey":"filters.dealStagesAtEvent.items.[INDEX]","typeLabel":"string"},"description":"Filter to events whose linked deal was in one of these CRM stages WHEN THE EVENT HAPPENED (by stage label, case-insensitive), from the deal's stage history — unlike dealStages, which reads the deal's stage today. Use it for 'what came up on calls during Discovery'. An event whose deal has no recorded stage at that time does not match.","uniqueKey":"filters.dealStagesAtEvent","typeLabel":"string[]"},"pipelinePhases":{"type":"array","items":{"type":"string","enum":["prospecting","discovery","evaluation","negotiation","commitment","closed_won","closed_lost"],"uniqueKey":"filters.pipelinePhases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose stage maps to these pipeline phases (prospecting, discovery, evaluation, negotiation, commitment, closed_won, closed_lost)","uniqueKey":"filters.pipelinePhases","typeLabel":"enum\u003cstring>[]"},"crmPipelines":{"type":"array","items":{"type":"string","uniqueKey":"filters.crmPipelines.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals in these CRM pipelines, by pipeline id or name (case-insensitive name)","uniqueKey":"filters.crmPipelines","typeLabel":"string[]"},"minStalledDays":{"type":"number","description":"Filter to events linked to an OPEN deal that has sat in its current stage at least this many days","uniqueKey":"filters.minStalledDays","typeLabel":"number"},"offerings":{"type":"array","items":{"type":"string","uniqueKey":"filters.offerings.items.[INDEX]","typeLabel":"string"},"description":"Filter by offering oIds","uniqueKey":"filters.offerings","typeLabel":"string[]"},"personas":{"type":"array","items":{"type":"string","uniqueKey":"filters.personas.items.[INDEX]","typeLabel":"string"},"description":"Filter by persona oIds (events must match these personas)","uniqueKey":"filters.personas","typeLabel":"string[]"},"segments":{"type":"array","items":{"type":"string","uniqueKey":"filters.segments.items.[INDEX]","typeLabel":"string"},"description":"Filter by segment oIds","uniqueKey":"filters.segments","typeLabel":"string[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"filters.tags.items.[INDEX]","typeLabel":"string"},"description":"Filter by reporting tag oIds (from any tag group, on any library entity type). Resolved to the entities carrying those tags; multiple tags are OR'd.","uniqueKey":"filters.tags","typeLabel":"string[]"},"customExtractors":{"type":"array","items":{"type":"string","uniqueKey":"filters.customExtractors.items.[INDEX]","typeLabel":"string"},"description":"Filter by custom extractor answers: events on which the custom extractor found something. Each value is a custom extractor oId (cex_…) for any answer, or \u003cextractorOId>:\u003cclassValue> for one answer of a yes/no or choice custom extractor (e.g. cex_abc:asked_for_it; yes/no custom extractors use true or false). Multiple values are OR'd. list_custom_extractors gives custom extractor oIds and their class values.","uniqueKey":"filters.customExtractors","typeLabel":"string[]"},"useCases":{"type":"array","items":{"type":"string","uniqueKey":"filters.useCases.items.[INDEX]","typeLabel":"string"},"description":"Filter by use case oIds","uniqueKey":"filters.useCases","typeLabel":"string[]"},"references":{"type":"array","items":{"type":"string","uniqueKey":"filters.references.items.[INDEX]","typeLabel":"string"},"description":"Filter by reference customer oIds","uniqueKey":"filters.references","typeLabel":"string[]"},"competitors":{"type":"array","items":{"type":"string","uniqueKey":"filters.competitors.items.[INDEX]","typeLabel":"string"},"description":"Filter by competitor oIds","uniqueKey":"filters.competitors","typeLabel":"string[]"},"alternatives":{"type":"array","items":{"type":"string","uniqueKey":"filters.alternatives.items.[INDEX]","typeLabel":"string"},"description":"Filter by alternative oIds","uniqueKey":"filters.alternatives","typeLabel":"string[]"},"buyingTriggers":{"type":"array","items":{"type":"string","uniqueKey":"filters.buyingTriggers.items.[INDEX]","typeLabel":"string"},"description":"Filter by buying trigger oIds","uniqueKey":"filters.buyingTriggers","typeLabel":"string[]"},"coreFeatures":{"type":"array","items":{"type":"string","uniqueKey":"filters.coreFeatures.items.[INDEX]","typeLabel":"string"},"description":"Filter by core feature oIds","uniqueKey":"filters.coreFeatures","typeLabel":"string[]"},"objections":{"type":"array","items":{"type":"string","uniqueKey":"filters.objections.items.[INDEX]","typeLabel":"string"},"description":"Filter by objection oIds","uniqueKey":"filters.objections","typeLabel":"string[]"},"proofPoints":{"type":"array","items":{"type":"string","uniqueKey":"filters.proofPoints.items.[INDEX]","typeLabel":"string"},"description":"Filter by proof point oIds","uniqueKey":"filters.proofPoints","typeLabel":"string[]"},"motionTypes":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","CONVERT_FREE_TO_PAID","RENEW_AND_RETAIN","DISPLACE_INCUMBENT"],"uniqueKey":"filters.motionTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by motion type (NET_NEW, UPSELL)","uniqueKey":"filters.motionTypes","typeLabel":"enum\u003cstring>[]"},"customerScope":{"type":"string","enum":["ALL","NEW_CUSTOMERS","EXISTING_CUSTOMERS"],"description":"Customer-scope view (NEW_CUSTOMERS / EXISTING_CUSTOMERS); ALL or absent applies no filter","uniqueKey":"filters.customerScope","typeLabel":"enum\u003cstring>"},"callPurposes":{"type":"array","items":{"type":"string","enum":["DISCOVERY","DEMO","TECHNICAL_EVALUATION","WORKING_SESSION","NEGOTIATION_PRICING","ONBOARDING","CHECK_IN_SUCCESS","QBR_RENEWAL","EXPANSION_UPSELL","ESCALATION_CHURN_RISK","SUPPORT","CUSTOMER_INTERVIEW","INTERNAL_SYNC","OTHER"],"uniqueKey":"filters.callPurposes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter calls by classified purpose (DISCOVERY, DEMO, TECHNICAL_EVALUATION, WORKING_SESSION, NEGOTIATION_PRICING, ONBOARDING, CHECK_IN_SUCCESS, QBR_RENEWAL, EXPANSION_UPSELL, ESCALATION_CHURN_RISK, SUPPORT, CUSTOMER_INTERVIEW, INTERNAL_SYNC, OTHER)","uniqueKey":"filters.callPurposes","typeLabel":"enum\u003cstring>[]"},"unmatchedOnly":{"type":"boolean","description":"When true, only return events that have findings with no library entity matches","uniqueKey":"filters.unmatchedOnly","typeLabel":"boolean"}},"description":"Filters to INCLUDE events: event type/category, company, contact, sentiment, call purpose, outcome, deal amount, library entity oIds (offerings, personas, segments, tags, use cases, competitors, alternatives, buying triggers, core features, objections, proof points, references), motion types, customer scope, custom extractor answers, and CRM deal context (opportunityIds, opportunityStatuses, dealMotions, dealTypes, dealStages, pipelinePhases, crmPipelines, minStalledDays). Deal filters AND on the same linked deal; values within one filter are OR'd. Events default to the activity feed's types, which leave out knowledge collection pages (docs, release notes): name their event types in eventTypes to read them.","uniqueKey":"filters","typeLabel":"object"},"exclude":{"type":"object","properties":{"eventCategories":{"type":"array","items":{"type":"string","enum":["EMAIL","CALL","CRM","RESOURCE","REVISION","SOCIAL","ADS","PRODUCT","UNKNOWN"],"uniqueKey":"exclude.eventCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by event categories (CALL, EMAIL, CRM)","uniqueKey":"exclude.eventCategories","typeLabel":"enum\u003cstring>[]"},"eventTypes":{"type":"array","items":{"type":"string","enum":["EMAIL_SENT","EMAIL_REPLY_RECEIVED","CALL_TRANSCRIPT","DEAL_WON","DEAL_LOST","OPPORTUNITY_CREATED","MEETING_BOOKED","RESOURCE_INDEXED","RESOURCE_REINDEXED","PRODUCT_DOC_INDEXED","PRODUCT_DOC_REINDEXED","DEVELOPER_DOC_INDEXED","DEVELOPER_DOC_REINDEXED","RELEASE_NOTE_INDEXED","RELEASE_NOTE_REINDEXED","PROJECT_UPDATE","TASK_COMPLETED","ENTITY_CREATED","ENTITY_UPDATED","SOCIAL_MESSAGE_SENT","SOCIAL_MESSAGE_RECEIVED","SOCIAL_CONNECTION_SENT","SOCIAL_CONNECTION_ACCEPTED","AD_SET_PUBLISHED","AD_PERFORMANCE_SNAPSHOT","BULK_IMPORT_SUMMARY","PROCESSING_NOT_APPLICABLE","PROVIDER_EVENT_TYPE_UNKNOWN","UNKNOWN"],"uniqueKey":"exclude.eventTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by specific event types (CALL_TRANSCRIPT, EMAIL_SENT, DEAL_WON, etc.)","uniqueKey":"exclude.eventTypes","typeLabel":"enum\u003cstring>[]"},"sentiments":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE","UNKNOWN"],"uniqueKey":"exclude.sentiments.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by sentiment (POSITIVE, NEGATIVE, NEUTRAL, MIXED)","uniqueKey":"exclude.sentiments","typeLabel":"enum\u003cstring>[]"},"contactEmails":{"type":"array","items":{"type":"string","uniqueKey":"exclude.contactEmails.items.[INDEX]","typeLabel":"string"},"description":"Filter by participant email addresses","uniqueKey":"exclude.contactEmails","typeLabel":"string[]"},"companyDomains":{"type":"array","items":{"type":"string","uniqueKey":"exclude.companyDomains.items.[INDEX]","typeLabel":"string"},"description":"Filter by company domains","uniqueKey":"exclude.companyDomains","typeLabel":"string[]"},"replyOutcomes":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE"],"uniqueKey":"exclude.replyOutcomes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude by how the reply to an outbound event was classified (POSITIVE, NEUTRAL, NEGATIVE). Independent of any deal.","uniqueKey":"exclude.replyOutcomes","typeLabel":"enum\u003cstring>[]"},"opportunityStatuses":{"type":"array","items":{"type":"string","enum":["OPEN","WON","LOST"],"uniqueKey":"exclude.opportunityStatuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude by opportunity status (OPEN, WON, LOST)","uniqueKey":"exclude.opportunityStatuses","typeLabel":"enum\u003cstring>[]"},"offerings":{"type":"array","items":{"type":"string","uniqueKey":"exclude.offerings.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these offering oIds","uniqueKey":"exclude.offerings","typeLabel":"string[]"},"personas":{"type":"array","items":{"type":"string","uniqueKey":"exclude.personas.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these persona oIds","uniqueKey":"exclude.personas","typeLabel":"string[]"},"segments":{"type":"array","items":{"type":"string","uniqueKey":"exclude.segments.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these segment oIds","uniqueKey":"exclude.segments","typeLabel":"string[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"exclude.tags.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching any library entity that carries these reporting tag oIds (any tag group; OR'd).","uniqueKey":"exclude.tags","typeLabel":"string[]"},"customExtractors":{"type":"array","items":{"type":"string","uniqueKey":"exclude.customExtractors.items.[INDEX]","typeLabel":"string"},"description":"Exclude events on which any of these custom extractor answers was found (same values as match.customExtractors)","uniqueKey":"exclude.customExtractors","typeLabel":"string[]"},"useCases":{"type":"array","items":{"type":"string","uniqueKey":"exclude.useCases.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these use case oIds","uniqueKey":"exclude.useCases","typeLabel":"string[]"},"references":{"type":"array","items":{"type":"string","uniqueKey":"exclude.references.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these reference customer oIds","uniqueKey":"exclude.references","typeLabel":"string[]"},"competitors":{"type":"array","items":{"type":"string","uniqueKey":"exclude.competitors.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these competitor oIds","uniqueKey":"exclude.competitors","typeLabel":"string[]"},"alternatives":{"type":"array","items":{"type":"string","uniqueKey":"exclude.alternatives.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these alternative oIds","uniqueKey":"exclude.alternatives","typeLabel":"string[]"},"buyingTriggers":{"type":"array","items":{"type":"string","uniqueKey":"exclude.buyingTriggers.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these buying trigger oIds","uniqueKey":"exclude.buyingTriggers","typeLabel":"string[]"},"coreFeatures":{"type":"array","items":{"type":"string","uniqueKey":"exclude.coreFeatures.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these core feature oIds","uniqueKey":"exclude.coreFeatures","typeLabel":"string[]"},"objections":{"type":"array","items":{"type":"string","uniqueKey":"exclude.objections.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these objection oIds","uniqueKey":"exclude.objections","typeLabel":"string[]"},"proofPoints":{"type":"array","items":{"type":"string","uniqueKey":"exclude.proofPoints.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching these proof point oIds","uniqueKey":"exclude.proofPoints","typeLabel":"string[]"},"motionTypes":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","CONVERT_FREE_TO_PAID","RENEW_AND_RETAIN","DISPLACE_INCUMBENT"],"uniqueKey":"exclude.motionTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude events matching these motion types (NET_NEW, UPSELL)","uniqueKey":"exclude.motionTypes","typeLabel":"enum\u003cstring>[]"},"callPurposes":{"type":"array","items":{"type":"string","enum":["DISCOVERY","DEMO","TECHNICAL_EVALUATION","WORKING_SESSION","NEGOTIATION_PRICING","ONBOARDING","CHECK_IN_SUCCESS","QBR_RENEWAL","EXPANSION_UPSELL","ESCALATION_CHURN_RISK","SUPPORT","CUSTOMER_INTERVIEW","INTERNAL_SYNC","OTHER"],"uniqueKey":"exclude.callPurposes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude calls with these classified purposes (e.g. SUPPORT, INTERNAL_SYNC)","uniqueKey":"exclude.callPurposes","typeLabel":"enum\u003cstring>[]"},"lossReasonCategories":{"type":"array","items":{"type":"string","enum":["nurture_recycle","lost_to_competitor","product_fit","self_solve","not_qualified","internal_change","no_decision","ghosted","product_quality","security_compliance","timing","budget","merged_duplicate","churn","other"],"uniqueKey":"exclude.lossReasonCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"maxItems":50,"description":"Normalized CRM loss reason categories. Categories may be inferred from CRM text; they are not verified causal explanations.","uniqueKey":"exclude.lossReasonCategories","typeLabel":"enum\u003cstring>[]"},"minDealValue":{"type":"number","description":"Minimum linked-deal value in workspace home currency, inclusive; missing/unconvertible values do not match. Reads the same linked opportunity as owner and stage.","uniqueKey":"exclude.minDealValue","typeLabel":"number"},"maxDealValue":{"type":"number","description":"Maximum linked-deal value in workspace home currency, inclusive","uniqueKey":"exclude.maxDealValue","typeLabel":"number"},"minDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Minimum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"exclude.minDealAgeDays","typeLabel":"number"},"maxDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"exclude.maxDealAgeDays","typeLabel":"number"},"maxStalledDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed days in the OPEN deal's current recorded stage. Missing stage history does not match.","uniqueKey":"exclude.maxStalledDays","typeLabel":"number"},"dealCreatedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or after this UTC date","uniqueKey":"exclude.dealCreatedAfter","typeLabel":"string"},"dealCreatedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or before this UTC date","uniqueKey":"exclude.dealCreatedBefore","typeLabel":"string"},"dealClosedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or after this UTC date; excludes open deals' forecast close dates","uniqueKey":"exclude.dealClosedAfter","typeLabel":"string"},"dealClosedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or before this UTC date","uniqueKey":"exclude.dealClosedBefore","typeLabel":"string"},"stageTransition":{"type":"object","properties":{"fromStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"exclude.stageTransition.fromStage","typeLabel":"string"},"toStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"exclude.stageTransition.toStage","typeLabel":"string"},"minDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"exclude.stageTransition.minDays","typeLabel":"number"},"maxDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"exclude.stageTransition.maxDays","typeLabel":"number"}},"required":["fromStage","toStage"],"additionalProperties":false,"description":"A recorded completed direct stage transition, measuring entry into fromStage to entry into the immediately following different stage toStage. Any completed visit can match. Ongoing stages do not match. Historical analysis only; unavailable to live extraction.","uniqueKey":"exclude.stageTransition","typeLabel":"object"},"dealOwnerIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512,"uniqueKey":"exclude.dealOwnerIds.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"Current CRM owners of linked deals, using provider-scoped owner keys returned by getDealOwners. Values OR; match-side deal conditions must hold on the same deal. This is current ownership, not the owner at event time or the conversation participant.","uniqueKey":"exclude.dealOwnerIds","typeLabel":"string[]"},"dealMotions":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","RENEW_AND_RETAIN","CONVERT_FREE_TO_PAID","DISPLACE_INCUMBENT","SERVICES","PARTNER","NON_COMMERCIAL"],"uniqueKey":"exclude.dealMotions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude events linked to deals whose CRM deal type maps to these motions","uniqueKey":"exclude.dealMotions","typeLabel":"enum\u003cstring>[]"},"dealTypes":{"type":"array","items":{"type":"string","uniqueKey":"exclude.dealTypes.items.[INDEX]","typeLabel":"string"},"description":"Exclude events linked to deals with these raw CRM deal-type labels, case-insensitive","uniqueKey":"exclude.dealTypes","typeLabel":"string[]"},"dealStages":{"type":"array","items":{"type":"string","uniqueKey":"exclude.dealStages.items.[INDEX]","typeLabel":"string"},"description":"Exclude events linked to deals currently in these CRM stages, by stage label or stage id, case-insensitive","uniqueKey":"exclude.dealStages","typeLabel":"string[]"},"pipelinePhases":{"type":"array","items":{"type":"string","enum":["prospecting","discovery","evaluation","negotiation","commitment","closed_won","closed_lost"],"uniqueKey":"exclude.pipelinePhases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Exclude events linked to deals whose stage maps to these pipeline phases","uniqueKey":"exclude.pipelinePhases","typeLabel":"enum\u003cstring>[]"}},"description":"Filters to EXCLUDE events matching these criteria (same shape as the entity/outcome match filters)","uniqueKey":"exclude","typeLabel":"object"},"excludeTags":{"type":"array","items":{"type":"string","uniqueKey":"excludeTags.items.[INDEX]","typeLabel":"string"},"description":"Exclude events matching any library entity that carries these reporting tag oIds. Use list_tag_groups to resolve tag oIds. Multiple tags are OR'd.","uniqueKey":"excludeTags","typeLabel":"string[]"},"cohortB":{"type":"object","properties":{"label":{"type":"string","minLength":1,"description":"Short name used in the verdict, e.g. 'Intake mentioned'.","isRequired":true,"uniqueKey":"cohortB.label","typeLabel":"string"},"filters":{"type":"object","properties":{"entityMatchAll":{"type":"boolean","description":"Require every selected library entity, including entities of the same category","uniqueKey":"cohortB.filters.entityMatchAll","typeLabel":"boolean"},"eventOIds":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.eventOIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to these event oIds only","uniqueKey":"cohortB.filters.eventOIds","typeLabel":"string[]"},"opportunityIds":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.opportunityIds.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to these opportunities. Accepts Octave opportunity oIds (crmo_*) or the CRM's own deal ids (Salesforce Id, HubSpot object id, Attio record UUID) interchangeably","uniqueKey":"cohortB.filters.opportunityIds","typeLabel":"string[]"},"eventCategories":{"type":"array","items":{"type":"string","enum":["EMAIL","CALL","CRM","RESOURCE","REVISION","SOCIAL","ADS","PRODUCT","UNKNOWN"],"uniqueKey":"cohortB.filters.eventCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by event categories (CALL, EMAIL, CRM)","uniqueKey":"cohortB.filters.eventCategories","typeLabel":"enum\u003cstring>[]"},"eventTypes":{"type":"array","items":{"type":"string","enum":["EMAIL_SENT","EMAIL_REPLY_RECEIVED","CALL_TRANSCRIPT","DEAL_WON","DEAL_LOST","OPPORTUNITY_CREATED","MEETING_BOOKED","RESOURCE_INDEXED","RESOURCE_REINDEXED","PRODUCT_DOC_INDEXED","PRODUCT_DOC_REINDEXED","DEVELOPER_DOC_INDEXED","DEVELOPER_DOC_REINDEXED","RELEASE_NOTE_INDEXED","RELEASE_NOTE_REINDEXED","PROJECT_UPDATE","TASK_COMPLETED","ENTITY_CREATED","ENTITY_UPDATED","SOCIAL_MESSAGE_SENT","SOCIAL_MESSAGE_RECEIVED","SOCIAL_CONNECTION_SENT","SOCIAL_CONNECTION_ACCEPTED","AD_SET_PUBLISHED","AD_PERFORMANCE_SNAPSHOT","BULK_IMPORT_SUMMARY","PROCESSING_NOT_APPLICABLE","PROVIDER_EVENT_TYPE_UNKNOWN","UNKNOWN"],"uniqueKey":"cohortB.filters.eventTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by specific event types (CALL_TRANSCRIPT, EMAIL_SENT, DEAL_WON, etc.)","uniqueKey":"cohortB.filters.eventTypes","typeLabel":"enum\u003cstring>[]"},"sentiments":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE","UNKNOWN"],"uniqueKey":"cohortB.filters.sentiments.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by sentiment (POSITIVE, NEGATIVE, NEUTRAL, MIXED)","uniqueKey":"cohortB.filters.sentiments","typeLabel":"enum\u003cstring>[]"},"contactEmails":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.contactEmails.items.[INDEX]","typeLabel":"string"},"description":"Filter by participant email addresses","uniqueKey":"cohortB.filters.contactEmails","typeLabel":"string[]"},"companyDomains":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.companyDomains.items.[INDEX]","typeLabel":"string"},"description":"Filter by company domains","uniqueKey":"cohortB.filters.companyDomains","typeLabel":"string[]"},"replyOutcomes":{"type":"array","items":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE"],"uniqueKey":"cohortB.filters.replyOutcomes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by how the reply to an outbound event was classified (POSITIVE, NEUTRAL, NEGATIVE). Independent of any deal.","uniqueKey":"cohortB.filters.replyOutcomes","typeLabel":"enum\u003cstring>[]"},"opportunityStatuses":{"type":"array","items":{"type":"string","enum":["OPEN","WON","LOST"],"uniqueKey":"cohortB.filters.opportunityStatuses.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals with this status (OPEN, WON, LOST)","uniqueKey":"cohortB.filters.opportunityStatuses","typeLabel":"enum\u003cstring>[]"},"lossReasonCategories":{"type":"array","items":{"type":"string","enum":["nurture_recycle","lost_to_competitor","product_fit","self_solve","not_qualified","internal_change","no_decision","ghosted","product_quality","security_compliance","timing","budget","merged_duplicate","churn","other"],"uniqueKey":"cohortB.filters.lossReasonCategories.items.[INDEX]","typeLabel":"enum\u003cstring>"},"maxItems":50,"description":"Normalized CRM loss reason categories. Categories may be inferred from CRM text; they are not verified causal explanations.","uniqueKey":"cohortB.filters.lossReasonCategories","typeLabel":"enum\u003cstring>[]"},"minDealValue":{"type":"number","description":"Minimum linked-deal value in workspace home currency, inclusive; missing/unconvertible values do not match. Reads the same linked opportunity as owner and stage.","uniqueKey":"cohortB.filters.minDealValue","typeLabel":"number"},"maxDealValue":{"type":"number","description":"Maximum linked-deal value in workspace home currency, inclusive","uniqueKey":"cohortB.filters.maxDealValue","typeLabel":"number"},"minDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Minimum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"cohortB.filters.minDealAgeDays","typeLabel":"number"},"maxDealAgeDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed 24-hour days since CRM deal creation, inclusive","uniqueKey":"cohortB.filters.maxDealAgeDays","typeLabel":"number"},"maxStalledDays":{"type":"number","minimum":0,"maximum":365000,"description":"Maximum elapsed days in the OPEN deal's current recorded stage. Missing stage history does not match.","uniqueKey":"cohortB.filters.maxStalledDays","typeLabel":"number"},"dealCreatedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or after this UTC date","uniqueKey":"cohortB.filters.dealCreatedAfter","typeLabel":"string"},"dealCreatedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Linked deal CRM creation date on or before this UTC date","uniqueKey":"cohortB.filters.dealCreatedBefore","typeLabel":"string"},"dealClosedAfter":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or after this UTC date; excludes open deals' forecast close dates","uniqueKey":"cohortB.filters.dealClosedAfter","typeLabel":"string"},"dealClosedBefore":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Closed linked deals whose current CRM close date is on or before this UTC date","uniqueKey":"cohortB.filters.dealClosedBefore","typeLabel":"string"},"stageTransition":{"type":"object","properties":{"fromStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"cohortB.filters.stageTransition.fromStage","typeLabel":"string"},"toStage":{"type":"string","minLength":1,"maxLength":256,"isRequired":true,"uniqueKey":"cohortB.filters.stageTransition.toStage","typeLabel":"string"},"minDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"cohortB.filters.stageTransition.minDays","typeLabel":"number"},"maxDays":{"type":"number","minimum":0,"maximum":365000,"uniqueKey":"cohortB.filters.stageTransition.maxDays","typeLabel":"number"}},"required":["fromStage","toStage"],"additionalProperties":false,"description":"A recorded completed direct stage transition, measuring entry into fromStage to entry into the immediately following different stage toStage. Any completed visit can match. Ongoing stages do not match. Historical analysis only; unavailable to live extraction.","uniqueKey":"cohortB.filters.stageTransition","typeLabel":"object"},"dealOwnerIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512,"uniqueKey":"cohortB.filters.dealOwnerIds.items.[INDEX]","typeLabel":"string"},"maxItems":100,"description":"Current CRM owners of linked deals, using provider-scoped owner keys returned by getDealOwners. Values OR; match-side deal conditions must hold on the same deal. This is current ownership, not the owner at event time or the conversation participant.","uniqueKey":"cohortB.filters.dealOwnerIds","typeLabel":"string[]"},"dealMotions":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","RENEW_AND_RETAIN","CONVERT_FREE_TO_PAID","DISPLACE_INCUMBENT","SERVICES","PARTNER","NON_COMMERCIAL"],"uniqueKey":"cohortB.filters.dealMotions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose CRM deal type maps to these motions (NET_NEW, UPSELL, CROSS_SELL, RENEW_AND_RETAIN, CONVERT_FREE_TO_PAID, DISPLACE_INCUMBENT, SERVICES, PARTNER, NON_COMMERCIAL)","uniqueKey":"cohortB.filters.dealMotions","typeLabel":"enum\u003cstring>[]"},"dealTypes":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.dealTypes.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals with these raw CRM deal-type labels (Salesforce Type, HubSpot dealtype), case-insensitive","uniqueKey":"cohortB.filters.dealTypes","typeLabel":"string[]"},"dealStages":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.dealStages.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals currently in these CRM stages, by stage label or stage id, case-insensitive","uniqueKey":"cohortB.filters.dealStages","typeLabel":"string[]"},"dealStagesAtEvent":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.dealStagesAtEvent.items.[INDEX]","typeLabel":"string"},"description":"Filter to events whose linked deal was in one of these CRM stages WHEN THE EVENT HAPPENED (by stage label, case-insensitive), from the deal's stage history — unlike dealStages, which reads the deal's stage today. Use it for 'what came up on calls during Discovery'. An event whose deal has no recorded stage at that time does not match.","uniqueKey":"cohortB.filters.dealStagesAtEvent","typeLabel":"string[]"},"pipelinePhases":{"type":"array","items":{"type":"string","enum":["prospecting","discovery","evaluation","negotiation","commitment","closed_won","closed_lost"],"uniqueKey":"cohortB.filters.pipelinePhases.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter to events linked to deals whose stage maps to these pipeline phases (prospecting, discovery, evaluation, negotiation, commitment, closed_won, closed_lost)","uniqueKey":"cohortB.filters.pipelinePhases","typeLabel":"enum\u003cstring>[]"},"crmPipelines":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.crmPipelines.items.[INDEX]","typeLabel":"string"},"description":"Filter to events linked to deals in these CRM pipelines, by pipeline id or name (case-insensitive name)","uniqueKey":"cohortB.filters.crmPipelines","typeLabel":"string[]"},"minStalledDays":{"type":"number","description":"Filter to events linked to an OPEN deal that has sat in its current stage at least this many days","uniqueKey":"cohortB.filters.minStalledDays","typeLabel":"number"},"offerings":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.offerings.items.[INDEX]","typeLabel":"string"},"description":"Filter by offering oIds","uniqueKey":"cohortB.filters.offerings","typeLabel":"string[]"},"personas":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.personas.items.[INDEX]","typeLabel":"string"},"description":"Filter by persona oIds (events must match these personas)","uniqueKey":"cohortB.filters.personas","typeLabel":"string[]"},"segments":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.segments.items.[INDEX]","typeLabel":"string"},"description":"Filter by segment oIds","uniqueKey":"cohortB.filters.segments","typeLabel":"string[]"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.tags.items.[INDEX]","typeLabel":"string"},"description":"Filter by reporting tag oIds (from any tag group, on any library entity type). Resolved to the entities carrying those tags; multiple tags are OR'd.","uniqueKey":"cohortB.filters.tags","typeLabel":"string[]"},"customExtractors":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.customExtractors.items.[INDEX]","typeLabel":"string"},"description":"Filter by custom extractor answers: events on which the custom extractor found something. Each value is a custom extractor oId (cex_…) for any answer, or \u003cextractorOId>:\u003cclassValue> for one answer of a yes/no or choice custom extractor (e.g. cex_abc:asked_for_it; yes/no custom extractors use true or false). Multiple values are OR'd. list_custom_extractors gives custom extractor oIds and their class values.","uniqueKey":"cohortB.filters.customExtractors","typeLabel":"string[]"},"useCases":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.useCases.items.[INDEX]","typeLabel":"string"},"description":"Filter by use case oIds","uniqueKey":"cohortB.filters.useCases","typeLabel":"string[]"},"references":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.references.items.[INDEX]","typeLabel":"string"},"description":"Filter by reference customer oIds","uniqueKey":"cohortB.filters.references","typeLabel":"string[]"},"competitors":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.competitors.items.[INDEX]","typeLabel":"string"},"description":"Filter by competitor oIds","uniqueKey":"cohortB.filters.competitors","typeLabel":"string[]"},"alternatives":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.alternatives.items.[INDEX]","typeLabel":"string"},"description":"Filter by alternative oIds","uniqueKey":"cohortB.filters.alternatives","typeLabel":"string[]"},"buyingTriggers":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.buyingTriggers.items.[INDEX]","typeLabel":"string"},"description":"Filter by buying trigger oIds","uniqueKey":"cohortB.filters.buyingTriggers","typeLabel":"string[]"},"coreFeatures":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.coreFeatures.items.[INDEX]","typeLabel":"string"},"description":"Filter by core feature oIds","uniqueKey":"cohortB.filters.coreFeatures","typeLabel":"string[]"},"objections":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.objections.items.[INDEX]","typeLabel":"string"},"description":"Filter by objection oIds","uniqueKey":"cohortB.filters.objections","typeLabel":"string[]"},"proofPoints":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.filters.proofPoints.items.[INDEX]","typeLabel":"string"},"description":"Filter by proof point oIds","uniqueKey":"cohortB.filters.proofPoints","typeLabel":"string[]"},"motionTypes":{"type":"array","items":{"type":"string","enum":["NET_NEW","UPSELL","CROSS_SELL","CONVERT_FREE_TO_PAID","RENEW_AND_RETAIN","DISPLACE_INCUMBENT"],"uniqueKey":"cohortB.filters.motionTypes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter by motion type (NET_NEW, UPSELL)","uniqueKey":"cohortB.filters.motionTypes","typeLabel":"enum\u003cstring>[]"},"customerScope":{"type":"string","enum":["ALL","NEW_CUSTOMERS","EXISTING_CUSTOMERS"],"description":"Customer-scope view (NEW_CUSTOMERS / EXISTING_CUSTOMERS); ALL or absent applies no filter","uniqueKey":"cohortB.filters.customerScope","typeLabel":"enum\u003cstring>"},"callPurposes":{"type":"array","items":{"type":"string","enum":["DISCOVERY","DEMO","TECHNICAL_EVALUATION","WORKING_SESSION","NEGOTIATION_PRICING","ONBOARDING","CHECK_IN_SUCCESS","QBR_RENEWAL","EXPANSION_UPSELL","ESCALATION_CHURN_RISK","SUPPORT","CUSTOMER_INTERVIEW","INTERNAL_SYNC","OTHER"],"uniqueKey":"cohortB.filters.callPurposes.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Filter calls by classified purpose (DISCOVERY, DEMO, TECHNICAL_EVALUATION, WORKING_SESSION, NEGOTIATION_PRICING, ONBOARDING, CHECK_IN_SUCCESS, QBR_RENEWAL, EXPANSION_UPSELL, ESCALATION_CHURN_RISK, SUPPORT, CUSTOMER_INTERVIEW, INTERNAL_SYNC, OTHER)","uniqueKey":"cohortB.filters.callPurposes","typeLabel":"enum\u003cstring>[]"},"unmatchedOnly":{"type":"boolean","description":"When true, only return events that have findings with no library entity matches","uniqueKey":"cohortB.filters.unmatchedOnly","typeLabel":"boolean"}},"description":"What puts a deal in this cohort: event filters, ANDed with the shared `filters`. A deal belongs if ANY of its events in the window match — e.g. { useCases: ['uc_…'] } is 'deals where this use case came up'.","uniqueKey":"cohortB.filters","typeLabel":"object"},"dealFilters":{"type":"object","properties":{"accountSegments":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.dealFilters.accountSegments.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Segment oIds (sg_…): deals whose account the workspace classified into one of these segments — the segment shown on a deal row's account.segment. Not the segments a conversation mentioned (that is the event filter `segments`). Deals whose account has no company record never match.","uniqueKey":"cohortB.dealFilters.accountSegments","typeLabel":"string[]"},"companySizeBands":{"type":"array","items":{"type":"string","enum":["1-49","50-199","200-999","1000-4999","5000+"],"uniqueKey":"cohortB.dealFilters.companySizeBands.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Headcount bands of the deal's account (1-49, 50-199, 200-999, 1000-4999, 5000+), from the workspace's company record — the employeeCount on a deal row. Deals with no known headcount never match.","uniqueKey":"cohortB.dealFilters.companySizeBands","typeLabel":"enum\u003cstring>[]"},"stakeholderPersonas":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.dealFilters.stakeholderPersonas.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Persona oIds (pe_…): deals with at least one buyer-side stakeholder whose contact is classified as one of these personas. Stakeholders are the external participants on the deal's own conversations (the deal-membership rule get_deal's stakeholders use) plus the deal's CRM contacts (primary contact and contact emails); people seen only on CRM-logged emails, which get_deal also lists, are not read.","uniqueKey":"cohortB.dealFilters.stakeholderPersonas","typeLabel":"string[]"},"buyerTitles":{"type":"array","items":{"type":"string","minLength":2,"uniqueKey":"cohortB.dealFilters.buyerTitles.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"Job-title fragments, case-insensitive, e.g. ['VP Sales', 'Chief Revenue']: deals with at least one buyer-side stakeholder (as stakeholderPersonas) whose title contains one of them. With stakeholderPersonas too, each can be met by a different person.","uniqueKey":"cohortB.dealFilters.buyerTitles","typeLabel":"string[]"}},"description":"Deal-level cuts, ANDed with `filters`: the deal's account segment and headcount band, and a buyer-side stakeholder's persona or job title (who is on the deal, not who a conversation mentioned). E.g. { buyerTitles: ['VP Sales'] } is 'deals with a VP Sales on them'. Deal type and motion are event filters: filters.dealTypes / filters.dealMotions.","uniqueKey":"cohortB.dealFilters","typeLabel":"object"},"motions":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.motions.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Authored Motion oIds (mot_…, from list_motions): the deals behind the conversations a Motion applies to. No deal or conversation records a Motion, so it is inferred: a conversation that mentions the Motion's offering, on a deal of the Motion's type. ANDed with `filters`; with motionPlaybooks, a conversation either applies to is in. Naming a Motion or playbook on either side keeps only deals of the Motion's type on BOTH sides, so cohort B omitted is every other deal of that type; every Motion and playbook in one comparison must share a type.","uniqueKey":"cohortB.motions","typeLabel":"string[]"},"motionPlaybooks":{"type":"array","items":{"type":"string","uniqueKey":"cohortB.motionPlaybooks.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Motion Playbook oIds (mpb_…, from list_motion_playbooks): as `motions`, through the playbook that applies to a conversation: the one on a Motion ICP whose persona and segment it matches, or a Motion's only playbook. A conversation whose Motion has several playbooks and matches none of its ICPs has no playbook.","uniqueKey":"cohortB.motionPlaybooks","typeLabel":"string[]"}},"required":["label"],"description":"The comparison group. OMIT it to compare cohort A against every other deal in the window — the usual question ('do deals where X came up win more than deals where it didn't?').","uniqueKey":"cohortB","typeLabel":"object"},"dealFilters":{"type":"object","properties":{"accountSegments":{"type":"array","items":{"type":"string","uniqueKey":"dealFilters.accountSegments.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Segment oIds (sg_…): deals whose account the workspace classified into one of these segments — the segment shown on a deal row's account.segment. Not the segments a conversation mentioned (that is the event filter `segments`). Deals whose account has no company record never match.","uniqueKey":"dealFilters.accountSegments","typeLabel":"string[]"},"companySizeBands":{"type":"array","items":{"type":"string","enum":["1-49","50-199","200-999","1000-4999","5000+"],"uniqueKey":"dealFilters.companySizeBands.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"Headcount bands of the deal's account (1-49, 50-199, 200-999, 1000-4999, 5000+), from the workspace's company record — the employeeCount on a deal row. Deals with no known headcount never match.","uniqueKey":"dealFilters.companySizeBands","typeLabel":"enum\u003cstring>[]"},"stakeholderPersonas":{"type":"array","items":{"type":"string","uniqueKey":"dealFilters.stakeholderPersonas.items.[INDEX]","typeLabel":"string"},"maxItems":50,"description":"Persona oIds (pe_…): deals with at least one buyer-side stakeholder whose contact is classified as one of these personas. Stakeholders are the external participants on the deal's own conversations (the deal-membership rule get_deal's stakeholders use) plus the deal's CRM contacts (primary contact and contact emails); people seen only on CRM-logged emails, which get_deal also lists, are not read.","uniqueKey":"dealFilters.stakeholderPersonas","typeLabel":"string[]"},"buyerTitles":{"type":"array","items":{"type":"string","minLength":2,"uniqueKey":"dealFilters.buyerTitles.items.[INDEX]","typeLabel":"string"},"maxItems":20,"description":"Job-title fragments, case-insensitive, e.g. ['VP Sales', 'Chief Revenue']: deals with at least one buyer-side stakeholder (as stakeholderPersonas) whose title contains one of them. With stakeholderPersonas too, each can be met by a different person.","uniqueKey":"dealFilters.buyerTitles","typeLabel":"string[]"}},"description":"Deal-level cuts applied to BOTH sides, like the shared `filters` are for events: account segment, account headcount band, stakeholder persona, buyer title. E.g. { companySizeBands: ['1000-4999', '5000+'] } compares the cohorts among enterprise deals only.","uniqueKey":"dealFilters","typeLabel":"object"},"outcome":{"oneOf":[{"type":"object","description":"The outcome the two cohorts are compared on. win_rate (default): won / closed — the truest and the slowest. advanced_within_days: the deal reached a later pipeline phase (not closed-lost) within `days` of its first matching conversation. faster_than_stage_median: the deal left the CRM stage it was in at that conversation, for a stage other than closed-lost, in less time than this workspace's median for that stage. next_conversation_positive: the deal's next conversation after it had POSITIVE overall sentiment. Use a leading outcome when win_rate returns insufficient_evidence; say which outcome a figure is about whenever you quote it.","default":{"metric":"win_rate"},"required":["metric"],"properties":{"metric":{"type":"string","enum":["win_rate"],"isRequired":true,"uniqueKey":"outcome.oneOf.0.metric","typeLabel":"enum\u003cstring>"}},"uniqueKey":"outcome.oneOf.0","typeLabel":"object"},{"type":"object","description":"The outcome the two cohorts are compared on. win_rate (default): won / closed — the truest and the slowest. advanced_within_days: the deal reached a later pipeline phase (not closed-lost) within `days` of its first matching conversation. faster_than_stage_median: the deal left the CRM stage it was in at that conversation, for a stage other than closed-lost, in less time than this workspace's median for that stage. next_conversation_positive: the deal's next conversation after it had POSITIVE overall sentiment. Use a leading outcome when win_rate returns insufficient_evidence; say which outcome a figure is about whenever you quote it.","default":{"metric":"win_rate"},"required":["metric"],"properties":{"metric":{"type":"string","enum":["advanced_within_days"],"isRequired":true,"uniqueKey":"outcome.oneOf.1.metric","typeLabel":"enum\u003cstring>"},"days":{"type":"integer","minimum":7,"maximum":180,"default":30,"description":"How long after the conversation the deal has to move.","uniqueKey":"outcome.oneOf.1.days","typeLabel":"integer"}},"uniqueKey":"outcome.oneOf.1","typeLabel":"object"},{"type":"object","description":"The outcome the two cohorts are compared on. win_rate (default): won / closed — the truest and the slowest. advanced_within_days: the deal reached a later pipeline phase (not closed-lost) within `days` of its first matching conversation. faster_than_stage_median: the deal left the CRM stage it was in at that conversation, for a stage other than closed-lost, in less time than this workspace's median for that stage. next_conversation_positive: the deal's next conversation after it had POSITIVE overall sentiment. Use a leading outcome when win_rate returns insufficient_evidence; say which outcome a figure is about whenever you quote it.","default":{"metric":"win_rate"},"required":["metric"],"properties":{"metric":{"type":"string","enum":["faster_than_stage_median"],"isRequired":true,"uniqueKey":"outcome.oneOf.2.metric","typeLabel":"enum\u003cstring>"}},"uniqueKey":"outcome.oneOf.2","typeLabel":"object"},{"type":"object","description":"The outcome the two cohorts are compared on. win_rate (default): won / closed — the truest and the slowest. advanced_within_days: the deal reached a later pipeline phase (not closed-lost) within `days` of its first matching conversation. faster_than_stage_median: the deal left the CRM stage it was in at that conversation, for a stage other than closed-lost, in less time than this workspace's median for that stage. next_conversation_positive: the deal's next conversation after it had POSITIVE overall sentiment. Use a leading outcome when win_rate returns insufficient_evidence; say which outcome a figure is about whenever you quote it.","default":{"metric":"win_rate"},"required":["metric"],"properties":{"metric":{"type":"string","enum":["next_conversation_positive"],"isRequired":true,"uniqueKey":"outcome.oneOf.3.metric","typeLabel":"enum\u003cstring>"}},"uniqueKey":"outcome.oneOf.3","typeLabel":"object"}],"uniqueKey":"outcome","typeLabel":"object"},"linkScope":{"type":"string","enum":["crm_linked","single_candidate","outcome_attribution","account_associated"],"description":"Which conversations count as belonging to a deal. OMIT it to use the workspace's own default (set beside its CRM mappings), or the product default, outcome_attribution, when the workspace never chose; the response says which applied in `linkScopeSource`. Which event-to-deal links establish that a conversation belongs to a deal. outcome_attribution (default): the product's own rule, the one behind the win rates in Insights — attribution links, links the CRM or a person made, links by a participant's contact email, and company-domain links only on a deal with at least two of them. Figures at this scope are comparable with Insights; at the others they are not. Where an event reaches several deals at one account, each link is graded on how well the event fits that deal (its contacts, timing and motion), and only the deal(s) it belongs to count; a graded-out link is read only at account_associated. crm_linked: only links the CRM or a person made — 'CRM-linked deals with a matching conversation'. The firmest association and a much smaller, differently selected population; not an unbiased one. single_candidate: crm_linked plus an inferred link when the event reaches exactly one deal and belongs to it. account_associated: every link, graded or not — the before/after view of the grading. The response reports the comparison under all four (acrossLinkScopes), so you can see whether the direction holds.","uniqueKey":"linkScope","typeLabel":"enum\u003cstring>"},"stratifyBy":{"type":"object","properties":{"by":{"type":"string","enum":["segment","persona","use_case","core_feature","competitor","alternative","buying_trigger","objection","proof_point","reference","tag_group","offering","offering_of_core_feature","company","person","speaker_side","deal_stage_at_event"],"description":"What to group by. A library entity type (use_case, segment, persona, competitor, objection, …) groups by the entities matched on each event. 'tag_group' groups by the values of one tag group (give tagGroupOId) — e.g. use cases rolled up by Imperative. 'company' and 'person' group by who the event was with (person = external contacts). 'offering' groups by the products, services and solutions a finding on the event was matched to directly — the offering was what was talked about. 'offering_of_core_feature' rolls matched CAPABILITIES up to the offering each belongs to in the library today ('(no parent offering)' when a capability has none) — use it to compare products by the capabilities that came up. The two are different relations and give different answers; neither says what a deal SOLD or what the account OWNS. A conversation that touches two offerings counts under both. An offering match classifies the whole conversation rather than quoting someone, so 'offering' crossed with speaker_side is always 'unknown'. 'speaker_side' groups by internal vs external speaker. 'deal_stage_at_event' groups by the CRM stage the linked deal was in WHEN the event happened, not its stage today.","isRequired":true,"uniqueKey":"stratifyBy.by","typeLabel":"enum\u003cstring>"},"tagGroupOId":{"type":"string","description":"Required when by = 'tag_group' (tg_...); ignored otherwise.","uniqueKey":"stratifyBy.tagGroupOId","typeLabel":"string"}},"required":["by"],"description":"Also make the comparison WITHIN each value of this dimension and pool the result. Use { by: 'segment' } (or a tag group, or deal_stage_at_event) whenever the cohorts could simply sit in different kinds of deal — it is what tells a real effect from a mix effect.","uniqueKey":"stratifyBy","typeLabel":"object"},"materialGapPoints":{"type":"number","minimum":1,"maximum":50,"default":10,"description":"The gap, in PERCENTAGE POINTS, below which two rates count as alike — what the business would not act on. Only used to decide no_material_difference. Choose it BEFORE looking at the result. The default is a software default, not a threshold anyone has endorsed; at a low base rate (say 15%) a smaller margin such as 5 is more sensible. It never suppresses the observed difference.","uniqueKey":"materialGapPoints","typeLabel":"number"},"comparisonsDeclared":{"type":"integer","minimum":1,"maximum":1000,"default":1,"description":"How many comparisons you are making in this analysis, INCLUDING this one. If you are testing 12 use cases to see which wins more, pass 12 on each call: some will look significant by chance, and the verdict corrects for it. Leave at 1 only for a single, pre-planned question.","uniqueKey":"comparisonsDeclared","typeLabel":"integer"}},"required":["cohortA"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"cohortA":{"label":"\u003cstring>","filters":{"entityMatchAll":true,"eventOIds":["\u003cstring>"],"opportunityIds":["\u003cstring>"],"eventCategories":[],"eventTypes":[],"sentiments":[],"contactEmails":["\u003cstring>"],"companyDomains":["\u003cstring>"],"replyOutcomes":[],"opportunityStatuses":[],"lossReasonCategories":[],"minDealValue":123,"maxDealValue":123,"minDealAgeDays":182500,"maxDealAgeDays":182500,"maxStalledDays":182500,"dealCreatedAfter":"\u003cstring>","dealCreatedBefore":"\u003cstring>","dealClosedAfter":"\u003cstring>","dealClosedBefore":"\u003cstring>","dealOwnerIds":["\u003cstring>"],"dealMotions":[],"dealTypes":["\u003cstring>"],"dealStages":["\u003cstring>"],"dealStagesAtEvent":["\u003cstring>"],"pipelinePhases":[],"crmPipelines":["\u003cstring>"],"minStalledDays":123,"offerings":["\u003cstring>"],"personas":["\u003cstring>"],"segments":["\u003cstring>"],"tags":["\u003cstring>"],"customExtractors":["\u003cstring>"],"useCases":["\u003cstring>"],"references":["\u003cstring>"],"competitors":["\u003cstring>"],"alternatives":["\u003cstring>"],"buyingTriggers":["\u003cstring>"],"coreFeatures":["\u003cstring>"],"objections":["\u003cstring>"],"proofPoints":["\u003cstring>"],"motionTypes":[],"callPurposes":[],"unmatchedOnly":true},"dealFilters":{"accountSegments":["\u003cstring>"],"companySizeBands":[],"stakeholderPersonas":["\u003cstring>"],"buyerTitles":["\u003cstring>"]},"motions":["\u003cstring>"],"motionPlaybooks":["\u003cstring>"]},"startDate":"2023-11-07T05:31:56Z","endDate":"2023-11-07T05:31:56Z","filters":{"entityMatchAll":true,"eventOIds":["\u003cstring>"],"opportunityIds":["\u003cstring>"],"eventCategories":[],"eventTypes":[],"sentiments":[],"contactEmails":["\u003cstring>"],"companyDomains":["\u003cstring>"],"replyOutcomes":[],"opportunityStatuses":[],"lossReasonCategories":[],"minDealValue":123,"maxDealValue":123,"minDealAgeDays":182500,"maxDealAgeDays":182500,"maxStalledDays":182500,"dealCreatedAfter":"\u003cstring>","dealCreatedBefore":"\u003cstring>","dealClosedAfter":"\u003cstring>","dealClosedBefore":"\u003cstring>","dealOwnerIds":["\u003cstring>"],"dealMotions":[],"dealTypes":["\u003cstring>"],"dealStages":["\u003cstring>"],"dealStagesAtEvent":["\u003cstring>"],"pipelinePhases":[],"crmPipelines":["\u003cstring>"],"minStalledDays":123,"offerings":["\u003cstring>"],"personas":["\u003cstring>"],"segments":["\u003cstring>"],"tags":["\u003cstring>"],"customExtractors":["\u003cstring>"],"useCases":["\u003cstring>"],"references":["\u003cstring>"],"competitors":["\u003cstring>"],"alternatives":["\u003cstring>"],"buyingTriggers":["\u003cstring>"],"coreFeatures":["\u003cstring>"],"objections":["\u003cstring>"],"proofPoints":["\u003cstring>"],"motionTypes":[],"callPurposes":[],"unmatchedOnly":true},"exclude":{"eventCategories":[],"eventTypes":[],"sentiments":[],"contactEmails":["\u003cstring>"],"companyDomains":["\u003cstring>"],"replyOutcomes":[],"opportunityStatuses":[],"offerings":["\u003cstring>"],"personas":["\u003cstring>"],"segments":["\u003cstring>"],"tags":["\u003cstring>"],"customExtractors":["\u003cstring>"],"useCases":["\u003cstring>"],"references":["\u003cstring>"],"competitors":["\u003cstring>"],"alternatives":["\u003cstring>"],"buyingTriggers":["\u003cstring>"],"coreFeatures":["\u003cstring>"],"objections":["\u003cstring>"],"proofPoints":["\u003cstring>"],"motionTypes":[],"callPurposes":[],"lossReasonCategories":[],"minDealValue":123,"maxDealValue":123,"minDealAgeDays":182500,"maxDealAgeDays":182500,"maxStalledDays":182500,"dealCreatedAfter":"\u003cstring>","dealCreatedBefore":"\u003cstring>","dealClosedAfter":"\u003cstring>","dealClosedBefore":"\u003cstring>","dealOwnerIds":["\u003cstring>"],"dealMotions":[],"dealTypes":["\u003cstring>"],"dealStages":["\u003cstring>"],"pipelinePhases":[]},"excludeTags":["\u003cstring>"],"dealFilters":{"accountSegments":["\u003cstring>"],"companySizeBands":[],"stakeholderPersonas":["\u003cstring>"],"buyerTitles":["\u003cstring>"]},"outcome":{"metric":"win_rate"},"materialGapPoints":10,"comparisonsDeclared":1}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"5f3ce7b5-d634-4739-88c3-38b8304d0ef1":{"description":"Compare Cohorts","content":{"application/json":{"schema":{"type":"object","properties":{"_metadata":{"type":"object","properties":{"requestId":{"type":"string","example":"requestId","description":"Request ID","isRequired":true,"uniqueKey":"_metadata.requestId","typeLabel":"string"},"timestamp":{"type":"string","example":"2021-01-01T00:00:00.000Z","description":"Timestamp","isRequired":true,"uniqueKey":"_metadata.timestamp","typeLabel":"string"},"usage":{"type":"number","default":0,"example":0,"description":"API usage","uniqueKey":"_metadata.usage","typeLabel":"number"},"message":{"type":"string","example":"message","description":"Message","uniqueKey":"_metadata.message","typeLabel":"string"}},"required":["requestId","timestamp"],"isRequired":true,"uniqueKey":"_metadata","typeLabel":"object"},"definition":{"type":"object","properties":{"metric":{"type":"string","enum":["win_rate","advanced_within_days","faster_than_stage_median","next_conversation_positive"],"isRequired":true,"uniqueKey":"definition.metric","typeLabel":"enum\u003cstring>"},"label":{"type":"string","description":"The outcome in words, for quoting.","isRequired":true,"uniqueKey":"definition.label","typeLabel":"string"},"formula":{"type":"string","isRequired":true,"uniqueKey":"definition.formula","typeLabel":"string"},"grain":{"type":"string","isRequired":true,"uniqueKey":"definition.grain","typeLabel":"string"},"membership":{"type":"string","isRequired":true,"uniqueKey":"definition.membership","typeLabel":"string"},"clock":{"type":"string","isRequired":true,"uniqueKey":"definition.clock","typeLabel":"string"},"exclusions":{"type":"array","items":{"type":"string","uniqueKey":"definition.exclusions.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"definition.exclusions","typeLabel":"string[]"},"linkScope":{"type":"string","description":"Which event-to-deal links establish membership, in words.","isRequired":true,"uniqueKey":"definition.linkScope","typeLabel":"string"},"orderRule":{"type":"string","description":"How a conversation is shown to precede the deal's outcome, and when that order is unknown.","isRequired":true,"uniqueKey":"definition.orderRule","typeLabel":"string"},"materialGapPoints":{"type":"number","description":"The gap, in percentage points, below which two rates are called alike. A software default unless the caller set it — not a threshold the business has endorsed.","isRequired":true,"uniqueKey":"definition.materialGapPoints","typeLabel":"number"},"currency":{"type":"string","description":"The basis of every money figure.","isRequired":true,"uniqueKey":"definition.currency","typeLabel":"string"}},"required":["metric","label","formula","grain","membership","clock","exclusions","linkScope","orderRule","materialGapPoints","currency"],"description":"How every number here is defined: what is counted, over which clock, and what is left out. State the relevant parts when quoting a figure.","isRequired":true,"uniqueKey":"definition","typeLabel":"object"},"linkScope":{"type":"string","enum":["crm_linked","single_candidate","outcome_attribution","account_associated"],"description":"Which event-to-deal links establish that a conversation belongs to a deal. outcome_attribution (default): the product's own rule, the one behind the win rates in Insights — attribution links, links the CRM or a person made, links by a participant's contact email, and company-domain links only on a deal with at least two of them. Figures at this scope are comparable with Insights; at the others they are not. Where an event reaches several deals at one account, each link is graded on how well the event fits that deal (its contacts, timing and motion), and only the deal(s) it belongs to count; a graded-out link is read only at account_associated. crm_linked: only links the CRM or a person made — 'CRM-linked deals with a matching conversation'. The firmest association and a much smaller, differently selected population; not an unbiased one. single_candidate: crm_linked plus an inferred link when the event reaches exactly one deal and belongs to it. account_associated: every link, graded or not — the before/after view of the grading. The response reports the comparison under all four (acrossLinkScopes), so you can see whether the direction holds.","isRequired":true,"uniqueKey":"linkScope","typeLabel":"enum\u003cstring>"},"observed":{"type":"object","properties":{"higher":{"oneOf":[{"type":"string","enum":["cohortA","cohortB","equal",null],"description":"Which side has the higher rate on the compared outcome. 'Higher' is not 'better' for every outcome. Null when a side has no deal with a readable outcome.","isRequired":true,"uniqueKey":"observed.higher.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["cohortA","cohortB","equal",null],"description":"Which side has the higher rate on the compared outcome. 'Higher' is not 'better' for every outcome. Null when a side has no deal with a readable outcome.","isRequired":true,"uniqueKey":"observed.higher.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"observed.higher","typeLabel":"enum\u003cstring> | null"},"gapPoints":{"oneOf":[{"type":"number","description":"cohortA rate minus cohortB rate, in percentage points (12.5 = twelve and a half points). Null when a side has no readable deals — never 0.","isRequired":true,"uniqueKey":"observed.gapPoints.oneOf.0","typeLabel":"number"},{"type":"null","description":"cohortA rate minus cohortB rate, in percentage points (12.5 = twelve and a half points). Null when a side has no readable deals — never 0.","isRequired":true,"uniqueKey":"observed.gapPoints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"observed.gapPoints","typeLabel":"number | null"},"unavailableReason":{"oneOf":[{"type":"string","enum":["no_readable_deals_in_cohort_a","no_readable_deals_in_cohort_b",null],"isRequired":true,"uniqueKey":"observed.unavailableReason.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["no_readable_deals_in_cohort_a","no_readable_deals_in_cohort_b",null],"isRequired":true,"uniqueKey":"observed.unavailableReason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"observed.unavailableReason","typeLabel":"enum\u003cstring> | null"},"summary":{"type":"string","description":"The observation in one sentence, with the exact counts. Safe to report as what happened in these deals.","isRequired":true,"uniqueKey":"observed.summary","typeLabel":"string"}},"required":["higher","gapPoints","unavailableReason","summary"],"description":"The descriptive result. ALWAYS reportable, in every verdict state: say which side is higher, by how much and on how many deals. It needs no significance test. What the verdict adds is how far you may go beyond these deals.","isRequired":true,"uniqueKey":"observed","typeLabel":"object"},"exclusions":{"type":"object","properties":{"postOutcomeOnly":{"type":"integer","description":"Closed deals whose matching conversations all happened after the deal closed. A topic discussed during onboarding is not evidence about the sale.","isRequired":true,"uniqueKey":"exclusions.postOutcomeOnly","typeLabel":"integer"},"orderUnknown":{"type":"integer","description":"Closed deals where no matching conversation can be shown to precede the close: the close time is only a date and the conversation fell on it, or the close was detected by sync (so its recorded time trails the real one) and the conversation fell inside that allowance, or the deal has no close date at all.","isRequired":true,"uniqueKey":"exclusions.orderUnknown","typeLabel":"integer"},"reopened":{"type":"integer","description":"Closed deals that closed, reopened and closed again. Only a first sales episode is measured, so these are left out rather than paired with the wrong episode's conversations.","isRequired":true,"uniqueKey":"exclusions.reopened","typeLabel":"integer"},"ambiguousExposure":{"type":"integer","description":"Deals left out of BOTH sides because they match the other cohort only through a looser link than the chosen scope — their exposure is unclear, so they belong in neither arm.","isRequired":true,"uniqueKey":"exclusions.ambiguousExposure","typeLabel":"integer"}},"required":["postOutcomeOnly","orderUnknown","reopened","ambiguousExposure"],"description":"Deals that matched but were not compared, by reason. Each deal is counted under one reason.","isRequired":true,"uniqueKey":"exclusions","typeLabel":"object"},"membershipBasis":{"type":"object","properties":{"open":{"type":"integer","description":"Still open: there is no close to precede.","isRequired":true,"uniqueKey":"membershipBasis.open","typeLabel":"integer"},"crmRecordedClose":{"type":"integer","description":"Ordered against a close time the CRM recorded. Known order.","isRequired":true,"uniqueKey":"membershipBasis.crmRecordedClose","typeLabel":"integer"},"syncDetectedCloseAssumed":{"type":"integer","description":"Ordered against a close Octave detected during sync, which is recorded later than the real close by an unknown amount. These deals count as pre-close ONLY under the sync-lag assumption (syncLagAllowanceDays): an outage or a backfill can exceed it.","isRequired":true,"uniqueKey":"membershipBasis.syncDetectedCloseAssumed","typeLabel":"integer"},"dateOnlyClose":{"type":"integer","description":"Ordered by calendar day against a close date with no time. Days are compared in UTC — a convention, not the CRM's own calendar day.","isRequired":true,"uniqueKey":"membershipBasis.dateOnlyClose","typeLabel":"integer"},"syncLagAllowanceDays":{"type":"integer","isRequired":true,"uniqueKey":"membershipBasis.syncLagAllowanceDays","typeLabel":"integer"}},"required":["open","crmRecordedClose","syncDetectedCloseAssumed","dateOnlyClose","syncLagAllowanceDays"],"description":"How the compared deals were shown to have a conversation before their outcome, as counts of deals. When most rest on the sync-lag assumption, read timingSensitivity.","isRequired":true,"uniqueKey":"membershipBasis","typeLabel":"object"},"timingSensitivity":{"type":"object","properties":{"cohortA":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortA.deals","typeLabel":"integer"},"readable":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortA.readable","typeLabel":"integer"},"successes":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortA.successes","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"timingSensitivity.cohortA.rate.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"timingSensitivity.cohortA.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"timingSensitivity.cohortA.rate","typeLabel":"number | null"}},"required":["deals","readable","successes","rate"],"isRequired":true,"uniqueKey":"timingSensitivity.cohortA","typeLabel":"object"},"cohortB":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortB.deals","typeLabel":"integer"},"readable":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortB.readable","typeLabel":"integer"},"successes":{"type":"integer","isRequired":true,"uniqueKey":"timingSensitivity.cohortB.successes","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"timingSensitivity.cohortB.rate.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"timingSensitivity.cohortB.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"timingSensitivity.cohortB.rate","typeLabel":"number | null"}},"required":["deals","readable","successes","rate"],"isRequired":true,"uniqueKey":"timingSensitivity.cohortB","typeLabel":"object"},"gapPoints":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"timingSensitivity.gapPoints.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"timingSensitivity.gapPoints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"timingSensitivity.gapPoints","typeLabel":"number | null"},"higher":{"oneOf":[{"type":"string","enum":["cohortA","cohortB","equal",null],"isRequired":true,"uniqueKey":"timingSensitivity.higher.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["cohortA","cohortB","equal",null],"isRequired":true,"uniqueKey":"timingSensitivity.higher.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"timingSensitivity.higher","typeLabel":"enum\u003cstring> | null"},"directionAgrees":{"oneOf":[{"type":"boolean","description":"Whether the strict-timing comparison puts the same side higher as the main one. Null when either has no readable gap.","isRequired":true,"uniqueKey":"timingSensitivity.directionAgrees.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether the strict-timing comparison puts the same side higher as the main one. Null when either has no readable gap.","isRequired":true,"uniqueKey":"timingSensitivity.directionAgrees.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"timingSensitivity.directionAgrees","typeLabel":"boolean | null"}},"required":["cohortA","cohortB","gapPoints","higher","directionAgrees"],"description":"The same comparison keeping only deals whose order is KNOWN: still open, or closed at a time the CRM recorded. It drops every deal admitted under the sync-lag assumption or a date-only close, so it is smaller. If the direction changes here, the main result rests on an assumption about timing — say so.","isRequired":true,"uniqueKey":"timingSensitivity","typeLabel":"object"},"acrossLinkScopes":{"type":"object","properties":{"scopes":{"type":"array","items":{"type":"object","properties":{"linkScope":{"type":"string","enum":["crm_linked","single_candidate","outcome_attribution","account_associated"],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].linkScope","typeLabel":"enum\u003cstring>"},"cohortA":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.deals","typeLabel":"integer"},"readable":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.readable","typeLabel":"integer"},"successes":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.successes","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.rate.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA.rate","typeLabel":"number | null"}},"required":["deals","readable","successes","rate"],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortA","typeLabel":"object"},"cohortB":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.deals","typeLabel":"integer"},"readable":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.readable","typeLabel":"integer"},"successes":{"type":"integer","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.successes","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.rate.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB.rate","typeLabel":"number | null"}},"required":["deals","readable","successes","rate"],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].cohortB","typeLabel":"object"},"gapPoints":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].gapPoints.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].gapPoints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].gapPoints","typeLabel":"number | null"},"higher":{"oneOf":[{"type":"string","enum":["cohortA","cohortB","equal",null],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].higher.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["cohortA","cohortB","equal",null],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].higher.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX].higher","typeLabel":"enum\u003cstring> | null"}},"required":["linkScope","cohortA","cohortB","gapPoints","higher"],"uniqueKey":"acrossLinkScopes.scopes.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"acrossLinkScopes.scopes","typeLabel":"object[]"},"directionAgrees":{"oneOf":[{"type":"boolean","description":"Whether every scope with a readable gap puts the same side higher. False means the answer depends on how firmly conversations are tied to deals — say so. Null when fewer than two scopes have a gap.","isRequired":true,"uniqueKey":"acrossLinkScopes.directionAgrees.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"Whether every scope with a readable gap puts the same side higher. False means the answer depends on how firmly conversations are tied to deals — say so. Null when fewer than two scopes have a gap.","isRequired":true,"uniqueKey":"acrossLinkScopes.directionAgrees.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"acrossLinkScopes.directionAgrees","typeLabel":"boolean | null"}},"required":["scopes","directionAgrees"],"description":"The same comparison under each link scope, firmest first. A firmer scope is a smaller and differently selected population, not simply a more correct one: deals a rep attaches activity to in the CRM are not a random sample, and the direction of that difference is not stable.","isRequired":true,"uniqueKey":"acrossLinkScopes","typeLabel":"object"},"cohortA":{"type":"object","properties":{"label":{"type":"string","isRequired":true,"uniqueKey":"cohortA.label","typeLabel":"string"},"deals":{"type":"integer","description":"Distinct CRM deals with at least one matching event in the window.","isRequired":true,"uniqueKey":"cohortA.deals","typeLabel":"integer"},"wonDeals":{"type":"integer","isRequired":true,"uniqueKey":"cohortA.wonDeals","typeLabel":"integer"},"lostDeals":{"type":"integer","isRequired":true,"uniqueKey":"cohortA.lostDeals","typeLabel":"integer"},"openDeals":{"type":"integer","description":"Still open — counted in `deals`, never in the win rate.","isRequired":true,"uniqueKey":"cohortA.openDeals","typeLabel":"integer"},"winRate":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"cohortA.winRate.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortA.winRate.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortA.winRate.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.winRate.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortA.winRate.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortA.winRate.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.winRate.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortA.winRate.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortA.winRate.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.winRate.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"cohortA.winRate.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small.","isRequired":true,"uniqueKey":"cohortA.winRate","typeLabel":"object"},"knownWonValue":{"oneOf":[{"type":"number","description":"Sum of the home-currency values of the won deals whose value is KNOWN and not negative. NOT revenue and not a total for the side: read it with wonDealsWithValue, and see wonDealsValueMissing, wonDealsValueUnconverted and negativeValueWonDeals for what it leaves out. Null — never 0 — when no won deal has a known value. It differs from the Insights won-amount figure, which counts unknown values as 0 and nets negative ones.","isRequired":true,"uniqueKey":"cohortA.knownWonValue.oneOf.0","typeLabel":"number"},{"type":"null","description":"Sum of the home-currency values of the won deals whose value is KNOWN and not negative. NOT revenue and not a total for the side: read it with wonDealsWithValue, and see wonDealsValueMissing, wonDealsValueUnconverted and negativeValueWonDeals for what it leaves out. Null — never 0 — when no won deal has a known value. It differs from the Insights won-amount figure, which counts unknown values as 0 and nets negative ones.","isRequired":true,"uniqueKey":"cohortA.knownWonValue.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.knownWonValue","typeLabel":"number | null"},"wonDealsWithValue":{"type":"integer","description":"Won deals with a known, non-negative home-currency value, a genuine zero included. When this is below wonDeals, wonAmount is incomplete.","isRequired":true,"uniqueKey":"cohortA.wonDealsWithValue","typeLabel":"integer"},"wonDealsValueMissing":{"type":"integer","description":"Won deals whose CRM value field is empty.","isRequired":true,"uniqueKey":"cohortA.wonDealsValueMissing","typeLabel":"integer"},"wonDealsValueUnconverted":{"type":"integer","description":"Won deals that have a CRM value but no home-currency one: it could not be converted.","isRequired":true,"uniqueKey":"cohortA.wonDealsValueUnconverted","typeLabel":"integer"},"negativeValueWonDeals":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"cohortA.negativeValueWonDeals.deals","typeLabel":"integer"},"amount":{"type":"number","isRequired":true,"uniqueKey":"cohortA.negativeValueWonDeals.amount","typeLabel":"number"}},"required":["deals","amount"],"description":"Won deals carrying a negative value, and their sum. Kept out of knownWonValue rather than netted into it — a change of measure, stated here so it is not silent. A negative value can be a legitimate adjustment (a CRM amount field that records a change in contract value), not a bad record.","isRequired":true,"uniqueKey":"cohortA.negativeValueWonDeals","typeLabel":"object"},"medianWonDealSize":{"oneOf":[{"type":"number","description":"Median over the same deals as knownWonValue (known, non-negative values, a genuine zero included). Median, not mean: one outsized deal does not move it.","isRequired":true,"uniqueKey":"cohortA.medianWonDealSize.oneOf.0","typeLabel":"number"},{"type":"null","description":"Median over the same deals as knownWonValue (known, non-negative values, a genuine zero included). Median, not mean: one outsized deal does not move it.","isRequired":true,"uniqueKey":"cohortA.medianWonDealSize.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.medianWonDealSize","typeLabel":"number | null"},"outcome":{"type":"object","properties":{"successes":{"type":"integer","isRequired":true,"uniqueKey":"cohortA.outcome.successes","typeLabel":"integer"},"failures":{"type":"integer","isRequired":true,"uniqueKey":"cohortA.outcome.failures","typeLabel":"integer"},"notObservable":{"type":"integer","description":"Deals the outcome cannot be read for yet, or at all (see definition.exclusions). In `deals`, never in the rate.","isRequired":true,"uniqueKey":"cohortA.outcome.notObservable","typeLabel":"integer"},"notObservableReasons":{"type":"object","properties":{"deal_still_open":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.deal_still_open","typeLabel":"integer"},"window_not_elapsed":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.window_not_elapsed","typeLabel":"integer"},"stay_not_yet_longer_than_median":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.stay_not_yet_longer_than_median","typeLabel":"integer"},"no_open_stage_on_record_at_anchor":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.no_open_stage_on_record_at_anchor","typeLabel":"integer"},"no_open_stage_or_no_dependable_median":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.no_open_stage_or_no_dependable_median","typeLabel":"integer"},"no_scored_follow_up":{"type":"integer","uniqueKey":"cohortA.outcome.notObservableReasons.no_scored_follow_up","typeLabel":"integer"}},"description":"notObservable split by reason; the counts add up to it. deal_still_open, window_not_elapsed and stay_not_yet_longer_than_median resolve by waiting. no_open_stage_on_record_at_anchor, no_open_stage_or_no_dependable_median and no_scored_follow_up are missing data: waiting does not fix them.","isRequired":true,"uniqueKey":"cohortA.outcome.notObservableReasons","typeLabel":"object"},"rate":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.outcome.rate.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.outcome.rate.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortA.outcome.rate.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"cohortA.outcome.rate.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"successes / (successes + failures) with its 95% interval. Here `closedDeals` is the number of deals with an observable outcome; for win_rate that is the closed deals and this equals `winRate`.","isRequired":true,"uniqueKey":"cohortA.outcome.rate","typeLabel":"object"}},"required":["successes","failures","notObservable","notObservableReasons","rate"],"description":"This side on the outcome being compared. `difference` and `verdict` are about this rate.","isRequired":true,"uniqueKey":"cohortA.outcome","typeLabel":"object"}},"required":["label","deals","wonDeals","lostDeals","openDeals","winRate","knownWonValue","wonDealsWithValue","wonDealsValueMissing","wonDealsValueUnconverted","negativeValueWonDeals","medianWonDealSize","outcome"],"isRequired":true,"uniqueKey":"cohortA","typeLabel":"object"},"cohortB":{"type":"object","properties":{"label":{"type":"string","isRequired":true,"uniqueKey":"cohortB.label","typeLabel":"string"},"deals":{"type":"integer","description":"Distinct CRM deals with at least one matching event in the window.","isRequired":true,"uniqueKey":"cohortB.deals","typeLabel":"integer"},"wonDeals":{"type":"integer","isRequired":true,"uniqueKey":"cohortB.wonDeals","typeLabel":"integer"},"lostDeals":{"type":"integer","isRequired":true,"uniqueKey":"cohortB.lostDeals","typeLabel":"integer"},"openDeals":{"type":"integer","description":"Still open — counted in `deals`, never in the win rate.","isRequired":true,"uniqueKey":"cohortB.openDeals","typeLabel":"integer"},"winRate":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"cohortB.winRate.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortB.winRate.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortB.winRate.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.winRate.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortB.winRate.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortB.winRate.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.winRate.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortB.winRate.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortB.winRate.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.winRate.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"cohortB.winRate.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small.","isRequired":true,"uniqueKey":"cohortB.winRate","typeLabel":"object"},"knownWonValue":{"oneOf":[{"type":"number","description":"Sum of the home-currency values of the won deals whose value is KNOWN and not negative. NOT revenue and not a total for the side: read it with wonDealsWithValue, and see wonDealsValueMissing, wonDealsValueUnconverted and negativeValueWonDeals for what it leaves out. Null — never 0 — when no won deal has a known value. It differs from the Insights won-amount figure, which counts unknown values as 0 and nets negative ones.","isRequired":true,"uniqueKey":"cohortB.knownWonValue.oneOf.0","typeLabel":"number"},{"type":"null","description":"Sum of the home-currency values of the won deals whose value is KNOWN and not negative. NOT revenue and not a total for the side: read it with wonDealsWithValue, and see wonDealsValueMissing, wonDealsValueUnconverted and negativeValueWonDeals for what it leaves out. Null — never 0 — when no won deal has a known value. It differs from the Insights won-amount figure, which counts unknown values as 0 and nets negative ones.","isRequired":true,"uniqueKey":"cohortB.knownWonValue.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.knownWonValue","typeLabel":"number | null"},"wonDealsWithValue":{"type":"integer","description":"Won deals with a known, non-negative home-currency value, a genuine zero included. When this is below wonDeals, wonAmount is incomplete.","isRequired":true,"uniqueKey":"cohortB.wonDealsWithValue","typeLabel":"integer"},"wonDealsValueMissing":{"type":"integer","description":"Won deals whose CRM value field is empty.","isRequired":true,"uniqueKey":"cohortB.wonDealsValueMissing","typeLabel":"integer"},"wonDealsValueUnconverted":{"type":"integer","description":"Won deals that have a CRM value but no home-currency one: it could not be converted.","isRequired":true,"uniqueKey":"cohortB.wonDealsValueUnconverted","typeLabel":"integer"},"negativeValueWonDeals":{"type":"object","properties":{"deals":{"type":"integer","isRequired":true,"uniqueKey":"cohortB.negativeValueWonDeals.deals","typeLabel":"integer"},"amount":{"type":"number","isRequired":true,"uniqueKey":"cohortB.negativeValueWonDeals.amount","typeLabel":"number"}},"required":["deals","amount"],"description":"Won deals carrying a negative value, and their sum. Kept out of knownWonValue rather than netted into it — a change of measure, stated here so it is not silent. A negative value can be a legitimate adjustment (a CRM amount field that records a change in contract value), not a bad record.","isRequired":true,"uniqueKey":"cohortB.negativeValueWonDeals","typeLabel":"object"},"medianWonDealSize":{"oneOf":[{"type":"number","description":"Median over the same deals as knownWonValue (known, non-negative values, a genuine zero included). Median, not mean: one outsized deal does not move it.","isRequired":true,"uniqueKey":"cohortB.medianWonDealSize.oneOf.0","typeLabel":"number"},{"type":"null","description":"Median over the same deals as knownWonValue (known, non-negative values, a genuine zero included). Median, not mean: one outsized deal does not move it.","isRequired":true,"uniqueKey":"cohortB.medianWonDealSize.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.medianWonDealSize","typeLabel":"number | null"},"outcome":{"type":"object","properties":{"successes":{"type":"integer","isRequired":true,"uniqueKey":"cohortB.outcome.successes","typeLabel":"integer"},"failures":{"type":"integer","isRequired":true,"uniqueKey":"cohortB.outcome.failures","typeLabel":"integer"},"notObservable":{"type":"integer","description":"Deals the outcome cannot be read for yet, or at all (see definition.exclusions). In `deals`, never in the rate.","isRequired":true,"uniqueKey":"cohortB.outcome.notObservable","typeLabel":"integer"},"notObservableReasons":{"type":"object","properties":{"deal_still_open":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.deal_still_open","typeLabel":"integer"},"window_not_elapsed":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.window_not_elapsed","typeLabel":"integer"},"stay_not_yet_longer_than_median":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.stay_not_yet_longer_than_median","typeLabel":"integer"},"no_open_stage_on_record_at_anchor":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.no_open_stage_on_record_at_anchor","typeLabel":"integer"},"no_open_stage_or_no_dependable_median":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.no_open_stage_or_no_dependable_median","typeLabel":"integer"},"no_scored_follow_up":{"type":"integer","uniqueKey":"cohortB.outcome.notObservableReasons.no_scored_follow_up","typeLabel":"integer"}},"description":"notObservable split by reason; the counts add up to it. deal_still_open, window_not_elapsed and stay_not_yet_longer_than_median resolve by waiting. no_open_stage_on_record_at_anchor, no_open_stage_or_no_dependable_median and no_scored_follow_up are missing data: waiting does not fix them.","isRequired":true,"uniqueKey":"cohortB.outcome.notObservableReasons","typeLabel":"object"},"rate":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.outcome.rate.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.outcome.rate.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"cohortB.outcome.rate.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"cohortB.outcome.rate.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"successes / (successes + failures) with its 95% interval. Here `closedDeals` is the number of deals with an observable outcome; for win_rate that is the closed deals and this equals `winRate`.","isRequired":true,"uniqueKey":"cohortB.outcome.rate","typeLabel":"object"}},"required":["successes","failures","notObservable","notObservableReasons","rate"],"description":"This side on the outcome being compared. `difference` and `verdict` are about this rate.","isRequired":true,"uniqueKey":"cohortB.outcome","typeLabel":"object"}},"required":["label","deals","wonDeals","lostDeals","openDeals","winRate","knownWonValue","wonDealsWithValue","wonDealsValueMissing","wonDealsValueUnconverted","negativeValueWonDeals","medianWonDealSize","outcome"],"isRequired":true,"uniqueKey":"cohortB","typeLabel":"object"},"overlappingDeals":{"type":"integer","description":"Deals that matched BOTH cohorts. They are left out of both arms so the two samples are independent; always 0 when cohort B is 'everything else'.","isRequired":true,"uniqueKey":"overlappingDeals","typeLabel":"integer"},"difference":{"type":"object","properties":{"points":{"oneOf":[{"type":"number","description":"cohortA outcome rate minus cohortB outcome rate, as a fraction (0.12 = 12 points).","isRequired":true,"uniqueKey":"difference.points.oneOf.0","typeLabel":"number"},{"type":"null","description":"cohortA outcome rate minus cohortB outcome rate, as a fraction (0.12 = 12 points).","isRequired":true,"uniqueKey":"difference.points.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.points","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"difference.low.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"difference.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"difference.high.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"difference.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.high","typeLabel":"number | null"},"ratio":{"oneOf":[{"type":"number","description":"cohortA outcome rate / cohortB outcome rate.","isRequired":true,"uniqueKey":"difference.ratio.oneOf.0","typeLabel":"number"},{"type":"null","description":"cohortA outcome rate / cohortB outcome rate.","isRequired":true,"uniqueKey":"difference.ratio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.ratio","typeLabel":"number | null"},"pValue":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"difference.pValue.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"difference.pValue.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.pValue","typeLabel":"number | null"},"adjustedPValue":{"oneOf":[{"type":"number","description":"pValue corrected for `comparisonsDeclared`. The verdict is based on this one.","isRequired":true,"uniqueKey":"difference.adjustedPValue.oneOf.0","typeLabel":"number"},{"type":"null","description":"pValue corrected for `comparisonsDeclared`. The verdict is based on this one.","isRequired":true,"uniqueKey":"difference.adjustedPValue.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.adjustedPValue","typeLabel":"number | null"},"comparisonsDeclared":{"type":"integer","isRequired":true,"uniqueKey":"difference.comparisonsDeclared","typeLabel":"integer"},"test":{"oneOf":[{"type":"string","enum":["fisher_exact","two_proportion_z",null],"isRequired":true,"uniqueKey":"difference.test.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["fisher_exact","two_proportion_z",null],"isRequired":true,"uniqueKey":"difference.test.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"difference.test","typeLabel":"enum\u003cstring> | null"}},"required":["points","low","high","ratio","pValue","adjustedPValue","comparisonsDeclared","test"],"description":"The gap between the two sides on the compared outcome, with a 95% interval.","isRequired":true,"uniqueKey":"difference","typeLabel":"object"},"verdict":{"type":"object","properties":{"state":{"type":"string","enum":["insufficient_evidence","no_material_difference","difference_to_watch","difference_to_investigate"],"description":"How far the observed difference can be taken beyond these deals. It never decides whether to report `observed`. insufficient_evidence: report the observed direction as directional or early, with its counts; do not present it as a general pattern. `uncertainty` says why, and what would help. no_material_difference: enough data to rule out a gap of the declared margin either way — the two perform alike. difference_to_watch: leans one way without clearing the bar — a lead; a cheap, reversible test is proportionate. difference_to_investigate: survives correction for the comparisons made — state it with its interval and look for the reason. The interval and p-value measure sampling noise only. Selection (which deals got linked), missing coverage and confounding are separate, and a small p-value does not remove them.","isRequired":true,"uniqueKey":"verdict.state","typeLabel":"enum\u003cstring>"},"uncertainty":{"oneOf":[{"type":"string","enum":["small_sample","immature_outcomes","low_coverage",null],"description":"Set when state is insufficient_evidence or difference_to_watch. small_sample: too few readable deals — say it is directional, suggest a reversible test. immature_outcomes: most deals cannot be read yet — say it is early and when to look again. low_coverage: a material share of the evidence is missing — say what is missing.","isRequired":true,"uniqueKey":"verdict.uncertainty.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["small_sample","immature_outcomes","low_coverage",null],"description":"Set when state is insufficient_evidence or difference_to_watch. small_sample: too few readable deals — say it is directional, suggest a reversible test. immature_outcomes: most deals cannot be read yet — say it is early and when to look again. low_coverage: a material share of the evidence is missing — say what is missing.","isRequired":true,"uniqueKey":"verdict.uncertainty.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"verdict.uncertainty","typeLabel":"enum\u003cstring> | null"},"claimLevel":{"type":"string","enum":["observed","compared","associated"],"description":"The strongest wording this supports. observed: quote counts and rates only, no 'more' or 'less'. compared: 'A won more often than B', with the interval. associated: 'X is associated with winning'. Never 'drives', 'causes' or 'because': these cohorts were not assigned at random.","isRequired":true,"uniqueKey":"verdict.claimLevel","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","description":"One plain sentence stating the verdict and why.","isRequired":true,"uniqueKey":"verdict.summary","typeLabel":"string"}},"required":["state","uncertainty","claimLevel","summary"],"isRequired":true,"uniqueKey":"verdict","typeLabel":"object"},"sampleNeeded":{"type":"object","properties":{"dealsPerCohort":{"oneOf":[{"type":"integer","isRequired":true,"uniqueKey":"sampleNeeded.dealsPerCohort.oneOf.0","typeLabel":"integer"},{"type":"null","isRequired":true,"uniqueKey":"sampleNeeded.dealsPerCohort.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"sampleNeeded.dealsPerCohort","typeLabel":"integer | null"},"smallerCohortHas":{"type":"integer","isRequired":true,"uniqueKey":"sampleNeeded.smallerCohortHas","typeLabel":"integer"}},"required":["dealsPerCohort","smallerCohortHas"],"description":"Deals with an observable outcome (closed deals, for win_rate) EACH cohort would need to confirm a gap of the size observed (95% confidence, 80% power), next to what the smaller cohort has. When the evidence is insufficient this says how far away an answer is.","isRequired":true,"uniqueKey":"sampleNeeded","typeLabel":"object"},"stratified":{"oneOf":[{"type":"object","properties":{"by":{"type":"string","isRequired":true,"uniqueKey":"stratified.oneOf.0.by","typeLabel":"string"},"strata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].key","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].name","typeLabel":"string"},"cohortA":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortA","typeLabel":"object"},"cohortB":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.closedDeals","typeLabel":"integer"},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.rate.oneOf.0","typeLabel":"number"},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.rate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.rate","typeLabel":"number | null"},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.low.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, lower bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.low.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.low","typeLabel":"number | null"},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.high.oneOf.0","typeLabel":"number"},{"type":"null","description":"95% interval, upper bound.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.high.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.high","typeLabel":"number | null"},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB.sampleSizeBand","typeLabel":"enum\u003cstring>"}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small.","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].cohortB","typeLabel":"object"},"differencePoints":{"oneOf":[{"type":"number","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].differencePoints.oneOf.0","typeLabel":"number"},{"type":"null","isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].differencePoints.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX].differencePoints","typeLabel":"number | null"}},"required":["key","name","cohortA","cohortB","differencePoints"],"uniqueKey":"stratified.oneOf.0.strata.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"stratified.oneOf.0.strata","typeLabel":"object[]"},"pooledOddsRatio":{"oneOf":[{"type":"number","description":"Odds of a success on the compared `outcome` (a win, for win_rate), cohort A vs B, among deals in the SAME stratum (Mantel–Haenszel). Above 1 favours A.","isRequired":true,"uniqueKey":"stratified.oneOf.0.pooledOddsRatio.oneOf.0","typeLabel":"number"},{"type":"null","description":"Odds of a success on the compared `outcome` (a win, for win_rate), cohort A vs B, among deals in the SAME stratum (Mantel–Haenszel). Above 1 favours A.","isRequired":true,"uniqueKey":"stratified.oneOf.0.pooledOddsRatio.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.pooledOddsRatio","typeLabel":"number | null"},"pValue":{"oneOf":[{"type":"number","description":"Pooled test, corrected for comparisonsDeclared like the headline.","isRequired":true,"uniqueKey":"stratified.oneOf.0.pValue.oneOf.0","typeLabel":"number"},{"type":"null","description":"Pooled test, corrected for comparisonsDeclared like the headline.","isRequired":true,"uniqueKey":"stratified.oneOf.0.pValue.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified.oneOf.0.pValue","typeLabel":"number | null"},"holdsWithinStrata":{"type":"string","enum":["yes","same_direction_unconfirmed","no","reverses","cannot_tell"],"description":"yes: A is also ahead among like deals, and the pooled test clears the corrected bar. same_direction_unconfirmed: like for like the gap points the same way, but the strata are too thin to confirm it — this does NOT mean the mix explains the gap. no: like for like the odds are close to even (or lean the other way, unconfirmed) — the overall gap owes more to which groups the cohorts sit in than to what defines them. reverses: like for like, B is ahead, and confirmed (Simpson's paradox) — do not report the overall gap. cannot_tell: too few strata hold both cohorts and both outcomes.","isRequired":true,"uniqueKey":"stratified.oneOf.0.holdsWithinStrata","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","isRequired":true,"uniqueKey":"stratified.oneOf.0.summary","typeLabel":"string"}},"required":["by","strata","pooledOddsRatio","pValue","holdsWithinStrata","summary"],"description":"The same comparison made within each value of `stratifyBy`, then pooled. Null unless stratifyBy was given.","isRequired":true,"uniqueKey":"stratified.oneOf.0","typeLabel":"object"},{"type":"null","properties":{"by":{"type":"string"},"strata":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"cohortA":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it."},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals."},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals."}]},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound."},{"type":"null","description":"95% interval, lower bound."}]},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound."},{"type":"null","description":"95% interval, upper bound."}]},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values."}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small."},"cohortB":{"type":"object","properties":{"closedDeals":{"type":"integer","description":"Won + lost deals behind the rate. Open deals are not in it."},"rate":{"oneOf":[{"type":"number","description":"won / closedDeals, 0..1; null with no closed deals."},{"type":"null","description":"won / closedDeals, 0..1; null with no closed deals."}]},"low":{"oneOf":[{"type":"number","description":"95% interval, lower bound."},{"type":"null","description":"95% interval, lower bound."}]},"high":{"oneOf":[{"type":"number","description":"95% interval, upper bound."},{"type":"null","description":"95% interval, upper bound."}]},"sampleSizeBand":{"type":"string","enum":["insufficient","low","medium","high"],"description":"Sample-size band only; not confidence in attribution, product alignment, or causality: insufficient (\u003c3 closed deals — do not quote the rate), low (\u003c5), medium (\u003c15), high. Two rates whose intervals overlap heavily are not distinguishable, whatever their point values."}},"required":["closedDeals","rate","low","high","sampleSizeBand"],"description":"A win rate with its 95% Wilson interval and sample size. Quote the interval, not just the rate, when the sample is small."},"differencePoints":{"oneOf":[{"type":"number"},{"type":"null"}]}},"required":["key","name","cohortA","cohortB","differencePoints"]}},"pooledOddsRatio":{"oneOf":[{"type":"number","description":"Odds of a success on the compared `outcome` (a win, for win_rate), cohort A vs B, among deals in the SAME stratum (Mantel–Haenszel). Above 1 favours A."},{"type":"null","description":"Odds of a success on the compared `outcome` (a win, for win_rate), cohort A vs B, among deals in the SAME stratum (Mantel–Haenszel). Above 1 favours A."}]},"pValue":{"oneOf":[{"type":"number","description":"Pooled test, corrected for comparisonsDeclared like the headline."},{"type":"null","description":"Pooled test, corrected for comparisonsDeclared like the headline."}]},"holdsWithinStrata":{"type":"string","enum":["yes","same_direction_unconfirmed","no","reverses","cannot_tell"],"description":"yes: A is also ahead among like deals, and the pooled test clears the corrected bar. same_direction_unconfirmed: like for like the gap points the same way, but the strata are too thin to confirm it — this does NOT mean the mix explains the gap. no: like for like the odds are close to even (or lean the other way, unconfirmed) — the overall gap owes more to which groups the cohorts sit in than to what defines them. reverses: like for like, B is ahead, and confirmed (Simpson's paradox) — do not report the overall gap. cannot_tell: too few strata hold both cohorts and both outcomes."},"summary":{"type":"string"}},"required":["by","strata","pooledOddsRatio","pValue","holdsWithinStrata","summary"],"description":"The same comparison made within each value of `stratifyBy`, then pooled. Null unless stratifyBy was given.","isRequired":true,"uniqueKey":"stratified.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stratified","typeLabel":"object | null"},"caveats":{"type":"array","items":{"type":"string","uniqueKey":"caveats.items.[INDEX]","typeLabel":"string"},"description":"Things about this data that limit what the numbers support. Read them before quoting.","isRequired":true,"uniqueKey":"caveats","typeLabel":"string[]"},"summary":{"type":"string","description":"The readout in plain words: the observed result, the verdict, and, when a side has no readable outcome, why and which linkScope would read it. Quote counts from the structured fields.","isRequired":true,"uniqueKey":"summary","typeLabel":"string"},"dataWindow":{"type":"object","properties":{"kind":{"type":"string","enum":["event_range","stats_period"],"isRequired":true,"uniqueKey":"dataWindow.kind","typeLabel":"enum\u003cstring>"},"startDate":{"oneOf":[{"type":"string","description":"Inclusive start (ISO). Null when no data exists yet, or when events were fetched by oId and no window applied.","isRequired":true,"uniqueKey":"dataWindow.startDate.oneOf.0","typeLabel":"string"},{"type":"null","description":"Inclusive start (ISO). Null when no data exists yet, or when events were fetched by oId and no window applied.","isRequired":true,"uniqueKey":"dataWindow.startDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"dataWindow.startDate","typeLabel":"string | null"},"endDate":{"oneOf":[{"type":"string","description":"End (ISO). An event_range with no endDate given ends at the time of the request. Null when events were fetched by oId and no window applied.","isRequired":true,"uniqueKey":"dataWindow.endDate.oneOf.0","typeLabel":"string"},{"type":"null","description":"End (ISO). An event_range with no endDate given ends at the time of the request. Null when events were fetched by oId and no window applied.","isRequired":true,"uniqueKey":"dataWindow.endDate.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"dataWindow.endDate","typeLabel":"string | null"},"isDefault":{"type":"boolean","description":"True when the caller did not choose this window and the tool's default applied.","isRequired":true,"uniqueKey":"dataWindow.isDefault","typeLabel":"boolean"},"periodType":{"oneOf":[{"type":"string","enum":["week","month","quarter",null],"description":"week / month / quarter for a stats_period; null otherwise.","isRequired":true,"uniqueKey":"dataWindow.periodType.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["week","month","quarter",null],"description":"week / month / quarter for a stats_period; null otherwise.","isRequired":true,"uniqueKey":"dataWindow.periodType.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"dataWindow.periodType","typeLabel":"enum\u003cstring> | null"}},"required":["kind","startDate","endDate","isDefault","periodType"],"description":"The time span these numbers cover. Compare numbers from two tools only when their dataWindow kind and dates match.","isRequired":true,"uniqueKey":"dataWindow","typeLabel":"object"},"lossReasons":{"type":"object","properties":{"a":{"type":"object","properties":{"lost":{"type":"number","description":"Lost deals in this cohort.","isRequired":true,"uniqueKey":"lossReasons.a.lost","typeLabel":"number"},"withReason":{"type":"number","description":"Of those, how many have a CRM loss reason recorded.","isRequired":true,"uniqueKey":"lossReasons.a.withReason","typeLabel":"number"},"topReasons":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","isRequired":true,"uniqueKey":"lossReasons.a.topReasons.items.[INDEX].reason","typeLabel":"string"},"deals":{"type":"number","isRequired":true,"uniqueKey":"lossReasons.a.topReasons.items.[INDEX].deals","typeLabel":"number"}},"required":["reason","deals"],"uniqueKey":"lossReasons.a.topReasons.items.[INDEX]","typeLabel":"object"},"description":"The CRM's own closed-lost reasons, verbatim, most common first.","isRequired":true,"uniqueKey":"lossReasons.a.topReasons","typeLabel":"object[]"},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"lossReasons.a.categories.items.[INDEX].category.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"lossReasons.a.categories.items.[INDEX].category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"lossReasons.a.categories.items.[INDEX].category","typeLabel":"string | null"},"deals":{"type":"number","isRequired":true,"uniqueKey":"lossReasons.a.categories.items.[INDEX].deals","typeLabel":"number"}},"required":["category","deals"],"uniqueKey":"lossReasons.a.categories.items.[INDEX]","typeLabel":"object"},"description":"The same lost deals by loss-reason category; null means the reason is not mapped to one.","isRequired":true,"uniqueKey":"lossReasons.a.categories","typeLabel":"object[]"}},"required":["lost","withReason","topReasons","categories"],"description":"Why this cohort's deals were lost, in the CRM's words: read topReasons before naming a cause, since a category can be empty or unmapped while the reasons say exactly what happened.","isRequired":true,"uniqueKey":"lossReasons.a","typeLabel":"object"},"b":{"type":"object","properties":{"lost":{"type":"number","description":"Lost deals in this cohort.","isRequired":true,"uniqueKey":"lossReasons.b.lost","typeLabel":"number"},"withReason":{"type":"number","description":"Of those, how many have a CRM loss reason recorded.","isRequired":true,"uniqueKey":"lossReasons.b.withReason","typeLabel":"number"},"topReasons":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","isRequired":true,"uniqueKey":"lossReasons.b.topReasons.items.[INDEX].reason","typeLabel":"string"},"deals":{"type":"number","isRequired":true,"uniqueKey":"lossReasons.b.topReasons.items.[INDEX].deals","typeLabel":"number"}},"required":["reason","deals"],"uniqueKey":"lossReasons.b.topReasons.items.[INDEX]","typeLabel":"object"},"description":"The CRM's own closed-lost reasons, verbatim, most common first.","isRequired":true,"uniqueKey":"lossReasons.b.topReasons","typeLabel":"object[]"},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"lossReasons.b.categories.items.[INDEX].category.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"lossReasons.b.categories.items.[INDEX].category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"lossReasons.b.categories.items.[INDEX].category","typeLabel":"string | null"},"deals":{"type":"number","isRequired":true,"uniqueKey":"lossReasons.b.categories.items.[INDEX].deals","typeLabel":"number"}},"required":["category","deals"],"uniqueKey":"lossReasons.b.categories.items.[INDEX]","typeLabel":"object"},"description":"The same lost deals by loss-reason category; null means the reason is not mapped to one.","isRequired":true,"uniqueKey":"lossReasons.b.categories","typeLabel":"object[]"}},"required":["lost","withReason","topReasons","categories"],"description":"Why this cohort's deals were lost, in the CRM's words: read topReasons before naming a cause, since a category can be empty or unmapped while the reasons say exactly what happened.","isRequired":true,"uniqueKey":"lossReasons.b","typeLabel":"object"}},"required":["a","b"],"description":"Each cohort's lost deals by the CRM's own loss reasons (a = cohortA, b = cohortB or every other deal). Ground any claim about why deals were lost in these verbatim reasons.","isRequired":true,"uniqueKey":"lossReasons","typeLabel":"object"},"attribution":{"type":"object","properties":{"a":{"type":"object","properties":{"deal":{"type":"integer","description":"Deals tied to a matching conversation at the deal itself (crm_linked or single_candidate).","isRequired":true,"uniqueKey":"attribution.a.deal","typeLabel":"integer"},"account":{"type":"integer","description":"Deals reached only through account-level matching (contact email or company domain).","isRequired":true,"uniqueKey":"attribution.a.account","typeLabel":"integer"},"sharesEvidenceWithOppositeOutcome":{"type":"integer","description":"Deals whose matching conversations also count for a sibling deal that closed the other way.","isRequired":true,"uniqueKey":"attribution.a.sharesEvidenceWithOppositeOutcome","typeLabel":"integer"}},"required":["deal","account","sharesEvidenceWithOppositeOutcome"],"isRequired":true,"uniqueKey":"attribution.a","typeLabel":"object"},"b":{"type":"object","properties":{"deal":{"type":"integer","description":"Deals tied to a matching conversation at the deal itself (crm_linked or single_candidate).","isRequired":true,"uniqueKey":"attribution.b.deal","typeLabel":"integer"},"account":{"type":"integer","description":"Deals reached only through account-level matching (contact email or company domain).","isRequired":true,"uniqueKey":"attribution.b.account","typeLabel":"integer"},"sharesEvidenceWithOppositeOutcome":{"type":"integer","description":"Deals whose matching conversations also count for a sibling deal that closed the other way.","isRequired":true,"uniqueKey":"attribution.b.sharesEvidenceWithOppositeOutcome","typeLabel":"integer"}},"required":["deal","account","sharesEvidenceWithOppositeOutcome"],"isRequired":true,"uniqueKey":"attribution.b","typeLabel":"object"}},"required":["a","b"],"description":"How each compared side's deals were tied to their conversations: deal (a CRM or manual link, or the only deal a conversation reaches) or account (contact-email or domain matching, which also reaches sibling deals), and how many share a conversation with a sibling deal that closed the other way. list_cohort_deals carries the same per deal.","isRequired":true,"uniqueKey":"attribution","typeLabel":"object"},"linkScopeSource":{"type":"string","enum":["request","workspace_default","product_default"],"description":"Where `linkScope` came from: request (the caller named it), workspace_default (the workspace's deal matching rule, set beside its CRM mappings) or product_default (outcome_attribution, when the workspace never chose). The Insights win rates use the workspace's rule, so only a comparison made under a `request` scope is expected to differ from them.","isRequired":true,"uniqueKey":"linkScopeSource","typeLabel":"enum\u003cstring>"}},"required":["_metadata","definition","linkScope","observed","exclusions","membershipBasis","timingSensitivity","acrossLinkScopes","cohortA","cohortB","overlappingDeals","difference","verdict","sampleNeeded","stratified","caveats","summary","dataWindow","lossReasons","attribution","linkScopeSource"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"_metadata":{"requestId":"requestId","timestamp":"2021-01-01T00:00:00.000Z","usage":0,"message":"message"},"definition":{"metric":"win_rate","label":"\u003cstring>","formula":"\u003cstring>","grain":"\u003cstring>","membership":"\u003cstring>","clock":"\u003cstring>","exclusions":["\u003cstring>"],"linkScope":"\u003cstring>","orderRule":"\u003cstring>","materialGapPoints":123,"currency":"\u003cstring>"},"linkScope":"crm_linked","observed":{"higher":"cohortA","gapPoints":123,"unavailableReason":"no_readable_deals_in_cohort_a","summary":"\u003cstring>"},"exclusions":{"postOutcomeOnly":123,"orderUnknown":123,"reopened":123,"ambiguousExposure":123},"membershipBasis":{"open":123,"crmRecordedClose":123,"syncDetectedCloseAssumed":123,"dateOnlyClose":123,"syncLagAllowanceDays":123},"timingSensitivity":{"cohortA":{"deals":123,"readable":123,"successes":123,"rate":123},"cohortB":{"deals":123,"readable":123,"successes":123,"rate":123},"gapPoints":123,"higher":"cohortA","directionAgrees":true},"acrossLinkScopes":{"scopes":[{"linkScope":"crm_linked","cohortA":{"deals":123,"readable":123,"successes":123,"rate":123},"cohortB":{"deals":123,"readable":123,"successes":123,"rate":123},"gapPoints":123,"higher":"cohortA"}],"directionAgrees":true},"cohortA":{"label":"\u003cstring>","deals":123,"wonDeals":123,"lostDeals":123,"openDeals":123,"winRate":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"},"knownWonValue":123,"wonDealsWithValue":123,"wonDealsValueMissing":123,"wonDealsValueUnconverted":123,"negativeValueWonDeals":{"deals":123,"amount":123},"medianWonDealSize":123,"outcome":{"successes":123,"failures":123,"notObservable":123,"notObservableReasons":{"deal_still_open":123,"window_not_elapsed":123,"stay_not_yet_longer_than_median":123,"no_open_stage_on_record_at_anchor":123,"no_open_stage_or_no_dependable_median":123,"no_scored_follow_up":123},"rate":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"}}},"cohortB":{"label":"\u003cstring>","deals":123,"wonDeals":123,"lostDeals":123,"openDeals":123,"winRate":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"},"knownWonValue":123,"wonDealsWithValue":123,"wonDealsValueMissing":123,"wonDealsValueUnconverted":123,"negativeValueWonDeals":{"deals":123,"amount":123},"medianWonDealSize":123,"outcome":{"successes":123,"failures":123,"notObservable":123,"notObservableReasons":{"deal_still_open":123,"window_not_elapsed":123,"stay_not_yet_longer_than_median":123,"no_open_stage_on_record_at_anchor":123,"no_open_stage_or_no_dependable_median":123,"no_scored_follow_up":123},"rate":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"}}},"overlappingDeals":123,"difference":{"points":123,"low":123,"high":123,"ratio":123,"pValue":123,"adjustedPValue":123,"comparisonsDeclared":123,"test":"fisher_exact"},"verdict":{"state":"insufficient_evidence","uncertainty":"small_sample","claimLevel":"observed","summary":"\u003cstring>"},"sampleNeeded":{"dealsPerCohort":123,"smallerCohortHas":123},"stratified":{"by":"\u003cstring>","strata":[{"key":"\u003cstring>","name":"\u003cstring>","cohortA":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"},"cohortB":{"closedDeals":123,"rate":123,"low":123,"high":123,"sampleSizeBand":"insufficient"},"differencePoints":123}],"pooledOddsRatio":123,"pValue":123,"holdsWithinStrata":"yes","summary":"\u003cstring>"},"caveats":["\u003cstring>"],"summary":"\u003cstring>","dataWindow":{"kind":"event_range","startDate":"\u003cstring>","endDate":"\u003cstring>","isDefault":true,"periodType":"week"},"lossReasons":{"a":{"lost":123,"withReason":123,"topReasons":[{"reason":"\u003cstring>","deals":123}],"categories":[{"category":"\u003cstring>","deals":123}]},"b":{"lost":123,"withReason":123,"topReasons":[{"reason":"\u003cstring>","deals":123}],"categories":[{"category":"\u003cstring>","deals":123}]}},"attribution":{"a":{"deal":123,"account":123,"sharesEvidenceWithOppositeOutcome":123},"b":{"deal":123,"account":123,"sharesEvidenceWithOppositeOutcome":123}},"linkScopeSource":"request"}}},"exampleType":"generated"}},"exampleType":"generated"},"e8fb41f0-c58b-467b-9e88-84d245f35ef0":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"_metadata":{"type":"object","properties":{"requestId":{"type":"string","example":"requestId","description":"Request ID","isRequired":true,"uniqueKey":"_metadata.requestId","typeLabel":"string"},"timestamp":{"type":"string","example":"2021-01-01T00:00:00.000Z","description":"Timestamp","isRequired":true,"uniqueKey":"_metadata.timestamp","typeLabel":"string"},"usage":{"type":"number","default":0,"example":0,"description":"API usage","uniqueKey":"_metadata.usage","typeLabel":"number"},"message":{"type":"string","example":"message","description":"Message","uniqueKey":"_metadata.message","typeLabel":"string"}},"required":["requestId","timestamp"],"isRequired":true,"uniqueKey":"_metadata","typeLabel":"object"},"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["_metadata","message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"_metadata":{"requestId":"requestId","timestamp":"2021-01-01T00:00:00.000Z","usage":0,"message":"message"},"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"3d8accbd-55f3-4c87-a1ae-93a55ea5cbe6":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"api_key","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"f63d943e-e794-4d9b-9a7b-416941042663":{"url":"https://app.octavehq.com"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"api_key","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"api_key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"api_key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"v2-api-reference/openapi.json"},"subdomain":"octave","siteName":"Octave API","title":"Compare Cohorts - Octave API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-29T17:28:34.294Z","originalFileLocation":"v2-api-reference/events/compare-cohorts.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Octave API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Compare Cohorts - Octave API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Octave API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://octave.mintlify.site/_mintlify/api/og/v2?division=Events\u0026amp;title=Compare+Cohorts\u0026amp;description=Test+whether+one+cohort+of+deals+does+better+than+another%2C+on+win+rate+or+a+leading+outcome+%28advanced+within+N+days%2C+faster+than+the+stage+median%2C+next+conversa\u0026amp;theme=685afbbc1a2a5768e8db8aff\u0026amp;signature=4573009e2833ac2503f1e41dfd9a041d6364cd3646b6ab3fe858d2f2990407f9\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Compare Cohorts - Octave API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://octave.mintlify.site/_mintlify/api/og/v2?division=Events\u0026amp;title=Compare+Cohorts\u0026amp;description=Test+whether+one+cohort+of+deals+does+better+than+another%2C+on+win+rate+or+a+leading+outcome+%28advanced+within+N+days%2C+faster+than+the+stage+median%2C+next+conversa\u0026amp;theme=685afbbc1a2a5768e8db8aff\u0026amp;signature=4573009e2833ac2503f1e41dfd9a041d6364cd3646b6ab3fe858d2f2990407f9\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/octave/FIdKYiabDumANUaD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Octave API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#333999\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2-api-reference/events/compare-cohorts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.octavehq.com/#organization\",\"name\":\"Octave API\",\"url\":\"https://docs.octavehq.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/octave/SNMu0rTVOCvjTqcW/logo/logo.svg?fit=max\u0026auto=format\u0026n=SNMu0rTVOCvjTqcW\u0026q=85\u0026s=4f2d9698f4a42a583deee9e8721a9211\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.octavehq.com#website\",\"name\":\"Octave API\",\"url\":\"https://docs.octavehq.com\",\"publisher\":{\"@id\":\"https://docs.octavehq.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts#webpage\",\"url\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts\",\"name\":\"Compare Cohorts\",\"description\":\"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\",\"dateModified\":\"2026-09-29T17:28:34.294Z\",\"isPartOf\":{\"@id\":\"https://docs.octavehq.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Events\",\"item\":\"https://docs.octavehq.com/v2-api-reference/events/list-events\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Compare Cohorts\",\"item\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts#apireference\",\"headline\":\"Compare Cohorts\",\"name\":\"Compare Cohorts\",\"description\":\"Test whether one cohort of deals does better than another, on win rate or a leading outcome (advanced within N days, faster than the stage median, next conversation positive). Cohorts are defined by event filters (or cohort A against every other deal). Returns each win rate with a 95% interval, the gap with its interval, a verdict (insufficient_evidence / no_material_difference / difference_to_watch / difference_to_investigate) with the strongest claim level the data supports, the definition of every number (formula, grain, clock, exclusions), the sample an unsettled question would need, an optional like-for-like check within a stratifying dimension, and caveats. REST twin of the compare_cohorts MCP tool.\",\"url\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts\",\"mainEntityOfPage\":{\"@id\":\"https://docs.octavehq.com/v2-api-reference/events/compare-cohorts#webpage\"},\"dateModified\":\"2026-09-29T17:28:34.294Z\",\"publisher\":{\"@id\":\"https://docs.octavehq.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.octavehq.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Octave API\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Octave API\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/v2-api-reference/events/compare-cohorts.md","siteName":"Octave API","nav":{"global":null,"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":"/introduction"}]},{"tab":"V2 API Reference","groups":[{"group":"Agents","pages":[{"openapi":"get /api/v2/agents/list","title":"List Agents","href":"/v2-api-reference/agents/list-agents"},{"openapi":"get /api/v2/agents/types","title":"List Agent Types","href":"/v2-api-reference/agents/list-agent-types"},{"openapi":"get /api/v2/agents/languages","title":"List Languages","href":"/v2-api-reference/agents/list-languages"},{"openapi":"get /api/v2/agents/get","title":"Get Agent","href":"/v2-api-reference/agents/get-agent"},{"openapi":"post /api/v2/agents/create","title":"Create Agent","href":"/v2-api-reference/agents/create-agent"},{"openapi":"post /api/v2/agents/update","title":"Update Agent","href":"/v2-api-reference/agents/update-agent"},{"openapi":"delete /api/v2/agents/delete","title":"Delete Agent","href":"/v2-api-reference/agents/delete-agent"},{"openapi":"post /api/v2/agents/experiment/create","title":"Create Agent Experiment","href":"/v2-api-reference/agents/create-agent-experiment"},{"openapi":"post /api/v2/agents/enrich-company/run","title":"Enrich Company Agent","href":"/v2-api-reference/agents/enrich-company-agent"},{"openapi":"post /api/v2/agents/enrich-person/run","title":"Enrich Person Agent","href":"/v2-api-reference/agents/enrich-person-agent"},{"openapi":"post /api/v2/agents/generate-content/run","title":"Content Agent","href":"/v2-api-reference/agents/content-agent"},{"openapi":"post /api/v2/agents/sequence/run","title":"Sequence Agent","href":"/v2-api-reference/agents/sequence-agent"},{"openapi":"post /api/v2/agents/prospector/run","title":"Prospector Agent","href":"/v2-api-reference/agents/prospector-agent"},{"openapi":"post /api/v2/agents/qualify-person/run","title":"Qualify Person Agent","href":"/v2-api-reference/agents/qualify-person-agent"},{"openapi":"post /api/v2/agents/qualify-company/run","title":"Qualify Company Agent","href":"/v2-api-reference/agents/qualify-company-agent"},{"openapi":"post /api/v2/agents/call-prep/run","title":"Call Prep Agent","href":"/v2-api-reference/agents/call-prep-agent"},{"openapi":"post /api/v2/agents/context/run","title":"Context Agent Run","href":"/v2-api-reference/agents/context-agent-run"},{"openapi":"post /api/v2/agents/workspace/build","title":"Workspace Builder Agent","href":"/v2-api-reference/agents/workspace-builder-agent"}]},{"group":"Async","pages":[{"openapi":"post /api/v2/async/agent/run","title":"Run Agents","href":"/v2-api-reference/async/run-agent"},{"openapi":"get /api/v2/async/agent/run/status","title":"Get Async Agent Run Status","href":"/v2-api-reference/async/get-async-agent-run-status"},{"openapi":"post /api/v2/async/headless/generate-emails","title":"Generate Emails","href":"/v2-api-reference/async/generate-emails"}]},{"group":"Runs","pages":[{"openapi":"post /api/v2/skills/{key}/runs","title":"Run a skill","href":"/v2-api-reference/run/run-a-skill"},{"openapi":"get /api/v2/runs/{oId}","title":"Get a run","href":"/v2-api-reference/run/get-a-run"},{"openapi":"post /api/v2/runs/{oId}/cancel","title":"Cancel a run","href":"/v2-api-reference/run/cancel-a-run"}]},{"group":"Workspace","pages":[{"openapi":"post /api/v2/agents/workspace/build","title":"Workspace Builder Agent","href":"/v2-api-reference/workspace/build"}]},{"group":"Research","pages":[{"openapi":"post /api/v2/person/resolve-profile","title":"Resolve Profile from Email","href":"/v2-api-reference/research/resolve-profile-from-email"},{"openapi":"post /api/v2/person/resolve-email","title":"Resolve Email from Profile","href":"/v2-api-reference/research/resolve-email-from-profile"}]},{"group":"API Key","pages":[{"openapi":"get /api/v2/api-key/list","title":"List API keys","href":"/v2-api-reference/api-key/list-api-keys"},{"openapi":"get /api/v2/api-key/validate","title":"Validate API key","href":"/v2-api-reference/api-key/validate-api-key"}]},{"group":"Entity Webhooks","pages":[{"openapi":"get /api/v2/entity-webhook/list","title":"List entity webhook endpoints","href":"/v2-api-reference/entity-webhooks/list-entity-webhook-endpoints"},{"openapi":"post /api/v2/entity-webhook/create","title":"Create an entity webhook endpoint","href":"/v2-api-reference/entity-webhooks/create-an-entity-webhook-endpoint"},{"openapi":"post /api/v2/entity-webhook/update","title":"Update an entity webhook endpoint","href":"/v2-api-reference/entity-webhooks/update-an-entity-webhook-endpoint"},{"openapi":"delete /api/v2/entity-webhook/delete","title":"Delete an entity webhook endpoint","href":"/v2-api-reference/entity-webhooks/delete-an-entity-webhook-endpoint"},{"openapi":"post /api/v2/entity-webhook/rotate-secret","title":"Rotate an entity webhook signing secret","href":"/v2-api-reference/entity-webhooks/rotate-an-entity-webhook-signing-secret"},{"openapi":"post /api/v2/entity-webhook/test","title":"Send a test entity webhook","href":"/v2-api-reference/entity-webhooks/send-a-test-entity-webhook"}]},{"group":"Credits","pages":[{"openapi":"get /api/v2/credits/usage","title":"Get credit usage","href":"/v2-api-reference/credits/get-credit-usage"}]},{"group":"Motion","pages":[{"openapi":"get /api/v2/motion/list","title":"List motions","href":"/v2-api-reference/motion/list-motions"},{"openapi":"get /api/v2/motion/get","title":"Get a motion","href":"/v2-api-reference/motion/get-a-motion"},{"openapi":"post /api/v2/motion/create","title":"Create a motion","href":"/v2-api-reference/motion/create-a-motion"},{"openapi":"post /api/v2/motion/update","title":"Update a motion","href":"/v2-api-reference/motion/update-a-motion"},{"openapi":"delete /api/v2/motion/delete","title":"Delete a motion","href":"/v2-api-reference/motion/delete-a-motion"}]},{"group":"Motion Playbook","pages":[{"openapi":"get /api/v2/motion-playbook/list","title":"List motion playbooks","href":"/v2-api-reference/motionplaybook/list-motion-playbooks"},{"openapi":"get /api/v2/motion-playbook/get","title":"Get a motion playbook","href":"/v2-api-reference/motionplaybook/get-a-motion-playbook"},{"openapi":"post /api/v2/motion-playbook/create","title":"Create a motion playbook","href":"/v2-api-reference/motionplaybook/create-a-motion-playbook"},{"openapi":"post /api/v2/motion-playbook/update","title":"Update a motion playbook","href":"/v2-api-reference/motionplaybook/update-a-motion-playbook"},{"openapi":"delete /api/v2/motion-playbook/delete","title":"Delete a motion playbook","href":"/v2-api-reference/motionplaybook/delete-a-motion-playbook"}]},{"group":"Motion ICP","pages":[{"openapi":"get /api/v2/motion-icp/list","title":"List Motion ICP cells","href":"/v2-api-reference/motionicp/list-motion-icp-cells"},{"openapi":"get /api/v2/motion-icp/get","title":"Get Motion ICP detail","href":"/v2-api-reference/motionicp/get-motion-icp-detail"},{"openapi":"get /api/v2/motion-icp/elements/list","title":"List recommended elements for a Motion ICP","href":"/v2-api-reference/motionicp/list-recommended-elements-for-a-motion-icp"},{"openapi":"get /api/v2/motion-icp/learnings/list","title":"List learnings for a Motion ICP","href":"/v2-api-reference/motionicp/list-learnings-for-a-motion-icp"},{"openapi":"get /api/v2/motion-icp/learnings/get","title":"Get a Motion ICP learning","href":"/v2-api-reference/motionicp/get-a-motion-icp-learning"},{"openapi":"post /api/v2/motion-icp/regenerate","title":"Regenerate a Motion ICP cell","href":"/v2-api-reference/motionicp/regenerate-a-motion-icp-cell"}]},{"group":"Product","pages":[{"openapi":"get /api/v2/product/get","title":"Get Product","href":"/v2-api-reference/product/get-product"},{"openapi":"get /api/v2/product/list","title":"List Products","href":"/v2-api-reference/product/list-products"},{"openapi":"post /api/v2/product/create","title":"Create Product","href":"/v2-api-reference/product/create-product"},{"openapi":"post /api/v2/product/update","title":"Update Product","href":"/v2-api-reference/product/update-product"},{"openapi":"post /api/v2/product/generate","title":"Generate Product","href":"/v2-api-reference/product/generate-product"},{"openapi":"delete /api/v2/product/delete","title":"Delete Product","href":"/v2-api-reference/product/delete-product"}]},{"group":"Service","pages":[{"openapi":"get /api/v2/service/list","title":"List Services","href":"/v2-api-reference/service/list-services"},{"openapi":"get /api/v2/service/get","title":"Get Service","href":"/v2-api-reference/service/get-service"},{"openapi":"post /api/v2/service/create","title":"Create Service","href":"/v2-api-reference/service/create-service"},{"openapi":"post /api/v2/service/update","title":"Update Service","href":"/v2-api-reference/service/update-service"},{"openapi":"post /api/v2/service/generate","title":"Generate Service","href":"/v2-api-reference/service/generate-service"},{"openapi":"post /api/v2/service/delete","title":"Delete Service","href":"/v2-api-reference/service/delete-service"}]},{"group":"Solution","pages":[{"openapi":"get /api/v2/solution/list","title":"List Solutions","href":"/v2-api-reference/solution/list-solutions"},{"openapi":"get /api/v2/solution/get","title":"Get Solution","href":"/v2-api-reference/solution/get-solution"},{"openapi":"post /api/v2/solution/create","title":"Create Solution","href":"/v2-api-reference/solution/create-solution"},{"openapi":"post /api/v2/solution/update","title":"Update Solution","href":"/v2-api-reference/solution/update-solution"},{"openapi":"post /api/v2/solution/generate","title":"Generate Solution","href":"/v2-api-reference/solution/generate-solution"},{"openapi":"delete /api/v2/solution/delete","title":"Delete Solution","href":"/v2-api-reference/solution/delete-solution"}]},{"group":"Segment","pages":[{"openapi":"get /api/v2/segment/get","title":"Get Segment","href":"/v2-api-reference/segment/get-segment"},{"openapi":"get /api/v2/segment/list","title":"List segments","href":"/v2-api-reference/segment/list-segments"},{"openapi":"post /api/v2/segment/update","title":"Update Segment","href":"/v2-api-reference/segment/update-segment"},{"openapi":"post /api/v2/segment/create","title":"Create Segment","href":"/v2-api-reference/segment/create-segment"},{"openapi":"post /api/v2/segment/generate","title":"Generate Segments","href":"/v2-api-reference/segment/generate-segments"},{"openapi":"delete /api/v2/segment/delete","title":"Delete Segment","href":"/v2-api-reference/segment/delete-segment"}]},{"group":"Persona","pages":[{"openapi":"get /api/v2/persona/get","title":"Get Persona","href":"/v2-api-reference/persona/get-persona"},{"openapi":"get /api/v2/persona/list","title":"List persona","href":"/v2-api-reference/persona/list-persona"},{"openapi":"post /api/v2/persona/update","title":"Update Persona","href":"/v2-api-reference/persona/update-persona"},{"openapi":"post /api/v2/persona/create","title":"Create Persona","href":"/v2-api-reference/persona/create-persona"},{"openapi":"post /api/v2/persona/generate","title":"Generate Personas","href":"/v2-api-reference/persona/generate-personas"},{"openapi":"delete /api/v2/persona/delete","title":"Delete Persona","href":"/v2-api-reference/persona/delete-persona"}]},{"group":"Use Case","pages":[{"openapi":"get /api/v2/use-case/get","title":"Get Use Case","href":"/v2-api-reference/use-case/get-use-case"},{"openapi":"get /api/v2/use-case/list","title":"List Use Cases","href":"/v2-api-reference/use-case/list-use-cases"},{"openapi":"post /api/v2/use-case/update","title":"Update Use Case","href":"/v2-api-reference/use-case/update-use-case"},{"openapi":"post /api/v2/use-case/create","title":"Create Use Case","href":"/v2-api-reference/use-case/create-use-case"},{"openapi":"post /api/v2/use-case/generate","title":"Generate Use Cases","href":"/v2-api-reference/use-case/generate-use-cases"},{"openapi":"delete /api/v2/use-case/delete","title":"Delete Use Case","href":"/v2-api-reference/use-case/delete-use-case"}]},{"group":"Reference","pages":[{"openapi":"get /api/v2/reference/get","title":"Get Reference","href":"/v2-api-reference/reference/get-reference"},{"openapi":"get /api/v2/reference/list","title":"List References","href":"/v2-api-reference/reference/list-references"},{"openapi":"post /api/v2/reference/create","title":"Create Reference","href":"/v2-api-reference/reference/create-reference"},{"openapi":"post /api/v2/reference/update","title":"Update Reference","href":"/v2-api-reference/reference/update-reference"},{"openapi":"post /api/v2/reference/generate","title":"Generate References","href":"/v2-api-reference/reference/generate-references"},{"openapi":"delete /api/v2/reference/delete","title":"Delete Reference","href":"/v2-api-reference/reference/delete-reference"}]},{"group":"Proof Point","pages":[{"openapi":"get /api/v2/proof-point/get","title":"Get Proof Point","href":"/v2-api-reference/proof-point/get-proof-point"},{"openapi":"get /api/v2/proof-point/list","title":"List proof points","href":"/v2-api-reference/proof-point/list-proof-points"},{"openapi":"post /api/v2/proof-point/update","title":"Update Proof Point","href":"/v2-api-reference/proof-point/update-proof-point"},{"openapi":"post /api/v2/proof-point/create","title":"Create Proof Point","href":"/v2-api-reference/proof-point/create-proof-point"},{"openapi":"post /api/v2/proof-point/generate","title":"Generate Proof Points","href":"/v2-api-reference/proof-point/generate-proof-points"},{"openapi":"delete /api/v2/proof-point/delete","title":"Delete Proof Point","href":"/v2-api-reference/proof-point/delete-proof-point"}]},{"group":"Competitor","pages":[{"openapi":"get /api/v2/competitor/get","title":"Get Competitor","href":"/v2-api-reference/competitor/get-competitor"},{"openapi":"get /api/v2/competitor/list","title":"List competitors","href":"/v2-api-reference/competitor/list-competitors"},{"openapi":"post /api/v2/competitor/update","title":"Update Competitor","href":"/v2-api-reference/competitor/update-competitor"},{"openapi":"post /api/v2/competitor/create","title":"Create Competitor","href":"/v2-api-reference/competitor/create-competitor"},{"openapi":"post /api/v2/competitor/generate","title":"Generate Competitors","href":"/v2-api-reference/competitor/generate-competitors"},{"openapi":"delete /api/v2/competitor/delete","title":"Delete Competitor","href":"/v2-api-reference/competitor/delete-competitor"}]},{"group":"Alternative","pages":[{"openapi":"get /api/v2/alternative/get","title":"Get Alternative","href":"/v2-api-reference/alternative/get-alternative"},{"openapi":"get /api/v2/alternative/list","title":"List alternatives","href":"/v2-api-reference/alternative/list-alternatives"},{"openapi":"post /api/v2/alternative/create","title":"Create Alternative","href":"/v2-api-reference/alternative/create-alternative"},{"openapi":"post /api/v2/alternative/update","title":"Update Alternative","href":"/v2-api-reference/alternative/update-alternative"},{"openapi":"post /api/v2/alternative/generate","title":"Generate Alternatives","href":"/v2-api-reference/alternative/generate-alternatives"},{"openapi":"delete /api/v2/alternative/delete","title":"Delete Alternative","href":"/v2-api-reference/alternative/delete-alternative"}]},{"group":"Buying Trigger","pages":[{"openapi":"get /api/v2/buying-trigger/get","title":"Get Buying Trigger","href":"/v2-api-reference/buying-trigger/get-buying-trigger"},{"openapi":"get /api/v2/buying-trigger/list","title":"List buying triggers","href":"/v2-api-reference/buying-trigger/list-buying-triggers"},{"openapi":"post /api/v2/buying-trigger/create","title":"Create Buying Trigger","href":"/v2-api-reference/buying-trigger/create-buying-trigger"},{"openapi":"post /api/v2/buying-trigger/update","title":"Update Buying Trigger","href":"/v2-api-reference/buying-trigger/update-buying-trigger"},{"openapi":"post /api/v2/buying-trigger/generate","title":"Generate Buying Triggers","href":"/v2-api-reference/buying-trigger/generate-buying-triggers"},{"openapi":"delete /api/v2/buying-trigger/delete","title":"Delete Buying Trigger","href":"/v2-api-reference/buying-trigger/delete-buying-trigger"}]},{"group":"Core Feature","pages":[{"openapi":"get /api/v2/core-feature/list","title":"List core features","href":"/v2-api-reference/core-feature/list-core-features"},{"openapi":"get /api/v2/core-feature/get","title":"Get Core Feature","href":"/v2-api-reference/core-feature/get-core-feature"},{"openapi":"post /api/v2/core-feature/create","title":"Create Core Feature","href":"/v2-api-reference/core-feature/create-core-feature"},{"openapi":"post /api/v2/core-feature/update","title":"Update Core Feature","href":"/v2-api-reference/core-feature/update-core-feature"},{"openapi":"post /api/v2/core-feature/generate","title":"Generate Core Features","href":"/v2-api-reference/core-feature/generate-core-features"},{"openapi":"delete /api/v2/core-feature/delete","title":"Delete Core Feature","href":"/v2-api-reference/core-feature/delete-core-feature"}]},{"group":"Objection","pages":[{"openapi":"get /api/v2/objection/list","title":"List objections","href":"/v2-api-reference/objection/list-objections"},{"openapi":"get /api/v2/objection/get","title":"Get Objection","href":"/v2-api-reference/objection/get-objection"},{"openapi":"post /api/v2/objection/create","title":"Create Objection","href":"/v2-api-reference/objection/create-objection"},{"openapi":"post /api/v2/objection/update","title":"Update Objection","href":"/v2-api-reference/objection/update-objection"},{"openapi":"post /api/v2/objection/generate","title":"Generate Objections","href":"/v2-api-reference/objection/generate-objections"},{"openapi":"delete /api/v2/objection/delete","title":"Delete Objection","href":"/v2-api-reference/objection/delete-objection"}]},{"group":"Brand Voice","pages":[{"openapi":"get /api/v2/brand-voice/list","title":"List Brand Voices","href":"/v2-api-reference/brand-voice/list-brand-voices"},{"openapi":"get /api/v2/brand-voice/get","title":"Get Brand Voice","href":"/v2-api-reference/brand-voice/get-brand-voice"},{"openapi":"post /api/v2/brand-voice/create","title":"Create Brand Voice","href":"/v2-api-reference/brand-voice/create-brand-voice"},{"openapi":"post /api/v2/brand-voice/update","title":"Update Brand Voice","href":"/v2-api-reference/brand-voice/update-brand-voice"},{"openapi":"post /api/v2/brand-voice/generate","title":"Generate Brand Voice","href":"/v2-api-reference/brand-voice/generate-brand-voice"},{"openapi":"post /api/v2/brand-voice/apply","title":"Apply Brand Voice","href":"/v2-api-reference/brand-voice/apply-brand-voice"},{"openapi":"post /api/v2/brand-voice/toggle-default","title":"Toggle Default Brand Voice","href":"/v2-api-reference/brand-voice/toggle-default-brand-voice"}]},{"group":"Library","pages":[{"openapi":"get /api/v2/library/download","title":"Download Library","href":"/v2-api-reference/library/download-library"},{"openapi":"get /api/v2/library/links","title":"Get Library Entity Links","href":"/v2-api-reference/library/get-library-entity-links"}]},{"group":"Library Locks","pages":[{"openapi":"post /api/v2/entity-lock/update","title":"Lock or unlock a library entity","href":"/v2-api-reference/library-locks/lock-or-unlock-a-library-entity"}]},{"group":"Context","pages":[{"openapi":"post /api/v2/context","title":"Context Search","href":"/v2-api-reference/context/context-search"}]},{"group":"Workflow","pages":[{"openapi":"post /api/v2/workflows/run","title":"Run a workflow","href":"/v2-api-reference/workflow/run-a-workflow"},{"openapi":"get /api/v2/workflows/run/status","title":"Get Workflow Run Status","href":"/v2-api-reference/workflow/get-workflow-run-status"}]},{"group":"Events","pages":[{"openapi":"get /api/v2/event/list","title":"List Events","href":"/v2-api-reference/events/list-events"},{"openapi":"post /api/v2/event/import","title":"Bulk import events","href":"/v2-api-reference/events/bulk-import-events"},{"openapi":"get /api/v2/event/import/status","title":"Get bulk import status","href":"/v2-api-reference/events/get-bulk-import-status"},{"openapi":"post /api/v2/analytics/webhook/receive/generic/{eventType}","title":"Log Event","href":"/v2-api-reference/events/log-event"},{"openapi":"post /api/v2/event/count","title":"Count Events","href":"/v2-api-reference/events/count-events"},{"openapi":"get /api/v2/event/get","title":"Get Event Detail","href":"/v2-api-reference/events/get-event-detail"},{"openapi":"post /api/v2/event/time-series","title":"Event Time Series","href":"/v2-api-reference/events/event-time-series"},{"openapi":"post /api/v2/event/cross-tab","title":"Event Cross-Tab","href":"/v2-api-reference/events/event-cross-tab"},{"openapi":"post /api/v2/event/top","title":"Top Event Entities","description":"Rank the library entities of one type, the values of a tag group, companies, external people, speaker sides or deal stages at the time of the event, across the events matching a window and filters. `metric` picks the ranking; every metric is returned on every item. REST twin of the top_event_entities MCP tool.","href":"/v2-api-reference/events/top-event-entities"},{"openapi":"post /api/v2/event/compare","title":"Compare Cohorts","href":"/v2-api-reference/events/compare-cohorts"},{"openapi":"post /api/v2/event/cohort-deals","title":"List Cohort Deals","description":"List the CRM deals on one side of a cohort comparison. Takes the same window, filters and cohorts as Compare Cohorts, plus the side (A, B, or the overlap left out of both), optionally narrowed by dealOutcome or by result on the compared outcome. The returned totals equal that side's counts in the comparison, so the list is exactly what was counted. REST twin of the list_cohort_deals MCP tool.","href":"/v2-api-reference/events/list-cohort-deals"}]},{"group":"Findings","pages":[{"openapi":"get /api/v2/finding/list","title":"List Findings","href":"/v2-api-reference/findings/list-findings"},{"openapi":"post /api/v2/finding/search","title":"Search Findings","href":"/v2-api-reference/findings/search-findings"}]},{"group":"Custom Extractors","pages":[{"openapi":"get /api/v2/custom-extractor/list","title":"List Custom Extractors","href":"/v2-api-reference/custom-extractors/list-custom-extractors"},{"openapi":"post /api/v2/custom-extractor/create","title":"Create Custom Extractor","href":"/v2-api-reference/custom-extractors/create-custom-extractor"},{"openapi":"post /api/v2/custom-extractor/update","title":"Update Custom Extractor","href":"/v2-api-reference/custom-extractors/update-custom-extractor"},{"openapi":"delete /api/v2/custom-extractor/delete","title":"Delete Custom Extractor","href":"/v2-api-reference/custom-extractors/delete-custom-extractor"},{"openapi":"post /api/v2/custom-extractor/backtest","title":"Backtest Custom Extractor","href":"/v2-api-reference/custom-extractors/backtest-custom-extractor"},{"openapi":"post /api/v2/custom-extractor/backfill/estimate","title":"Estimate Custom Extractor Backfill","href":"/v2-api-reference/custom-extractors/estimate-custom-extractor-backfill"},{"openapi":"post /api/v2/custom-extractor/backfill/start","title":"Start Custom Extractor Backfill","href":"/v2-api-reference/custom-extractors/start-custom-extractor-backfill"},{"openapi":"get /api/v2/custom-extractor/backfill/get","title":"Get Custom Extractor Backfill","href":"/v2-api-reference/custom-extractors/get-custom-extractor-backfill"},{"openapi":"post /api/v2/custom-extractor/backfill/control","title":"Control Custom Extractor Backfill","href":"/v2-api-reference/custom-extractors/control-custom-extractor-backfill"},{"openapi":"post /api/v2/custom-extractor/purge-findings","title":"Purge Custom Extractor Findings","href":"/v2-api-reference/custom-extractors/purge-custom-extractor-findings"}]},{"group":"Transcript","pages":[{"openapi":"post /api/v2/transcript/search","title":"Search Call Transcripts","href":"/v2-api-reference/transcript/search-call-transcripts"},{"openapi":"post /api/v2/transcript/entity-evidence","title":"Get Entity Evidence","href":"/v2-api-reference/transcript/get-entity-evidence"}]},{"group":"Suggestions","pages":[{"openapi":"get /api/v2/suggestion/list","title":"List Suggestions","href":"/v2-api-reference/suggestions/list-suggestions"},{"openapi":"get /api/v2/suggestion/get","title":"Get Suggestion","href":"/v2-api-reference/suggestions/get-suggestion"},{"openapi":"post /api/v2/suggestion/create","title":"Create Suggestion","href":"/v2-api-reference/suggestions/create-suggestion"},{"openapi":"post /api/v2/suggestion/update","title":"Update Suggestion","href":"/v2-api-reference/suggestions/update-suggestion"},{"openapi":"post /api/v2/suggestion/accept","title":"Accept Suggestion","href":"/v2-api-reference/suggestions/accept-suggestion"},{"openapi":"post /api/v2/suggestion/reject","title":"Reject Suggestion","href":"/v2-api-reference/suggestions/reject-suggestion"}]},{"group":"Revisions","pages":[{"openapi":"get /api/v2/revision/list","title":"List Revisions","href":"/v2-api-reference/revision/list-revisions"},{"openapi":"get /api/v2/revision/get","title":"Get Revision","href":"/v2-api-reference/revision/get-revision"}]},{"group":"Insights","pages":[{"openapi":"get /api/v2/insights/top-entities","title":"Top Entities","href":"/v2-api-reference/insights/top-entities"},{"openapi":"get /api/v2/insights/entity-stats","title":"Entity Stats","href":"/v2-api-reference/insights/entity-stats"},{"openapi":"get /api/v2/insights/entity-time-series","title":"Entity Time Series","href":"/v2-api-reference/insights/entity-time-series"},{"openapi":"get /api/v2/insights/competitive","title":"Competitive Landscape","href":"/v2-api-reference/insights/competitive-landscape"},{"openapi":"get /api/v2/insights/library-health","title":"Library Health","href":"/v2-api-reference/insights/library-health"},{"openapi":"get /api/v2/insights/workspace-baseline","title":"Workspace Baseline","href":"/v2-api-reference/insights/workspace-baseline"},{"openapi":"get /api/v2/insights/entity-usage","title":"Entity Usage","href":"/v2-api-reference/insights/entity-usage"}]},{"group":"Intel","pages":[{"openapi":"get /api/v2/intel/list","title":"List intel","href":"/v2-api-reference/intel/list-intel"},{"openapi":"get /api/v2/intel/get","title":"Get intel","href":"/v2-api-reference/intel/get-intel"}]},{"group":"Tag Group","pages":[{"openapi":"get /api/v2/tag-group/list","title":"List Tag Groups","href":"/v2-api-reference/tag-group/list-tag-groups"},{"openapi":"post /api/v2/tag-group/create","title":"Create Tag Group","href":"/v2-api-reference/tag-group/create-tag-group"},{"openapi":"post /api/v2/tag-group/update","title":"Update Tag Group","href":"/v2-api-reference/tag-group/update-tag-group"},{"openapi":"delete /api/v2/tag-group/delete","title":"Delete Tag Group","href":"/v2-api-reference/tag-group/delete-tag-group"},{"openapi":"get /api/v2/tag-group/assignments","title":"List Tag Group Assignments","href":"/v2-api-reference/tag-group/list-tag-group-assignments"},{"openapi":"get /api/v2/tag-group/performance","title":"Get Tag Group Performance","href":"/v2-api-reference/tag-group/get-tag-group-performance"},{"openapi":"post /api/v2/tag-group/backfill","title":"Backfill Tag Group","href":"/v2-api-reference/tag-group/backfill-tag-group"}]},{"group":"Tag","pages":[{"openapi":"post /api/v2/tag/create","title":"Create Tag","href":"/v2-api-reference/tag/create-tag"},{"openapi":"post /api/v2/tag/update","title":"Update Tag","href":"/v2-api-reference/tag/update-tag"},{"openapi":"delete /api/v2/tag/delete","title":"Delete Tag","href":"/v2-api-reference/tag/delete-tag"},{"openapi":"post /api/v2/tag/assign","title":"Assign Tag","href":"/v2-api-reference/tag/assign-tag"},{"openapi":"post /api/v2/tag/unassign","title":"Unassign Tag","href":"/v2-api-reference/tag/unassign-tag"}]},{"group":"Reports","pages":[{"openapi":"get /api/v2/report-group/list","title":"List report groups","href":"/v2-api-reference/reportgroup/list-report-groups"},{"openapi":"get /api/v2/report-group/get","title":"Get a report group","href":"/v2-api-reference/reportgroup/get-a-report-group"},{"openapi":"get /api/v2/report-config/list","title":"List report configs","href":"/v2-api-reference/reportconfig/list-report-configs"},{"openapi":"get /api/v2/report-config/get","title":"Get a report config","href":"/v2-api-reference/reportconfig/get-a-report-config"},{"openapi":"get /api/v2/report-run/list","title":"List report runs","href":"/v2-api-reference/reportrun/list-report-runs"},{"openapi":"get /api/v2/report-run/get","title":"Get a report run","href":"/v2-api-reference/reportrun/get-a-report-run"}]},{"group":"CRM","pages":[{"openapi":"get /api/v2/crm/get-entity-schema","title":"Get CRM Entity Schema","href":"/v2-api-reference/crm/get-crm-entity-schema"}]},{"group":"Sources","pages":[{"title":"Get Source","openapi":"get /api/v2/resource/get","href":"/v2-api-reference/resource/get-resource"},{"title":"List Sources","openapi":"get /api/v2/resource/list","href":"/v2-api-reference/resource/list-resources"},{"title":"Create Source","openapi":"post /api/v2/resource/create","href":"/v2-api-reference/resource/create-resource"},{"title":"Delete Source(s)","openapi":"post /api/v2/resource/delete","href":"/v2-api-reference/resource/delete-resources"},{"title":"Get Source Status","openapi":"get /api/v2/resource/status","href":"/v2-api-reference/resource/get-resource-status"},{"title":"Search Sources","openapi":"post /api/v2/resource/search","href":"/v2-api-reference/resource/search-resources"},{"title":"Check Source Drift","openapi":"post /api/v2/resource/check-drift","href":"/v2-api-reference/resource/check-resource-drift"},{"title":"Link Entities to Source","openapi":"post /api/v2/resource/link-entities","href":"/v2-api-reference/resource/link-entities-to-resource"}]},{"group":"Skill","pages":[{"openapi":"get /api/v2/skill/list","title":"List Skills","href":"/v2-api-reference/skill/list-skills"},{"openapi":"get /api/v2/skill/get","title":"Get Skill","href":"/v2-api-reference/skill/get-skill"},{"openapi":"get /api/v2/skill/file","title":"Get Skill File","href":"/v2-api-reference/skill/get-skill-file"},{"openapi":"post /api/v2/skill/create","title":"Create Skill","href":"/v2-api-reference/skill/create-skill"},{"openapi":"post /api/v2/skill/update","title":"Update Skill","href":"/v2-api-reference/skill/update-skill"},{"openapi":"post /api/v2/skill/delete","title":"Delete Skill","href":"/v2-api-reference/skill/delete-skill"},{"openapi":"post /api/v2/skill/find","title":"Find Skill","href":"/v2-api-reference/skill/find-skill"}]},{"group":"Asset","pages":[{"title":"Publishing Assets via API","href":"/v2-api-reference/asset/publishing-assets"},{"openapi":"get /api/v2/asset/list","title":"List Assets","href":"/v2-api-reference/asset/list-assets"},{"openapi":"get /api/v2/asset/get","title":"Get Asset","href":"/v2-api-reference/asset/get-asset"},{"openapi":"post /api/v2/asset/update","title":"Update Asset","href":"/v2-api-reference/asset/update-asset"},{"openapi":"delete /api/v2/asset/delete","title":"Delete Asset","href":"/v2-api-reference/asset/delete-asset"},{"openapi":"get /api/v2/asset/stats","title":"Get Asset Stats","href":"/v2-api-reference/asset/get-asset-stats"},{"openapi":"get /api/v2/asset/visitors","title":"List Asset Visitors","href":"/v2-api-reference/asset/list-asset-visitors"},{"openapi":"get /api/v2/asset/versions/list","title":"List Asset Versions","href":"/v2-api-reference/asset/list-asset-versions"},{"openapi":"post /api/v2/asset/versions/restore","title":"Restore Asset Version","href":"/v2-api-reference/asset/restore-asset-version"},{"openapi":"delete /api/v2/asset/versions/delete","title":"Delete Asset Version","href":"/v2-api-reference/asset/delete-asset-version"},{"openapi":"get /api/v2/asset/shares/list","title":"List Asset Shares","href":"/v2-api-reference/asset/list-asset-shares"},{"openapi":"post /api/v2/asset/shares/create","title":"Create Asset Share","href":"/v2-api-reference/asset/create-asset-share"},{"openapi":"delete /api/v2/asset/shares/revoke","title":"Revoke Asset Share","href":"/v2-api-reference/asset/revoke-asset-share"},{"openapi":"post /api/v2/asset/shares/add-recipients","title":"Add Asset Share Recipients","href":"/v2-api-reference/asset/add-asset-share-recipients"},{"openapi":"post /api/v2/asset/shares/remove-recipients","title":"Remove Asset Share Recipients","href":"/v2-api-reference/asset/remove-asset-share-recipients"},{"openapi":"post /api/v2/asset/shares/add-domains","title":"Add Asset Share Domains","href":"/v2-api-reference/asset/add-asset-share-domains"},{"openapi":"post /api/v2/asset/shares/remove-domains","title":"Remove Asset Share Domains","href":"/v2-api-reference/asset/remove-asset-share-domains"},{"openapi":"get /api/v2/asset/access-requests/list","title":"List Asset Access Requests","href":"/v2-api-reference/asset/list-asset-access-requests"},{"openapi":"post /api/v2/asset/access-requests/grant","title":"Grant Asset Access Request","href":"/v2-api-reference/asset/grant-asset-access-request"},{"openapi":"post /api/v2/asset/access-requests/dismiss","title":"Dismiss Asset Access Request","href":"/v2-api-reference/asset/dismiss-asset-access-request"},{"openapi":"post /api/v2/asset/access-token/generate","title":"Generate Asset Access Token","href":"/v2-api-reference/asset/generate-asset-access-token"},{"openapi":"post /api/v2/asset/access-token/refresh","title":"Refresh Asset Access Token","href":"/v2-api-reference/asset/refresh-asset-access-token"},{"openapi":"post /api/v2/asset/transfer","title":"Transfer Asset","href":"/v2-api-reference/asset/transfer-asset"},{"openapi":"post /api/v2/asset/tracked-links/create","title":"Create Tracked Link","href":"/v2-api-reference/asset/create-tracked-link"},{"openapi":"get /api/v2/asset/tracked-links/list","title":"List Tracked Links","href":"/v2-api-reference/asset/list-tracked-links"}]},{"group":"Workspace Company","pages":[{"openapi":"get /api/v2/workspace-company/get","title":"Get Workspace Company","href":"/v2-api-reference/workspace-company/get-workspace-company"},{"openapi":"post /api/v2/workspace-company/update","title":"Update Workspace Company","href":"/v2-api-reference/workspace-company/update-workspace-company"},{"openapi":"post /api/v2/workspace-company/generate","title":"Generate Workspace Company","href":"/v2-api-reference/workspace-company/generate-workspace-company"}]},{"group":"Legacy Playbooks","pages":[{"title":"Legacy Playbooks (deprecated)","href":"/concepts/playbooks"},{"openapi":"get /api/v2/playbook/list","title":"List Playbooks","href":"/v2-api-reference/playbook/list-playbooks"},{"openapi":"get /api/v2/playbook/get","title":"Get Playbook","href":"/v2-api-reference/playbook/get-playbook"},{"openapi":"post /api/v2/playbook/create","title":"Create Playbook","href":"/v2-api-reference/playbook/create-playbook"},{"openapi":"post /api/v2/playbook/update","title":"Update Playbook","href":"/v2-api-reference/playbook/update-playbook"},{"openapi":"delete /api/v2/playbook/delete","title":"Delete Playbook","href":"/v2-api-reference/playbook/delete-playbook"}]}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/mcp/overview"}]}]},"basePath":"","title":"Compare Cohorts - Octave API","buildId":"dpl_715YoAgvjTGBDdo8RtXmHKM22b5p","deploymentId":"dpl_715YoAgvjTGBDdo8RtXmHKM22b5p","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-BvKnMd7F.js","utils-BMt52org.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CGXZuDGO.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dl57XWH2.js","snippetPresets-CWd8CxSk.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BR-Wkc_D.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-YMmi08aZ.js","shallow-DBC1OB78.js","getApiPlaygroundDisplay-Be7mmEzP.js","CodeSnippet-B14o1TgQ.js","CodeSnippets-CJ2q3fTq.js","Page-Chgj7sZe.js","getPastedJson-DnpLXm8x.js","icon-BpkSFtdK.js","MethodPill-BO3zPf-g.js","DuplicateIcon-Bib3qwfw.js","createIcon-CY2noFo3.js","DynamicMarkdown-TAXIW2vN.js","SectionHeading-Dfs3Fmfw.js","axios-vUo_bRtp.js","Markdown-CGAo_eqA.js","clsx-BNa-H6W6.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-r2tNEC1n.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-B7oWe6jc.js"]}