Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 27 additions & 20 deletions data-science/analytics/trending_agents.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
"""Trending agents algorithm — placeholder.
"""Trending agents score calculation.

TODO: Implement trending score based on:
- Recent run count (weighted)
- Download velocity
- Rating trend (recent vs historical)
- Review volume
This script reads mock usage and rating data, then calculates a simple
trending score for each agent.

Input: datasets/agent_usage.csv, datasets/agent_ratings.csv
Output: Ranked list of agent IDs with trending scores
Formula:
trending_score = recent_runs * 0.6 + total_runs * 0.2 + avg_rating * 20

Why:
- recent_runs has the highest weight because trending agents should be active now.
- total_runs rewards agents with proven usage.
- avg_rating rewards agents with better user ratings.

The script prints the top 5 trending agents.
"""

import pandas as pd
Expand All @@ -17,33 +21,36 @@


def load_usage_data() -> pd.DataFrame:
"""Load mock usage data."""
return pd.read_csv(DATASETS_DIR / "agent_usage.csv")


def load_ratings_data() -> pd.DataFrame:
"""Load mock ratings data."""
return pd.read_csv(DATASETS_DIR / "agent_ratings.csv")


def compute_trending_scores() -> pd.DataFrame:
"""Compute trending scores for all agents.

TODO: Implement weighted scoring formula
TODO: Normalize scores to 0-100 range
"""
usage = load_usage_data()
ratings = load_ratings_data()

# Placeholder: simple sort by recent_runs
merged = usage.merge(ratings, on="agent_id", how="left")
merged["trending_score"] = merged["recent_runs"] * merged["avg_rating"]
merged = merged.sort_values("trending_score", ascending=False)

return merged[["agent_id", "agent_name", "trending_score"]]
if "agent_name" not in merged.columns:
merged["agent_name"] = merged["agent_id"]

merged["trending_score"] = (
merged["recent_runs"] * 0.6
+ merged["total_runs"] * 0.2
+ merged["avg_rating"] * 20
).round(1)

return (
merged[["agent_id", "agent_name", "trending_score"]]
.sort_values("trending_score", ascending=False)
.head(5)
)


if __name__ == "__main__":
results = compute_trending_scores()
print("Trending Agents (placeholder algorithm):")
print("Top 5 Trending Agents:")
print(results.to_string(index=False))