This guide walks you through building a repeatable AI-powered workflow that turns messy raw research data into structured, shareable insights. You can set the whole system up in a single afternoon, and your first synthesis run will take under two hours once it is in place.

What You'll Build

  • A structured intake system that captures and organises raw research notes, transcripts, and survey responses in one place
  • An AI tagging and clustering pipeline that groups observations into themes automatically
  • A prioritised insight summary ready to share with stakeholders or feed into a design sprint
  • A reusable Notion template that your team can run on every future research project

Prerequisites

Before you start, make sure you have the following ready:

  • A Notion account (free tier works, but a Plus plan gives you more API calls)
  • An OpenAI API key with access to GPT-4o (current as of August 2026)
  • At least five user interviews, usability sessions, or survey exports to practise with
  • A Make (formerly Integromat) account for automation between tools
  • Basic familiarity with Notion databases and Figma (for the final output step)

Step 1: Set Up Your Research Intake Database in Notion

Your workflow needs a single source of truth. Without it, observations get buried in Slack threads and Google Docs that no one revisits.

Create a new Notion database called Research Intake. Add the following properties:

  • Source (select): Interview, Usability Test, Survey, Support Ticket
  • Participant ID (text): anonymised identifier
  • Raw Observation (text): one discrete observation per row
  • Date (date)
  • Product Area (multi-select): Onboarding, Dashboard, Checkout, etc.
  • AI Theme (text): leave blank for now, the automation fills this
  • AI Sentiment (select): Positive, Neutral, Negative, Mixed

Each row should hold exactly one observation, not a full transcript. This constraint is what makes AI tagging accurate.

How do you convert a full interview transcript into individual observations?

Paste the transcript into ChatGPT or Claude and use this prompt:

You are a UX researcher. Read the following interview transcript and extract discrete user observations. Each observation must be one sentence. Output them as a numbered list. Do not summarise. Do not interpret. Only extract what the user explicitly said or did.

[PASTE TRANSCRIPT HERE]

Copy the output into your Notion database, one observation per row. For a 45-minute interview you will typically get 30 to 60 observations.

Common pitfall: Avoid pasting paragraph summaries as observations. Summaries contain the researcher's interpretation, which introduces bias before the AI has a chance to cluster neutrally.

Step 2: Build the AI Tagging Automation in Make

Manual tagging is where most research synthesis slows down. This step replaces it with a Make scenario that calls the OpenAI API on every new Notion row.

Setting up the Make scenario

In Make, create a new scenario with the following module chain:

  1. Notion: Watch Database Items — trigger on new rows in your Research Intake database
  2. OpenAI: Create a Completion — call GPT-4o with the observation text
  3. Notion: Update a Database Item — write the AI response back to the same row

For the OpenAI module, set the model to gpt-4o and use this system prompt:

You are a UX research analyst. For the user observation provided, return a JSON object with two keys:
1. "theme": a 2-4 word theme label that describes the core user need or pain point
2. "sentiment": one of [Positive, Neutral, Negative, Mixed]

Return only valid JSON. No explanation.

Pass the Raw Observation field as the user message. Map the JSON response back to the AI Theme and AI Sentiment properties in Notion.

Pro tip: Enable error handling in Make so that rows with API errors get flagged automatically rather than silently skipped. A failed run on 10% of rows is enough to skew your final clusters.

What if the AI returns inconsistent theme labels?

This is the most common quality issue. GPT-4o might label the same underlying problem as "slow load time," "performance issues," and "app speed" across different rows.

Add a normalisation step. After your first run, export all unique AI Theme values and paste them into ChatGPT with this prompt:

Here is a list of theme labels from a UX research study. Merge duplicates and near-duplicates into a single canonical label. Return the mapping as a JSON object where the key is the original label and the value is the canonical label.

[PASTE THEME LIST]

Use the output to do a bulk find-and-replace in Notion. Subsequent runs will be more consistent because GPT-4o learns from the patterns already in your database.

Step 3: Cluster Observations Into Insight Groups

Once every row has a theme and sentiment, you are ready to cluster. This step moves you from raw observations to named insights that a product team can act on.

In Notion, create a second database called Insight Clusters. Link it to Research Intake with a relation property called Supporting Observations.

Now run a grouped view in your Research Intake database, grouped by AI Theme. You will see how many observations sit under each theme. Any theme with fewer than three observations is likely noise. Any theme with more than fifteen observations may need splitting into sub-themes.

Generating the insight statement from each cluster

For each cluster with three or more observations, copy the raw observation text and paste it into GPT-4o with this prompt:

You are a senior UX researcher writing an insight report. Below are user observations grouped under the theme "[THEME NAME]". Write a single insight statement using this format:

Users [behaviour or struggle] because [root cause], which results in [consequence for the product or business].

Then list three supporting quotes from the observations below. Keep each quote under 20 words.

Observations:
[PASTE OBSERVATIONS]

Paste the output into the corresponding row in your Insight Clusters database. You now have a structured, evidence-backed insight statement for every theme.

Common pitfall: Do not skip the "because" clause. Teams that omit root causes end up solving surface symptoms rather than the actual problem.

Step 4: Prioritise Insights With an Impact-Effort Matrix

A list of 20 insights is not useful by itself. Stakeholders need to know which ones to act on first.

Add two number properties to your Insight Clusters database: User Impact Score (1 to 5) and Fix Effort Score (1 to 5). Score each insight manually. This is a human judgement step and should stay that way.

Create a Notion formula property called Priority Score:

prop("User Impact Score") / prop("Fix Effort Score")

Sort the database by Priority Score descending. The top five insights are your sprint backlog. Share this view with your product manager and engineering lead before the next planning meeting.

When should you skip the prioritisation step?

Skip it only if you are running a discovery project rather than an improvement sprint. In discovery work, all insights carry equal weight because you are mapping the problem space, not scheduling fixes.

Step 5: Export to Figma for the Design Sprint

Insights locked inside a Notion database do not move design work forward. You need them visible on the screen where design decisions happen.

Use the Notion to FigJam plugin to pull your top-priority insight clusters directly onto a FigJam board. Each card carries the insight statement, the priority score, and the supporting quotes.

Arrange the cards in a 2x2 impact-effort grid on FigJam. This becomes your research wall for the sprint. Your team can vote on cards, attach wireframe references, and trace every design decision back to a specific user observation.

Pro tip: Screenshot the research wall and drop it into the Figma file cover page. Any designer opening the file sees the research context before they see a single frame.

Step 6: Create a Reusable Research Template

The real value of this workflow comes from running it repeatedly. A one-off synthesis session is useful. A system you run after every research round is a competitive advantage.

In Notion, duplicate your Research Intake database and Insight Clusters database into a template. Clear all rows but keep all properties, formulas, views, and relations.

Add a Research Round property (date range) to both databases. Filter every view by the current research round. This way, historical data stays accessible without polluting your active workspace.

Teams at SaaS companies in Australia and Singapore who have adopted similar structured research workflows report cutting their synthesis time from two days down to three to four hours per round. The AI handles tagging and initial drafting. Researchers spend their time on interpretation and prioritisation, which are the parts that require human judgement.

If you want a head start on the content planning side of your research communication, the Lenka Studio social media toolkit includes templates for sharing research findings and product updates with your audience in a consistent format.

Frequently Asked Questions

Does this workflow work with video recordings, not just transcripts?

Yes. Use a tool like Otter.ai or Fireflies.ai to transcribe the recording first. Both tools produce timestamped transcripts you can paste directly into the observation extraction prompt in Step 1. Accuracy on clear audio is typically above 90% as of mid-2026.

How many observations do you need before the AI clusters are reliable?

Clusters become stable with around 80 to 100 observations across at least five participants. Below that threshold, themes shift significantly with each new data point. If you have fewer than 80 observations, treat the AI output as a starting hypothesis rather than a final structure.

Is GPT-4o the only model that works here, or can I use Claude or Gemini?

Claude 3.5 Sonnet and Gemini 1.5 Pro both produce reliable results for the tagging and insight generation prompts. The key requirement is that the model returns valid JSON reliably. Test your chosen model with 10 sample observations before running the full dataset to check JSON output consistency.

How do I handle sensitive participant data when sending it to the OpenAI API?

Anonymise observations before they leave your system. Replace names, company names, job titles, and any other identifying details with placeholder tokens (User A, Company X) before the Make automation sends them to the API. OpenAI's API data usage policy as of 2026 does not use API inputs for training by default, but anonymisation is still best practice for any participant data.

Can I run this workflow without a Make subscription?

Yes. You can manually paste observations into the OpenAI playground and copy the responses back into Notion. It adds around 20 to 30 minutes per 50 observations. Make automation is worth setting up once you are running research rounds monthly or more frequently.

Next Steps

Once your first synthesis run is complete, share the prioritised Insight Clusters database with your product and engineering teams. Schedule a 30-minute readout where you walk through the top five insights using the FigJam research wall.

From there, connect each insight to a specific design or development ticket. Track which insights get addressed across sprints. This closes the loop between research and delivery.

If you want help setting up a more advanced research operations system, or if your team needs a design sprint facilitated from the ground up, the team at Lenka Studio works with SMBs across Australia, Singapore, Canada, and the US to build research and design systems that actually get used. Get in touch to talk through what your team needs.