<?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>DEV Community: DDMarketer</title>
    <description>The latest articles on DEV Community by DDMarketer (@ddmarketer).</description>
    <link>https://dev.to/ddmarketer</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4100446%2F5a493a43-e091-41ac-9353-ffa1f4b41119.png</url>
      <title>DEV Community: DDMarketer</title>
      <link>https://dev.to/ddmarketer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ddmarketer"/>
    <language>en</language>
    <item>
      <title>The angriest corners of SaaS, ranked by emotional intensity (1,012 complaints, scored 1 to 5)</title>
      <dc:creator>DDMarketer</dc:creator>
      <pubDate>Sat, 05 Sep 2026 23:24:34 +0000</pubDate>
      <link>https://dev.to/ddmarketer/the-angriest-corners-of-saas-ranked-by-emotional-intensity-1012-complaints-scored-1-to-5-19en</link>
      <guid>https://dev.to/ddmarketer/the-angriest-corners-of-saas-ranked-by-emotional-intensity-1012-complaints-scored-1-to-5-19en</guid>
      <description>&lt;p&gt;Yesterday I published the broad overview of my complaint corpus: which products get complained about most and where those complaints live. Today I want to zoom in on the single metric I find most commercially interesting: not how often people complain, but how angry they are when they do.&lt;/p&gt;

&lt;p&gt;Quick context: I run a pipeline that mines public software complaints (GitHub, Reddit, Stack Overflow, Hacker News, Trustpilot, app stores, X, forums), clusters them into validated gaps, and scores each one. One of those scores is emotional intensity, a 1 to 5 read of how charged the source complaint is, from mild annoyance to business-threatening. Current corpus: 988 validated gaps from 1,012 complaints, recomputed hourly. Numbers below are quoted from the live stats pages as of September 6, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which categories have the angriest users
&lt;/h2&gt;

&lt;p&gt;Average emotional intensity per category (categories with fewer than 10 gaps excluded):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Gaps&lt;/th&gt;
&lt;th&gt;Avg intensity (1-5)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Finance / Accounting&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real Estate / Local Operations&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security / Compliance&lt;/td&gt;
&lt;td&gt;50&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;E-commerce&lt;/td&gt;
&lt;td&gt;61&lt;/td&gt;
&lt;td&gt;3.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No-Code / Automation&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;3.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketing Operations&lt;/td&gt;
&lt;td&gt;47&lt;/td&gt;
&lt;td&gt;3.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dev Tools / SaaS Infrastructure&lt;/td&gt;
&lt;td&gt;387&lt;/td&gt;
&lt;td&gt;3.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Creator Operations&lt;/td&gt;
&lt;td&gt;43&lt;/td&gt;
&lt;td&gt;3.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data / Analytics&lt;/td&gt;
&lt;td&gt;161&lt;/td&gt;
&lt;td&gt;3.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR / Recruiting&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;3.1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Full table and method: &lt;a href="https://www.ddmarketer.com/stats/most-emotionally-intense-categories" rel="noopener noreferrer"&gt;Most emotionally intense complaint categories&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The pattern is not subtle. The angriest categories are the ones where software touches money, property, or legal exposure. Nobody writes a 4/5-intensity complaint because a dashboard loaded slowly. They write it because their payout is frozen, a client is threatening to sue, or an audit is in two weeks and the export is broken.&lt;/p&gt;

&lt;p&gt;The calmest end is instructive too. HR/recruiting (3.1) and data/analytics (3.2) complaints read as frustration and annoyance, not emergencies. Real problems, but nobody's business is on fire.&lt;/p&gt;

&lt;p&gt;For calibration, the corpus-wide distribution: 1 gap at 1/5, 48 at 2/5, 370 at 3/5, 468 at 4/5, 101 at 5/5. So 58% of all validated gaps come from complaints scored 4 or higher. The baseline is already angry; finance and real estate sit above even that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Stripe signal
&lt;/h2&gt;

&lt;p&gt;The product-level table has one number I keep coming back to. Among the 10 most complained-about products, the average emotion scores look like this at the top:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;Complaints&lt;/th&gt;
&lt;th&gt;Avg emotion (1-5)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stripe&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;4.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zapier&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;4.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Airbnb&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QuickBooks&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shopify&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Stripe is only 6th by complaint volume but is the angriest product in the top 10 at 4.5 out of 5. MySQL tops the volume ranking at 51 complaints with a 3.4 average. People complain about MySQL constantly and calmly. They complain about Stripe less often and furiously.&lt;/p&gt;

&lt;p&gt;That makes sense when you read the underlying complaints: they cluster around account freezes, held payouts, and closures with no recourse. A broken query costs you an afternoon. A frozen Stripe account costs you the business's cash flow, this week, while support sends templated replies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why anger is the metric I watch
&lt;/h2&gt;

&lt;p&gt;Here is my practitioner read, and it is an interpretation, not something the classifier outputs: anger is churn energy. A mildly annoyed user files the problem under "things I tolerate." A furious user is already mentally shopping for a replacement. The 4/5 and 5/5 complaints in this corpus routinely contain phrases like "looking for alternatives," "migrating away," "never again." That is willingness to switch, stated in the user's own words, before any vendor talks to them.&lt;/p&gt;

&lt;p&gt;The corpus backs the commercial side of this. Overall, 93% of validated gaps show willingness-to-pay signals in the source complaint. And the willingness-to-pay-by-category table overlaps with the anger table in a way that should get a founder's attention:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Avg intensity&lt;/th&gt;
&lt;th&gt;Willing to pay&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Real Estate / Local Operations&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;td&gt;96%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security / Compliance&lt;/td&gt;
&lt;td&gt;4.0&lt;/td&gt;
&lt;td&gt;96%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Finance / Accounting&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR / Recruiting&lt;/td&gt;
&lt;td&gt;3.1&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Source: &lt;a href="https://www.ddmarketer.com/stats/willingness-to-pay-by-category" rel="noopener noreferrer"&gt;Willingness to pay by category&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angry categories are pay-ready categories. And the one calm category, HR at 3.1, still shows 97% willingness to pay, the highest in the corpus. Which leads to the honest caveat section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats, because this data has edges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Anger and money are not the same axis. HR complaints are calm but almost universally pay-ready. Emotional intensity tells you how urgently someone wants out of their current situation, not how much budget exists. Use both scores together.&lt;/li&gt;
&lt;li&gt;Selection bias is real. People post publicly when they are angriest or when they want leverage on the vendor. The 58% share of 4+ scores partly reflects who bothers to write a public complaint at all. Silent mild annoyance is underrepresented by construction.&lt;/li&gt;
&lt;li&gt;Platform mix skews tone. GitHub issues are written for maintainers and read calmer; Trustpilot and Reddit rants run hotter. Category averages inherit the platform mix of that category.&lt;/li&gt;
&lt;li&gt;The intensity score is a classifier's 1 to 5 judgment, consistent but not infallible. Sarcasm and non-native-English phrasing are its known weak spots.&lt;/li&gt;
&lt;li&gt;Corpus is 988 gaps and recomputes hourly, so quoted numbers drift. Cite with an access date.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I would build from the angry end
&lt;/h2&gt;

&lt;p&gt;Three live gap dossiers from the high-intensity categories, each with the source complaints, scores, and evidence attached:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.ddmarketer.com/gap/stripe-account-freezes-dispute-and-payout-recovery-1edbd76f" rel="noopener noreferrer"&gt;Stripe account freezes: dispute and payout recovery&lt;/a&gt; - the exact complaint cluster behind that 4.5/5 Stripe signal. Frozen funds, ignored support tickets, real cash-flow damage.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ddmarketer.com/gap/airbnb-host-defense-against-unverified-guest-claims-f2d737ca" rel="noopener noreferrer"&gt;Airbnb host defense against unverified guest claims&lt;/a&gt; - real estate/local operations is tied for the angriest category at 4.1, and host-versus-platform disputes are a big reason why.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ddmarketer.com/gap/turbotax-for-soc-2-that-skips-the-50k-consultant-5a1b09e7" rel="noopener noreferrer"&gt;TurboTax for SOC 2 that skips the $50k consultant&lt;/a&gt; - security/compliance at 4.0 average intensity, where the anger is really fear: audits, deadlines, and consultants priced out of reach for small teams.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If I were picking a market on this data alone, I would look where intensity and willingness to pay are both high and the incumbents are the ones generating the complaints. That intersection is the whole thesis of the project.&lt;/p&gt;

&lt;p&gt;Method note: every gap links back to the underlying public complaints, and the scoring pipeline is described on the stats pages. The data is free to quote with attribution.&lt;/p&gt;

</description>
      <category>saas</category>
      <category>data</category>
      <category>startup</category>
      <category>marketing</category>
    </item>
    <item>
      <title>I analyzed 1,012 real SaaS complaints across 8 platforms. Here is what people actually complain about</title>
      <dc:creator>DDMarketer</dc:creator>
      <pubDate>Sat, 05 Sep 2026 20:35:31 +0000</pubDate>
      <link>https://dev.to/ddmarketer/i-analyzed-1012-real-saas-complaints-across-8-platforms-here-is-what-people-actually-complain-4a0</link>
      <guid>https://dev.to/ddmarketer/i-analyzed-1012-real-saas-complaints-across-8-platforms-here-is-what-people-actually-complain-4a0</guid>
      <description>&lt;p&gt;I run a small data pipeline that reads public software complaints: GitHub issues, Reddit threads, Stack Overflow questions, Hacker News comments, Trustpilot reviews, app store reviews, public forums, and posts on X. It clusters them into validated gaps and scores each one for commercial intent. The corpus just passed 1,000 underlying complaints, so I published the aggregate stats and spent an evening staring at them. Some of what came out surprised me.&lt;/p&gt;

&lt;p&gt;Current state: 988 validated gaps distilled from 1,012 underlying complaints, recomputed hourly. Everything below is quoted from the live stats pages as of September 5, 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  The most complained-about products
&lt;/h2&gt;

&lt;p&gt;Ranked by how many validated complaints name the product:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;Named complaints&lt;/th&gt;
&lt;th&gt;Avg emotion (1-5)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;td&gt;51&lt;/td&gt;
&lt;td&gt;3.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Airbnb&lt;/td&gt;
&lt;td&gt;38&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Shopify&lt;/td&gt;
&lt;td&gt;36&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Elasticsearch&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;3.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;QuickBooks&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Stripe&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;4.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Excel&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;3.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;GitHub Actions&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;3.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Zapier&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;4.2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Full table with method notes: &lt;a href="https://www.ddmarketer.com/stats/most-complained-about-saas" rel="noopener noreferrer"&gt;Most complained-about SaaS tools&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two things stand out to me. First, MySQL at 51 named complaints is a volume story: a huge user base repeatedly hitting the same sharp edges, at moderate emotion (3.4/5). Second, anger is decoupled from volume. Stripe is only sixth by count, but its complaints average 4.5/5 in emotional intensity, the highest in the top ten. People are not mildly annoyed about Stripe; they are describing frozen payouts and account shutdowns. QuickBooks (4.1) and Zapier (4.2) follow the same pattern: money-adjacent tools produce money-adjacent rage.&lt;/p&gt;

&lt;p&gt;Obvious caveat, printed on the page too: these counts reflect where complaints were collected, not market share, and products with fewer than 5 mentions are not ranked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where complaints actually live
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Gaps&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub&lt;/td&gt;
&lt;td&gt;302&lt;/td&gt;
&lt;td&gt;31%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reddit&lt;/td&gt;
&lt;td&gt;290&lt;/td&gt;
&lt;td&gt;29%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stack Overflow&lt;/td&gt;
&lt;td&gt;208&lt;/td&gt;
&lt;td&gt;21%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hacker News&lt;/td&gt;
&lt;td&gt;76&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trustpilot&lt;/td&gt;
&lt;td&gt;59&lt;/td&gt;
&lt;td&gt;6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X (Twitter)&lt;/td&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App Store&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public forums&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Full breakdown: &lt;a href="https://www.ddmarketer.com/stats/where-saas-complaints-live" rel="noopener noreferrer"&gt;Where SaaS complaints live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your idea validation process is "search Reddit", you are reading 29% of the complaints and missing the other 71%. And the split is not uniform across markets. E-commerce complaints are 82% Reddit. Data and analytics complaints are 70% Stack Overflow. Dev tools complaints are 58% GitHub. Real estate complaints are 94% Reddit. The platform you read determines the market you think exists.&lt;/p&gt;

&lt;p&gt;This is also a quiet argument against single-source research tooling in general: any pipeline built on one platform's API inherits that platform's coverage bias and its policy risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anger and willingness to pay
&lt;/h2&gt;

&lt;p&gt;Every complaint is scored 1 to 5 for emotional charge. The most emotionally intense categories (categories with fewer than 10 gaps excluded):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finance / Accounting: 4.1/5&lt;/li&gt;
&lt;li&gt;Real Estate / Local Operations: 4.1/5&lt;/li&gt;
&lt;li&gt;Security / Compliance: 4.0/5&lt;/li&gt;
&lt;li&gt;E-commerce: 3.8/5&lt;/li&gt;
&lt;li&gt;Dev Tools / SaaS Infrastructure: 3.6/5 (the biggest category at 387 gaps is also one of the calmest)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Corpus-wide, 58% of complaints score 4 or 5 out of 5. The full distribution is 1/5: 1 complaint, 2/5: 48, 3/5: 370, 4/5: 468, 5/5: 101. Details: &lt;a href="https://www.ddmarketer.com/stats/most-emotionally-intense-categories" rel="noopener noreferrer"&gt;Emotional intensity by category&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Willingness to pay is the more interesting number. A complaint gets flagged when the person signals they would pay for a fix. Across the whole corpus, that flag is on for 93%. By category:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HR / Recruiting: 97%&lt;/li&gt;
&lt;li&gt;Real Estate / Local Operations: 96%&lt;/li&gt;
&lt;li&gt;Security / Compliance: 96%&lt;/li&gt;
&lt;li&gt;Marketing Operations: 96%&lt;/li&gt;
&lt;li&gt;No-Code / Automation: 90% (the lowest ranked)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Details: &lt;a href="https://www.ddmarketer.com/stats/willingness-to-pay-by-category" rel="noopener noreferrer"&gt;Willingness to pay by category&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Honest note on that 93%: there is a selection effect. The corpus is validated gaps, not random internet grumbling, so a high overall rate is partly by construction. What I find informative is the spread and which categories sit on top: recruiting, real estate, and security complaints tend to be people describing problems that cost them money this week.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the numbers get made
&lt;/h2&gt;

&lt;p&gt;Short version, because the method matters more than the charts. The pipeline reads public posts across the 8 platforms, an LLM classifier extracts structured complaints, dedup collapses repeats across distinct authors so one viral thread does not look like a market, and a second pass clusters complaints into gaps. Each gap gets a commercial intent score (0 to 100), an emotional intensity read (1 to 5), and the willingness-to-pay flag. Product mentions are matched on word boundaries. Categories with fewer than 10 gaps are excluded from rankings because a percentage over two or three rows is noise, not signal. Every stat page recomputes hourly from the live corpus.&lt;/p&gt;

&lt;p&gt;Two biases I cannot remove. One: developers complain in public, in writing, on platforms with APIs, so dev tools are over-represented (387 of 988 gaps). Two: collection coverage is not market share, anywhere in this data. I would rather publish with those caveats on the page than pretend the corpus is a random sample of all software pain.&lt;/p&gt;

&lt;p&gt;Full writeup: &lt;a href="https://www.ddmarketer.com/methodology" rel="noopener noreferrer"&gt;methodology&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would build from this
&lt;/h2&gt;

&lt;p&gt;Three gaps from the corpus that line up with where the stats point:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Airbnb host protection from fraudulent cleanliness claims&lt;/strong&gt; (intent 80/100). Airbnb is the number 2 most complained-about product at 4.1/5 emotion, and real estate is the most emotionally intense category at 96% willingness to pay. The gap: hosts getting hit with fake cleanliness claims from guests fishing for refunds, with no good evidence trail on their side. &lt;a href="https://www.ddmarketer.com/gap/airbnb-host-protection-from-fraudulent-cleanliness-claims-4b8da6ab" rel="noopener noreferrer"&gt;Read the full gap dossier&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. SMB IT disaster recovery for non-technical management&lt;/strong&gt; (intent 80/100). Security and compliance sits at 4.0/5 emotion with 96% willingness to pay, and these complaints come from office managers, not sysadmins: the person who got handed "the IT" and just realized there are no tested backups. &lt;a href="https://www.ddmarketer.com/gap/smb-it-disaster-recovery-for-non-technical-management-94817d0e" rel="noopener noreferrer"&gt;Read the full gap dossier&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. WooCommerce plugin bloat killing checkout conversion&lt;/strong&gt; (intent 80/100). E-commerce complaints are 82% Reddit-sourced and 92% willing to pay, and this one is the classic: 40 plugins deep, checkout takes six seconds, the owner knows it is costing sales but cannot tell which plugin does it. &lt;a href="https://www.ddmarketer.com/gap/woocommerce-plugin-bloat-kills-checkout-conversion-284c81ee" rel="noopener noreferrer"&gt;Read the full gap dossier&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each dossier includes the underlying complaints, an MVP scope, suggested pricing, competitors, and risks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The caveat that matters
&lt;/h2&gt;

&lt;p&gt;Complaint volume is not demand. Someone raging about QuickBooks does not mean they will pay you to fix it. Data like this narrows where to look; it does not replace talking to people. If you want to query the corpus yourself, the search tier is free, and the stats pages above are free to cite with attribution (they recompute hourly, so cite the access date).&lt;/p&gt;

</description>
      <category>saas</category>
      <category>webdev</category>
      <category>data</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>10 software problems people are actively complaining about right now (with the scores)</title>
      <dc:creator>DDMarketer</dc:creator>
      <pubDate>Sun, 30 Aug 2026 18:14:06 +0000</pubDate>
      <link>https://dev.to/ddmarketer/10-software-problems-people-are-actively-complaining-about-right-now-with-the-scores-4k6n</link>
      <guid>https://dev.to/ddmarketer/10-software-problems-people-are-actively-complaining-about-right-now-with-the-scores-4k6n</guid>
      <description>&lt;p&gt;I run a pipeline that reads public complaints — Reddit, Hacker News, GitHub, Stack Exchange, Trustpilot, app store reviews, product forums, X — and scores each recurring one for commercial intent. Two LLM passes, deduplication across distinct authors so one loud thread does not look like a market, then an editorial gate. 942 have cleared it.&lt;/p&gt;

&lt;p&gt;Here are the ten highest-scoring right now, with the raw numbers. Commercial intent is a 0-100 estimate of willingness to pay; confidence is how sure the scoring is.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Automate 40% of property manager calls, cut after-hours costs
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 100/100 · confidence 90/100 · Real Estate / Local Operations · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/automate-40-of-property-manager-calls-cut-after-hours-costs-ba457d75" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Stop Stripe Connect fraud before platform shutdown
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 100/100 · confidence 90/100 · Security / Compliance · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/stop-stripe-connect-fraud-before-platform-shutdown-3f6ea5c8" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. AWS Marketplace usage fraud detection and remediation
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 100/100 · confidence 80/100 · Security / Compliance · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/aws-marketplace-usage-fraud-detection-and-remediation-c172d042" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 60-second mobile-first e-signatures, no account needed
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 90/100 · confidence 95/100 · Legal / Practice · surfaced from twitter&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/60-second-mobile-first-e-signatures-no-account-needed-e5cfc064" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Podcast download validation that filters bots reliably
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 80/100 · Creator Operations · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/podcast-download-validation-that-filters-bots-reliably-76187744" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. 24/7 M365 phishing response for BYOD education
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 80/100 · Security / Compliance · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/24-7-m365-phishing-response-for-byod-education-5188a249" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Recover failed Stripe payments for Laravel apps
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 80/100 · Finance / Accounting · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/recover-failed-stripe-payments-for-laravel-apps-ef90c678" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Stop metadata drift across Glue and other data catalogs
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 80/100 · Data / Analytics · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/stop-metadata-drift-across-glue-and-other-data-catalogs-3b77e351" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Secure occupied home showings for property managers
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 90/100 · Real Estate / Local Operations · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/secure-occupied-home-showings-for-property-managers-009dbd7d" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Stripe dunning that counts all retry attempts
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;intent 80/100 · confidence 90/100 · Finance / Accounting · surfaced from reddit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ddmarketer.com/gap/stripe-dunning-that-counts-all-retry-attempts-0c376634" rel="noopener noreferrer"&gt;Read the problem and the evidence&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I notice looking at this list
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Security and compliance is over-represented at the top.&lt;/strong&gt; Three of the ten are fraud or abuse response. That was not true of the corpus as a whole — across all 942, security is 7th by volume. It is a this-week artifact, and I mention it because it is exactly the kind of pattern that looks like a trend if you only read the top of a list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The good ones are boring.&lt;/strong&gt; Automating after-hours property manager calls scores 100. Nobody is going to tweet about building that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My corpus has a bias I cannot fully remove.&lt;/strong&gt; Dev tools are 44% of everything I hold, and my biggest single source is GitHub (563 items) ahead of Reddit (299). Not because developer problems are worth more — because developers complain in public, in writing, on platforms with APIs. Anyone mining public text inherits this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Querying this from your editor
&lt;/h2&gt;

&lt;p&gt;There is a free MCP server, so your coding agent can search the corpus without leaving the editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http ddmarketer https://www.ddmarketer.com/api/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three tools need no key and no account: &lt;code&gt;search_gaps&lt;/code&gt;, &lt;code&gt;get_top_gaps&lt;/code&gt;, and &lt;code&gt;validate_idea&lt;/code&gt;. That last one scores an idea you already have, and it returns a weak verdict when it only finds loosely related complaints rather than pretending a near-miss is validation.&lt;/p&gt;

&lt;p&gt;A dependency-free reference client is on &lt;a href="https://github.com/CodePhantom-1/ddmarketer-mcp" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; if you want to see exactly what goes over the wire — about 50 lines of plain fetch, no SDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  The caveat that matters
&lt;/h2&gt;

&lt;p&gt;Complaint volume is not demand. Somebody being annoyed on Reddit does not mean they will pay to fix it. This narrows where to look. You still have to talk to people before you build.&lt;/p&gt;

</description>
      <category>productivity</category>
    </item>
    <item>
      <title>My highest-value data category was starved because of how I ranked ingest targets</title>
      <dc:creator>DDMarketer</dc:creator>
      <pubDate>Sat, 29 Aug 2026 16:03:26 +0000</pubDate>
      <link>https://dev.to/ddmarketer/my-highest-value-data-category-was-starved-because-of-how-i-ranked-ingest-targets-5d1o</link>
      <guid>https://dev.to/ddmarketer/my-highest-value-data-category-was-starved-because-of-how-i-ranked-ingest-targets-5d1o</guid>
      <description>&lt;p&gt;I run a pipeline that mines public complaints and scores them for commercial intent. Last week I pulled approval rates by category and found something that had been quietly costing me the best data I had.&lt;/p&gt;

&lt;p&gt;Here is the table that started it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;category                approved/total   rate   mean intent
HR / Recruiting              28/  38      74%      80.1
Data / Analytics            177/ 242      73%      73.9
Dev Tools / SaaS Infra      560/1001      56%      71.9
Finance / Accounting         86/ 206      42%      75.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HR and recruiting has the &lt;strong&gt;best approval rate and the highest mean commercial intent of any category with real volume&lt;/strong&gt;. It also has the smallest candidate pool by an order of magnitude: 38 against dev tools' 1,001.&lt;/p&gt;

&lt;p&gt;My first assumption was that the classifier or the editorial gate was rejecting HR items. It was not. 74% of them get approved, the highest rate in the corpus. They were simply never being fetched.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual cause
&lt;/h2&gt;

&lt;p&gt;The ingest walks a list of targets per source, and a per-source time budget cuts the tail. So target ordering decides what the corpus is made of.&lt;/p&gt;

&lt;p&gt;The ordering was: protect the proven high-priority targets, then rotate everything else by staleness. That is a reasonable design — it stops unproven targets displacing measured ones at random, which an earlier jitter-based approach did (the newly-reached targets measured 65% in scope against 80% for the established ones).&lt;/p&gt;

&lt;p&gt;But there were 9 protected targets against roughly 13 reachable slots per run. So about 4 rotating slots, against 105 never-fetched targets on that source. &lt;code&gt;r/humanresources&lt;/code&gt; and &lt;code&gt;r/recruiting&lt;/code&gt; were sitting in a queue roughly 26 weeks deep.&lt;/p&gt;

&lt;p&gt;11 of the 13 HR targets on active sources had never been fetched once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the fix is priority 8 and not 9
&lt;/h2&gt;

&lt;p&gt;The obvious move is promoting them into the protected band. That is wrong: the protected band was already 9 of ~13 slots, so adding three more would consume the rotation entirely and recreate the same starvation for everything else.&lt;/p&gt;

&lt;p&gt;The rotating pool sorts by staleness ascending, then priority descending. Every never-fetched target ties at staleness 0 — so priority is the tiebreak &lt;em&gt;among them&lt;/em&gt;. Setting the HR targets to 8, one below the protected threshold, moves them to the front of the unfetched queue without displacing the protected head or the rotating tail.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;source_targets&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;priority&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sources&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;source_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'active'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;is_active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;last_fetched_at&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;priority&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="n"&gt;explicit&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="n"&gt;list&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Guarded on &lt;code&gt;last_fetched_at IS NULL&lt;/code&gt; and &lt;code&gt;priority &amp;lt; 8&lt;/code&gt; so it is idempotent, and scoped to an explicit list of target values so it cannot touch anything else. 11 rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that generalises
&lt;/h2&gt;

&lt;p&gt;If your pipeline has a budget that cuts a tail, &lt;strong&gt;the ordering of that queue silently decides what your data is about.&lt;/strong&gt; Mine had produced a corpus that was 44% developer tools, and I had been reading that as a finding about where the opportunities are. It was not a finding. It was an artifact of which targets the budget happened to reach.&lt;/p&gt;

&lt;p&gt;Two things worth checking in your own pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What fraction of your configured sources have &lt;em&gt;never&lt;/em&gt; run? Mine was 79%. Some of that was deliberate (a source disabled because its content was a decade old), but most of it was queue depth.&lt;/li&gt;
&lt;li&gt;Is your highest-yield segment also your smallest? That combination usually means starvation, not a real ceiling.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The corpus is at ddmarketer.com if you want to see what came out of it, and there is a free MCP server so your agent can query it directly — &lt;code&gt;claude mcp add --transport http ddmarketer https://www.ddmarketer.com/api/mcp&lt;/code&gt;. But the pipeline lesson is the transferable part.&lt;/p&gt;

</description>
      <category>devops</category>
    </item>
    <item>
      <title>I scored 942 user complaints for commercial intent. The data embarrassed me.</title>
      <dc:creator>DDMarketer</dc:creator>
      <pubDate>Sat, 29 Aug 2026 15:35:00 +0000</pubDate>
      <link>https://dev.to/ddmarketer/i-scored-942-user-complaints-for-commercial-intent-the-data-embarrassed-me-5gd1</link>
      <guid>https://dev.to/ddmarketer/i-scored-942-user-complaints-for-commercial-intent-the-data-embarrassed-me-5gd1</guid>
      <description>&lt;p&gt;I have abandoned enough side projects to accept that my ideas were the problem. So instead of having ideas, I spent a few months reading other people's complaints: Reddit, Hacker News, GitHub, Stack Exchange, Trustpilot, app store reviews, product forums, X.&lt;/p&gt;

&lt;p&gt;The pipeline is six stages.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Source&lt;/strong&gt; from public complaints only. No surveys, no private data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefilter&lt;/strong&gt; the obvious noise with keywords and heuristics, before spending money on inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deduplicate.&lt;/strong&gt; This mattered far more than I expected. One thread with 200 upvotes is one person's problem amplified 200 times, not 200 people with the problem. Frequency across &lt;em&gt;distinct authors and sources&lt;/em&gt; is the actual signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two LLM passes.&lt;/strong&gt; The first confirms it is a real, software-shaped problem. The second extracts the opportunity, the persona, and what people currently do instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Score&lt;/strong&gt; for commercial intent, confidence, and willingness to pay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editorial gate.&lt;/strong&gt; Nothing publishes automatically. I read every one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;942 have cleared that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things in the data I did not expect
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;My corpus is mostly about developers, and that is a bias, not a finding.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Dev Tools and SaaS Infrastructure is 44% of everything I have. My single largest source is GitHub with 563 items, ahead of Reddit at 299. That is not because developer problems are the most valuable. It is because developers complain in public, in writing, on platforms with APIs.&lt;/p&gt;

&lt;p&gt;Anyone mining public text has this skew. I had it for weeks before I went looking for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The highest-intent category is the one I have almost nothing in.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;HR and recruiting averages 80.1/100 commercial intent, the highest of any category with meaningful volume. I have 28 items in it. Dev tools averages 71.9 across 560.&lt;/p&gt;

&lt;p&gt;When I dug into why, the answer was worse than "not enough sources". The HR targets existed and were enabled. 11 of the 13 on active sources had never been fetched once, because the ingest budget kept getting consumed by the same high-priority targets every run. I had been mining where it was easy, and the ranking made that permanent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The good ones are boring.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Top of this week:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[intent 100 / confidence 90]  Automate 40% of property manager after-hours calls
[intent 100 / confidence 90]  Stop Stripe Connect fraud before platform shutdown
[intent  90 / confidence 95]  60-second mobile-first e-signatures, no account
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nobody is going to tweet about building after-hours call automation for property managers. The ideas that sound exciting score badly, over and over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Querying it from the editor
&lt;/h2&gt;

&lt;p&gt;Your agent can already build almost anything, so the bottleneck moved to deciding what to build. I put the corpus behind an MCP server so I can ask while I am already in the editor:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http ddmarketer https://www.ddmarketer.com/api/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in any MCP client config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ddmarketer"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.ddmarketer.com/api/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three tools need no key and no account: &lt;code&gt;search_gaps&lt;/code&gt;, &lt;code&gt;get_top_gaps&lt;/code&gt;, and &lt;code&gt;validate_idea&lt;/code&gt;. That last one scores an idea you already have, and it will tell you when there is nothing there — it returns a &lt;code&gt;weak&lt;/code&gt; verdict when it only finds loosely related complaints, rather than pretending a near-miss is validation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not do
&lt;/h2&gt;

&lt;p&gt;Complaint volume is not demand. Somebody being annoyed on Reddit does not mean they will pay to fix it. The corpus narrows where to look. You still have to talk to people.&lt;/p&gt;

&lt;p&gt;The scores come from a language model. They are consistent enough to rank against each other, but I would not read 80 vs 75 as meaningful.&lt;/p&gt;

&lt;p&gt;And the editorial gate is one person, which is a quality gate, not peer review.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question I cannot answer
&lt;/h2&gt;

&lt;p&gt;How do you separate "people complain about this" from "people would pay to fix this"? I score willingness to pay as its own dimension, but I have no ground truth to check it against, and one paying customer is not a validation set.&lt;/p&gt;

&lt;p&gt;If you have solved this, I would genuinely like to hear how.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
