Great, you want to compare brand monitoring / VOC tools — Brand24, BrandMentions, UsePulse, GummySearch, Syften, and Trendfynd. Full site search, intent on customer needs/questions/complaints, no noise filter.
Let me start the pipeline.
$BashCalculate cutoff dates for 2-month windowdone
node cutoff.mjs 2
Good — cutoff dates computed. Since you explicitly said "all subreddits", I'll skip community discovery and go straight to data collection.
Let me verify the scripts are in place and start the search.
$BashList available scriptsdone
ls .voc/scripts/
All scripts ready. Let me find the Reddit search tool and start the 3-channel search.
Search tools{"queries":[{"use_case":"search reddit posts across all subreddits with keyword expression","known_fields":"sort: new, relevance, comments"}],"session":{"generate_id":true}}done $BashRead search tools outputdone
head -c 3000 tool-result-1784620421984.txt
Reddit connection is active. Let me now launch the 3-channel search across all subreddits.
Search across subreddits{"search_query":"brandmentions OR brand24 OR usepulse OR gummysearch OR syften OR Trendfynd","sort":"new","limit":100}done Results saved to file — per the pipeline rules, I'll feed the file path directly into the merge script.
$BashMerge search results into posts databasedone
node merge-posts.mjs \
tool-result-1784620438994.txt \
voc-posts-20260521-20260721.json \
--cutoff 1779350009 \
--keywords "brandmentions OR brand24 OR usepulse OR gummysearch OR syften OR Trendfynd" \
--labels "sitewide:new,sitewide:relevance,sitewide:comments"
74 posts collected from the first page. The sort=new channel exhausted the time window, but relevance and comments channels still have after cursors — continuing pagination for those.
Search across subreddits{"search_query":"brandmentions OR brand24 OR usepulse OR gummysearch OR syften OR Trendfynd","sort":"relevance","limit":100,"after":"t3_1s9h9k9"}done $BashMerge paginated resultsdone
node merge-posts.mjs \
tool-result-1784620461279.txt \
voc-posts-20260521-20260721.json \
--cutoff 1779350009 \
--keywords "brandmentions OR brand24 OR usepulse OR gummysearch OR syften OR Trendfynd" \
--labels "relevance:page2,comments:page2"
74 unique posts collected — all in-window posts were captured by the sort=new channel; relevance/comments pages returned only duplicates. Moving to Step 3 — semantic filtering.
$BashRun semantic filtering on postsdone
node semantic-filter.mjs \
voc-posts-20260521-20260721.json \
--intent-signal "Needs, questions, or complaints raised by customers while using the product"
Semantic filtering complete — 23 intent posts identified from 74 total (4 Positive, 3 Negative, 67 Neutral). Now writing the project meta file and stats.
+Writevoc-meta.json22 linesdone
$BashWrite stats section to voc-meta.jsondone
node write-meta.mjs voc-meta.json --data-file voc-posts-20260521-20260721.json
Meta file complete. Now moving to Step 4 — fetching comments for the 23 intent posts.
$BashExtract intent post IDs for comment fetchingdone
node -e "
const d = require('/workspace/9c72d5cf-8832-4d5f-9656-027624f63f2c/voc-posts-20260521-20260721.json');
const intentPosts = d.posts.filter(p => p.intent);
console.log('Intent post IDs:', intentPosts.map(p => p.id).join(', '));
console.log('Count:', intentPosts.length);
// Also show distribution across subreddits
const dist = {};
intentPosts.forEach(p => { dist[p.subreddit] = (dist[p.subr…23 intent posts to mine for comments. Let me batch-fetch them all.
Retrieve post comments{"article":"1v1lqwo"}done $BashProcess comments into structured archivedone
node merge-comments.mjs \
tool-result-1784620523528.txt \
voc-comments-20260521-20260721.json \
--posts-file voc-posts-20260521-20260721.json \
--top 40
Comments collected — 23 threads processed. Updating meta and building the report.
$BashUpdate meta with comments statsdone
node write-meta.mjs voc-meta.json --data-file voc-posts-20260521-20260721.json --comments-file voc-comments-20260521-20260721.json
Now for the final step — Step 5: Analysis & Report. Let me read the comments data to build the report.
$BashRead comments data for reportdone
node -e "
const d = require('/workspace/9c72d5cf-8832-4d5f-9656-027624f63f2c/voc-comments-20260521-20260721.json');
d.threads.forEach((t, i) => {
console.log('=== Thread ' + (i+1) + ' ===');
console.log('Post: [' + t.post.sentiment + '] ' + t.post.title);
console.log(' Subreddit: ' + t.post.subreddit + ' | Score: ' + t.post.score + ' | Comments: ' + t.post.num_comments);
console.log(' P…Excellent data collected! Let me now write the comprehensive report.
+WriteReport.md218 linesdone
📊 VoC Research Complete
Report written: Report.md
3-line summary
74 Reddit posts, 23 with customer intent — uncovered 5 key brands/tools across dozens of subreddits in the past 2 months. The biggest signal: GummySearch's shutdown (Nov 2025) left 140k users stranded and created a wave of alternative-building (Growditt, Nexus, ReplyHunt). Price sensitivity is fierce — Brand24/Mention at $100+/month is the #1 pain point, with users actively choosing DIY Python bots or cheaper alternatives. AI brand visibility (GEO) emerged as a hot new category where Brand24's AI Visibility plugin has early traction but the metric itself ("Share of Voice in AI") faces definitional debate.
What's next?
You can:
- Deep-dive a specific theme (e.g., the GummySearch migration wave, or AI brand visibility landscape)
- Expand the time window to 6 months to catch more volume
- Narrow by subreddit (e.g., r/SaaS + r/smallbusiness only) for sharper B2B signals
- Add a specific brand to the keyword expression for more targeted comparison