Back to blog
Case StudyJul 21, 2026 · 7 min read

I Let an AI Agent Run My Market Research for a Month. Here's What It Found.

First post in the Agent on the Clock series: an AI agent ran every weekday morning for a month, mining pain signals and competitor pricing. Real receipts, real findings, real failures.

Case Study

Every weekday at 07:30 Lisbon time, before I open my laptop, a research agent runs on my machine. It searches the live web for three things: customer pain in my market, competitor offers and pricing, and signals worth acting on. It scores everything it finds, throws the weak ones away, and leaves me a one-page executive brief.

It's been running for over a month. This post is what actually happened, with the receipts.

This is the first post in Agent on the Clock, a series where I document real work done by my own AI agents. Not demos. Not mockups. The actual output files, including the days it broke.

The setup

The agent (I call it the flywheel) runs three streams each morning:

  • Pain mining. Searches Reddit, forums, and blogs for small business owners describing repetitive work in their own words.
  • Offer and pricing radar. Tracks what AI automation agencies and self-serve tools are charging, and for what.
  • Competitor radar. Watches for moves in the agent/assistant space. (This one was added most recently; earlier briefs covered the first two streams only.)

Each stream collects 5 candidates, sends them to a local model (qwen2.5:3b, running on my Mac via Ollama) in one batch call, and keeps only findings with a decision value of 2 or 3 out of 3. Everything else gets discarded with the gate decision logged. Total runtime is about 90 seconds per stream. Then it writes an executive index: the top findings, the decisions I need to make, pricing signals, and UX signals extracted from user quotes.

What it found

From the July 3 pain-mining run (the same findings resurfaced in the July 6 executive brief; more on that below):

"If you don't have a system (manual or automated), it just doesn't happen. The time + mental load can get really heavy. I maintain a network of a few hundred people and manually follow up with them." (r/Entrepreneur, scored 3/3, flagged for a Follow-Up Engine offer)

"Before automation, we had one person who basically lived in our support inbox. Manual follow ups and chasing unpaid invoices kill hours every week." (r/automation, 3/3)

And from the July 6 offer and pricing run:

Gumloop enters market at $37/month for AI workflow automation with no hidden fees (self-serve tool, decision value 2/3, tagged "cheaper_but_self_serve" for pricing research)

AI automation agency offers 'Done For You' plan at $149/month with 5 chatbots and white-label dashboard (2/3, flagged as a more-expensive DFY service for pricing research)

That last one is worth pausing on. My current pricing is €49/month for the full agent, €29/month if you bring your own model keys. The competitor charges triple for a narrower product. The agent surfaced the comparison. The strategic read (cheaper, yes, but credible at that price?) is mine to make.

The part most tools don't show you: the discard pile

The agent is more useful for what it rejects than for what it keeps. From the same July 6 run, three candidates got dropped by quality gates. The receipts log the gate decision verbatim:

  • "Zapier freelancers charge $75-$250/hour for complex automations": [GATE: decision_value dropped to 0 after quality gates.]
  • "Zapier consulting starts at $150 for one hour of advice": [GATE: decision_value dropped to 1 after quality gates.]
  • "n8n removes workflow count limits across all pricing tiers": [GATE: decision_value dropped to 0 after quality gates.]

My read on why: generic freelancing rates and competitor feature tweaks don't move my positioning, and the gates know it. Without them, my morning brief would be a firehose of semi-relevant links. With them, I read 7 findings instead of 10 candidates, and every one has a "why this matters" and a recommended action attached.

Where it broke

Eight runs failed in the first three weeks of July. The failures came in two flavors, and the second one is scarier.

Loud failure, July 17. The failure report's key lines:

Failed step: batch_model. Elapsed time: 0.0s. Error: Failed to parse batch JSON: Unexpected end of JSON input. No Final Digest Generated.

The local model returned truncated JSON and the whole batch died with it. Annoying, but honest: the report tells me exactly which step broke, how long it ran, and what to check first (Ollama running? model pulled? data quality?). That is the difference between an agent and a cron job. The agent writes its own incident report.

Silent failure, same day and again July 21. Despite the crash, an executive brief still got written for July 17. It says "0 findings" in every section. So does the July 21 brief. If you're skimming, an empty brief looks exactly like a quiet day. It isn't. It means the pipeline produced nothing and the summary layer didn't flag it. A monitoring gap I hadn't noticed until I pulled the receipts for this post.

My fix in progress: retry with a smaller candidate count on JSON parse failures, and have the brief writer treat "0 findings across all streams" as a failed run, not a normal day.

Where I intervened

Three honest corrections from the month:

  1. The same findings kept coming back. The "SMB owners drowning in manual tasks" finding appeared in briefs on June 26, July 3, and July 6. The agent doesn't dedupe across days yet. I read it three times before I noticed. Fix queued: cross-day dedup against the findings index.
  2. Observed dates were stale. Several "live" findings carried an observed date of 2026-05-03. The search was live, but the underlying threads were months old. Fine for pain mining (pain doesn't expire fast), misleading for pricing radar. I now check observed dates before acting on pricing signals.
  3. The model grades its own homework. qwen2.5:3b both extracts findings and scores their decision value. Some days it's generous. The receipts even show the gates compensating: one finding got [GATE: DV3 capped to 2] because a done-for-you agency comparison needs higher source confidence before it counts as strategic. I treat 3/3 scores as "worth reading," not "verified truth." The quotes are real and linked. The scoring is a triage aid.

The verdict

What it saved: I haven't opened Reddit for market research in weeks. The morning read takes 4 minutes. Two findings directly shaped my current offer positioning, and the $149/month DFY competitor find confirmed there's headroom between my €49 plan and what agencies charge.

What it missed: Cross-day deduplication, freshness filtering, silent-failure detection, and a healthier skepticism about its own scoring. All fixable, all queued.

What I'd tune next: A weekly rollup. Daily briefs are good for triage. A Sunday synthesis that says "this pain appeared 6 times this month across 4 sources" would be better for strategy.

The agent isn't a research analyst. It works every day, quotes its sources, admits when it crashes, and runs on a model small enough to live on my laptop. For a solo founder, that trade is obvious.

Receipts

Every claim above traces to a file the agent wrote. The paths below are from my working vault.

  • Executive index 2026-07-06: brain/atlas-ally/research/index/2026-07-06-executive.md (7 kept findings, runtime stats, UX signals)
  • Pain mining raw run 2026-07-03: brain/atlas-ally/research/pain-mining/2026-07-03-live.md (5/5 kept, 85.9s, quotes + source URLs)
  • Offer/pricing raw run 2026-07-06: brain/atlas-ally/research/offer-pricing/2026-07-06-live.md (2 kept, 3 discarded with gate lines, one DV3 capped to 2)
  • Failed run report 2026-07-17: brain/atlas-ally/research/runs/2026-07-17-live-pain-failed.md (JSON parse failure, no digest)
  • Empty briefs: research/index/2026-07-17-executive.md and 2026-07-21-executive.md (0 findings in every section)
  • July failure reports: 8 files under research/runs/ matching 2026-07-*-failed.md
Ready to automate your first task?
Your own always-on assistant, free for 7 days. No card required.
Start free

More from the blog