← All research

Synthesis & method

Competitor deep-research method & tooling

Dashboard: Dashboard · landscape: competitor-landscape-report · roll-up: SENTIMENT-SYNTHESIS. This documents how the dossiers are built so the findings are defensible and the process is repeatable across tools.

Tool stack (evaluated 2026-06-16)

SourceToolNotes
App Store metadata + marketing screenshotsrzn-tools app-store search/lookup (public iTunes API)rating, rating count, price, screenshotUrls (downloaded)
App Store on-page reviews + screensrzn-browser appstore/app-detailssupplementary; web App Store shows limited reviews
Capterra reviews (volume)rzn-browser capterra/product-details-reviews paginated ?page=N~25 reviews/page via JSON-LD; primary volume engine
G2 reviewsrzn-browser g2/product-details-reviewsfirst-page set; G2 anti-bot limits depth
Web search / review round-upsrzn-tools exa search + exa answer (cited)configured key; entity search + content extraction
Web search backuprzn-tools xai-searchconfigured key
YouTube demosrzn-tools search youtube (public)walkthrough/demo videos
Real in-app screenshots (fallback)rzn-phone (device “iGoobey”, iOS 18.7.8, available)drive the real app for true in-app UI; last resort
Capterra real segmentationrzn-browser run _research/capterra_dom_reviews.json + parse_capterra_rsc.pyRSC scrape → REAL firm-size/role/industry/sub-ratings/solicitation/competitive-intel
App Store hi-res screens_research/harvest_visuals.py --match <bundle>swaps mzstatic size token for full-res; filter by bundle id (search JSON carries many apps)
Walkthrough UI frames_research/harvest_frames.sh (yt-dlp + ffmpeg scene-detect)find videos via yt-dlp "ytsearch12:<tool> demo walkthrough" (rzn-tools youtube returned empty); frames show the web/office UI the App Store doesn’t
Review analysisHaiku subagents (batched)classify sentiment/role/theme/bias per _research/REVIEW_ANALYSIS_SCHEMA.md

Not available: Parallel, Serper, SerpAPI, Firecrawl, Tavily, Perplexity (no keys); App Store RSS reviews feed (Apple deprecated — returns empty); rzn-tools reddit (permission_denied → use browser reddit or exa site:reddit.com).

Anti-bot reality: G2/Capterra throttle rapid repeated hits. Mitigation: 22–25s delay between page calls, retry-once on an empty page, seed from prior single-page pulls. Realistic yield ~100–250 Capterra reviews for well-reviewed tools; thin/newer tools yield less.

Per-tool pipeline

  1. _research/pull.py — App Store (search/lookup/reviews + download screenshots), Play Store, exa (4 query angles + cited answer), YouTube. → raw/, screens/.
  2. _research/pull_browser.py — Capterra + G2 search → match product → first-page reviews. → raw/.
  3. _research/pull_reviews_volume.py — paginate Capterra (+G2) with delays → raw/reviews_corpus.json.
  4. _research/make_batches.py — split corpus into Haiku batches (raw/batches/).
  5. Haiku subagents — one per batch: Read batch → classify per schema → Write raw/analysis/batch_NN_out.json.
  6. _research/aggregate.py — roll up → raw/analysis/SUMMARY.{json,md} (theme freq, sentiment/role split, bias counts, quotes).
  7. Hand-write dossier.md — profile, pricing, UX narrative, embedded screens, quantified + bias-filtered review synthesis, gap-vs-our-wedge.

Bias / credibility method

Every review tagged by reviewer role (field vs office vs unknown), specificity, and a bias_flag: solicited_vague (down-weight vague 5★), disgruntled_nonproduct (price/sales/culture rants), fit_mismatch (wrong-segment, not a defect), or none (credible). Headline numbers report the credible share; complaint themes are ranked by negative-sentiment mentions from credible reviews.

Dossier structure (the locked template — read like a coherent report)

The brief must read as a continuous report in full sentences, not a worksheet. A stranger should understand what the company does before any strategic judgement appears, so the narrative builds understanding first and reaches our verdict as a conclusion. No emojis, no telegraphic bullet-fragments for the analytical sections, and no internal jargon (terms like “counter-positioning” or “talk-vs-ship gap” are tools for our thinking in _OPPORTUNITY-LENS; in the brief, explain the idea in plain English). Tables are welcome for the coverage grid, ratings and the closing assessment; prose carries everything else. Order:

  1. Opening orientation — one short paragraph stating what the brief is for, then What the company is and what it does (plain prose: the product, the buyer, the core job, the business model).
  2. Where it plays across the market — score 0–100 against the 21 areas in _MARKET-PROBLEM-MAP, sorted, with a prose takeaway on deep-vs-thin. Same 21 areas every time, enabling the cross-competitor coverage heatmap.
  3. The input side — what is captured, the input methods, onboarding and ease, and the entry friction users report.
  4. The management side — what data lands in the dashboard, which teams consume it, what they value, and whether the view is operational or commercial.
  5. Where the value actually comes from — the sales story versus the real source of stickiness; state what not to attack and where the value stops.
  6. What users say, both sides — lead with the credibility caveat (solicited vs organic share), then the praise and the criticism in their own words, ending with the signal that matters for us.
  7. The opportunity for AI in this space — which parts of the job inexpensive AI can now take over versus which are structured plumbing; then what we would build (the baseline to match, the recurring pains we can solve, the specific niche to target first).
  8. How open the platform is — API, webhooks and integrations, and what that openness means for building on top versus replacing.
  9. The vendor’s own AI — what they have actually shipped (each item tagged shipped/beta/announced) versus what the industry is talking about; state the gap plainly; close with a confidence score on how much of their AI ambition they can realistically deliver, with the structural reasoning.
  10. Who actually uses it — real firm-size, role and industry segmentation from the review scrape; alternatives considered and switched-from.
  11. Our read: can we enter and win? — the strategic conclusion in prose: what is entrenched and off-limits, the verified gap, the way in, and the one situation that would undermine the approach (the “what would make us walk away” paragraph). Close with a compact plain-language assessment table. This is where the _OPPORTUNITY-LENS thinking surfaces, translated into readable judgement.
  12. The app itself — the public mobile app and its ratings as the concrete closing artifact.
  13. Screenshots — an Obsidian-embedded gallery (“, never copied bytes), starting with the contact sheets, linking screens/README.
  14. Sources and method — what was verified where, and a pointer to _RESEARCH-METHOD.

DISCIPLINE: evidence over bias (no absence-claims without proof)

Never assert a competitor “lacks X” (e.g. “no commercial event”) from not-having-looked. State only what facts show. If unverified, write “not verified yet,” not “absent.” Actively search the vendor site, RFI/claims/change-order pages, dashboard/insights pages, tier matrices, API docs, and walkthrough videos before concluding a gap. (Caught in Raken pilot: Raken DOES have RFIs with cost/schedule/plan impact + a public API — earlier “no commercial event / closed” claims were bias, corrected to the precise evidenced gap: no dedicated claims/entitlement module, operational-only dashboard.)

REQUIRED: map the full product surface (don’t research only the app)

The app-store listing is the front door, not the product. Sales-led / quote-only / seat-based pricing almost always means a field→office platform (web dashboards, analytics, time→payroll, integrations) where the office side carries the invoice. Every brief must answer:

  1. Full surface — field (mobile) vs office (web/admin) vs finance vs integrations.
  2. Who consumes centrally — PM/ops, executives, payroll/finance, bid managers.
  3. Why they actually get paid / what P&L line — labor-cost control? payroll automation? risk? productivity-vs-estimate? (vs the visible “nicer reports”).
  4. Real moat — usually integrations + the office data loop, not the capture UX.
  5. Sales motion — PLG vs sales-led, land-and-expand, contract size, buyer. Source it from the vendor site (features/product/pricing/integrations pages) + exa answer + parallel-search + funding (Tracxn/PR). Caught in the Raken pilot: it looked like a voice→PDF app; it’s actually a labor/production/payroll platform wired into Sage/QuickBooks/Viewpoint.

Lessons from the Raken pilot (apply at scale)

Tier plan (user chose broadest coverage)

Scaling at fan-out — the packet + pipeline (10-competitor run, 2026-06-16)

The dossiers now scale via _DOSSIER-PACKET.md — the runbook handed to one background agent per competitor, each owning one folder dossiers/<slug>/. Roll-up of every agent’s returned MATRIX + COVERAGE lines lives in _CROSS-COMPETITOR (the opportunity matrix + the 21-area coverage heatmap).

Pipeline split (the architecture that makes fan-out safe):

Fixes baked in this run (all durable):

Known gap (fix before the next browser wave): some Capterra products (e.g. PlanRadar) 301-redirect /reviews//#reviews (the overview), where reviews lazy-load and the workflow captures none (__next_f present but zero reviewId objects). Workaround used: the thin-Capterra path. Proper fix: add a scroll-the-reviews-container step to capterra_dom_reviews.json before the extract.

Thin-data path (validated): AI-native tools with no Capterra and no app (Document Crunch, Trunk Tools, Civils.ai, OpenSpace) still yield strong briefs from exa + funding/press + walkthrough-video frames + vendor site, provided the credibility caveat leads. Ultra-thin tools (ContraVault, ConstructionDailyReport.ai, Voice Log Pro) are folded into one cohort note (_micro-entrants/cohort) rather than padded into solo 14-section briefs.