← Files Vibe ProspectingARCHIVED FILE

resources/openai/chatgpt-app-submission.json

12 KB · Oct 8, 2026 · 12:02 UTC

↓ Download file

See the change to this file →

{
  "$schema": "https://developers.openai.com/apps-sdk/schemas/chatgpt-app-submission.v1.json",
  "schema_version": 1,
  "app_info": {
    "display_name": "Vibe Prospecting",
    "subtitle": "Find B2B leads",
    "description": "Vibe Prospecting helps users find companies and prospects, match known businesses or people, enrich results with company and contact details, inspect business and prospect events, review final samples, load saved datasets, and export confirmed results as CSV files.",
    "category": "BUSINESS"
  },
  "tools": {
    "autocomplete": {
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Only retrieves standardized filter values and does not create result tables, datasets, or workflow state.",
        "open_world_justification": "Looks up values inside authenticated Vibe Prospecting services and does not publish or change public internet state.",
        "destructive_justification": "Does not delete, overwrite, revoke access, charge usage, or perform irreversible actions."
      }
    },
    "enrich-business": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Reads an existing session table, calls enrichment services, and writes enriched company results into new session tables.",
        "open_world_justification": "Stores derived results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates derived session data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "enrich-prospects": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Reads an existing session table, calls enrichment services, and writes enriched prospect results into new session tables.",
        "open_world_justification": "Stores derived results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates derived session data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "export-to-csv": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": true,
        "destructiveHint": true
      },
      "justifications": {
        "read_only_justification": "Runs the approved workflow, uploads CSV files, creates a dataset record, and updates exclusion state for exported entities.",
        "open_world_justification": "Creates internet-reachable CSV download artifacts and download-link records after explicit export confirmation.",
        "destructive_justification": "Consumes credits and creates export plus exclusion records after explicit export confirmation."
      }
    },
    "fetch-businesses-events": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Reads business IDs from a session table, calls event services, and writes event results into new session tables.",
        "open_world_justification": "Stores event results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates derived session data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "fetch-entities": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Fetches companies or prospects and stores exploration results in session tables for follow-up workflow steps.",
        "open_world_justification": "Stores search results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates session result tables but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "fetch-entities-statistics": {
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Only retrieves aggregate statistics for matching companies or prospects and returns them without creating result tables.",
        "open_world_justification": "Returns private aggregate lookup results and does not publish or modify public internet content.",
        "destructive_justification": "Does not delete, overwrite, revoke access, charge usage, or perform irreversible actions."
      }
    },
    "fetch-prospects-events": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Reads prospect IDs from a session table, calls event services, and writes prospect event results into new session tables.",
        "open_world_justification": "Stores event results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates derived session data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "get-dataset": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Lists saved datasets or loads a selected dataset into a session table for further workflow steps.",
        "open_world_justification": "Loads or lists authenticated user datasets inside private Vibe Prospecting systems and does not publish public internet content.",
        "destructive_justification": "Creates a session copy of dataset rows when loading but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "internal-autocomplete": {
      "annotations": {
        "readOnlyHint": true,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Only retrieves autocomplete data for app widgets and does not create result tables or datasets.",
        "open_world_justification": "Looks up widget autocomplete values inside authenticated services and does not publish or change public internet state.",
        "destructive_justification": "Does not delete, overwrite, revoke access, charge usage, or perform irreversible actions."
      }
    },
    "match-business": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Matches provided companies and stores successful matches in a session table.",
        "open_world_justification": "Stores match results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates session match data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "match-prospects": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": false
      },
      "justifications": {
        "read_only_justification": "Matches provided people and stores successful matches in a session table.",
        "open_world_justification": "Stores match results in the user's private session and does not publish or modify public internet content.",
        "destructive_justification": "Creates session match data but does not delete, overwrite, revoke access, or perform irreversible destructive actions."
      }
    },
    "show-sample": {
      "annotations": {
        "readOnlyHint": false,
        "openWorldHint": false,
        "destructiveHint": true
      },
      "justifications": {
        "read_only_justification": "Reads session rows, estimates the export workflow, and records sample-display usage before revealing full sample rows.",
        "open_world_justification": "Operates only on private session tables and billing state and does not publish or change public internet state.",
        "destructive_justification": "Charges sample-display usage for the selected session table before revealing full sample rows."
      }
    }
  },
  "test_cases": [
    {
      "description": "Find companies matching a specific country code",
      "user_prompt": "Find me 20 companies with company_country_code IL and show a sample",
      "file_attachment_urls": null,
      "tools_triggered": "fetch-entities, show-sample",
      "expected_output": "Returns a concise sample of matching companies.",
      "expected_output_url": null
    },
    {
      "description": "Find prospects and enrich contact details.",
      "user_prompt": "Find 20 prospects at companies with company_country_code US, call enrich-prospects to get their email and phone number, then show a sample",
      "file_attachment_urls": null,
      "tools_triggered": "fetch-entities, enrich-prospects, show-sample",
      "expected_output": "Returns a sample of prospects with enriched email and phone number values.",
      "expected_output_url": null
    },
    {
      "description": "Resolve a known company and enrich company details.",
      "user_prompt": "Match Microsoft by domain microsoft.com, call enrich-business to get firmographic details, and show a sample",
      "file_attachment_urls": null,
      "tools_triggered": "match-business, enrich-business, show-sample",
      "expected_output": "Returns a sample of the matched company record with enriched firmographic details.",
      "expected_output_url": null
    },
    {
      "description": "Fetch employees from a known company with emails.",
      "user_prompt": "Match the company with domain gong.io, find 30 prospects there, call enrich-prospects to get their email, then show a sample",
      "file_attachment_urls": null,
      "tools_triggered": "match-business, fetch-entities, enrich-prospects, show-sample",
      "expected_output": "Returns a sample of gong.io prospects with enriched email values.",
      "expected_output_url": null
    },
    {
      "description": "Find companies in a bucketed size range.",
      "user_prompt": "Find 20 companies with company_country_code GB and company_size 51-200, and show a sample",
      "file_attachment_urls": null,
      "tools_triggered": "fetch-entities, show-sample",
      "expected_output": "Returns a sample of companies with company_size 51-200.",
      "expected_output_url": null
    }
  ],
  "negative_test_cases": [
    {
      "description": "Do not trigger for general consumer web search.",
      "user_prompt": "What are the best restaurants near Times Square tonight?",
      "file_attachment_urls": null,
      "tools_triggered": null,
      "expected_output": "The app should not be invoked because restaurant recommendations are outside B2B prospecting workflows.",
      "expected_output_url": null
    },
    {
      "description": "Do not trigger for sending outreach.",
      "user_prompt": "Draft a sales pitch email and send it to john@example.com, CC my manager.",
      "file_attachment_urls": null,
      "tools_triggered": null,
      "expected_output": "The app should not be invoked because it does not draft or send emails or messages.",
      "expected_output_url": null
    },
    {
      "description": "Do not trigger for weather questions.",
      "user_prompt": "Will it rain in London this weekend?",
      "file_attachment_urls": null,
      "tools_triggered": null,
      "expected_output": "The app should not be invoked because weather forecasts are outside its supported workflows.",
      "expected_output_url": null
    }
  ]
}

SHA-256: 4a355c6890ae3ef15606f67975e9a94026d6a1df65417b88d524e5ae4ef9a18b