Reddit Mentions (Company)

Overview

Reddit Mentions (Company) turn candid Reddit threads into structured sales signals. When a business complains about a renewal, evaluates a replacement, or reports an outage, you get a signal with the company resolved to its domain and the exact quotes that prove it.

We monitor 500+ hand-vetted business communities and 150+ standing searches. Every community passed a live AI screen before inclusion (1,300+ candidates tested, 59% rejected). Each signal carries one of 15 subtypes, verbatim evidence, and two honesty labels: stage says how strong the evidence is; prominence says whether the thread was about this or mentioned it in passing.

Delivery is weekly. A signal ships once - the ID is stable, and a record re-ships only when its evidence gets stronger.

Available Subtypes

The signal_subtype field takes one of 15 values. Expand for the full list with each subtype's stage and category vocabularies.

All 15 subtypes - roles, stages, and categories
SubtypeRoleStage valuesCategory valuesDescription
customerFeedbackvendornone considering switching switchedpricing reliability security support integration implementation features usability generalAny customer voice about a vendor's product - praise, pain, pricing anger, intent to leave, or a completed switch. The broadest subtype. Watch stage for churn: switching/switched means the account moved
buyingIntentvendor or buyerresearching evaluating decidingfree text - the software category ("CRM", "observability")An active evaluation or purchase. Buyer-side records need a company named specifically enough to resolve, so most records are vendor-side
techAdoptionbuyerswitchedfree text - the tool category adoptedA named company reports using or rolling out named tools
serviceOutagesubjectevent ladder¹outage degradation data_lossThe product is down or degraded NOW. Post-hoc reliability complaints are customerFeedback/reliability
pricingChangesubjectevent ladder¹price license packaging termsThe vendor changed price, licensing, packaging, or terms - the fact of the change; the angry reaction is customerFeedback
productChangesubjectevent ladder¹discontinued feature_removed breaking_change redesign policy_changeSunset/EOL, removed feature, breaking release, redesign, or policy change
accountRestrictionsubjectevent ladder¹suspension closure funds_hold quota_denied access_denied listing_removed reviews_removed ad_disapprovedA platform suspended, closed, held funds from, or denied access to a customer
financialDistresssubjectevent ladder¹unpaid_vendors missed_payroll runway fire_sale shutdown_talk otherUnpaid vendors, missed payroll, runway rumors, insolvency. Often ships speculative - community predictions, labeled as predictions
cybersecurityIncidentsubjectevent ladder¹breach ransomware vulnerability_disclosed active_exploitation supply_chainA breach, or a critical vulnerability in the company's own product. The entity is always the victim or the vulnerable-product maker
layoffssubjectevent ladder¹layoffs hiring_freeze attritionLayoffs/RIF, hiring freeze, or mass attrition
leadershipChangesubjectevent ladder¹-A named executive joins or leaves. Carries data.details {person_name, title, direction}. Resolved people also ship as reddit-contact records
acquisitionAnnouncedsubjectevent ladder¹acquirer target merger (this company's side)An acquisition or merger; the counterparty appears in data.other_companies
fundingEventsubjectevent ladder¹seed series_a series_b later_stage debt grant unspecifiedA funding round raised by this company
hiringSignalsubjectevent ladder¹-The company hires at scale. One person's job offer does not qualify
productLaunchsubjectevent ladder¹-The company launches a product

¹ Event ladder - every event subtype uses the same stage scale, weakest to strongest evidence: speculative (the author predicts it; never stated as fact) → rumored (someone claims it is happening, unverified) → reported (secondhand claim it occurred) → confirmed (first-hand account or official notice/link). Filter stage != "speculative" for facts only; keep predictions as early intent.

Schema

Verbatim production record, annotated:

{
  "signal_id": "913d28a9-8194-5e66-a6fc-f750a3d09442",  // deterministic: same signal = same ID, every delivery
  "batch_id": "2026-09-20-16-25-11", // when we generated it (UTC, audit truth)
  "signal_type": "reddit-company",
  "signal_subtype": "customerFeedback",
  "signal_name": "Reddit Mention",
  "detected_at": "2026-09-20T19:04:57.108Z", // delivery-timeline date (week-ending for weekly files)
  "association": "company",
  "company": { // use domain or LinkedIn url to match. Shown for both contact & company signals.
    "name": "Grammarly",
    "domain": "grammarly.com", // resolved live; null = we abstained rather than guessed
    "linkedin_url": "https://www.linkedin.com/company/grammarly",
    "industries": ["Software Development"],
    "employee_count_low": 1001,
    "employee_count_high": 5000,
    "description": "Grammarly is an AI writing assistant used by teams and enterprises."
  },
  "contact": null, // always null on company records
  "data": {
    "signal_category": "feedback", // coarse group: feedback | intent | adoption | event
    "summary": "A company reports that after deciding not to renew its subscription, Grammarly sent unsolicited emails and in-app popups to all licensed users, prompting the company's leadership to immediately remove the software and expedite a switch to Microsoft Copilot.",
    "entity_role": "vendor", // vendor | buyer | subject
    "stage": "switched", // subtype-scoped; here: the customer already moved
    "category": "general", // subtype-scoped; null where the subtype has none
    "sentiment": "negative", // toward the company
    "prominence": "core", // core = the thread is about this; aside = passing mention
    "timing": "completed", // ongoing_state | in_progress | completed | planned
    "event_date": "2026-09", // best-estimate month; null = no date derivable (never invented)
    "event_date_text": null, // the raw phrase from the thread, when one exists
    "people": [], // real named people only - never Reddit usernames
    "topics": ["cancellation", "customer retention", "vendor management", "sales tactics"],
    "products_mentioned": [],
    "evidence": [ // verbatim quotes; prefix = where each came from
      "[post] We let them know we weren't going to renew and they sent these unsolicited emails and popups in their app to all of the users who had licenses.",
      "[post] They didn't give us a heads up - just started carpet bombing everyone. They even listed the direct email for the guy on my team who handles licensing."
    ],
    "other_companies": [ // everyone else in the conversation, with their role
      { "name": "Microsoft", "role": "switching_to", "domain": "microsoft.com" }
    ],
    "source_url": "https://www.reddit.com/r/sysadmin/comments/1wjdpgx/psa_grammarly_will_send_unhinged_messages_to_all/",
    "post_id": "1wjdpgx",
    "post_title": "PSA: Grammarly will send unhinged messages to all your users if you try to cancel",
    "post_text": "…full thread body, up to 5,000 chars - the same context the extractor read…",
    "post_kind": "multi_media", // text | image | link | multi_media | hosted:video
    "link_url": null,
    "image_url": null,
    "image_read_by_model": false, // true when the extractor read the image pixels
    "subreddit": "sysadmin",
    "subreddit_url": "https://www.reddit.com/r/sysadmin/",
    "post_date": "2026-09-18T02:26:01.000Z", // when the thread was posted (the real conversation time)
    "post_flair": ["General Discussion"],
    "post_author": "brothertax", // handle only - we never resolve Reddit users
    "post_author_url": "https://www.reddit.com/user/brothertax/",
    "post_author_id": "t2_4g10w",
    "total_upvotes": 4207,
    "total_comments": 348,
    "upvote_ratio": 0.98,
    "awards": 0,
    "virality": "very_high", // engagement percentile vs the week's corpus
    "mention_count": 1, // distinct threads naming this company this run
    "mention_surge": false, // true at mention_count >= 3
    "related_post_urls": [],
    "comments": [ // up to 20 top comments, for verification context
      {
        "author": "bunnythistle",
        "author_url": "https://www.reddit.com/user/bunnythistle/",
        "score": 2064,
        "depth": 0,
        "posted_at": "2026-09-18T02:33:58.000Z",
        "url": "https://www.reddit.com/r/sysadmin/comments/1wjdpgx/comment/pahvl9b/",
        "excerpt": "That sounds like a great way to get their domain on our email block list. …"
      }
    ],
    "comments_total": 348,
    "comments_included": 20,
    "nsfw": false, // Reddit's own over-18 flag
    "content_warning": null // "profanity_in_quotes" = check before quoting in outreach
  },
  "_qa": { // quality metadata - machine-measured, filterable
    "validation_issues": [],
    "resolution": "resolved",
    "margin": null,
    "triage_interest": 0.9
  }
}

Field Reference

Core Fields

FieldTypeRequiredDescription
signal_idstring (UUID)Deterministic ID derived from (post, company, subtype). The same signal carries the same ID in every delivery. Re-runs and backfills are upsert-safe: treat signal_id as your primary key
batch_idstringGeneration batch timestamp, YYYY-MM-DD-HH-MM-SS UTC. This is when Autobound produced the record - the audit trail. It can differ from detected_at on backfilled weeks
signal_typestringAlways "reddit-company"
signal_subtypestringOne of the 15 subtypes above. Drives which stage and category values are possible
signal_namestringAlways "Reddit Mention"
detected_atstring (ISO 8601)The date this signal belongs to on YOUR timeline. For weekly files it is the week-ending date. It is not the thread date - use data.post_date for that
associationstringAlways "company"
companyobjectThe company this signal is about (below)
contactnullAlways null on company records; person records ship as reddit-contact

Company Object

FieldTypeRequiredDescription
namestringThe company name after resolution. Falls back to the name exactly as the thread used it when resolution abstained
domainstring | nullPrimary domain from Autobound's live resolution engine (web search + AI verification of each candidate). null means the resolver abstained rather than guessed - about 1 in 10 records; the signal still ships name-only. Use domain as your join key to CRM/enrichment when present

Data Object

FieldTypeDescription
signal_categorystringCoarse grouping for quick routing: feedback, intent, adoption, or event. Redundant with subtype but cheaper to filter on
summarystringOne sentence, company first, with the concrete specifics (numbers, dates, names) pulled into words. Predictions read as predictions; passing mentions read as asides - the summary never upgrades weak evidence
entity_rolestringThe company's side of the story. vendor = its product is being discussed; buyer = it is doing the evaluating/adopting; subject = the event happened to it
stagestring | nullHow far along, or how solid. Funnel subtypes use funnel values (consideringswitched); event subtypes use the evidence ladder (speculativeconfirmed). See the subtype accordion for each vocabulary. This is your main precision filter
categorystring | nullThe subtype's finer classification (e.g. pricing vs reliability inside customerFeedback). null on subtypes that define no categories
sentimentstringpositive, neutral, negative, or mixed - the thread's tone toward THIS company, not the thread's overall mood
prominencestringcore = the thread is about this signal, or the author reports it first-hand. aside = a passing mention: a commenter's recommendation, an old event recalled, background context. Roughly a third of signals are asides - they are real information, labeled so you can weight them
timingstring | nullWhen the described thing happens relative to the post: ongoing_state (a standing situation), in_progress (happening now), completed (already happened - even years ago), planned (announced for the future). Omitted when none fits
event_datestring | nullBest-estimate month, YYYY-MM or YYYY. Relative phrases ("yesterday", "last week") are anchored to the post date. null when no date is derivable - we never invent one. Pair with timing: completed + an old event_date = history, not news
event_date_textstring | nullThe raw temporal phrase from the thread ("effective October 1"). Present on most dated signals; useful for display
peoplearrayReal named humans relevant to this signal: { name, title, employer, role } with role actor (the person the signal is about) or mentioned. Reddit usernames never appear here
detailsobjectOnly on leadershipChange: { person_name, title, direction: "joins" | "leaves" }
topicsarrayUp to 5 short lowercase tags (pricing, migration, ai) for faceting
products_mentionedarrayThe company's own product lines named in the thread ("M365", "Lambda")
evidencearray1–3 verbatim quotes supporting the signal, each prefixed with its source: [post], [comment u/<name>], or [image]. This is the checkability guarantee - every claim is one click from its evidence via source_url
other_companiesarrayEvery other company in the conversation with its relationship to this one: competitor, alternative, incumbent, switching_to, adopted, replaced, acquirer, target, partner - each with its resolved domain when available. A churn signal's switching_to entry tells you who won the deal
source_urlstringCanonical thread permalink. Append .json for Reddit's public JSON of the full thread
post_id, post_title, post_textstringThread identity, title, and body (up to 5,000 chars - the same text our extractor read, shipped for verification)
post_kindstringWhat kind of post: text, image, link, multi_media, hosted:video. Image posts may carry the content in pixels - see image_read_by_model
link_url, image_urlstring | nullThe external link or image for non-text posts
image_read_by_modelbooleantrue when the extractor read the attached image (screenshots of outage banners, pricing emails, etc.)
subreddit, subreddit_urlstringThe source community
post_datestring (ISO 8601)When the thread was posted - the conversation's real timestamp. Use this for recency, not detected_at
post_flairarrayThe thread's flair labels, when set
post_author, post_author_url, post_author_idstringThe poster's handle, profile URL, and stable t2_ ID. Provenance only - we never resolve Reddit users to real identities
total_upvotes, total_comments, upvote_ratio, awardsnumberThread engagement at collection time. High engagement = the market is watching this conversation
viralitystringEngagement percentile bucket relative to that week's whole corpus (lowvery_high) - "viral" always means viral for that week
mention_countnumberHow many distinct threads named this company in the same run
mention_surgebooleantrue at mention_count ≥ 3 - the company is a topic across communities (common during outages and pricing changes)
related_post_urlsarrayUp to 10 other threads mentioning the same company that run
commentsarrayUp to 20 top comments (author, score, depth, timestamp, permalink, 400-char excerpt) - the discussion context, shipped so you can verify tone and claims without leaving the record
comments_total, comments_includednumberThe thread's full comment count vs how many ship here
nsfwbooleanReddit's own over-18 flag for the thread. Effectively always false in our vetted business communities
content_warningstring | null"profanity_in_quotes" when the summary or evidence text contains profanity. Check this before piping quotes verbatim into outreach copy

Quality Metadata (_qa)

Machine-measured quality facts. Filter on these instead of trusting a single score.

FieldTypeDescription
validation_issuesarrayNon-blocking QA notes recorded at extraction time (empty on clean records)
resolutionstringCompany resolution outcome: resolved/candidate (domain returned and accepted), unresolved/abstained (no confident match - domain is null), not_attempted
marginnumber | nullThe resolver's decision margin, when it reports one
triage_interestnumber0–1 actionability score from triage. Higher = more concrete and seller-actionable. A cheap precision dial: >= 0.7 keeps the sharpest third
vetobject | nullPresent on risky signals (events, asides): an independent automated second review. Contains per-check booleans (entity in source, subtype fit, stage fit, prominence fit, summary faithful), a verdict of ok or flag, and a short reason. flag means our reviewer disagrees with something - shipped anyway, labeled, so you can decide

Coverage

  • Communities: 500+ hand-vetted business subreddits across IT & infrastructure, security, data/AI, software engineering, e-commerce & retail, marketing, sales & CS, finance & accounting, HR & legal, healthcare, construction & trades, manufacturing, energy, logistics - plus dedicated regional coverage (UK & Ireland, DACH, France & Benelux, Nordics, Iberia & LATAM, India, Australia & NZ, Canada, SEA & Japan/Korea, MEA). Per-community yield is re-measured every run; communities that stop producing get pruned.
  • Standing searches: 150+ probe-verified queries catch signals outside the curated communities.
  • Cadence: weekly (week ending Sunday), with historical weeks backfilled. Deduplication is guaranteed: a signal ships once, under a stable ID, and re-ships only when its evidence strengthens (a rumor upgrading to confirmed).
  • Quality machinery: automated review of every risky signal at production time, tripwire gates on every run, and independent AI audits that grade weekly batches field-by-field before delivery.

Legacy docs: the previous Reddit page described the earlier company-seeded Reddit product and is retained (hidden) for reference.


Did this page help you?