Back to Alchemy
Alchemy RecipeIntermediateworkflow

Competitive analysis and market intelligence gathering

24 March 2026

Introduction

Competitive analysis is one of those tasks that eats time without adding much value if done manually. You spend hours collecting data from different sources, copying snippets into spreadsheets, then summarising the findings. By the time you've finished, market conditions have shifted and your intelligence is already stale.

The real problem is that these tools exist in isolation. Accio AI can pull company information, Lex Machina provides legal and litigation data, and Resoomer condenses documents into summaries, but none of them talk to each other. You end up with manual handoffs between platforms, copy-paste work, and no central repository for your findings.

This is where orchestration makes the difference. By wiring these three tools together with Zapier, n8n, Make, or Claude Code, you can trigger a complete competitive analysis workflow with a single input. New competitor spotted? One prompt, and the system gathers their company details, pulls their legal history, summarises their latest documents, and deposits everything into a shared workspace. No manual steps required.

The Automated Workflow

We'll build this workflow using n8n as the primary orchestrator, since it offers the best balance of flexibility and ease of use for intermediate users. The flow will trigger when you submit a competitor name, then move through three stages: discovery, analysis, and consolidation.

Stage One: Company Discovery with Accio AI

Accio AI specialises in pulling structured company data from public sources. When you feed it a company name, it returns employment size, funding information, recent news, and key executives.

Start by creating an n8n workflow with a Webhook trigger. This allows you to submit competitor names via a simple HTTP POST request.


POST /webhook/competitor-analysis
Content-Type: application/json

{
  "company_name": "TechCorp Inc",
  "industry": "SaaS"
}

Next, add an HTTP Request node to call the Accio AI API endpoint. You'll need an API key from Accio (available from their dashboard).


GET https://api.accio-ai.com/v1/company/search
Headers:
  Authorization: Bearer YOUR_ACCIO_API_KEY
  Content-Type: application/json

Query Parameters:
  q=TechCorp Inc
  fields=company_name,employees,funding,executives,recent_news

Accio returns JSON structured like this:

{
  "company": {
    "name": "TechCorp Inc",
    "employees": 450,
    "founded": 2015,
    "funding_total": "$42M",
    "latest_round": "Series B",
    "executives": [
      {
        "name": "Sarah Chen",
        "title": "CEO",
        "background": "Previously VP at DataCorp"
      }
    ],
    "recent_news": [
      {
        "headline": "TechCorp raises $15M in Series B",
        "date": "2024-01-15",
        "source": "TechCrunch"
      }
    ]
  }
}

Store this response in an n8n variable for use in later stages. Set the variable name to accio_data.

Stage Two: Legal and Litigation Intelligence with Lex Machina

Lex Machina specialises in litigation data, regulatory filings, and legal intelligence. This is where you'll discover disputes, regulatory actions, and legal risk factors for your competitor.

Add another HTTP Request node pointing to the Lex Machina API. You'll pass the company name from your webhook trigger.


GET https://api.lex-machina-ai.com/v1/entities/search
Headers:
  Authorization: Bearer YOUR_LEX_MACHINA_API_KEY
  Content-Type: application/json

Query Parameters:
  entity_name=TechCorp Inc
  include_litigation=true
  include_regulatory=true
  include_ip_disputes=true

Lex Machina returns litigation records and regulatory data:

{
  "entity": "TechCorp Inc",
  "litigation": {
    "total_cases": 12,
    "active_cases": 3,
    "cases": [
      {
        "case_id": "2023-CV-8421",
        "plaintiff": "DataStream LLC",
        "defendant": "TechCorp Inc",
        "issue": "Patent infringement",
        "filed_date": "2023-06-12",
        "status": "Discovery",
        "court": "Northern District of California"
      }
    ]
  },
  "regulatory": {
    "filings": 8,
    "recent_actions": [
      {
        "agency": "FTC",
        "action_type": "Inquiry",
        "description": "Data privacy practices investigation",
        "date": "2024-01-20"
      }
    ]
  }
}

Store this as the lex_data variable.

Stage Three: Document Summarisation with Resoomer

By this stage, you've gathered structured company data and legal intelligence. Now you need to summarise any lengthy documents: annual reports, white papers, investor presentations, or policy documents. Resoomer handles this automatically.

However, Resoomer doesn't take direct API calls in the traditional sense. Instead, you'll use it via a webhook integration or by sending document URLs. Create an n8n node that fetches a recent document URL for the competitor (you can hardcode this or pull it from Accio's findings), then format it for Resoomer.


POST https://api.resoomer.com/api/summarize
Headers:
  Authorization: Bearer YOUR_RESOOMER_API_KEY
  Content-Type: application/json

{
  "url": "https://techcorp.com/investor-deck-2024.pdf",
  "type": "document",
  "length": "medium",
  "language": "en"
}

Resoomer returns a condensed summary:

{
  "original_length": 4500,
  "summary_length": 890,
  "summary": "TechCorp's 2024 investor deck highlights expansion into enterprise markets with three new product modules. Revenue growth of 35% year-over-year is driven by customer concentration in the financial services sector. The company plans Series C fundraising within 12 months and is building out a sales office in EMEA regions.",
  "key_points": [
    "Enterprise product expansion",
    "35% YoY revenue growth",
    "Series C planned in 2024"
  ]
}

Store this as resoomer_data.

Stage Four: Consolidation and Output

Now you have three datasets. Create a final n8n node that formats everything into a clean, structured output. Use a Set node to combine the variables:

{
  "competitor_name": "{{ $node.webhook.json.company_name }}",
  "analysis_timestamp": "{{ new Date().toISOString() }}",
  "company_overview": "{{ $node['Accio AI'].json.company }}",
  "legal_intelligence": "{{ $node['Lex Machina'].json }}",
  "document_summary": "{{ $node['Resoomer'].json.summary }}",
  "key_findings": {
    "employee_count": "{{ $node['Accio AI'].json.company.employees }}",
    "active_litigation": "{{ $node['Lex Machina'].json.litigation.active_cases }}",
    "regulatory_risk": "{{ $node['Lex Machina'].json.regulatory.recent_actions.length > 0 ? 'High' : 'Low' }}",
    "strategic_focus": "{{ $node['Resoomer'].json.key_points }}"
  }
}

Finally, send this consolidated output to your destination of choice. Popular options include:

  1. Google Sheets via the Google Sheets API node, appending each analysis as a new row in a "Competitors" tab.
  2. Slack, posting a formatted message to a dedicated #competitive-intelligence channel.
  3. A database like PostgreSQL, inserting the full JSON structure for long-term analysis.
  4. Notion, creating a new page under a "Competitor Research" database with all findings.

For a Slack integration, configure the output like this:

{
  "channel": "#competitive-intelligence",
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "Competitive Analysis: {{ $node.webhook.json.company_name }}"
      }
    },
    {
      "type": "section",
      "fields": [
        {
          "type": "mrkdwn",
          "text": "*Employees:*\n{{ $node['Accio AI'].json.company.employees }}"
        },
        {
          "type": "mrkdwn",
          "text": "*Funding:*\n{{ $node['Accio AI'].json.company.funding_total }}"
        }
      ]
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Document Summary:*\n{{ $node['Resoomer'].json.summary }}"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Active Litigation:* {{ $node['Lex Machina'].json.litigation.active_cases }}"
      }
    }
  ]
}

This entire workflow executes in under 30 seconds. You trigger it with a single HTTP request, and the system handles the rest.

The Manual Alternative

If you prefer to retain more granular control over each analysis, or if your competitors require custom research (which often happens with smaller or private companies), you can use these tools individually:

  1. Visit Accio AI's web dashboard, enter the company name, and review the results before proceeding.
  2. Open Lex Machina separately to dig deeper into litigation records if the automated pull flags active cases.
  3. Use Resoomer on specific documents you've found manually, rather than relying on automated document discovery.

This approach takes longer (typically 20 to 40 minutes per competitor), but it gives you the chance to ask follow-up questions within each platform and verify data quality. For deeply private companies or niche markets, this hybrid method often makes sense: automate the data gathering, then manually validate and expand on the results.

Pro Tips

Error Handling and Retries

Accio AI occasionally returns rate-limited responses if you're processing many competitors in quick succession. In your n8n workflow, set up a Retry node after the Accio API call with exponential backoff. Configure it to retry up to 3 times with a 5-second delay between attempts:

{
  "retry": {
    "max_retries": 3,
    "delay_base": 5000,
    "delay_multiplier": 2
  }
}

This means the first retry waits 5 seconds, the second waits 10 seconds, and the third waits 20 seconds, before giving up.

Rate Limits and Batching

Lex Machina permits 100 API calls per day on standard plans. If you're analysing many competitors, batch them. Run competitive analysis once daily during off-peak hours (for example, 11 PM UTC), rather than spreading requests throughout the day. This also ensures your team sees consolidated reports at a predictable time.

Cost Optimisation

Resoomer charges by the number of summarisations. Avoid sending documents that are already summaries or marketing copy. Use Accio's news feed instead, which often includes pre-written summaries of major announcements. This saves Resoomer API calls and money.

Data Staleness

Lex Machina updates litigation records with a 24-48 hour lag. If you need real-time litigation data, supplement this workflow with a Google Alerts integration (set up separately via IFTTT or Zapier) to catch breaking news.

Customising Field Selection

Accio AI's API allows you to specify exactly which fields you want to retrieve. If you only care about funding and employees, request only those fields. This can slightly reduce latency and improves readability of the JSON response:


GET https://api.accio-ai.com/v1/company/search?q=TechCorp&fields=employees,funding_total

Cost Breakdown

ToolPlan NeededMonthly CostNotes
Accio AIProfessional£99500 API calls/month included; £0.20 per additional call
Lex MachinaStandard£149100 API calls/day (3,000/month); entity data included
ResoomerPremium£892,000 summarisations/month; document length unlimited
n8nCloud Professional£30200,000 executions/month; sufficient for 6-8 daily competitor analyses
Total£367Assumes moderate usage; scales up with higher competitor volume

If you analyse 5 new competitors weekly, this stack costs approximately £1.83 per competitor analysis, including orchestration overhead. Manual research typically costs 4-6 hours of labour per competitor at standard consulting rates, this becomes a significant saving within the first few weeks.

Implementation Timeline

Setting up this workflow from scratch takes 1-2 hours:

  1. Sign up for API keys from each tool (15 minutes).
  2. Build the n8n workflow following the stages above (45 minutes).
  3. Test with 2-3 real competitors and refine output formatting (30 minutes).

Once live, you can add new competitors to your analysis queue in under 2 minutes per entry. The system handles everything else automatically.