Building an Automated App Store Analytics Dashboard with AI
Experiment
Here's a problem that bugged me for ages: we're running five mobile apps at BrightHR (BrightHR, Blip, PoP, BrightSafe on The Go, and Advice), and exactly nobody was tracking how our app store ratings were trending week to week. Not great, right?
The mobile team had tried before. Someone would manually visit the iOS App Store and Google Play Store each week, copy ratings into a spreadsheet, paste reviews... you get the idea. Tedious. Unreliable. Unsustainable. And critically, all that customer feedback data just sat locked behind App Store Connect and Google Play Console logins. Product managers? Couldn't see it. Executives? Couldn't see it. Support teams? Couldn't see it.
As Head of UX, this was squarely my problem to solve.
So I built a dashboard that handles all of this automatically. Monday morning at 6 AM UTC, a GitHub Action fires, scrapes the data from both app stores, fetches reviews via their APIs, updates everything, and commits it back to the repo. No human intervention. Zero manual work. And here's the kicker - I display this thing on the office TVs scattered around the floor, so everyone can see in real-time how our apps are performing, how ratings are trending, and what's surfacing in reviews.
Democratised access to customer feedback. That's what this is about.
The dashboard tracks all five apps across iOS and Android. Week-over-week rating changes with proper delta indicators (green arrows, red arrows - you know the drill). Rating distribution bar charts. An interactive timeline showing how ratings correlate with version releases. Search and filter through reviews. Export data when you need it.
Most importantly? It works. Silently. Consistently. Everyone can see it, nobody needs special access, and the mobile team isn't spending hours each week manually updating spreadsheets.
What I Wanted To Achieve
Eliminate the manual copy-paste nonsense. That's first. Replace it with API-driven automation that just works.
But here's the bigger thing - I wanted everyone to have access to this data. Not just people with app store console logins. If you work at BrightHR, you should be able to see how our mobile apps are performing without asking permission or knowing which credentials to use. Public dashboard. Real-time insights.
And visibility matters. When you put customer feedback on office TVs where the whole floor can see it, something shifts. Mobile teams see how their work directly impacts customers. Rating drops? Everyone knows. New version improves satisfaction? Everyone celebrates.
What I specifically needed:
- Week-over-week trends showing whether we're improving or sliding backwards
- Rating distribution breakdowns (how many 5-stars vs 1-stars?)
- Version release correlation (did that bug fix actually help?)
- Connect development work to customer impact in a way that's impossible to ignore
The technical challenge was messier than it sounds. Integrating multiple data sources - iOS App Store Connect API with JWT authentication, Google Play Developer API, iTunes API for version tracking, and Puppeteer-based scraping for stuff the APIs don't expose - into something unified with historical tracking and interactive visualisations. All running automatically via GitHub Actions without human intervention.
How It Works
GitHub Actions workflow triggers every Monday at 6 AM UTC. Fetches the previous week's data from both app stores. Scrapes current ratings breakdowns using Puppeteer (because the APIs don't give you star distribution). Tracks version releases and release notes automatically. Commits everything back to the repo with a [skip ci] flag so it doesn't trigger infinite loops.
Completely hands-off once it's running.
The dashboard itself is React with shadcn/ui components. KPI cards showing current week versus previous week - average rating, total ratings, review count. Traffic light delta indicators (green up, red down, amber sideways). Week navigation with previous/next buttons and a "Today" reset.
Ratings analysis with bar charts showing 1-5 star distribution, delta indicators for each rating level. Interactive timeline using Recharts that plots rating trends with version release markers overlaid, so you can literally see "oh, that spike happened right after we shipped version 2.3."
Reviews grid is responsive (1 column mobile, 2 tablet, 3 desktop). Real-time search and filtering by rating, text content, app, platform. Chronological sorting with platform and app logos for quick visual identification.
Filter sidebar with collapsible sections - app selector with icons, platform toggle, week range navigation, search, rating filter. All your preferences get saved to localStorage, so selected app and platform persist across sessions.
Monitors all five apps: BrightHR, Blip, PoP, BrightSafe on The Go, Advice. Seamless switching. Branded logos. Works across iOS and Android with unified views.
Data processing happens entirely client-side from CSV and JSON files. Node.js CLI script handles the automated imports from app store APIs. React 19 frontend with Vite 7. Tailwind CSS 4 for styling. Recharts for visualisations.
Why This Actually Matters
The manual work is just gone. Completely eliminated. What used to eat up hours of someone's week every Monday - visiting both app stores, copying data, updating spreadsheets - now happens automatically. Zero human time. Forever.
And everyone gets access. That's huge. Product managers can check in whenever they want. Executives can see trends at a glance. Support teams can spot patterns in customer complaints. Mobile developers can see how their fixes impact ratings in real-time. No logins. No permissions. No barriers.
Putting this on office TVs created something unexpected: shared awareness. When ratings drop, the whole team knows immediately. When a bug fix improves scores, everyone sees it. There's this collective ownership of quality that emerges when customer feedback is visible to everyone, not just locked in someone's analytics dashboard.
For mobile teams specifically, the connection between their work and customer impact becomes tangible. Shipped a crash fix? Watch those ratings climb the next week. Released a feature that confused users? Negative reviews surface immediately, and you can iterate fast.
The version release timeline is where it gets interesting. You start seeing patterns. Did ratings improve after specific updates? Do detailed release notes correlate with better review sentiment? These insights inform future development priorities in ways that gut instinct never could.
Real-time filtering and search mean you can quickly identify common complaints, prioritise fixes based on frequency, and validate that improvements actually worked by monitoring subsequent reviews.
And strategically? Week-over-week trends and rating distributions give leadership the data they need for mobile strategy decisions, resource allocation, feature prioritisation. Data-driven rather than assumption-driven.
What I Built It With
React 19 and Vite 7 for the frontend. Fast builds, modern hooks, concurrent features. shadcn/ui components built on Radix UI. Tailwind CSS 4 for styling. Recharts 3 for the interactive timeline charts. Lucide React for icons.
Data processing uses PapaParse for CSV parsing. Everything aggregates and filters client-side. Us localStorage for saving user preferences.
Backend automation runs on Node.js with a CLI script for imports. GitHub Actions handles scheduling (cron trigger every Monday 6 AM UTC). Credentials managed securely via GitHub Secrets. Auto-commits updated data files back to the repo.
APIs integrated: Google Play Developer API via googleapis for Android reviews. Apple App Store Connect API with JWT authentication for iOS reviews. iTunes Search API for iOS version tracking. Puppeteer 24 running headless Chrome to scrape ratings breakdowns (because neither API gives you that).
Data storage is simple: reviews.csv gets appended weekly with duplicate filtering. ratings-history.json stores weekly snapshots for trend analysis. version-releases.json auto-populates from APIs.
Architecture wise, it's API integration from multiple sources, web scraping for data gaps, baseline plus incremental strategy for iOS ratings (manual baseline then 7-day API reviews), weekly batch imports building historical datasets, and fully client-side filtering and visualisation for responsive UX.
Works. Scales. Doesn't break.
Primary Objectives:
- Automate data collection: Replace manual copying and pasting from app stores with API-driven imports
- Democratise access: Remove the need for App Store Connect and Google Play Console logins by providing a public dashboard
- Create visibility: Display real-time customer feedback on office TVs so the entire floor can track mobile app performance
- Enable insights: Visualise week-over-week trends, rating distributions, and correlations between version releases and customer sentiment
- Connect development to impact: Show mobile teams and stakeholders how their work directly affects customer satisfaction
The key technical challenge was integrating multiple data sources - iOS App Store Connect API (with JWT authentication), Google Play Developer API, iTunes API for version tracking, and Puppeteer-based scraping for ratings breakdowns - into a unified dashboard with historical tracking, week navigation, and interactive visualisations.
What It Does
The App Store Reviews Dashboard provides comprehensive monitoring and analysis of app store reviews with the following capabilities:
Automated Data Collection
- GitHub Actions workflow runs automatically every Monday at 6 AM UTC to capture previous week's data
- Manual trigger available via workflow_dispatch for on-demand imports
- Fetches reviews from iOS App Store Connect API and Google Play Developer API
- Scrapes current ratings breakdowns from both app store pages using Puppeteer
- Automatically tracks version releases and release notes from iTunes API and Google Play Publisher API
- Securely manages credentials via GitHub Secrets (service accounts, API keys, private keys)
- Commits updated data files back to repository automatically with [skip ci] flag
- Completely hands-off once configured - no manual intervention required
Weekly Performance Tracking
- KPI cards showing current week vs. previous week: average rating, total ratings, and review count
- Week-over-week delta indicators (traffic light colors: green ↑, red ↓, amber →)
- Navigate through historical weeks with previous/next buttons and quick "Today" reset
Ratings Analysis
- Visual bar chart displaying 1-5 star distribution with traffic light colors
- Delta indicators showing changes in each star rating level compared to previous week
- Interactive timeline (Recharts) showing rating trends over time with version release markers
Reviews Management
- All reviews displayed in responsive grid (1 column mobile, 2 tablet, 3 desktop)
- Real-time search and filtering by rating, text, app, and platform
- Chronological sorting (most recent first) with platform and app logos for visual identification
Filter Sidebar
- Collapsible sections for organised control: app selector with icons, platform toggle, week range navigation, search input, and rating filter
- Persistent preferences saved to localStorage (selected app and platform)
Multi-App Support
- Monitors five apps: BrightHR, Blip, PoP, BrightSafe on The Go, and Advice
- Seamless switching between apps and platforms (iOS/Android) with branded logos
Architecture
- React 19 frontend with Vite 7
- shadcn/ui components with Tailwind CSS 4
- Client-side data processing from CSV and JSON files
- Node.js CLI script for automated imports from app store APIs
Why It's Valuable
This dashboard transformed how BrightHR tracks and responds to customer feedback, moving from sporadic manual checks to continuous, organisation-wide visibility.
Real-World Impact:
Eliminated Manual Labour: What previously required someone from the mobile team to manually visit both app stores, copy data, and update spreadsheets each week now happens automatically via GitHub Actions every Monday morning. Zero human intervention required. Hours of tedious work eliminated permanently.
Democratised Data Access: By removing the need for App Store Connect and Google Play Console logins, the entire organisation gained access to customer sentiment data. Product managers, executives, support teams, and developers can all see the same real-time insights.
Floor-Wide Visibility: Displaying the dashboard on office TVs created a shared awareness of how mobile apps were performing. When ratings dropped, the whole team knew. When a new version improved satisfaction, everyone celebrated together.
Connected Development to Impact: Mobile developers could see directly how their work affected customers. A bug fix that prevented crashes? Watch the ratings climb. A new feature that confused users? Spot the negative reviews immediately and iterate.
Version Release Insights: The timeline chart with version release markers revealed patterns - did ratings improve after specific updates? Did release notes correlate with review sentiment? These insights informed future development priorities.
Actionable Intelligence: Real-time filtering and search meant teams could quickly identify common issues, prioritise fixes, and validate that improvements were working by monitoring subsequent reviews.
Strategic Decision Making: Week-over-week trends and rating distributions gave leadership the data needed to make informed decisions about mobile strategy, resource allocation, and feature prioritisation.
Technology Stack
Frontend:
- React 19 with Vite 7 for fast development and production builds
- shadcn/ui component library with Radix UI primitives
- Tailwind CSS 4 for styling
- Recharts 3 for interactive timeline visualisations
- Lucide React for UI icons
Data Processing:
- PapaParse for CSV parsing
- Client-side data aggregation and filtering
- localStorage for persistent user preferences
Backend & Automation:
- Node.js CLI script for automated imports
- GitHub Actions workflow with scheduled cron trigger (every Monday 6 AM UTC)
- Secure credential management via GitHub Secrets
- Automatic commit and push of updated data files
- Google Play Developer API (via googleapis) for Android reviews
- Apple App Store Connect API with JWT authentication for iOS reviews
- iTunes Search API for iOS version tracking
- Puppeteer 24 for headless Chrome scraping of ratings breakdowns
- jsonwebtoken for App Store Connect authentication
Data Storage:
reviews.csv: Cumulative review data (appended weekly with duplicate filtering)ratings-history.json: Weekly rating snapshots for trend analysisversion-releases.json: Version release history auto-populated from APIs
Architecture Patterns:
- API integration with multiple data sources (Google Play, App Store Connect, iTunes)
- Web scraping for data not available via APIs (ratings breakdowns)
- Baseline + incremental strategy for iOS ratings (manual baseline + 7-day API reviews)
- Weekly batch imports building historical datasets
- Client-side filtering and visualisation for responsive UX
Reference Artifacts