Overview

Carnot Search provides powerful company search capabilities to find detailed business information. With both standard and Pro versions, you can access comprehensive company databases for market research, lead generation, and business intelligence.

Key Features

CARNOT_SEARCH_CORP

  • Basic company search functionality
  • Find company information by name or criteria
  • Retrieve company URLs and addresses
  • Configurable result count

CARNOT_SEARCH_CORP_PRO

  • Enhanced search capabilities
  • More detailed company information
  • Advanced filtering options
  • Higher accuracy and coverage

Authentication

Carnot Search requires API keys from both Perplexity and OpenAI for enhanced search capabilities. Required credentials:
  • Perplexity API Key
  • OpenAI API Key
Note: Treat API keys as sensitive information and never commit them to public repositories.
- id: search_companies
  name: search_companies
  tool: CARNOT_SEARCH_CORP
  config:
    - name: perplexity_api_key
      value: "{{secrets.PERPLEXITY_API_KEY}}"
    - name: openai_api_key
      value: "{{secrets.OPENAI_API_KEY}}"
  input:
    - name: query
      value: "software companies in San Francisco"
    - name: num_results
      value: 10

- id: process_search_results
  name: process_search_results
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        
        # Process search results
        results = {{steps.search_companies.result.companies}}
        
        print("Company Search Results:")
        print("=" * 50)
        
        for i, company in enumerate(results, 1):
            print(f"{i}. {company.get('name', 'Unknown')}")
            print(f"   URL: {company.get('url', 'N/A')}")
            print(f"   Address: {company.get('address', 'N/A')}")
            print()
        
        print(f"Total companies found: {len(results)}")
- id: advanced_company_search
  name: advanced_company_search
  tool: CARNOT_SEARCH_CORP_PRO
  config:
    - name: perplexity_api_key
      value: "{{secrets.PERPLEXITY_API_KEY}}"
    - name: openai_api_key
      value: "{{secrets.OPENAI_API_KEY}}"
  input:
    - name: query
      value: "fintech startups with Series A funding in New York"
    - name: num_results
      value: 20

- id: analyze_competitive_landscape
  name: analyze_competitive_landscape
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        Analyze the following company search results and provide insights:
        
        {{steps.advanced_company_search.result.companies | json}}
        
        Please provide:
        1. Market trends analysis
        2. Geographic distribution
        3. Company size patterns
        4. Key players identification
        5. Competitive landscape overview

- id: export_company_data
  name: export_company_data
  tool: CONVERTER_ARRAY_TO_CSV
  input:
    - name: array
      value: |
        [
          ["Company Name", "Website", "Address", "Search Score"],
          {% for company in steps.advanced_company_search.result.companies %}
          ["{{company.name}}", "{{company.url}}", "{{company.address}}", "High"]{% if not loop.last %},{% endif %}
          {% endfor %}
        ]

Example: Market Research Workflow

- id: search_competitors
  name: search_competitors
  tool: CARNOT_SEARCH_CORP_PRO
  config:
    - name: perplexity_api_key
      value: "{{secrets.PERPLEXITY_API_KEY}}"
    - name: openai_api_key
      value: "{{secrets.OPENAI_API_KEY}}"
  input:
    - name: query
      value: "{{input.industry}} companies in {{input.target_region}}"
    - name: num_results
      value: 50

- id: enrich_company_data
  name: enrich_company_data
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        import re
        from urllib.parse import urlparse
        
        companies = {{steps.search_competitors.result.companies}}
        enriched_data = []
        
        for company in companies:
            # Extract domain from URL
            domain = ""
            if company.get('url'):
                try:
                    domain = urlparse(company['url']).netloc
                except:
                    domain = company['url']
            
            # Analyze company size based on address/description
            size_indicator = "Unknown"
            address = company.get('address', '').lower()
            if any(term in address for term in ['suite', 'floor', 'building']):
                size_indicator = "Medium-Large"
            elif any(term in address for term in ['street', 'ave', 'road']):
                size_indicator = "Small-Medium"
            
            enriched = {
                "name": company.get('name', ''),
                "url": company.get('url', ''),
                "domain": domain,
                "address": company.get('address', ''),
                "estimated_size": size_indicator
            }
            enriched_data.append(enriched)
        
        print(json.dumps(enriched_data, indent=2))

- id: create_market_report
  name: create_market_report
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        Create a comprehensive market research report based on this company data:
        
        {{steps.enrich_company_data.result.stdout}}
        
        Include:
        1. Executive Summary
        2. Market Size Assessment
        3. Key Players Analysis
        4. Geographic Distribution
        5. Competitive Landscape
        6. Market Opportunities
        7. Recommendations
        
        Format as a professional business report.

- id: save_market_report
  name: save_market_report
  tool: OUTPUT_FILE
  input:
    - name: content
      value: "{{steps.create_market_report.result.content}}"
    - name: filename
      value: "market_research_report_{{date | format('YYYY-MM-DD')}}.txt"
    - name: fileType
      value: "txt"

Example: Lead Generation Pipeline

- id: find_potential_leads
  name: find_potential_leads
  tool: CARNOT_SEARCH_CORP
  config:
    - name: perplexity_api_key
      value: "{{secrets.PERPLEXITY_API_KEY}}"
    - name: openai_api_key
      value: "{{secrets.OPENAI_API_KEY}}"
  input:
    - name: query
      value: "{{input.target_industry}} companies with 10-100 employees"
    - name: num_results
      value: 25

- id: qualify_leads
  name: qualify_leads
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        Analyze these potential leads and score them for sales qualification:
        
        {{steps.find_potential_leads.result.companies | json}}
        
        Scoring criteria:
        - Company size and growth potential (1-10)
        - Industry fit (1-10)
        - Geographic accessibility (1-10)
        - Technology alignment (1-10)
        
        Return a scored list with recommendations for follow-up.

- id: export_qualified_leads
  name: export_qualified_leads
  tool: CONVERTER_ARRAY_TO_CSV
  input:
    - name: array
      value: |
        [
          ["Company", "Website", "Address", "Qualification Score", "Priority", "Notes"],
          {% for company in steps.find_potential_leads.result.companies %}
          ["{{company.name}}", "{{company.url}}", "{{company.address}}", "TBD", "Medium", "Follow up required"]{% if not loop.last %},{% endif %}
          {% endfor %}
        ]

Search Parameters

Query Optimization

  • Use specific industry terms
  • Include geographic qualifiers
  • Specify company size when relevant
  • Use boolean operators for complex searches

Result Management

  • Start with smaller result sets (10-20)
  • Increase for comprehensive research (50+)
  • Consider API rate limits
  • Balance accuracy vs coverage

Use Cases

  • Market Research: Identify competitors and market players
  • Lead Generation: Find potential customers and partners
  • Investment Research: Analyze market sectors and opportunities
  • Competitive Intelligence: Monitor competitor landscape
  • Partnership Development: Discover potential business partners
  • Sales Prospecting: Build targeted prospect lists
  • Due Diligence: Research companies for business decisions

Data Structure

Search results include:
{
  "name": "Company Name",
  "url": "https://company-website.com",
  "address": "123 Business St, City, State, ZIP"
}

Best Practices

  • Query Design: Use specific, targeted search terms
  • Result Processing: Always validate and enrich search results
  • Rate Limiting: Respect API limits and implement delays
  • Data Quality: Clean and verify company information
  • Privacy: Handle company data responsibly and legally