Introduction
Research used to mean hours of tab switching: searching Google Scholar, reading PDFs, copying excerpts into a document, then manually summarising findings. Most people still work this way. You run a search, scan results, open promising links, extract relevant information, and paste it into a note. Each step requires your attention. The process is slow and repetitive.
An AI research assistant stack changes this entirely. Instead of clicking between tools, you set up a workflow that accepts a research query, automatically searches multiple sources, extracts relevant information, summarises findings, and delivers a polished report without you touching a single intermediate step. The entire process happens in the background while you work on something else.
This post shows you how to build exactly that. We will wire together a search tool, content retrieval, and Claude for analysis, then glue it all together with an orchestration platform. No coding required if you prefer the visual approach; minimal coding required if you want more control.
The Automated Workflow
System Overview
The stack consists of five moving parts:
- A trigger (you submit a research query via email, form, or API call).
- A search tool that finds relevant URLs (Tavily API or similar).
- A web scraper that retrieves full article text from those URLs.
- Claude (via API) that reads the content and produces a structured summary.
- A final output (email, Slack, database, or document).
The orchestration layer handles all the connections. Data flows from step to step without manual intervention.
Choosing Your Orchestrator
For a beginner, Zapier is the easiest path: visual workflow builder, extensive integrations, minimal setup. You can build this entire stack in 20 minutes without writing code.
If you want more flexibility and don't mind some configuration, n8n is better. It runs on your own server (cheaper at scale) and allows more complex logic.
Make (Integromat) sits in the middle: more powerful than Zapier, still visual, good balance of ease and control.
For this walkthrough, I will show both the Zapier approach (visual) and the n8n approach (with code snippets).
Step 1: Set Up Your Trigger
Your workflow needs a starting point. You submit a research query somehow. Common triggers:
-
Email to a dedicated address.
-
Form submission (Google Forms, Typeform).
-
Slack command.
-
Direct API call.
Zapier Approach:
In Zapier, create a new zap. Select a trigger app (Gmail, Slack, or Webhook by Zapier). If using email:
- Choose "Gmail" as the trigger app.
- Select "New Email Matching Search" as the trigger event.
- Set search criteria: from a specific sender or with a specific label.
- Extract the email body and subject.
n8n Approach:
In n8n, create a new workflow. Start with a "Webhook" node to accept incoming requests:
POST /webhook/research-query
Content-Type: application/json
{
"query": "What are the latest advances in spaced repetition learning?",
"maxResults": 5
}
Configure the webhook in n8n:
Node: Webhook
Method: POST
Path: /webhook/research-query
Response: 200 OK
Step 2: Search for Relevant Sources
Now your workflow has a query. You need to find sources. Use Tavily API, which returns search results with brief summaries and source URLs.
Zapier Approach:
Add an action step:
- Search for "Tavily" integration in Zapier.
- If not available, use "Webhooks by Zapier" to call the Tavily API manually.
- Use your Tavily API key (get one free at tavily.com).
n8n Approach:
Add an HTTP Request node to call Tavily:
Node: HTTP Request
Method: POST
URL: https://api.tavily.com/search
Body (JSON):
{
"api_key": "your_tavily_api_key",
"query": "{{ $node.Webhook.json.query }}",
"max_results": 5,
"include_answer": true
}
Tavily returns:
{
"results": [
{
"title": "Spaced Repetition: Latest Research",
"url": "https://example.com/article-1",
"content": "Brief summary..."
},
{
"title": "Memory Retention via Spacing Effect",
"url": "https://example.com/article-2",
"content": "Brief summary..."
}
]
}
Step 3: Retrieve Full Article Content
Search results give you summaries and URLs, but Claude needs the full text to produce a thorough analysis. Use Firecrawl or a similar web scraping API to extract full content.
Zapier Approach:
Add a new action:
- Use "Webhooks by Zapier" to call Firecrawl API.
- Loop through each URL from the previous step.
- Extract the full content.
Zapier's native looping can be limited. You might hit its action limit quickly, so consider upgrading to their "Professional" plan or switching to n8n for this step.
n8n Approach:
n8n handles looping elegantly. Add a "Loop" node:
Node: Loop
Input: results from Tavily API
For each result:
Add HTTP Request node to Firecrawl
Method: POST
URL: https://api.firecrawl.dev/v1/scrape
Body (JSON):
{
"url": "{{ $item.json.url }}",
"pageOptions": {
"onlyMainContent": true
}
}
Headers:
{
"Authorization": "Bearer your_firecrawl_api_key"
}
Firecrawl returns:
{
"success": true,
"data": {
"markdown": "Full article text in markdown format...",
"html": "<html>Full HTML...</html>",
"metadata": {
"title": "Article Title",
"description": "Meta description"
}
}
}
Step 4: Analyse Content with Claude
Now you have full article text. Send all of this to Claude with instructions to analyse and summarise. This is where the intelligence happens.
Zapier Approach:
Add an action:
- Search for "OpenAI" in Zapier actions (Claude integrates via OpenAI API format).
- Actually, use "Webhooks by Zapier" to call Claude directly.
n8n Approach:
Add an HTTP Request node to call Claude:
Node: HTTP Request
Method: POST
URL: https://api.anthropic.com/v1/messages
Headers:
{
"x-api-key": "your_claude_api_key",
"anthropic-version": "2023-06-01"
}
Body (JSON):
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 2000,
"system": "You are a research analyst. Synthesise the provided articles into a structured summary with key findings, common themes, and open questions.",
"messages": [
{
"role": "user",
"content": "Analyse these articles:\n\n{{ $node['Loop'].json[0].data.markdown }}\n\n{{ $node['Loop'].json[1].data.markdown }}\n\n[... etc for each article]"
}
]
}
To construct the message dynamically, you need to join all article content:
Node: Code (n8n JavaScript execution)
const articles = $node.Loop.json.map(item =>
item.data.markdown
).join("\n\n---\n\n");
const userMessage = `Analyse these articles and provide:
1. Key findings (bullet points)
2. Common themes
3. Contradictions or debates
4. Implications
5. Further questions
Articles:\n\n${articles}`;
return [{ json: { userMessage } }];
Claude responds with a detailed summary:
{
"content": [
{
"type": "text",
"text": "
## Research Summary:
Spaced Repetition\n\n
### Key Findings\n- Spacing intervals increase retention by 40-60%\n- Optimal timing follows an exponential decay function\n...[full summary]"
}
]
}
Step 5: Deliver the Result
Send the final summary somewhere useful: email, Slack, a database, or a shared document.
Zapier Approach:
Add a final action:
- Gmail: Send an email with the summary.
- Slack: Post to a channel.
- Google Sheets: Append the summary to a spreadsheet.
n8n Approach:
Add output nodes. For email:
Node: Send Email
To: your_email@example.com
Subject: Research Summary: {{ $node.Webhook.json.query }}
Body (HTML):
<h2>Research Summary</h2>
<p>{{ $node['Call Claude'].json.content[0].text }}</p>
For Slack:
Node: HTTP Request
Method: POST
URL: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
Body (JSON):
{
"text": "Research complete: {{ $node.Webhook.json.query }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "{{ $node['Call Claude'].json.content[0].text }}"
}
}
]
}
Complete Workflow Diagram (n8n)
Webhook (submit query)
↓
Tavily API (search for sources)
↓
Loop through results
↓
Firecrawl (scrape full content)
↓
Code node (combine articles)
↓
Claude API (analyse and summarise)
↓
Send Email / Slack / Database
The Manual Alternative
If you prefer not to automate or need more control over specific steps, you can use these tools individually:
- Search: Use Tavily directly or Google Scholar manually.
- Content retrieval: Open each article and copy the text (or use a browser extension like Reader Mode).
- Analysis: Paste content into Claude via claude.ai or your application.
- Summarisation: Let Claude produce the summary.
- Output: Copy and paste into your note system.
This takes 30 to 45 minutes per query. Automation reduces it to 2 to 3 minutes. The time saving compounds if you run multiple queries weekly.
Pro Tips
Rate Limiting and Cost Control
Tavily and Firecrawl have rate limits on free plans. If you are running many queries:
- Set up error handling in your workflow. If the Tavily quota is exceeded, wait and retry rather than failing.
- In n8n, add a "Wait" node after errors:
wait 3600 seconds (1 hour) before retry. - Consider Tavily's pro plan ($20/month) if you exceed free limits regularly.
Handling Scraping Failures
Firecrawl occasionally fails on paywalled articles or JavaScript-heavy sites. Add conditional logic:
In n8n:
Node: If (Firecrawl response successful?)
Yes → Use the markdown content
No → Use Tavily's brief summary instead
This prevents your entire workflow from failing because one article could not be scraped.
Deduplication and Caching
If you run similar queries repeatedly, cache results. Store them in a database (Airtable, PostgreSQL) and skip re-scraping known URLs.
In n8n:
Node: Database lookup
Check if URL was processed in the last 30 days
If yes, use cached markdown
If no, call Firecrawl
Customising Claude's Instructions
The system prompt is where the real power lies. Adjust it based on what you need:
- Academic research: "Provide citations and note methodological strengths and weaknesses."
- Industry analysis: "Focus on competitive advantages, market shifts, and business implications."
- News analysis: "Identify bias, separate fact from opinion, and flag unsourced claims."
Cost Optimisation
Use Claude's cheaper models (Claude 3.5 Haiku) if you are summarising straightforward content. Reserve Claude 3.5 Sonnet for complex analysis requiring nuance.
For summaries: Claude 3.5 Haiku ($0.80 per million input tokens)
For analysis: Claude 3.5 Sonnet ($3.00 per million input tokens)
Test both and compare output quality. Often Haiku is sufficient.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Tavily API | Hobby (free to $20) | £0–£16 | Free tier: 1,000 queries/month. Pro: unlimited. |
| Firecrawl | Free to Starter | £0–£10 | Free: 500 requests/month. Starter: unlimited scrapes. |
| Claude API | Pay-as-you-go | £2–£15 | Depends on query volume. Budget ~£5,000 tokens per research query. |
| Zapier | Pro | £19/month | For visual automation. Includes action limit. |
| n8n | Self-hosted (free) or Cloud | £0–£15 | Self-hosted is free. Cloud tier: £8/month for small teams. |
| Email delivery | Included | £0 | Most email providers (Gmail) included. Transactional: Sendgrid (free to £20). |
Total estimated monthly cost for light use (10 queries/week): £5–£25
If you use n8n self-hosted and stay within Claude's free tier usage, you can run this stack for under £5/month. Zapier increases it to around £24/month due to their subscription floor.
You now have a fully automated research assistant. Submit a query via email or webhook. In two minutes, you receive a structured summary of the latest information on that topic, complete with key findings and analysis. No manual steps. No copying and pasting. No tab switching.
Start with Zapier if you want zero friction. Move to n8n if you outgrow Zapier's action limits or want to self-host. Either way, the workflow remains the same: search, scrape, analyse, deliver.
