Market Research for Product Development

A key component of product development is researching the performance of existing products in the market and investigating which features are driving success.

Typically when carrying out market research for product development you will want to look at:

  • which brands are being discussed most.
  • which existing models are being discussed most.
  • which features of models are driving engagement.
  • how brands and models perform within each demographic group and geography.
  • how features vary by demographic group and geography.
  • sentiment and opinion towards brands, models and features.

With these insights you can look to focus on features that appeal to your target most.

In this article we'll outline how you can build market research solution using PYLON.

Market research using PYLON


As a quick reminder, you work with PYLON by:

  • Filtering the stream of data from Facebook to stories and engagements (such as likes and comments) you'd like to analyze. Filtered data is recorded into an index.
  • Classifying the data using your own custom rules to add extra metadata for your use case.
  • Analyzing the data you have recorded to the index.

Specifically when you build a product research solution with PYLON you will:

  • define an interaction filter that selects interactions which mention existing products in the market.
  • identify and normalize mentions of brands, models and features using classification rules.
  • analyze your recorded interactions, taking advantage of the brand classifications you have added to the interactions.

Solution overview

To understand how a solution could be built let's pretend you're looking to develop a new tablet model. You want to research which existing tablets are being well received by your audience.

Filtering interactions

Firstly you need to define an interaction filter that will capture interactions which mention tablets that are currently on sale.

You could use the following CSDL for your filter:

    (fb.all.content contains "galaxy" AND fb.all.content contains_any "tab, tablet, tabpro") 
    OR (fb.all.content contains "xperia" AND fb.all.content contains_any "Z,Z2,Z3,Z4,Z5,Z6" ) 
    OR fb.all.content contains_any "nexus7, nexus 7, nexus 9, nexus9" 
AND ( fb.language == "en" OR fb.parent.language == "en") 
AND in "US, GB" 
AND == "user" 
AND NOT fb.all.content contains_any "free, win, competition, wins, winner, prize, prizes"

This simple filter looks for mentions of models from Samsung (Galaxy series), Sony (Xperia series), and Google (Nexus series). In this case we've used keywords rather than topics as keywords allow us to be very precise when specifying models and there is unlikely to be a topic for each model you would like to include.

For simplicity this example filter focuses on US and UK markets so that classification rules only need to be written in English. Of course you could open up the filter to many markets and adjust classification rules appropriately.

When you come to writing a filter for your real-world use case you will need to spend time iterating and testing your filter so it captures the right data to your index. For example, in practice you would want to expand the example to include posts that link to content about these products.

tip icon

Learn how to make use of super public samples to improve your filter by reading our guide.

Classifying brand and model mentions

Before you start recording data from your filter you will want to add classification rules. Classification rules surface and normalize features of interactions for use in your analysis. In this case you will want to classify brands and models that are mentioned by each interaction recorded to your index.

Continuing the example you could add the following rules to your interaction filter to classify mentions of the three brands:

tag.brand "Samsung" { fb.all.content contains "galaxy" AND fb.all.content contains_any "tab, tablet, tabpro" } 
tag.brand "Sony" { fb.all.content contains "xperia" AND fb.all.content contains_any "Z,Z2,Z3,Z4,Z5,Z6" } 
tag.brand "Google" { fb.all.content contains_any "nexus7, nexus 7, nexus 9, nexus9" }

You'll notice the conditions are the same as used to filter the interactions.

To identify models you would need to create a rule for each model you'd like to include, for example:

tag.model "Galaxy Tab A" { fb.all.content contains "galaxy" AND fb.all.content contains_any "tab a, taba, tab-a" } 
tag.model "Galaxy Tab E" { fb.all.content contains "galaxy" AND fb.all.content contains_any "tab e, tabe, tab-e" }

In practice you may have many models you would want to classify.

Classifying model features

Classifying your recorded interactions gives you more dimensions to work with in your analysis. In this instance you're looking to identify product features discussed by the audience.

tag.features "Audio" { fb.all.content contains_any "audio,sound,speakers,volume,stereo" } 
tag.features "Connectivity" { fb.all.content contains_any "wifi, lte, 4g, 3g, 2g, MIMO, bluetooth, usb" } 
tag.features "Accessories" { fb.all.content contains_any "pencil, headphones, keyboard, stylus, case, dock" } 
tag.features "Performance" { fb.all.content contains_any "processor, speed, performace, GHz, CPU, fast" } 
tag.features "Size and Weight" { fb.all.content contains_any "big, bigger, small, smaller, large, larger, heavy, light, heavier, lighter" } 
tag.features "Display" { fb.all.content contains_any "screen, display, pixels, resolution, retina, ppi, brightness, lcd" } 

Once you've finished defining your filter and tags you can start your recording. Any interactions which mention the tablet models will be stored into your index labelled with the brands, models and features you chose to identify in your tag rules.

Again, when you come to defining tags for your real-world use case you will need to spend time iterating and testing these rules.

Example analysis results

When you have started to record classified interactions to an index you can analyze your recorded audience. Let's look at some typical analysis you may want to include.

Audience demographic composition

Before you look in detail at what topics your audience is engaging with it is always worth looking at the breakdown of your audience between ages and genders.

Using the and demographic targets in a nested query you can analyze the composition of the engaged audience:


The chart above show the composition of the audience, but to see how the audience compares to the wider Facebook audience you can use a technique called baselining. Redrawing the chart with a 'baseline' (shown in grey) shows how the audience compares to the general population of Facebook.


Here you can see that although males overall engage less, relatively compared to the wider Facebook audience males between 25 and 44 are particularly active. Also females between and 25 and 34 are particularly engaged with this topic.

tip icon

Learn more about comparing audiences by reading our baselining analysis results pattern.

Brand share of voice

Next you will want to look at which brands are receiving the most attention from your audience.

You can benefit from the brand classification rules added to your filter. You can analyze the breakdown of the brands using the interaction.tag_tree target, specifying the 'brand' namespace of tags:


You can repeat the analysis per country using a nested query, and making use of the target.


In this case you can see that relatively Sony appeals more to a UK audience.

You can focus on how brands appeal to each demographic segment using the and demographic targets, using a query filter to filter to each brand. This chart shows the breakdown for Sony baselined against the whole audience recorded by the filter:


Interestingly Sony receives more engagement from males than other brands.

tip icon

Learn more by reading the analyzing share of voice & audience design pattern.

Model share of voice

Next you can take a look at which models receive most attention.

Using the model classification rules added to your filter you can analyze the breakdown of the models using the interaction.tag_tree target, specifying the 'model' namespace of tags:


Again you could look to analyze how which models are discussed by which demographic groups or in which locations. For instance analyzing age and gender for the Samsung Tab 4 model:


This result has been baselined against the entire recorded audience and shows which groups are relatively more engaged with the model.

Model features

Now that you've looked at which brands and models receive the most attention you could go on to look at which features are discussed and engaged with most.

Using the classification rules added to your filter you can analyze the breakdown of the features using the interaction.tag_tree target, specifying the 'features' namespace of tags:


Again you could look at how this analysis varies by country or state. For instance this chart shows the result when filtering to just the UK audience using a query filter:


To a UK audience style and camera features seem particularly important.

You could also break down the features by demographic segments using a nested query specifying your feature tags and the demographic targets:


This baselined chart shows that style is important to 18-34 males, but less so to older males.

In this example we've grouped features into a small number of categories. Of course you could create different classification rules to pick out individual features such as wi-fi, Bluetooth and NFC.

Brand-feature sentiment

Facebook topic data provides a generic sentiment score which you can use in your analysis.

This chart shows the result of analyzing sentiment for features by brand, specifically for Samsung. Here the fb.parent.sentiment target was used which provides the sentiment of the stories being engaged with.


You can see that relatively the display features of Samsung tablets are relatively less well received by the audience.

You can analyze the sentiment and intent of your audience by adding further classification rules to your original interaction filter.

Viewing verbatim text

PYLON's privacy model prevents you from seeing the text of non-public posts, however you can take a look at super public samples to get an understanding of the conversations taking place.

The pylon/sample endpoint gives you access to super public posts. An example post from this analysis period read:

Just unboxed my new Galaxy Tab 4, the speakers are soooo much better than my old tablet!

Reading through a number of posts you can quickly understand the topics being discussed.

It can be useful to display these posts in your application so your users can get an idea of the discussions taking place. You may also want to adjust your classification rules based on these posts to surface additional features for your analysis.

tip icon

Learn more by reading the improving filters using super public data design pattern.

Related design patterns

Take a look at these related design patterns to learn more.

Improving filters using super public data Remove noise and broaden the audience captured by your interaction filters
Analyzing share of voice & audience Compare engagement with brands within an audience
Baselining analysis results Learn how to baseline you results against a comparison audience