changedOutput schema / properties / profile / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "buyerRoles": {
- "description": "Roles that buy or own the problem, e.g. \"Head of RevOps\", \"CISO\"",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "city": {
- "description": "The user's own city, for events near them (in person within 50 km); never narrows who discover looks for",
- "maxLength": 120,
- "type": "string"
- },
- "company": {
- "description": "The seller company's name",
- "maxLength": 200,
- "type": "string"
- },
- "competitors": {
- "description": "Competitors, as domains or names: never targeted",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "customers": {
- "description": "Current customers, as domains (acme.com) or names: never targeted",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "doNotContact": {
- "description": "Companies the user said never to contact (domains)",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "employees": {
- "additionalProperties": false,
- "description": "Headcount band the seller can close, when the user has said",
- "properties": {
- "max": {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- },
- "min": {
- "maximum": 9007199254740991,
- "minimum": 1,
- "type": "integer"
- }
- },
- "type": "object"
- },
- "exclusions": {
- "description": "Companies or kinds of company to leave out",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "hard": {
- "description": "Strict cut-offs the user chose: \"size\" drops companies without a sourced size inside the band, \"fit\" drops those without a source-supported use case, \"intent\" drops those with no buying signal or way in. Unnamed ones only rank and flag. Ask once at onboarding; a call's own `hard` overrides it",
- "items": {
- "enum": [
- "size",
- "fit",
- "intent"
- ],
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "icp": {
- "description": "Who the ideal customer is: company type, industry, size, stage, region",
- "maxLength": 1000,
- "type": "string"
- },
- "investors": {
- "description": "Optional: the seller's own investors (firms or angels), e.g. \"Sequoia Capital\", beside the ones discover finds and confirms from public pages itself; matched in code against each account's pages, funding news and the investors' portfolio pages, never sent to a model",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "lost": {
- "description": "Deals lost or churned (domains or names), with why if known",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "needPatterns": {
- "description": "What a buying need for the seller's offer looks like: each a need, where it shows (jobs, tools, news, site, ai_adoption) and the proof that counts. The drafted ones the user kept plus any they described in their own words. Discover drafts them when left out and returns them to review; only signals matching one rank",
- "items": {
- "additionalProperties": false,
- "properties": {
- "family": {
- "enum": [
- "hiring",
- "company_events",
- "product_site",
- "news_compliance",
- "tools",
- "people_moves",
- "competitor_events",
- "public_intent"
- ],
- "type": "string"
- },
- "need": {
- "maxLength": 160,
- "minLength": 3,
- "type": "string"
- },
- "proof": {
- "maxLength": 300,
- "minLength": 3,
- "type": "string"
- },
- "titles": {
- "items": {
- "maxLength": 60,
- "minLength": 3,
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- },
- "where": {
- "items": {
- "enum": [
- "jobs",
- "tools",
- "news",
- "site",
- "ai_adoption"
- ],
- "type": "string"
- },
- "maxItems": 5,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "need",
- "where",
- "proof"
- ],
- "type": "object"
- },
- "maxItems": 24,
- "minItems": 1,
- "type": "array"
- },
- "notes": {
- "description": "Anything else the user said that should shape the list",
- "maxLength": 2000,
- "type": "string"
- },
- "openDeals": {
- "description": "Companies in an open deal (domains): left out",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "product": {
- "description": "What the seller sells, in a sentence or two",
- "maxLength": 1000,
- "type": "string"
- },
- "regions": {
- "description": "Regions or countries the seller sells into",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "segments": {
- "description": "Kinds of company the seller sells to, e.g. \"Marketing agencies\", \"B2B SaaS\"",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "signalFamilies": {
- "description": "The signal families the user switched on (the families of `signals.addMore`, by id). Discover drafts 2 or 3 need patterns for each, worded for the seller's offer, and drops patterns in a family switched off; left out, it drafts 5 to 8 across all",
- "items": {
- "enum": [
- "hiring",
- "company_events",
- "product_site",
- "news_compliance",
- "tools",
- "people_moves",
- "competitor_events",
- "public_intent"
- ],
- "type": "string"
- },
- "maxItems": 8,
- "minItems": 1,
- "type": "array"
- },
- "signalTypes": {
- "description": "Catalog signal types the user added from the \"add more\" list, by id (seller_profile's `signals.addMore`); discover looks for each as a need pattern on top of `needPatterns`, or of its drafted ones when there are none",
- "items": {
- "enum": [
- "job_posting_buyer_role",
- "job_posting_mentions_tool",
- "hiring_surge_function",
- "headcount_growth",
- "role_reopened",
- "layoffs",
- "hiring_freeze",
- "function_attrition",
- "employee_sentiment_drop",
- "funding_round",
- "funding_use_of_funds_match",
- "debt_financing",
- "ipo_filing",
- "acquires_company",
- "company_acquired",
- "spin_off_carve_out",
- "geo_expansion",
- "partnership_announced",
- "partnership_ended",
- "prospect_loses_client",
- "revenue_decline",
- "distress_bankruptcy",
- "earnings_call_mention",
- "annual_report_insight",
- "company_register_change",
- "product_launch",
- "website_relaunch",
- "site_section_added",
- "pricing_change",
- "legal_page_change",
- "new_public_repo_by_topic",
- "own_incident_spike",
- "public_symptom_visible",
- "own_customer_reviews_negative",
- "event_sponsorship",
- "compliance_pursuit",
- "regulation_deadline",
- "regulatory_exposure",
- "platform_policy_change",
- "data_breach",
- "peer_company_incident",
- "litigation",
- "positive_media",
- "negative_media",
- "award_recognition",
- "tech_adoption_adjacent",
- "competitor_installed",
- "competitor_newly_adopted",
- "overlapping_tools_in_category",
- "recent_software_purchases",
- "outbound_domains_registered",
- "mcp_server_published",
- "hf_org_paid_plan",
- "bug_bounty_ai_scope",
- "new_exec_buyer_role",
- "exec_departure",
- "first_hire_in_function",
- "competitor_outage_deprecation",
- "competitor_acquired_closed",
- "competitor_logo_removed",
- "competitor_positioning_change",
- "competitor_banned_or_sanctioned",
- "social_post_about_problem",
- "podcast_or_talk_appearance",
- "exec_public_appearance",
- "named_project_underway",
- "customer_peer_reference"
- ],
- "type": "string"
- },
- "maxItems": 15,
- "type": "array"
- },
- "user": {
- "additionalProperties": false,
- "description": "Who the user is: their name, role at the seller and LinkedIn profile URL",
- "properties": {
- "linkedinUrl": {
- "description": "The user's own LinkedIn profile URL; kept in the workspace, never sent to a model",
- "pattern": "^https?:\\/\\/([a-z]{2,3}\\.)?linkedin\\.com\\/in\\/[^/?#\\s]+\\/?$",
- "type": "string"
- },
- "name": {
- "maxLength": 120,
- "type": "string"
- },
- "role": {
- "maxLength": 120,
- "type": "string"
- }
- },
- "type": "object"
- },
- "warmPaths": {
- "description": "Warm paths the user confirmed: company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model",
- "items": {
- "additionalProperties": false,
- "properties": {
- "company": {
- "maxLength": 200,
- "minLength": 3,
- "type": "string"
- },
- "confirmedAt": {
- "format": "date",
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
- "type": "string"
- },
- "path": {
- "maxLength": 300,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "company",
- "path"
- ],
- "type": "object"
- },
- "maxItems": 500,
- "type": "array"
- },
- "won": {
- "description": "Deals won (domains or names): the pattern to find more of",
- "items": {
- "maxLength": 200,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 500,
- "type": "array"
- },
- "ycBatch": {
- "description": "The seller's Y Combinator batch, e.g. \"W23\"; read from the seller's YC page when left out",
- "maxLength": 40,
- "type": "string"
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "buyerRoles": {
+ "description": "Roles that buy or own the problem, e.g. \"Head of RevOps\", \"CISO\"",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "city": {
+ "description": "The user's own city, for events near them (in person within 50 km); never narrows who discover looks for",
+ "maxLength": 120,
+ "type": "string"
+ },
+ "company": {
+ "description": "The seller company's name",
+ "maxLength": 200,
+ "type": "string"
+ },
+ "competitors": {
+ "description": "Competitors, as domains or names: never targeted",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "customers": {
+ "description": "Current customers, as domains (acme.com) or names: never targeted",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "disqualifiers": {
+ "description": "Conditions that rule a company out even inside the ICP, each a few words, e.g. \"already uses a competitor's product\", \"has an in-house data team\", \"public sector\". Discover checks each against the sources it reads: one a quoted source shows is flagged in checkFirst and ranked lower (dropped under hard \"disqualifier\") and never billed; one no source shows is \"not checked\", never assumed",
+ "items": {
+ "maxLength": 160,
+ "minLength": 3,
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ },
+ "doNotContact": {
+ "description": "Companies the user said never to contact (domains)",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "employees": {
+ "additionalProperties": false,
+ "description": "Headcount band the seller can close, when the user has said",
+ "properties": {
+ "max": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "min": {
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "exclusions": {
+ "description": "Companies or kinds of company to leave out",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "hard": {
+ "description": "Strict cut-offs the user chose: \"size\" drops companies without a sourced size inside the band, \"fit\" drops those without a source-supported use case, \"intent\" drops those with no buying signal or way in, \"disqualifier\" drops those a source shows meet one of `disqualifiers`. Unnamed ones only rank and flag. Ask once at onboarding; a call's own `hard` overrides it",
+ "items": {
+ "enum": [
+ "size",
+ "fit",
+ "intent",
+ "disqualifier"
+ ],
+ "type": "string"
+ },
+ "maxItems": 4,
+ "type": "array"
+ },
+ "icp": {
+ "description": "Who the ideal customer is: company type, industry, size, stage, region",
+ "maxLength": 1000,
+ "type": "string"
+ },
+ "investors": {
+ "description": "Optional: the seller's own investors (firms or angels), e.g. \"Sequoia Capital\", beside the ones discover finds and confirms from public pages itself; matched in code against each account's pages, funding news and the investors' portfolio pages, never sent to a model",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "lost": {
+ "description": "Deals lost or churned (domains or names), with why if known",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "needPatterns": {
+ "description": "What a buying need for the seller's offer looks like: each a need, where it shows (jobs, tools, news, site, ai_adoption) and the proof that counts. The drafted ones the user kept plus any they described in their own words. Discover drafts them when left out and returns them to review; only signals matching one rank",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "family": {
+ "enum": [
+ "hiring",
+ "company_events",
+ "product_site",
+ "news_compliance",
+ "tools",
+ "people_moves",
+ "competitor_events",
+ "public_intent"
+ ],
+ "type": "string"
+ },
+ "need": {
+ "maxLength": 160,
+ "minLength": 3,
+ "type": "string"
+ },
+ "proof": {
+ "maxLength": 300,
+ "minLength": 3,
+ "type": "string"
+ },
+ "titles": {
+ "items": {
+ "maxLength": 60,
+ "minLength": 3,
+ "type": "string"
+ },
+ "maxItems": 8,
+ "type": "array"
+ },
+ "where": {
+ "items": {
+ "enum": [
+ "jobs",
+ "tools",
+ "news",
+ "site",
+ "ai_adoption"
+ ],
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "need",
+ "where",
+ "proof"
+ ],
+ "type": "object"
+ },
+ "maxItems": 24,
+ "minItems": 1,
+ "type": "array"
+ },
+ "notes": {
+ "description": "Anything else the user said that should shape the list",
+ "maxLength": 2000,
+ "type": "string"
+ },
+ "openDeals": {
+ "description": "Companies in an open deal (domains): left out",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "product": {
+ "description": "What the seller sells, in a sentence or two",
+ "maxLength": 1000,
+ "type": "string"
+ },
+ "regions": {
+ "description": "Regions or countries the seller sells into",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "segments": {
+ "description": "Kinds of company the seller sells to, e.g. \"Marketing agencies\", \"B2B SaaS\"",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "signalFamilies": {
+ "description": "The signal families the user switched on (the families of `signals.addMore`, by id). Discover drafts 2 or 3 need patterns for each, worded for the seller's offer, and drops patterns in a family switched off; left out, it drafts 5 to 8 across all",
+ "items": {
+ "enum": [
+ "hiring",
+ "company_events",
+ "product_site",
+ "news_compliance",
+ "tools",
+ "people_moves",
+ "competitor_events",
+ "public_intent"
+ ],
+ "type": "string"
+ },
+ "maxItems": 8,
+ "minItems": 1,
+ "type": "array"
+ },
+ "signalTypes": {
+ "description": "Catalog signal types the user added from the \"add more\" list, by id (seller_profile's `signals.addMore`); discover looks for each as a need pattern on top of `needPatterns`, or of its drafted ones when there are none",
+ "items": {
+ "enum": [
+ "job_posting_buyer_role",
+ "job_posting_mentions_tool",
+ "hiring_surge_function",
+ "headcount_growth",
+ "role_reopened",
+ "layoffs",
+ "hiring_freeze",
+ "function_attrition",
+ "employee_sentiment_drop",
+ "funding_round",
+ "funding_use_of_funds_match",
+ "debt_financing",
+ "ipo_filing",
+ "acquires_company",
+ "company_acquired",
+ "spin_off_carve_out",
+ "geo_expansion",
+ "partnership_announced",
+ "partnership_ended",
+ "prospect_loses_client",
+ "revenue_decline",
+ "distress_bankruptcy",
+ "earnings_call_mention",
+ "annual_report_insight",
+ "company_register_change",
+ "product_launch",
+ "website_relaunch",
+ "site_section_added",
+ "pricing_change",
+ "legal_page_change",
+ "new_public_repo_by_topic",
+ "own_incident_spike",
+ "public_symptom_visible",
+ "own_customer_reviews_negative",
+ "event_sponsorship",
+ "compliance_pursuit",
+ "regulation_deadline",
+ "regulatory_exposure",
+ "platform_policy_change",
+ "data_breach",
+ "peer_company_incident",
+ "litigation",
+ "positive_media",
+ "negative_media",
+ "award_recognition",
+ "tech_adoption_adjacent",
+ "competitor_installed",
+ "competitor_newly_adopted",
+ "overlapping_tools_in_category",
+ "recent_software_purchases",
+ "outbound_domains_registered",
+ "mcp_server_published",
+ "hf_org_paid_plan",
+ "bug_bounty_ai_scope",
+ "new_exec_buyer_role",
+ "exec_departure",
+ "first_hire_in_function",
+ "competitor_outage_deprecation",
+ "competitor_acquired_closed",
+ "competitor_logo_removed",
+ "competitor_positioning_change",
+ "competitor_banned_or_sanctioned",
+ "social_post_about_problem",
+ "podcast_or_talk_appearance",
+ "exec_public_appearance",
+ "named_project_underway",
+ "customer_peer_reference"
+ ],
+ "type": "string"
+ },
+ "maxItems": 15,
+ "type": "array"
+ },
+ "user": {
+ "additionalProperties": false,
+ "description": "Who the user is: their name, role at the seller and LinkedIn profile URL",
+ "properties": {
+ "linkedinUrl": {
+ "description": "The user's own LinkedIn profile URL; kept in the workspace, never sent to a model",
+ "pattern": "^https?:\\/\\/([a-z]{2,3}\\.)?linkedin\\.com\\/in\\/[^/?#\\s]+\\/?$",
+ "type": "string"
+ },
+ "name": {
+ "maxLength": 120,
+ "type": "string"
+ },
+ "role": {
+ "maxLength": 120,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "warmPaths": {
+ "description": "Warm paths the user confirmed: company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "company": {
+ "maxLength": 200,
+ "minLength": 3,
+ "type": "string"
+ },
+ "confirmedAt": {
+ "format": "date",
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
+ "type": "string"
+ },
+ "path": {
+ "maxLength": 300,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "company",
+ "path"
+ ],
+ "type": "object"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "won": {
+ "description": "Deals won (domains or names): the pattern to find more of",
+ "items": {
+ "maxLength": 200,
+ "minLength": 1,
+ "type": "string"
+ },
+ "maxItems": 500,
+ "type": "array"
+ },
+ "ycBatch": {
+ "description": "The seller's Y Combinator batch, e.g. \"W23\"; read from the seller's YC page when left out",
+ "maxLength": 40,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]