<?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: Chad Musselman</title>
    <description>The latest articles on Forem by Chad Musselman (@chad_musselman_f3bbf4cc78).</description>
    <link>https://forem.com/chad_musselman_f3bbf4cc78</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%2F3662863%2Fdac8007e-cede-4b21-be32-9b31458c6488.png</url>
      <title>Forem: Chad Musselman</title>
      <link>https://forem.com/chad_musselman_f3bbf4cc78</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chad_musselman_f3bbf4cc78"/>
    <language>en</language>
    <item>
      <title>I built an honest Amazon review scorer. Here's what 478 shoppers told us about why returns are broken.</title>
      <dc:creator>Chad Musselman</dc:creator>
      <pubDate>Fri, 03 Apr 2026 16:47:20 +0000</pubDate>
      <link>https://forem.com/chad_musselman_f3bbf4cc78/i-built-an-honest-amazon-review-scorer-heres-what-478-shoppers-told-us-about-why-returns-are-8bk</link>
      <guid>https://forem.com/chad_musselman_f3bbf4cc78/i-built-an-honest-amazon-review-scorer-heres-what-478-shoppers-told-us-about-why-returns-are-8bk</guid>
      <description>&lt;p&gt;I got tired of buying things with 4.8 stars that turned out to be junk.&lt;/p&gt;

&lt;p&gt;So before writing a single line of code, I ran two independent surveys and asked 478 online shoppers one question: what frustrates you most about shopping online?&lt;/p&gt;

&lt;p&gt;Here's what came back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50% said buying the wrong product and having to return it was their number one frustration. Not shipping times. Not prices. The wrong product.&lt;/li&gt;
&lt;li&gt;65% said what they actually wanted was pre-purchase confidence. Knowing they were making the right call before clicking buy.&lt;/li&gt;
&lt;li&gt;98.9% had a specific purchase regret story when we asked them to describe one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The open responses kept coming back to the same thing. Sizing and fit failure even after buying the "correct" size. And one response stuck with me more than any other:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Even after all the research I had done, I still had no good measure for when a product would actually be worthwhile."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the problem I built Pearch to solve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pearch is a Chrome and Firefox extension (Chrome MV3, Firefox MV2) that fires automatically on any amazon.com/dp/* page. No click required, no signup required. It intercepts the page, pulls the ASIN, hits our backend, and returns a 1-10 score.&lt;/p&gt;

&lt;p&gt;The score is built from three signals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Signal A (50%) — Purchase match. How closely does this product match what verified buyers have actually kept? We pull review sentiment, verified purchase flags, and return language patterns.&lt;/li&gt;
&lt;li&gt;Signal B (30%) — Return risk. Does the review text suggest high return rates? Keywords like "sent back," "returned immediately," "nothing like the photos" get weighted here.&lt;/li&gt;
&lt;li&gt;Signal C (20%) — Review authenticity. Are the reviews real? We look at review velocity, verified purchase ratios, and linguistic patterns that correlate with incentivized reviews.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The UI shows up as a small pill in the top corner of the Amazon page. Click it and you get the full score panel: sizing signal, quality summary, red flags from buried 1-star reviews, and a one-line honest verdict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The structural argument&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon has Rufus, their own AI shopping assistant. It's decent. But it's structurally compromised. It works for Amazon, not the buyer. A genuinely honest score that says "skip this product" hurts their conversion rate.&lt;/p&gt;

&lt;p&gt;Google monetizes search ads. Honey tracks discounts, not purchase outcomes. Nobody with a conflicting business model can build neutral pre-purchase confidence tooling. That's the gap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chrome Extension: MV3, service worker with keepalive alarm (the 30-second termination issue is real)&lt;br&gt;
Firefox Extension: MV2, live in Add Ons&lt;br&gt;
Backend: Node.js, Express, Railway&lt;br&gt;
Database: MongoDB Atlas with ASIN caching (24hr TTL for anonymous, 2hr for personalized)&lt;br&gt;
LLM: Gemini 2.5 Flash Lite as primary, Claude Sonnet as fallback&lt;br&gt;
Auth: Google OAuth for the personalized score layer&lt;/p&gt;

&lt;p&gt;The caching layer matters. At scale you can't hit an LLM on every page view. Cache hit targets under 50ms. Cache miss targets under 5 seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where we are&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Live on Chrome Web Store and Firefox Add Ons. 93 users. Running PMF validation with a 30-user cohort through May.&lt;/p&gt;

&lt;p&gt;The feature that gets the most positive reaction is sizing signal. "Runs small" buried in 200 reviews is useful information. Surfacing it in 2 seconds is genuinely better than reading 200 reviews.&lt;/p&gt;

&lt;p&gt;The hardest problem is fake review detection at scale. Star ratings are almost useless as a signal now. We use review text patterns instead of ratings, but the model still misses things.&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the MV3 service worker approach, the MV2 Firefox port differences, the caching architecture, or the review analysis pipeline.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>extensions</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I’m experimenting with purchase history as a signal for product recommendations. Curious what I’m missing.</title>
      <dc:creator>Chad Musselman</dc:creator>
      <pubDate>Mon, 15 Dec 2025 11:48:02 +0000</pubDate>
      <link>https://forem.com/chad_musselman_f3bbf4cc78/im-experimenting-with-purchase-history-as-a-signal-for-product-recommendations-curious-what-im-4l99</link>
      <guid>https://forem.com/chad_musselman_f3bbf4cc78/im-experimenting-with-purchase-history-as-a-signal-for-product-recommendations-curious-what-im-4l99</guid>
      <description>&lt;p&gt;I’m a solo founder working on an early-stage experiment called Pearch.&lt;/p&gt;

&lt;p&gt;At a high level, it’s a Chrome extension that surfaces product recommendations while someone is browsing online, but the part I’m most interested in right now is signals.&lt;/p&gt;

&lt;p&gt;The problem I’m exploring&lt;/p&gt;

&lt;p&gt;Most recommendation systems I’ve worked with or studied lean heavily on one of two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browsing behavior (clicks, views, dwell time)&lt;/li&gt;
&lt;li&gt;Similarity signals (category, visual similarity, embeddings)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I’ve been questioning lately is whether historic purchase behavior might be a stronger anchor for relevance than either of those alone, especially when combined with real-time browsing context.&lt;/p&gt;

&lt;p&gt;In other words:&lt;br&gt;
What if we treated what someone has actually bought as the primary signal, and everything else as supporting evidence?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this feels interesting (and risky)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Purchase data is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sparse&lt;/li&gt;
&lt;li&gt;Delayed&lt;/li&gt;
&lt;li&gt;Messy across retailers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it’s also the clearest expression of intent we have.&lt;/p&gt;

&lt;p&gt;I’m trying to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does anchoring recommendations on purchase history meaningfully improve relevance?&lt;/li&gt;
&lt;li&gt;Where does this break down at small scale?&lt;/li&gt;
&lt;li&gt;At what point does recency matter more than history?&lt;/li&gt;
&lt;li&gt;How do you avoid overfitting someone to who they were versus who they’re becoming?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I’m not doing&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I’m not selling anything.&lt;/li&gt;
&lt;li&gt;I’m not claiming this is the right approach.&lt;/li&gt;
&lt;li&gt;I’m not optimizing for growth yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is still very much an exploration of signal quality and system design, not a polished product.&lt;/p&gt;

&lt;p&gt;What I’d love feedback on&lt;/p&gt;

&lt;p&gt;If you’ve worked on recommendation&lt;/p&gt;

&lt;p&gt;systems, personalization, or ecommerce tooling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What signals ended up being more valuable than you expected?&lt;/li&gt;
&lt;li&gt;What signals looked promising but failed in practice?&lt;/li&gt;
&lt;li&gt;How do you think about balancing long-term behavior vs in-session intent?&lt;/li&gt;
&lt;li&gt;Are there obvious pitfalls I should be pressure-testing earlier?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy to learn from anyone who’s been down this path before. Even strong skepticism is useful here.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>ai</category>
      <category>beginners</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
