DEV Community

Cover image for Build a Review Storm Analyzer with ToolJet MCP and Jev
Athulya R for ToolJet

Posted on Originally published at blog.tooljet.com

Build a Review Storm Analyzer with ToolJet MCP and Jev

What Is a Review Storm Analyzer?

A shared spreadsheet that only one person knows how to work stops scaling the week a launch floods your team with customer reviews. Build a review storm analyzer with ToolJet MCP and Jev, TypeSafe's decision model, and one prompt gives you a governed app. Jev reads each review and returns sentiment, topic, urgency and a supporting sentence, and a person decides the final label. The result is a one-page brief with a headline, topic tiles, a filterable feed and an urgent follow-up list.

Review Storm Analyzer full app screen built with ToolJet MCP and Jev, showing the insights headline, topic tiles, review feed, reviews by topic and urgent follow-ups

Review Storm Analyzer after a full run: 100 of 100 reviews labelled by Jev in 00:06.4 of Jev time, with product quality the loudest theme and 38 reviews flagged for follow-up

The recorded 100-review run at 1.5 times speed: the processed counter climbs to 100 while the Jev timer stops at 00:06.4

The recorded run at 1.5 times speed: the counter climbs to 100, the Jev timer stops at 00:06.4 and a review opens in the detail panel

How To Triage A Review Flood

Triage a review flood by labelling every review, grouping the loudest themes and surfacing urgent follow-ups. ToolJet MCP lets a coding agent build that as a working app inside ToolJet, with the page, queries and data model connected.

  • Load: a RunJS query sends the batch to Jev through 12 parallel workers.
  • Label: Jev returns sentiment, topic, an urgent flag (urgency probability of 50% or higher) and the sentence that supports the label.
  • Review: the brief updates as results arrive. Analysts correct a label with a reason, and product managers add follow-up notes.

Set Up ToolJet MCP and the TypeSafe Datasource

Connect your coding agent with the ToolJet MCP overview and the ToolJet MCP repository. Then add the TypeSafe datasource to the workspace and name it typesafe, the name the build prompt uses. At build time the agent creates the app. At run time the app asks Jev typed questions through that datasource.

How Was The Prompt Consolidated?

The build took several passes, and the requirements are now consolidated into one prompt. You can use that prompt from the start and reproduce the same review brief in one shot.

Build a one-page ToolJet app called Review Storm Analyzer for a product team after a launch. Use the existing PostgreSQL datasource (postgresql_fleet) with tables rs_batches, rs_reviews, rs_synthetic_labels, rs_runs, rs_analysis, rs_corrections and rs_followups, seeded with 100 fictional reviews. Use the existing typesafe datasource (Jev) to return sentiment, topic, an urgent flag and a supporting sentence for each review. Show a headline, three topic tiles, Analyze batch with Pause and Resume, a processed counter and Jev-time timer, filters, a review feed, reviews by topic, urgent follow-ups and a detail panel for corrections and notes. Run 12 Jev workers in parallel and save results in batches with one bulk insert. Create groups Review Storm - Analysts, Product Managers and Viewers: only Analysts run Jev and save corrections, Product Managers add notes, Viewers only view.

How Does ToolJet MCP Build It?

The agent inspected the workspace, created seven PostgreSQL tables, seeded 100 synthetic reviews, then wired the queries, the RunJS analysis, the page and the permissions. It first used stand-in labels, then switched to live Jev through the typesafe datasource.

The first full run took 22.9 seconds, and Jev was not the slow part: 12 Jev calls in parallel finished in about 1.1 seconds, while each Postgres query took about 700 ms and queued. One bulk insert and rendering from memory cut the run to 8.8 seconds. The recorded run finished in 00:06.4 of Jev time.

Who Uses Review Triage, And Who Can Open It?

Product teams at consumer hardware brands, marketplace sellers and software teams after a release can use the same layout for any burst of text feedback. Analysts run Jev and save corrections, Product Managers add follow-up notes, and Viewers can only view. A viewer calling a write query got a 401 refusal.

Role-Based Access Control in ToolJet

ToolJet applies role-based access control at two levels. Platform permissions decide who can reach a workspace resource, and app permissions decide which pages, queries and components each group can open and run. The server enforces both. See the access control docs.

Role-based access control in ToolJet: roles and groups, app-level page, query and component permissions, and server-side rules

ToolJet role-based access control: roles and groups, app permissions and server-side rules

Enterprise Features for Your Review Analysis App

Review data is customer feedback, so ToolJet also offers SAML SSO, audit logs, Git Sync and Docker self-hosting for teams that need them.

Final Takeaways

A review storm becomes a one-page brief when Jev labels and a person decides. On the recorded run, Jev labelled 100 reviews in 00:06.4, with 38 flagged for follow-up. All reviews are synthetic, and the app has not been tested with real analyst logins. Build it yourself on ToolJet Cloud.

Try ToolJet MCP

Build a review storm analyzer with ToolJet MCP, then request a ToolJet demo for your launch-week feedback flow. Start free on ToolJet Cloud.

FAQs

What does ToolJet MCP leave you with after generation?

A structured ToolJet app, not a code bundle: data, queries, page logic and permissions stay together.

What does Jev return for each review?

Sentiment, topic, an urgent flag, a confidence for each answer and a supporting excerpt. Jev only suggests.

Can I recreate the Review Storm Analyzer from the prompt?

Yes. Add the typesafe datasource, connect your agent to ToolJet MCP and paste the prompt above.

Can I use my own reviews?

Yes. Point the review queries at your own PostgreSQL table.

How fast is the Jev analysis?

On the recorded run, Jev labelled 100 reviews in 00:06.4 of Jev time, helped by one bulk insert for saves.

Who can correct a label or add a note?

Analysts correct labels with a reason and product managers add notes. Viewers can only view.

Does Jev decide on its own?

No. Jev suggests a label and a person decides. A corrected label overrides Jev in every count.

Top comments (2)

Collapse
 
koda2026 profile image
Harun - solo dev •

choi, this is a brilliant solution to a very real problem: the loneliness of vibe coding. the pixel-art library concept is not just fun, it's genuinely community-building. 🐯🎨

as a developer who obsesses over security and constraint-driven architecture, i have massive respect for the technical choices you made here:

  1. privacy by design: stripping everything but numeric fields on the server is the exact right way to ensure no prompts or code ever leak.
  2. signed auto-updates: using ed25519 and sha512 integrity checks for a self-updating cli is top-tier, enterprise-grade security. most indie devs skip this, but you treated it as a core feature.
  3. the supabase presence fix: re-reconciling the room every 15s instead of blindly trusting the first event is a classic, bulletproof way to handle realtime state drift. (i use supabase for koda too, so i feel this one deeply!)
  4. the anti-cheat lesson: you nailed it. automated "fairness" that accidentally flags your most active power users is always worse than a simple manual review.

also, the build script that adapts a throwaway html prototype into a next.js app instead of forcing a from-scratch rewrite is peak pragmatic engineering.

keep shipping this. it’s a fantastic tool, and the github readme card is a genius growth loop. πŸ’»βœ¨

Collapse
 
koda2026 profile image
Harun - solo dev •

athulya, this is a brilliant case study in real-world ai agent orchestration. the realization that the bottleneck wasn't the llm (jev) but the postgres query queuing is a classic systems engineering win. shifting to a bulk insert and in-memory rendering to drop the time from 22.9s to 8.8s is exactly the right optimization.

regarding the 12 parallel jev workers: how are you handling partial failures or timeouts in that batch? if one of the 12 workers drops or hits a rate limit, does the tooljet runjs query have an idempotent retry mechanism for just the failed review ids, or does it require a full batch rollback?

additionally, for the human-in-the-loop corrections, are you logging the delta between jev's initial suggestion and the analyst's final label? capturing that "correction delta" is incredibly valuable for building a prompt-refinement loop or a future fine-tuning dataset to reduce the initial error rate.

fantastic breakdown of the mcp generation process. the rbac enforcement at both the platform and app level is exactly what enterprise teams need to trust ai-generated internal tools. πŸ―βš™οΈ