Back to Alchemy
Alchemy RecipeIntermediateworkflow

Customer feedback analysis and product roadmap alignment

24 March 2026

Introduction

Product teams waste enormous amounts of time manually reviewing customer feedback, extracting insights, and then checking whether those insights actually align with the roadmap. You'll have a spreadsheet of feature requests, another document with your product strategy, and a third with the last quarter's support tickets. Someone has to read through all of them, synthesise the patterns, and then—if they're thorough—verify that the insights match what you're actually building next.

The real problem isn't complexity; it's repetition. Every week or month, you repeat the same process: read feedback, note themes, compare to roadmap, send a report. Each cycle takes 4 to 8 hours of focused work, and the person doing it is usually too busy for focused work.

This Alchemy workflow removes that handoff entirely. You feed customer feedback documents into Bhava AI for thematic analysis, use Chat with PDF by Copilotus to extract insights from your product roadmap document, then pass both outputs to Terrakotta AI to identify alignment gaps and opportunities. The whole pipeline runs on a schedule; you wake up to a prioritised list of what customers want versus what you're building.

The Automated Workflow

Which Orchestration Tool to Use

For this workflow, n8n is the best choice. It's self-hostable, handles document processing without fuss, and offers better control over error handling than Zapier. Make (Integromat) would work too, but you'd hit API complexity issues with multi-step document transformations. Zapier could work for a simpler version, though you'd lose some flexibility around retries and conditional logic.

We'll assume you're using n8n, either self-hosted or via their cloud instance.

Step 1: Trigger and Fetch Feedback

Your workflow starts with a scheduled trigger, running every Monday morning at 09:00 UTC. You could also use a webhook trigger if feedback comes in via an external system.


Trigger Type: Schedule
Schedule: Every Monday at 09:00 UTC

Before calling Bhava AI, you need to gather feedback. If feedback arrives via email, Slack, or a support tool, you'll need to collect it into a single document first. For this example, assume you have a feedback collection process that outputs a PDF or text file to cloud storage (Google Drive, S3, or similar).

Use n8n's Google Drive node (or your chosen storage system) to fetch the latest feedback document:


Node: Google Drive
Operation: Download File
File ID: [Your feedback collection folder]

Step 2: Feed Feedback to Bhava AI

Bhava AI specialises in thematic analysis and pattern extraction. It reads text, identifies recurring themes, and returns structured data about what customers are actually saying.

Create an HTTP request node to call Bhava AI:


POST https://api.bhava.ai/v1/analyse
Headers:
  Authorization: Bearer [YOUR_BHAVA_API_KEY]
  Content-Type: application/json

Body:
{
  "document_text": "{{$node.Google_Drive.data.fileContent}}",
  "analysis_type": "thematic",
  "min_theme_frequency": 3,
  "output_format": "structured"
}

Bhava AI returns structured JSON with identified themes and their frequency:

{
  "themes": [
    {
      "theme": "Export to spreadsheet",
      "frequency": 12,
      "customer_segments": ["Enterprise", "Mid-market"],
      "sentiment": "feature_request"
    },
    {
      "theme": "API rate limit increase",
      "frequency": 8,
      "customer_segments": ["Technical"],
      "sentiment": "pain_point"
    },
    {
      "theme": "Mobile app offline mode",
      "frequency": 5,
      "customer_segments": ["Field teams"],
      "sentiment": "feature_request"
    }
  ],
  "summary": "Customers most want export capabilities and higher API limits. Mobile offline access is secondary but consistent."
}

Step 3: Extract Roadmap Content

Your product roadmap probably lives in a document: a Notion page, a PDF, or a Google Doc. You need to extract its contents and feed it to Chat with PDF by Copilotus.

First, fetch the roadmap document:


Node: Google Drive (or Notion API)
Operation: Download File
File ID: [Your product roadmap document]

Then call Chat with PDF by Copilotus. This tool specialises in conversational extraction from PDF documents:


POST https://api.copilotus.com/v1/chat-with-pdf
Headers:
  Authorization: Bearer [YOUR_COPILOTUS_API_KEY]
  Content-Type: application/json

Body:
{
  "file_url": "{{$node.Google_Drive.data.downloadUrl}}",
  "questions": [
    "What are the next quarter's planned features?",
    "Which teams are responsible for each initiative?",
    "What problems does each roadmap item solve?"
  ]
}

Chat with PDF returns conversational answers extracted from your roadmap:

{
  "responses": [
    {
      "question": "What are the next quarter's planned features?",
      "answer": "Q2 priorities: Enhanced reporting dashboard, mobile web support, new authentication methods (SAML, OAuth), and performance optimisations for large datasets."
    },
    {
      "question": "Which teams are responsible for each initiative?",
      "answer": "Reporting dashboard: Analytics team. Mobile web: Frontend team. Auth: Platform team. Performance: Infrastructure team."
    },
    {
      "question": "What problems does each roadmap item solve?",
      "answer": "Reporting helps enterprise customers analyse trends. Mobile web supports field workers. New auth methods address compliance requirements. Performance improvements benefit high-volume users."
    }
  ]
}

Step 4: Alignment Analysis with Terrakotta AI

Now you have customer themes and your roadmap. Terrakotta AI specialises in gap analysis and priority scoring. It compares what customers want against what you're building and flags misalignments.


POST https://api.terrakotta.ai/v1/alignment-analysis
Headers:
  Authorization: Bearer [YOUR_TERRAKOTTA_API_KEY]
  Content-Type: application/json

Body:
{
  "customer_feedback_themes": {{$node.Bhava_AI.data.themes}},
  "roadmap_items": {{$node.Chat_with_PDF.data.responses}},
  "analysis_focus": "gaps_and_opportunities",
  "scoring_model": "frequency_impact"
}

Terrakotta AI returns a prioritised alignment report:

{
  "alignment_summary": {
    "covered_by_roadmap": 2,
    "not_covered": 3,
    "partial_overlap": 1
  },
  "gaps": [
    {
      "customer_need": "Export to spreadsheet",
      "frequency": 12,
      "roadmap_coverage": "None planned",
      "priority_score": 9.2,
      "recommendation": "Schedule for Q2 or Q3; high customer frequency and enterprise segment impact."
    },
    {
      "customer_need": "API rate limit increase",
      "frequency": 8,
      "roadmap_coverage": "Infrastructure team's performance work may address partially",
      "priority_score": 7.1,
      "recommendation": "Clarify with Infrastructure team whether rate limits are in scope."
    }
  ],
  "opportunities": [
    {
      "roadmap_item": "Mobile web support",
      "customer_alignment": "High. Field teams want offline mode, which is adjacent to mobile expansion.",
      "recommendation": "Consider offline caching as phase 2 after mobile web launch."
    }
  ]
}

Step 5: Format and Send the Report

Use n8n's email or Slack node to deliver the report. Most teams prefer Slack for weekly reports so they can react and comment immediately.


Node: Slack
Operation: Send Message
Channel: #product-team
Message Format: Blocks (JSON)

Message Body:
{
  "text": "Weekly Customer Feedback Alignment Report",
  "blocks": [
    {
      "type": "header",
      "text": {
        "type": "plain_text",
        "text": "Customer Feedback vs. Roadmap Alignment"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Top Unaddressed Customer Needs*\n• Export to spreadsheet (12 requests, Priority: 9.2/10)\n• API rate limit increase (8 requests, Priority: 7.1/10)"
      }
    },
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Roadmap Alignment Opportunities*\n• Mobile web support aligns with field team offline requests"
      }
    }
  ]
}

Complete n8n Workflow Structure

Here's how the nodes connect:


Schedule Trigger (Weekly)
  ↓
Google Drive (Fetch feedback)
  ↓
Bhava AI (Thematic analysis)
  ↓
Google Drive (Fetch roadmap)
  ↓
Chat with PDF (Extract roadmap content)
  ↓
Combine Data (Code node)
  ↓
Terrakotta AI (Alignment analysis)
  ↓
Slack (Send report)

The Combine Data step is important. Use a code node to restructure the output from both Bhava AI and Chat with PDF into the format Terrakotta AI expects:

// n8n Code Node: Combine Data
const bhavaOutput = $node["Bhava_AI"].data;
const roadmapOutput = $node["Chat_with_PDF"].data;

return {
  themes: bhavaOutput.themes,
  roadmap_summary: roadmapOutput.responses,
  analysis_timestamp: new Date().toISOString()
};

The Manual Alternative

If you want to maintain more control over each step, or if your feedback documents are irregular and need bespoke handling, run the three tools manually on an ad hoc basis.

Open Bhava AI directly, paste your feedback text, and run the analysis. Download the themed output. Separately, open Chat with PDF by Copilotus, upload your roadmap document, and ask your questions. Finally, log into Terrakotta AI, paste both outputs, and generate the alignment report.

This takes roughly 45 minutes per cycle instead of 2 minutes of automation. Use this approach if you're running quarterly reviews rather than weekly ones, or if your feedback source is inconsistent.

Pro Tips

Error Handling and Retries

Bhava AI and Terrakotta AI may reject malformed input. Add error handling in n8n by wrapping each API call in a Try/Catch node. If an API fails, send a Slack notification and pause the workflow rather than storing corrupted data:


Node: Try/Catch
On Error: Send notification to #alerts, then Stop workflow
Retry Count: 3 (with exponential backoff)

Rate Limits

Bhava AI and Terrakotta AI both enforce rate limits (typically 100 requests per hour for standard plans). Since your workflow runs once per week, you're safe. If you expand to daily runs or add multiple feedback sources, upgrade to a higher-tier plan with increased limits.

Handling Large Documents

Chat with PDF by Copilotus can process PDFs up to 100MB, but large documents slow down extraction. If your feedback document exceeds 50MB, split it into chunks (e.g., by month or by support channel) and run separate analyses. Combine the results in Terrakotta AI for a complete picture.

Customising Thematic Analysis

Bhava AI accepts a min_theme_frequency parameter. If you're seeing noisy themes (single-mention ideas treated as themes), increase this to 4 or 5. If you're missing subtle but important patterns, lower it to 2. Experiment for a few cycles to find your balance.

Cost Optimisation

Run the workflow weekly instead of daily to keep API costs low. If your team reviews roadmaps quarterly, schedule the workflow monthly and run it on demand in between if feedback volume spikes. Most teams find weekly reports sufficient for prioritisation conversations without wasting API calls.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
Bhava AIStarter£25Includes 1,000 analyses per month; 1 analysis per workflow cycle
Chat with PDF by CopilotusProfessional£50Covers 500 PDF conversations; 1 conversation per cycle
Terrakotta AIBusiness£75Includes 200 analysis reports; 1 report per cycle, so you have headroom for ad hoc runs
n8nCloud Pro£40Self-hosting is free but requires infrastructure; cloud is simplest
Total£190/monthFor weekly automated analysis, you'll use roughly 20% of available quota across all tools

Running this manually using free tools and a spreadsheet costs you 4 hours per week, or roughly £400 in staff time at a reasonable rate. Automation pays for itself in two weeks.