<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Michał Śnieżyński</title>
    <description>The latest articles on Forem by Michał Śnieżyński (@msniezynski).</description>
    <link>https://forem.com/msniezynski</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F684863%2Fef2a6395-5dd1-46d8-8cc3-c66c8864a3e7.jpg</url>
      <title>Forem: Michał Śnieżyński</title>
      <link>https://forem.com/msniezynski</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/msniezynski"/>
    <language>en</language>
    <item>
      <title>Reviews Tracker AI Agent</title>
      <dc:creator>Michał Śnieżyński</dc:creator>
      <pubDate>Sun, 31 Aug 2025 23:50:16 +0000</pubDate>
      <link>https://forem.com/msniezynski/reviews-tracker-ai-agent-25ki</link>
      <guid>https://forem.com/msniezynski/reviews-tracker-ai-agent-25ki</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-n8n-2025-08-13"&gt;AI Agents Challenge powered by n8n and Bright Data&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;This AI agent provides observability for app store reviews and delivers valuable insights.&lt;/p&gt;

&lt;p&gt;It analyzes the sentiment of each review and stores reviews in external data storage.&lt;/p&gt;

&lt;p&gt;It allows you to send Slack notifications, so you can get notified about any new reviews.&lt;/p&gt;

&lt;p&gt;This can be extremely useful when you want to react quickly to new negative or neutral reviews, or simply to get real-time ideas about what you should improve - for example, after a version release.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/6WHiebTCM_E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Example prompt should contain URL address to app in AppStore (any market, without a query param):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://apps.apple.com/us/app/messenger/id454638411
send reviews insights to Slack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;7 new positive reviews
0 new neutral reviews
3 new negative reviews
Insights:
• Spam/scam exposure — Harms trust; tighten filters/reporting (20% cite spam/scams)
• Call audio issues — Hurts call quality; improve noise/volume (20% mention crackle/static)
• Privacy controls — Clarify recording opt-in/out (1 user fears "Big Brother")
• Volume too low — Accessibility risk; add boost/test (1 report: "volume not loud enough")
• Overall satisfaction — Maintain core UX (70% positive reviews)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  n8n Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj05vn3ppzesszh6dwr0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj05vn3ppzesszh6dwr0w.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/msniezynski/b52c431cbe4b823b2fcbdc5271de7215" rel="noopener noreferrer"&gt;ReviewsTracker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofh5kyidvafdvktnc6uc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofh5kyidvafdvktnc6uc.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gist.github.com/msniezynski/b5bf719d6db988771df26e91dd634af1" rel="noopener noreferrer"&gt;AppStoreAgent&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;p&gt;I used XML for the Agent's system instructions.&lt;br&gt;
For sentiment analysis, I used the cheap GPT-5-nano, as it doesn't require a better model.&lt;br&gt;
For insights and the AI Agent, I decided to use GPT-5/GPT-5-mini - usually for those kinds of tasks, bigger models perform better.&lt;br&gt;
For memory, I kept it simple with short chat history storage.&lt;br&gt;
For data storage, I used Supabase PostgreSQL.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bright Data Verified Node
&lt;/h3&gt;

&lt;p&gt;I used the Bright Data node to scrape reviews from App Store. I also tested the node to get SERPs. Working with the node is smooth. The only thing I would improve is adding a limit option for scrapers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;At first, I wanted to build one AI Agent that did everything. But this was my first time using n8n, and I had trouble getting the agent to work with its tools.&lt;/p&gt;

&lt;p&gt;Since I know some automation stuff, I decided the scraping part needed to be more reliable. So I made a separate workflow for scraping, sentiment analysis, and generating summaries.&lt;/p&gt;

&lt;p&gt;I kept the AI Agent extendable, so users can add more sub-workflows for other marketplaces.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>n8nbrightdatachallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
