Documentation · v0.2.0
ThreadSense for Facebook — User Guide
Everything you need to install the extension, read risk badges, tune settings, and browse Facebook with clearer local signals—without sending your feed to any server.
1. What ThreadSense does
While you browse Facebook (feed, posts, groups, etc.), ThreadSense:
- Finds visible posts and comments in the page.
- Extracts comment/post text and optional public profile cues.
- Scores each item with several independent heuristics:
- Rude tone — insults, shouting, condescension, and heated language.
- Troll pattern — repetition, multi-target hostility, copy-paste, and drive-by replies.
- Scam / bait — promotional scams, debate bait, coordinated talking points, and bait bundles.
- Fake-account risk — link spam, thin profiles, default avatars, burst activity, etc.
- Annotates content with badges you can click for explanations.
Analysis is reactive: as new comments appear while you scroll, ThreadSense re-runs on visible content. There is no background scraping of other pages.
What ThreadSense does not do
- Hide, report, block, or reply to comments automatically.
- Read private messages or anything you cannot already see on the page.
- Store names, profile URLs, or comment text after you close the tab.
- Judge political affiliation, protected traits, or mental health.
2. Quick start
Typical first-session flow—badges appear as visible comments are analyzed.
- Install ThreadSense from the Chrome Web Store or the tester link.
- In Chrome, open
chrome://extensionsand make sure ThreadSense is enabled. - Go to facebook.com.
- Scroll until you see posts with comments.
- Look for ThreadSense badges next to comments and some posts.
- Click a badge to open the explanation popover.
If you see no badges at all, see Troubleshooting.
2a. Display, authors, and focus
Tools that change how noisy threads look on your screen—Facebook content is never removed.
- Soft-hide — dim or collapse Medium/High comments (Settings → Display). Planned: per-axis score thresholds.
- Author snooze — 24h / 7d / forever from the popover; list in Settings → Authors.
- Custom phrases — block/allow lines and optional regex; import/export JSON.
- Copy analysis — popover button and popup “Copy thread snapshot”.
- Thread heat — colored strip on busy posts when subthreads flare up.
- Focus guard — optional prompt to enable dim mode after many High comments.
3. Badges, highlights, and popovers
Explanation popover
Illustration: badges on a comment and the draggable detail popover (not a screenshot—layout may vary on Facebook).
Badge types
- Risk badges — separate colored pills per axis (orange Rude, purple Pattern, teal Scam/Bait, blue Fake), each with its own Low/Med/High color.
-
No signals badge — gray
No signalswhen the “Tag every comment” setting is on and nothing triggered.
Score levels
Each comment/post can have:
| Level | Range | Meaning |
|---|---|---|
| Low | 0–39 | Weak pattern; often harmless or ambiguous. |
| Medium | 40–69 | Stronger pattern; worth a closer look. |
| High | 70–100 | Many signals combined; be cautious and double-check. |
The badge color and any left-border highlight use the highest score among rude, troll pattern, scam/bait, fake-account rollup, and the combined troll rollup.
Popover contents
Click a badge to see:
- Separate score cards for Rude tone, Troll pattern, Scam / bait, and Fake account (when each is enabled).
- A short interpretation when rude vs pattern signals point in different directions.
- Reason lists under each axis (for example hostile phrases, scam wording, duplicate comments, default avatar).
- Matched words or phrases in quotes when the checker found specific text on that comment.
- The popover is draggable so you can move it away from comments while reading.
- Long explanations are shown in a scrollable content area inside the popover.
- A disclaimer reminding you that these are heuristic estimates, not verdicts.
Refreshing badges by hovering a profile photo or name
The first time ThreadSense scores a comment, it may not yet know much about the person’s account—only what is visible on the comment itself (name, link style, avatar in the thread). Extra clues such as friend count, follower count, or “joined Facebook in …” often appear only when Facebook shows its profile preview card.
Profile hover refreshes fake-account cues from public preview data only.
To update risk flags for that person’s comments on the page:
- In Settings, turn on Enable public profile context (recommended; on by default).
- On Facebook, pause the mouse over the commenter’s profile picture or name until Facebook’s preview popup appears (the small card with their photo and stats).
- Wait a moment for the card to finish loading. ThreadSense reads only what is already visible there—nothing is sent to a server and nothing is saved after you close the tab.
- Badges on all of that person’s comments on the current page may change. The badge may flash briefly with a blue outline so you can see it was updated.
This mainly adjusts fake-account risk (thin or new-looking profiles, default photo on the preview, and similar weak signals). It does not re-read the comment text for troll scoring. If the preview never opens or stays empty, badges will stay as they were.
4. Toolbar popup
Popup summary for the active Facebook tab—stats show “—” on non-Facebook pages.
Click the ThreadSense icon in the Chrome toolbar to open the popup.
Tab stats
| Stat | Meaning |
|---|---|
| Scanned | Number of posts/comments analyzed on the active Facebook tab. |
| High / Medium / Low | How many items fell into each combined level band. |
The popup shows “—” if the active tab is not a Facebook page with the extension running.
Quick settings
In the popup, you can toggle:
- Enable on Facebook – turn ThreadSense on/off for Facebook.
- Show low signals – show or hide Low-level badges.
- Tag every comment – give every comment a badge (including “No signals”).
Changes apply immediately to the current Facebook tab.
Feedback (bugs and suggestions)
In the popup footer, Report a bug and Send suggestion open in-extension forms.
For bugs, if you were on Facebook, ThreadSense may capture one screenshot of that Facebook tab automatically
(you do not need to keep Facebook in front). You can add more images, edit your description, then
Download report or Download suggestion to save
threadsense-bug-report.txt or threadsense-suggestion.txt plus any screenshot files,
and copy diagnostic text to your clipboard. No account is required. Share the downloaded files
with the developer by email, chat, or any channel you prefer.
Optional: Send via email opens your mail app with a pre-filled message to info@threadsense.org (attach downloaded images manually). Use Capture Facebook tab on the bug or suggestion page to grab a Facebook tab in the same window even when the form is open—ThreadSense captures that tab directly, not whatever tab is visible on screen. Nothing is uploaded to ThreadSense automatically.
5. Settings (options page)
Options page sections—open via popup “All settings” or chrome://extensions.
You can open the full settings page by:
- Clicking All settings in the toolbar popup, or
- Going to Chrome’s extension list → ThreadSense → Extension options.
How to use every setting
General
- Enable extension — master switch. Turn off if you want to browse Facebook without any ThreadSense analysis.
- Show low-signal results — when off, Low items are hidden so you can focus on Medium/High comments only.
- Tag every comment with a status badge — adds a badge to almost everything (including “No signals”). Turn on for auditing; turn off for a cleaner feed.
- Pile-on thread warnings — shows informational notices for pile-ons and heated posts. It does not add points to any score.
- I browse in Philippines context — keeps Philippines-specific timing and talking-point logic aligned with local browsing. Turn off when traveling in another timezone to reduce false positives from local-hour signals.
Sensitivity
- Low — fewer alerts, stricter thresholds, best when you want fewer false alarms.
- Normal — recommended default for everyday use.
- High — catches more risky patterns, but may increase false positives.
Display
- Soft-hide: Off — show badges only; nothing is dimmed/collapsed.
- Soft-hide: Dim — lowers opacity for Medium+ comments.
- Soft-hide: Collapse High — hides only High until you expand manually.
- Soft-hide: Collapse Medium and High — most aggressive band-based cleanup mode.
Planned: auto-hide by numeric score per category (Rude, Pattern, Scam/Bait, Fake) with its own Dim/Collapse mode — see Future release.
Tip: start with Dim first. Move to collapse modes only if your feed is still noisy.
Authors
- Use badge popover buttons to snooze a person for 24h, 7d, or always.
- The Authors section lists snoozed accounts for the current device profile.
- Clear all snoozes removes every saved snooze immediately.
Custom phrases
- Block phrases (boost risk) — one phrase per line; best for recurring spam lines or insults in your language mix.
- Allow phrases — phrases that should reduce over-triggering for known benign wording.
- Block regex — advanced matching for pattern-heavy spam (for example repeated prefixes or token formats).
- Export JSON / Import JSON — back up or move your phrase setup between browsers/devices.
Best practice: add a few high-confidence phrases first, test for a day, then refine.
Focus guard
- Doomscroll / heated-thread guard — prompts you to enable dim mode after repeated exposure to High-risk comments.
- High-risk comments before prompt — lower value = earlier prompt; higher value = fewer interruptions.
- Minutes on page before prompt — minimum dwell time before a prompt can appear.
Phrase lists
- Phrase list info shows current list counts and update state.
- Refresh remote phrase lists fetches latest published list updates.
Remote updates add new terms on top of bundled lists and do not remove your custom phrases.
Image / meme comments
- Analyze image comments — includes image-based comments in scoring using available alt text.
- Weak score for image-only replies in heated threads — adds cautious pattern weight when image-only drops appear in already heated discussions.
- Experimental local OCR on images — reads text from image pixels locally using Tesseract; can be slower on large images.
Risk Scoring switches
- Fake-account risk scoring — account/behavior signals (profile style, link spam, volume patterns).
- Troll-behavior risk scoring — hostile/targeting/repetition behavior signals.
- Scam / bait risk scoring — scam pitches, bait wording, and coordinated talking points.
If you want simpler output, keep only one or two risk families enabled.
Public profile context
- Enable public profile context — allows weak score adjustments using only publicly visible profile card data (friends/followers/join date/default avatar clues).
- No-profile-pic detection mode: Strict — fewer false positives, may miss some default avatars.
- No-profile-pic detection mode: Aggressive — catches more suspected defaults, but may over-flag edge cases.
To refresh these signals, hover profile photo/name so Facebook’s preview card loads (see profile hover steps).
Developer
- Debug mode — prints diagnostics to DevTools console. Keep off unless troubleshooting.
Save / reset workflow
- Click Save settings after changes to apply and persist them locally.
- Use Reset to defaults to return all options to baseline values.
6. Risk criteria and thresholds
ThreadSense uses a set of heuristic signals to estimate troll and fake-account risk. This section explains what it looks for and roughly when a signal is considered active.
6.0 Word matching
ThreadSense compares comment text to word lists—hostile insults, bait / debate-bait wording, scam / promo language, and talking-point narrative templates (Philippines-focused pack). Lists load automatically when the extension runs; there is nothing to configure in Settings.
Terms ship with the extension and may receive additional entries from periodic background updates while you use Facebook. New terms are merged on top of the built-in lists—existing bundled terms are never removed. Updates typically run about every six hours.
Matching is case-insensitive and uses word boundaries where possible. Lists cannot cover every language or writing style on Facebook; comments in languages or scripts with little list coverage may be under-detected, and wording in any language can still be missed if it is not in the lists yet.
When a comment matches, the popover can show the actual matched words in quotes under that reason.
| Category | What it catches | How it was built |
|---|---|---|
| Hostile / insulting | Insults, slurs, dismissive or hostile language | Curated insults and slurs from open word-filter projects, badword lists, and hate-speech research; some political-discourse terms cross-referenced with academic sources where applicable. |
| Bait / antagonistic | Debate-bait, challenges, bad-faith questions | Curated challenge and bait patterns common in social-media comments. |
| Scam / promo | Scam pitches, unsolicited DMs, payment-app spam, work-from-home spam | Curated scam and promotional patterns seen in comment spam. |
| Talking points | Repeated political or coordinated narrative phrases | Philippines-focused starter pack; merged with remote list updates like other categories. |
High risk (70+) on either axis requires at least one strong text anchor (hostile, bait, scam, or talking-point match). Weak signals alone—default avatar, numeric profile URL, burst volume—are capped below High.
The checker is a best-effort tool: it can flag something by mistake, miss unusual wording, or overlook insults not in the lists yet. Additional terms can appear after a background refresh or when you reinstall or update the Chrome extension (which updates the lists shipped with the install).
6.1 Rude tone
Goal: approximate “Does this comment sound hostile, insulting, or needlessly aggressive?”
-
Hostile / insulting phrases
Looks for clear insults or slurs from the hostile list. One strong term, or several weaker ones in the same comment, can push this signal up. Rough weight: up to ~30 points. -
Excessive ALL CAPS
Treated as shouting when:- Text length is at least around 25 characters, and
- A large majority (≈65%+) of letters or words are uppercase.
-
Repeated punctuation
Emphasis patterns like!!!,???,?!?!with at least 3 repeated characters. Rough weight: up to ~10 points. -
Condescension density
Several condescending phrases or a mix of condescension plus other hostile markers in one comment. Rough weight: up to ~15 points. -
Short + hostile
Very short comments (around 3–8 words) that are mostly an insult or attack. Rough weight: up to ~10 points. -
Minimum content rule
A comment needs at least about 10 characters and 2 words before scoring runs. Very short/unreadable content is skipped (may still get a neutral badge if you tag every comment).
6.2 Troll behavior pattern
Goal: approximate “Does this author’s behavior on this page look repetitive, targeted, or disruptive?”
-
Near‑duplicate comments
Same author posting essentially the same text multiple times on one page. Needs at least 2 similar comments. Rough weight: up to ~20 points. -
Multi‑target hostility
Hostile replies under two or more different parent comments on the same page. Rough weight: up to ~15 points. -
Cross‑thread copy‑paste
Near‑identical comment reused across multiple posts in one browsing session. Rough weight: up to ~15 points. -
Off‑topic reply
Reply with little keyword overlap vs the parent comment, especially with links. Rough weight: up to ~12 points. -
Scripted trigram repetition
Same short phrase chunk repeated across several comments by one author. Rough weight: up to ~12 points.
The combined troll‑behavior rollup blends rude tone and troll pattern (the higher score plus a fraction of the lower). Badges can show both sub‑scores separately.
6.3 Scam / bait risk
Goal: approximate “Is this comment trying to scam, promote, or bait people into a fight?”
-
Scam / promotional language
Phrases used in scams or promos (e.g., “dm me”, “earn daily”, GCash pitches). One strong phrase can anchor High risk. Rough weight: up to ~35 points. -
Bait / antagonistic phrases
Challenge and debate‑bait wording (e.g. “prove it”, “debate me”). Rough weight: up to ~15 points. -
Talking points (PH pack)
Curated coordinated narrative phrases; one match or several stacked matches. Rough weight: ~18–25 points. -
Bait + insult bundles
Predefined hostile+bait term combinations in one comment. Rough weight: up to ~10 points. -
Short + bait
Very short comments (about 3–8 words) that are mostly baiting. Rough weight: up to ~8 points.
6.4 Fake‑account risk
Goal: approximate “Does this account + comment look like spam/farm/bot patterns?” (not scam wording alone)
-
Link‑heavy comments
Comments that mainly push links (one or more URLs with high link density). Usually not applied to the original post author. Rough weight: up to ~20 points. -
Repeated link sharing
Same author posting link‑heavy comments at least twice on one page. Rough weight: up to ~20 points. -
Suspicious name patterns
Display names that look auto‑generated or ID‑like (all digits, long digit suffixes, odd letter‑digit mixes). Rough weight: ~6–20 points depending on strength. -
Numeric‑only profile URL
Profile links likeprofile.php?id=…instead of a human vanity URL. Rough weight: up to ~12 points. -
Default profile photo
Account appears to use Facebook’s default gray silhouette avatar, based on avatar detection mode. Rough weight: up to ~24 points. -
Default avatar + numeric URL combo
When both a default-looking avatar and a numeric profile URL are detected, extra weight is added on top of each individual signal (around +8 points). -
Burst commenting
Same account posting many comments on the same page (around 5+ visible comments). Rough weight: up to ~15 points. -
Generic / engagement‑farming content
Very short, generic replies (emojis only, “nice”, “wow”, etc.), especially when combined with links or repetition. Rough weight: about 8–10 points. -
Public profile context (weak, capped)
Optional profile-based hints (default avatar, very low friend/follower counts, “joined recently” etc.) when you have profile context enabled. Combined profile signals can contribute up to around 35 points, but cannot by themselves push someone to “High” risk.
6.3 Avatar detection modes
- Strict – fewer “default photo” flags but may miss some silhouettes; requires clearer evidence.
- Aggressive – flags more suspected defaults but increases chance of false positives; inferred-only detections may be down‑weighted or ignored.
6.4 Combining scores
- Both troll and fake scores are calculated from 0–100.
- A sensitivity multiplier applies:
- Low ≈ 0.75×
- Normal ≈ 1.1×
- High ≈ 1.35×
- Very small scores (below about 8) are suppressed to 0 to reduce noise.
- The badge’s overall level uses the higher of (troll score, fake score).
- Verified accounts (blue check) skip troll and fake scoring; post authors may skip some fake patterns related to link repetition.
7. Privacy and data
| Data | Stored? | Where |
|---|---|---|
| Your settings (toggles, sensitivity, etc.) | Yes | chrome.storage.local on your device |
| Comment/post text | No | Processed in memory only; discarded when the tab closes |
| Author fingerprints / duplicate detection | No | In memory per tab only |
| Profile preview (hover card) details | No | Read only while the preview is open; kept in memory for the current Facebook tab, then discarded |
Permissions used:
storage– to keep your preferences.- Host access for
facebook.com– to inject the analysis script on Facebook pages only.
For the full privacy policy, see privacy.html (also at https://threadsense.org/privacy.html).
8. Troubleshooting
| Problem | Things to try |
|---|---|
| No badges at all |
Check that the extension is enabled in chrome://extensions.
Make sure you are on facebook.com. Reload the Facebook tab
(Ctrl+R / Cmd+R) after enabling.
|
| Popup shows “—” stats | The active tab must be a Facebook page with content loaded. Switch to a Facebook tab and wait a moment. |
| Too many things are flagged | Lower sensitivity to Low, turn off “Show low signals”, or disable one of the risk types. |
| Too few things are flagged | Raise sensitivity to High, enable both risk types, and enable public profile context. |
| Badges on the wrong element | This can happen when Facebook changes its layout. Use Report a bug in the toolbar popup (or Settings footer): capture a screenshot of the Facebook tab, describe feed vs group vs reel, and download the report to share with the developer (email is optional if configured). ThreadSense does not upload screenshots for you—attach them when you share the report. |
| Fake risk did not change after I hovered a profile | Confirm Enable public profile context is on. Hover the profile photo or name until Facebook’s preview card fully loads. Only fake-account badges may change; troll scores come from comment text. If the preview never appears, ThreadSense has nothing new to use. |
| Wrong flags, stale badges, or odd scores after a settings change |
Do a hard refresh on the Facebook tab so the page and extension state resync:
Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac).
If problems continue, open chrome://extensions, click Reload on
ThreadSense, then hard-refresh Facebook again and scroll the feed so comments are re-scanned.
False positives can also come from sensitivity, PH talking-point phrases, or browsing outside
the Philippines with Philippines context still on—adjust those before assuming a bug.
|
9. Responsible use
- Scores are approximate. Sarcasm, jokes, or quoted insults can be misread.
- Real people can have default avatars or new accounts; “fake risk” is not proof.
- Use ThreadSense to slow down, reconsider, and look more closely—not as a final judge of any person.
- If you believe someone truly violates Facebook’s rules after your own review, you may report them manually on Facebook—see section 10. ThreadSense never reports for you.
10. Reporting on Facebook (optional, manual only)
Use reporting when you have high confidence and have double-checked—for example repeated scam pitches, clear impersonation, or targeted harassment—not because you merely disagree with someone or because ThreadSense flagged a joke or sarcasm.
Do not report solely because ThreadSense showed Medium or High risk. Re-read the comment, check the popover reasons, and decide whether you saw an actual policy problem.
Report a profile (desktop, typical flow)
- Pause and double-check. Re-read their comments and your own judgment. Confirm you are not reporting a disagreement or a misunderstanding.
- Open their profile. Click the person’s name or profile picture from the comment or feed.
- Open the profile menu. On their profile page, click ⋯ (three dots) below the cover photo, or choose Find support or report profile (wording may vary).
- Start a report. Select Report profile (for a personal profile) or the equivalent for a Page.
- Choose an honest reason. Pick the category that matches what you actually observed—for example pretending to be someone else, fraud or scam, harassment, or spam. Do not select a serious category just because ThreadSense showed a high score.
- Complete Meta’s steps. Answer the follow-up questions. Add specific details (what was said, links, approximate date) if asked.
- Submit. Meta reviews reports; you may not receive an outcome notification.
Report a comment
- Double-check the comment and popover; confirm it is not sarcasm or a quote.
- Click ⋯ on the comment.
- Choose Report comment or Find support or report (wording may vary).
- Select the reason that fits the comment (spam, harassment, scam, etc.), complete the form, and submit.
Alternatives to reporting
- Hide comment — removes it from your view only; does not notify Meta.
- Block — stops them from interacting with you; use when you want peace of mind, not necessarily when a policy was broken.
- Report — use when you believe there is a real Community Standards violation after your own review.
Facebook’s menus and labels change when the site is updated. For official help, search Meta’s Help Center on facebook.com for “report a profile” or “report a comment.”
11. Future release (planned)
Auto-hide by category score
Today, Soft-hide (Settings → Display) reacts to Low / Medium / High bands across all risk axes. The planned update adds per-category numeric sliders so you can hide comments when a specific score (0–100) crosses your threshold—for example, hide anything with Rude score 10 or higher even when the overall band is still Low.
Planned controls (Settings → Display)
| Control | What it does | Default (proposed) |
|---|---|---|
| Auto-hide by category score | Master toggle for score-based hiding | Off |
| Score threshold soft-hide mode | Dim or Collapse only (separate from band soft-hide) | Dim |
| Rude tone slider | Hide when rude score ≥ threshold | 0 (off) |
| Troll pattern slider | Hide when pattern score ≥ threshold | 0 (off) |
| Scam / bait slider | Hide when scam/bait score ≥ threshold | 0 (off) |
| Fake account slider | Hide when fake score ≥ threshold | 0 (off) |
How it will work
- Each category slider runs from 0 to 100. At 0, that axis does not trigger score-based hide.
- When the master toggle is on and a score is ≥ its threshold, ThreadSense applies Score threshold soft-hide mode—either Dim (fade) or Collapse (hidden until you click Show comment (ThreadSense)).
- Band soft-hide and score threshold soft-hide use separate mode settings. You can keep band soft-hide Off and still hide by score, or use both; the stronger hide wins when both apply.
- Turn score-based hiding off with the Auto-hide by category score checkbox (badges and band soft-hide are unaffected).
- ThreadSense still never removes Facebook content—only your local view changes.
Examples
- Rude = 10, score mode Collapse — comments with rude score 10+ are collapsed even when other axes are quiet.
- Rude = 0 — rude score never triggers score-based hide.
- Band soft-hide Dim, score mode Collapse, Rude = 25 — a rude-heavy Low-band comment can collapse from the score rule while Medium+ bands still follow band dim rules.
Interaction with other settings
- Detection sensitivity — thresholds compare against final axis scores after sensitivity is applied.
- Risk scoring toggles — if an axis is disabled (e.g. Scam/Bait off), its slider is ignored.
- Show low-signal results — still controls badge visibility; score hide applies to the comment body only.
ThreadSense is not affiliated with Meta Platforms, Inc. This extension is not endorsed by Meta.