[#645] Add user scoring script for PlotLink targeting#659
Conversation
- scripts/score-users.mjs: scores 7,335 DropCast users for PlotLink Writer/Reader targeting with composite 0-100 score - .gitignore: added archive/ to prevent committing data exports Scoring: social reach (40%), reputation (30%), profile completeness (15%), spam penalty (-15%). Tags: Writer (creator signals), Reader (active user), None (spam/inactive/blacklisted). Results: 88 Writers, 2,290 Readers, 4,957 None. Fixes #645 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
The scoring script is close, but it still misses two of the ticket's required hard-disqualification rules for None users.
Findings
- [high] Spam-flagged users keep non-zero scores instead of being hard-zeroed.
- File:
scripts/score-users.mjs:82 - Suggestion: Return
{ score: 0, tag: "None" }for anyspam_label > 0. The current code only subtracts 15 points and then returnsNonewith the remaining score, which violates the ticket's explicitscore 0 / Nonerequirement for spam users.
- File:
- [medium] Zero-follower/zero-following accounts are only discarded when bio and pfp are also missing.
- File:
scripts/score-users.mjs:88 - Suggestion: Treat
follower_count === 0 && following_count === 0as its ownNonecondition, and handle theno bio / no pfp / no twitterprofile-empty rule separately.
- File:
Decision
Requesting changes because the current output does not satisfy the external ticket's required hard handling for spam users, and it can still classify zero-engagement accounts that the ticket says should be None.
- Spam-flagged users now get score 0 / tag None (was getting non-zero) - Zero follower + zero following = None regardless of bio/pfp - Removed unnecessary spam penalty arithmetic (early return instead) Addresses T2a review on PR #659. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
The prior blockers are fixed, but the updated script still misses one of the external ticket's explicit None classification rules.
Findings
- [medium] Accounts with no profile data are no longer forced to
None.- File:
scripts/score-users.mjs:107 - Suggestion: Add an explicit disqualifier for users with no
bio, nopfp_url, and notwitter, independent of follower counts. The ticket'sNoneguidance lists profile-empty accounts as a separate hard classification rule, but the current code only gives them a lower profile score.
- File:
Decision
Keeping this at request changes because the external scoring contract still says profile-empty accounts should classify as None, and the current implementation can still score/tag them as Reader or Writer if their reach or reputation is high enough.
Users with zero profile data (no bio + no pfp + no twitter) are now tagged None with score 0, regardless of reach/reputation signals. Addresses T2a review on PR #659. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Summary
The scoring script now matches the ticket's required hard None handling and stays scoped to archive ignoring plus CSV scoring/tagging.
Findings
- No blocking findings.
Decision
Approving because the current implementation covers the external ticket's required disqualifiers for blacklisted, spam, zero-engagement, and profile-empty users, while preserving the requested composite scoring and output shape.
Summary
.gitignore: Addedarchive/to prevent committing data exportsscripts/score-users.mjs: Scores 7,335 DropCast users with composite 0-100 score and Writer/Reader/None tagsResults: 88 Writers, 2,290 Readers, 4,957 None. Full summary posted as issue comment.
Fixes #645
Tracks realproject7/agent-os#323
Test plan
archive/in .gitignore — git status shows no archive filesnode scripts/score-users.mjsgenerates scored CSVplotlink_score(0-100) andplotlink_tagcolumns🤖 Generated with Claude Code