Skip to content

[#645] Add user scoring script for PlotLink targeting#659

Merged
realproject7 merged 3 commits intomainfrom
task/645-user-scoring
Mar 30, 2026
Merged

[#645] Add user scoring script for PlotLink targeting#659
realproject7 merged 3 commits intomainfrom
task/645-user-scoring

Conversation

@realproject7
Copy link
Copy Markdown
Owner

Summary

  • .gitignore: Added archive/ to prevent committing data exports
  • scripts/score-users.mjs: Scores 7,335 DropCast users with composite 0-100 score and Writer/Reader/None tags

Results: 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 files
  • node scripts/score-users.mjs generates scored CSV
  • Output has plotlink_score (0-100) and plotlink_tag columns
  • Sorted by score descending
  • Blacklisted users → score 0, tag None
  • Build passes

🤖 Generated with Claude Code

- 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>
@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
plotlink Ignored Ignored Mar 30, 2026 10:15pm

Request Review

Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 any spam_label > 0. The current code only subtracts 15 points and then returns None with the remaining score, which violates the ticket's explicit score 0 / None requirement for spam users.
  • [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 === 0 as its own None condition, and handle the no bio / no pfp / no twitter profile-empty rule separately.

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>
Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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, no pfp_url, and no twitter, independent of follower counts. The ticket's None guidance lists profile-empty accounts as a separate hard classification rule, but the current code only gives them a lower profile score.

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>
Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@realproject7 realproject7 merged commit 3deeffc into main Mar 30, 2026
5 checks passed
@realproject7 realproject7 deleted the task/645-user-scoring branch March 30, 2026 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Analyse DropCast user data — score users for PlotLink Writer/Reader targeting

2 participants