diff --git a/.streamlit/config.toml b/.streamlit/config.toml
new file mode 100644
index 0000000..e87af43
--- /dev/null
+++ b/.streamlit/config.toml
@@ -0,0 +1,10 @@
+[theme]
+base = "dark"
+primaryColor = "#6366f1"
+backgroundColor = "#090d16"
+secondaryBackgroundColor = "#131b2e"
+textColor = "#f1f5f9"
+font = "sans serif"
+
+[client]
+toolbarMode = "minimal"
\ No newline at end of file
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d7d6705
--- /dev/null
+++ b/app.py
@@ -0,0 +1,489 @@
+"""
+app.py
+HIFFI Artist Intelligence - Executive Dashboard
+Clean dark-themed design with aligned dataframes, responsive cards, and scouting dossier.
+"""
+
+import os
+import pandas as pd
+import plotly.express as px
+import plotly.graph_objects as go
+import streamlit as st
+
+st.set_page_config(
+ page_title="HIFFI | Artist Intelligence",
+ page_icon="β‘",
+ layout="wide",
+ initial_sidebar_state="expanded",
+)
+
+DATA_PATH = "enriched_artists.csv"
+
+# Global CSS Polish
+st.markdown(
+ """
+
+ """,
+ unsafe_allow_html=True,
+)
+
+
+@st.cache_data(ttl=60)
+def load_data():
+ if not os.path.exists(DATA_PATH):
+ return pd.DataFrame()
+ df = pd.read_csv(DATA_PATH)
+ numeric_cols = [
+ "hiffi_score",
+ "breakout_velocity_index",
+ "subscriber_count",
+ "daily_view_velocity",
+ "momentum_30d",
+ "confidence_score",
+ ]
+ for col in numeric_cols:
+ if col in df.columns:
+ df[col] = pd.to_numeric(df[col], errors="coerce")
+ return df
+
+
+df = load_data()
+
+# ----------------- Sidebar Controls -----------------
+with st.sidebar:
+ st.markdown("### β‘ HIFFI Intelligence")
+ st.caption("Hip-Hop Market Scoring & Breakout Detection")
+ st.markdown("
", unsafe_allow_html=True)
+
+ if df.empty:
+ st.error(f"'{DATA_PATH}' not found. Please run 'python main.py' first!")
+ st.stop()
+
+ view_mode = st.radio(
+ "Leaderboard Perspective:",
+ ["π Overall HIFFI Rank", "π Breakout Velocity (BVI)", "π Master Audit Grid"],
+ index=0,
+ )
+
+ st.markdown("", unsafe_allow_html=True)
+ st.markdown("##### π‘οΈ Filters")
+
+ available_statuses = df["health_status"].dropna().unique().tolist()
+ selected_statuses = st.multiselect(
+ "Channel Status",
+ options=available_statuses,
+ default=available_statuses,
+ )
+
+ min_conf = st.slider(
+ "Min Confidence",
+ min_value=0.0,
+ max_value=1.0,
+ value=0.50,
+ step=0.05,
+ )
+
+ st.markdown("", unsafe_allow_html=True)
+ st.caption("Momentum (35%) β’ Velocity (30%) β’ Reach (20%) β’ Cadence (15%)")
+
+# Filter logic
+filtered_df = df[
+ (df["health_status"].isin(selected_statuses))
+ & (df["confidence_score"] >= min_conf)
+].copy()
+
+# ----------------- Main Header -----------------
+head_col1, head_col2 = st.columns([3, 1])
+with head_col1:
+ st.markdown("HIFFI Artist Intelligence Hub
", unsafe_allow_html=True)
+ st.markdown("Cross-platform tracking of catalog sustainability and audience breakout velocity.
", unsafe_allow_html=True)
+with head_col2:
+ st.markdown(
+ f"Active Cohort: {len(filtered_df)} / {len(df)} artists
",
+ unsafe_allow_html=True,
+ )
+
+# ----------------- KPI Cards Row -----------------
+k1, k2, k3, k4 = st.columns(4)
+
+with k1:
+ st.markdown(
+ f"""
+
+
Tracked Artists
+
{len(df)}
+
Monitored pipeline size
+
+ """,
+ unsafe_allow_html=True,
+ )
+
+with k2:
+ active_count = len(df[df["health_status"] == "ACTIVE_HEALTHY"])
+ st.markdown(
+ f"""
+
+
Active Healthy
+
{active_count}
+
Recent uploads & steady traction
+
+ """,
+ unsafe_allow_html=True,
+ )
+
+with k3:
+ evergreen_count = len(df[df["health_status"] == "CATALOG_EVERGREEN"])
+ st.markdown(
+ f"""
+
+
Catalog Evergreen
+
{evergreen_count}
+
Strong passive catalog streams
+
+ """,
+ unsafe_allow_html=True,
+ )
+
+with k4:
+ zombies = len(df[df["health_status"] == "DORMANT_CATALOG"])
+ st.markdown(
+ f"""
+
+
Dormant / Excluded
+
{zombies}
+
Disqualified ( Rank)
+
+ """,
+ unsafe_allow_html=True,
+ )
+
+st.markdown("", unsafe_allow_html=True)
+
+# ----------------- Top 3 Leaders Podium -----------------
+top3 = (
+ filtered_df[filtered_df["is_rank_eligible"] == True]
+ .sort_values(by="hiffi_rank", ascending=True)
+ .head(3)
+)
+
+if len(top3) >= 3:
+ st.markdown("#### π Market Leaders")
+ p1, p2, p3 = st.columns(3)
+
+ podium_data = [
+ (p1, top3.iloc[0], "π₯ RANK #1", "podium-gold", "#f59e0b"),
+ (p2, top3.iloc[1], "π₯ RANK #2", "podium-silver", "#94a3b8"),
+ (p3, top3.iloc[2], "π₯ RANK #3", "podium-bronze", "#f97316"),
+ ]
+
+ for col, row, rank_label, css_class, accent_color in podium_data:
+ badge_cls = (
+ "badge-active"
+ if row["health_status"] == "ACTIVE_HEALTHY"
+ else "badge-evergreen"
+ )
+ bvi_str = f"{row['breakout_velocity_index']:.1f}" if pd.notna(row.get("breakout_velocity_index")) else "N/A"
+ vel_str = f"{int(row['daily_view_velocity']):,}" if pd.notna(row.get("daily_view_velocity")) else "N/A"
+
+ with col:
+ st.markdown(
+ f"""
+
+
+ {rank_label}
+ {row['health_status'].replace('_', ' ')}
+
+
{row['name']}
+
{row.get('channel_title', '')}
+
+
+
HIFFI Score
+
{row['hiffi_score']:.1f}
+
+
+
Breakout Index
+
{bvi_str}
+
+
+
Daily Views
+
{vel_str}
+
+
+
+ """,
+ unsafe_allow_html=True,
+ )
+
+ st.markdown("", unsafe_allow_html=True)
+
+# ----------------- Leaderboard Grid -----------------
+st.markdown(f"#### π {view_mode}")
+
+if view_mode == "π Overall HIFFI Rank":
+ table_df = (
+ filtered_df[filtered_df["is_rank_eligible"] == True]
+ .sort_values(by="hiffi_rank", ascending=True)
+ .copy()
+ )
+ cols = [
+ "hiffi_rank",
+ "name",
+ "hiffi_score",
+ "breakout_rank",
+ "breakout_velocity_index",
+ "daily_view_velocity",
+ "momentum_30d",
+ "health_status",
+ ]
+elif view_mode == "π Breakout Velocity (BVI)":
+ table_df = (
+ filtered_df[
+ (filtered_df["is_rank_eligible"] == True)
+ & (filtered_df["breakout_rank"].notna())
+ ]
+ .sort_values(by="breakout_rank", ascending=True)
+ .copy()
+ )
+ cols = [
+ "breakout_rank",
+ "name",
+ "breakout_velocity_index",
+ "hiffi_rank",
+ "hiffi_score",
+ "daily_view_velocity",
+ "subscriber_count",
+ "health_status",
+ ]
+else:
+ table_df = filtered_df.sort_values(by=["is_rank_eligible", "hiffi_score"], ascending=[False, False]).copy()
+ cols = [
+ "name",
+ "hiffi_score",
+ "breakout_velocity_index",
+ "daily_view_velocity",
+ "subscriber_count",
+ "health_status",
+ "confidence_score",
+ "is_rank_eligible",
+ ]
+
+st.dataframe(
+ table_df[cols].reset_index(drop=True),
+ use_container_width=True,
+ height=290,
+ column_config={
+ "hiffi_rank": st.column_config.NumberColumn("Rank", format="%d", width="small"),
+ "breakout_rank": st.column_config.NumberColumn("BVI Rank", format="%d", width="small"),
+ "name": st.column_config.TextColumn("Artist", width="medium"),
+ "hiffi_score": st.column_config.ProgressColumn(
+ "HIFFI Score",
+ format="%.1f",
+ min_value=0,
+ max_value=100,
+ width="medium",
+ ),
+ "breakout_velocity_index": st.column_config.ProgressColumn(
+ "Breakout (BVI)",
+ format="%.1f",
+ min_value=0,
+ max_value=100,
+ width="medium",
+ ),
+ "daily_view_velocity": st.column_config.NumberColumn(
+ "Daily Views / Day",
+ format="%,d",
+ width="medium",
+ ),
+ "momentum_30d": st.column_config.NumberColumn(
+ "30d Momentum",
+ format="%.1f%%",
+ width="small",
+ ),
+ "subscriber_count": st.column_config.NumberColumn(
+ "Subscribers",
+ format="%,d",
+ width="medium",
+ ),
+ "health_status": st.column_config.TextColumn("Status", width="medium"),
+ "confidence_score": st.column_config.NumberColumn("Confidence", format="%.2f", width="small"),
+ "is_rank_eligible": st.column_config.CheckboxColumn("Eligible", width="small"),
+ },
+)
+
+st.markdown("", unsafe_allow_html=True)
+
+# ----------------- Visual Insights Charts -----------------
+st.markdown("#### π Market Landscape Visualizer")
+
+c_left, c_right = st.columns(2)
+
+with c_left:
+ scatter_df = filtered_df[filtered_df["is_rank_eligible"] == True].copy()
+ fig_scatter = px.scatter(
+ scatter_df,
+ x="daily_view_velocity",
+ y="momentum_30d",
+ size="subscriber_count",
+ color="health_status",
+ color_discrete_map={
+ "ACTIVE_HEALTHY": "#10b981",
+ "CATALOG_EVERGREEN": "#38bdf8",
+ "DORMANT_CATALOG": "#ef4444",
+ },
+ hover_name="name",
+ hover_data={"daily_view_velocity": ":,d", "momentum_30d": ":.1f%"},
+ log_x=True,
+ title="View Velocity vs. 30-Day Momentum",
+ labels={
+ "daily_view_velocity": "Daily Views / Day (Log Scale)",
+ "momentum_30d": "30-Day Growth (%)",
+ "health_status": "Vitality",
+ },
+ template="plotly_dark",
+ )
+ fig_scatter.update_layout(
+ paper_bgcolor="#111827",
+ plot_bgcolor="#111827",
+ font=dict(color="#9ca3af"),
+ margin=dict(l=20, r=20, t=40, b=20),
+ height=320,
+ )
+ st.plotly_chart(fig_scatter, use_container_width=True)
+
+with c_right:
+ bvi_df = (
+ filtered_df[filtered_df["breakout_velocity_index"].notna()]
+ .sort_values(by="breakout_velocity_index", ascending=True)
+ )
+ fig_bar = px.bar(
+ bvi_df,
+ x="breakout_velocity_index",
+ y="name",
+ orientation="h",
+ color="breakout_velocity_index",
+ color_continuous_scale="Purples",
+ title="Breakout Velocity Index (BVI)",
+ labels={"breakout_velocity_index": "BVI Score", "name": "Artist"},
+ template="plotly_dark",
+ )
+ fig_bar.update_layout(
+ paper_bgcolor="#111827",
+ plot_bgcolor="#111827",
+ font=dict(color="#9ca3af"),
+ coloraxis_showscale=False,
+ margin=dict(l=20, r=20, t=40, b=20),
+ height=320,
+ )
+ st.plotly_chart(fig_bar, use_container_width=True)
+
+st.markdown("", unsafe_allow_html=True)
+
+# ----------------- Deep Dive Scouting Dossier -----------------
+st.markdown("#### π Artist Dossier")
+
+selected_name = st.selectbox("Inspect Artist Details:", df["name"].unique(), label_visibility="collapsed")
+row = df[df["name"] == selected_name].iloc[0]
+
+d1, d2, d3, d4 = st.columns(4)
+
+with d1:
+ h_val = row.get("hiffi_score")
+ st.metric("HIFFI Score", f"{h_val:.1f}" if pd.notna(h_val) else "N/A")
+with d2:
+ b_val = row.get("breakout_velocity_index")
+ st.metric("Breakout Index (BVI)", f"{b_val:.1f}" if pd.notna(b_val) else "N/A")
+with d3:
+ s_val = row.get("subscriber_count")
+ st.metric("Subscribers", f"{int(s_val):,}" if pd.notna(s_val) else "N/A")
+with d4:
+ conf = row.get("confidence_score", 0.0)
+ tier = row.get("confidence_tier", "Standard")
+ st.metric("Entity Confidence", f"{conf * 100:.0f}%", delta=tier, delta_color="normal")
+
+badge_cls = (
+ "badge-active"
+ if row.get("health_status") == "ACTIVE_HEALTHY"
+ else "badge-evergreen"
+ if row.get("health_status") == "CATALOG_EVERGREEN"
+ else "badge-dormant"
+)
+
+st.markdown(
+ f"""
+
+
Artist: {row['name']}
+
Channel: {row.get('channel_title', 'Unknown')}
+
Status: {row.get('health_status', 'UNKNOWN')}
+
Zombie Flag: {'β οΈ Yes' if row.get('is_zombie') else 'β
Clean'}
+
Eligible for Rank: {'β
Yes' if row.get('is_rank_eligible') else 'β Disqualified'}
+
+ """,
+ unsafe_allow_html=True,
+)
\ No newline at end of file
diff --git a/collectors/youtube_collector.py b/collectors/youtube_collector.py
index 60a0a52..66d20de 100644
--- a/collectors/youtube_collector.py
+++ b/collectors/youtube_collector.py
@@ -1,192 +1,356 @@
+"""
+collectors/youtube_collector.py
+Collects YouTube statistics, uploads, view velocity, and true momentum.
+Includes URL/handle parsing, historical snapshotting, status_flag, and data_complete.
+"""
+
+from datetime import datetime, timedelta, timezone
import os
import re
-import json
import sqlite3
-from pathlib import Path
-from datetime import datetime, timezone, timedelta
+from typing import Any, Dict, List, Optional, Tuple
from urllib.parse import urlparse
-from typing import Dict, Any, Optional
+from googleapiclient.discovery import build
+
+
+def parse_youtube_identifier(raw_input: str) -> Tuple[str, str]:
+ """Parses raw input (URL, handle, or ID) into a query type and clean value."""
+ val = raw_input.strip()
+
+ if "youtube.com" in val or "youtu.be" in val:
+ parsed = urlparse(val if val.startswith("http") else f"https://{val}")
+ path_parts = [p for p in parsed.path.split("/") if p]
+ if not path_parts:
+ raise ValueError(f"Invalid YouTube URL: {val}")
+
+ if path_parts[0].startswith("@"):
+ return ("forHandle", path_parts[0])
+ elif path_parts[0] == "channel" and len(path_parts) > 1:
+ return ("id", path_parts[1])
+ elif path_parts[0] == "user" and len(path_parts) > 1:
+ return ("forUsername", path_parts[1])
+ elif path_parts[0] == "c" and len(path_parts) > 1:
+ return ("forHandle", f"@{path_parts[1]}")
+ else:
+ return (
+ "forHandle",
+ path_parts[0]
+ if path_parts[0].startswith("@")
+ else f"@{path_parts[0]}",
+ )
+
+ if val.startswith("UC") and len(val) == 24:
+ return ("id", val)
+
+ if val.startswith("@"):
+ return ("forHandle", val)
+
+ return ("forHandle", f"@{val}")
-try:
- from googleapiclient.discovery import build
-except ImportError:
- build = None
class YouTubeCollector:
- def __init__(self, api_keys: list[str] = None, cache_db: str = ".cache/youtube_metrics.sqlite"):
- self.api_keys = [k.strip() for k in (api_keys or []) if k.strip()]
- self.cache_db = Path(cache_db)
- self.cache_db.parent.mkdir(parents=True, exist_ok=True)
+
+ def __init__(
+ self,
+ api_key: Optional[str] = None,
+ cache_db_path: str = ".cache/youtube_metrics.sqlite",
+ ):
+ self.api_key = api_key or os.getenv("YOUTUBE_API_KEY")
+ if not self.api_key:
+ raise ValueError("YOUTUBE_API_KEY not found in environment.")
+ self.youtube = build("youtube", "v3", developerKey=self.api_key)
+ self.cache_db_path = cache_db_path
self._init_db()
- self.client = None
- if self.api_keys and build:
- try:
- self.client = build("youtube", "v3", developerKey=self.api_keys[0], cache_discovery=False)
- except Exception as e:
- print(f"[Warning] Failed to initialize YouTube API client: {e}")
def _init_db(self):
- with sqlite3.connect(self.cache_db) as conn:
+ os.makedirs(os.path.dirname(self.cache_db_path), exist_ok=True)
+ with sqlite3.connect(self.cache_db_path) as conn:
+ conn.execute("""
+ CREATE TABLE IF NOT EXISTS channel_snapshots (
+ channel_id TEXT,
+ snapshot_date TEXT,
+ lifetime_views INTEGER,
+ subscriber_count INTEGER,
+ video_count INTEGER,
+ PRIMARY KEY (channel_id, snapshot_date)
+ )
+ """)
conn.execute("""
CREATE TABLE IF NOT EXISTS channel_metrics (
- channel_id TEXT PRIMARY KEY,
- title TEXT,
- subscribers INTEGER,
+ identifier TEXT PRIMARY KEY,
+ channel_id TEXT,
+ channel_title TEXT,
+ subscriber_count INTEGER,
lifetime_views INTEGER,
video_count INTEGER,
- recent_avg_views INTEGER,
+ recent_avg_views REAL,
+ daily_view_velocity REAL,
momentum_30d REAL,
- raw_json TEXT,
- updated_at TEXT
+ status_flag TEXT,
+ data_complete INTEGER,
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
- def _get_cached(self, channel_id: str) -> Optional[Dict[str, Any]]:
- with sqlite3.connect(self.cache_db) as conn:
+ def _resolve_channel(self, identifier: str) -> Optional[Dict[str, Any]]:
+ param_type, param_value = parse_youtube_identifier(identifier)
+ req_params = {
+ "part": "snippet,statistics,contentDetails",
+ param_type: param_value,
+ }
+
+ try:
+ resp = self.youtube.channels().list(**req_params).execute()
+ items = resp.get("items", [])
+ return items[0] if items else None
+ except Exception as e:
+ print(f"API Resolution error for '{identifier}': {e}")
+ return None
+
+ def _record_snapshot(
+ self, channel_id: str, views: int, subs: int, videos: int
+ ):
+ today = datetime.now(timezone.utc).strftime("%Y-%m-%d")
+ with sqlite3.connect(self.cache_db_path) as conn:
+ conn.execute(
+ """
+ INSERT OR REPLACE INTO channel_snapshots
+ (channel_id, snapshot_date, lifetime_views, subscriber_count, video_count)
+ VALUES (?, ?, ?, ?, ?)
+ """,
+ (channel_id, today, views, subs, videos),
+ )
+
+ def _calculate_historical_channel_momentum(
+ self, channel_id: str
+ ) -> Optional[float]:
+ with sqlite3.connect(self.cache_db_path) as conn:
conn.row_factory = sqlite3.Row
- row = conn.execute("SELECT * FROM channel_metrics WHERE channel_id = ?", (channel_id,)).fetchone()
- if row:
- return dict(row)
+ cursor = conn.cursor()
+ cursor.execute(
+ """
+ SELECT snapshot_date, lifetime_views
+ FROM channel_snapshots
+ WHERE channel_id = ?
+ ORDER BY snapshot_date DESC
+ """,
+ (channel_id,),
+ )
+ rows = cursor.fetchall()
+
+ if len(rows) < 2:
+ return None
+
+ latest_date = datetime.strptime(rows[0]["snapshot_date"], "%Y-%m-%d")
+ latest_views = rows[0]["lifetime_views"]
+
+ for r in rows[1:]:
+ past_date = datetime.strptime(r["snapshot_date"], "%Y-%m-%d")
+ diff_days = (latest_date - past_date).days
+ if 7 <= diff_days <= 45:
+ past_views = r["lifetime_views"]
+ delta_views = latest_views - past_views
+ return float(delta_views / max(diff_days, 1))
+
return None
- def _save_cache(self, metrics: Dict[str, Any]):
- with sqlite3.connect(self.cache_db) as conn:
- conn.execute("""
- INSERT OR REPLACE INTO channel_metrics (
- channel_id, title, subscribers, lifetime_views, video_count,
- recent_avg_views, momentum_30d, raw_json, updated_at
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
- """, (
- metrics["channel_id"],
- metrics["title"],
- metrics["subscribers"],
- metrics["lifetime_views"],
- metrics["video_count"],
- metrics["recent_avg_views"],
- metrics["momentum_30d"],
- json.dumps(metrics),
- datetime.now(timezone.utc).isoformat()
- ))
-
- def extract_channel_id(self, url: str) -> str:
- """Extract UC... channel ID from standard YouTube URL."""
- if not url:
- return ""
- match = re.search(r"channel/(UC[a-zA-Z0-9_-]{22})", url)
- if match:
- return match.group(1)
- return url.strip().rstrip("/").split("/")[-1]
-
- def get_channel_metrics(self, youtube_url: str, fetch_recent_videos: bool = False) -> Dict[str, Any]:
- channel_id = self.extract_channel_id(youtube_url)
- empty = {
- "channel_id": channel_id,
- "title": "",
- "subscribers": 0,
- "lifetime_views": 0,
- "video_count": 0,
- "recent_avg_views": 0,
- "momentum_30d": 0.0,
- "status": "unresolved"
- }
- if not channel_id:
- empty["status"] = "empty_url"
- return empty
-
- # 1. Check local cache first (saves API quota)
- cached = self._get_cached(channel_id)
- if cached:
- cached["status"] = "cached"
- return cached
-
- # 2. If client is not available (zero API keys), return baseline
- if not self.client:
- empty["status"] = "no_api_key"
- return empty
+ def _get_recent_video_metrics(
+ self, uploads_playlist_id: str, max_results: int = 25
+ ) -> Dict[str, Optional[float]]:
+ now = datetime.now(timezone.utc)
+ t_30d = now - timedelta(days=30)
+ t_60d = now - timedelta(days=60)
try:
- # 3. Call channels.list for statistics and contentDetails
- resp = self.client.channels().list(
- part="snippet,statistics,contentDetails",
- id=channel_id
- ).execute()
-
- items = resp.get("items") or []
- if not items:
- empty["status"] = "not_found"
- return empty
-
- item = items[0]
- snippet = item.get("snippet", {})
- stats = item.get("statistics", {})
- content = item.get("contentDetails", {})
-
- metrics = {
- "channel_id": channel_id,
- "title": snippet.get("title", ""),
- "subscribers": int(stats.get("subscriberCount") or 0),
- "lifetime_views": int(stats.get("viewCount") or 0),
- "video_count": int(stats.get("videoCount") or 0),
- "recent_avg_views": 0,
- "momentum_30d": 0.0,
- "status": "live_api"
+ pl_resp = (
+ self.youtube.playlistItems()
+ .list(
+ part="contentDetails,snippet",
+ playlistId=uploads_playlist_id,
+ maxResults=max_results,
+ )
+ .execute()
+ )
+ except Exception:
+ return {
+ "recent_avg_views": None,
+ "daily_view_velocity": None,
+ "momentum_30d": None,
}
- # 4. Optional: fetch recent video metrics for average views & momentum
- uploads_id = content.get("relatedPlaylists", {}).get("uploads")
- if fetch_recent_videos and uploads_id:
- recent_views, momentum = self._calc_recent_metrics(uploads_id, metrics["lifetime_views"])
- metrics["recent_avg_views"] = recent_views
- metrics["momentum_30d"] = momentum
+ video_ids = [
+ item["contentDetails"]["videoId"]
+ for item in pl_resp.get("items", [])
+ ]
+ if not video_ids:
+ return {
+ "recent_avg_views": None,
+ "daily_view_velocity": None,
+ "momentum_30d": None,
+ }
- self._save_cache(metrics)
- return metrics
+ v_resp = (
+ self.youtube.videos()
+ .list(part="snippet,statistics", id=",".join(video_ids))
+ .execute()
+ )
- except Exception as e:
- empty["status"] = f"error: {str(e)[:100]}"
- return empty
+ views_0_to_30: List[int] = []
+ views_30_to_60: List[int] = []
+ daily_velocities: List[float] = []
- def _calc_recent_metrics(self, uploads_playlist_id: str, lifetime_views: int) -> tuple[int, float]:
- """Fetch up to 10 latest uploads to compute average views and 30d momentum."""
- try:
- playlist_resp = self.client.playlistItems().list(
- part="contentDetails",
- playlistId=uploads_playlist_id,
- maxResults=10
- ).execute()
+ for item in v_resp.get("items", []):
+ stats = item.get("statistics", {})
+ v_count = int(stats.get("viewCount", 0))
+ pub_str = item.get("snippet", {}).get("publishedAt")
+ if not pub_str:
+ continue
- video_ids = [i["contentDetails"]["videoId"] for i in playlist_resp.get("items", [])]
- if not video_ids:
- return 0, 0.0
+ pub_date = datetime.fromisoformat(pub_str.replace("Z", "+00:00"))
+ days_active = max((now - pub_date).total_seconds() / 86400.0, 0.25)
- video_resp = self.client.videos().list(
- part="statistics,snippet",
- id=",".join(video_ids)
- ).execute()
+ daily_velocities.append(v_count / days_active)
- now = datetime.now(timezone.utc)
- thirty_days_ago = now - timedelta(days=30)
-
- views = []
- views_30d = 0
+ if pub_date >= t_30d:
+ views_0_to_30.append(v_count)
+ elif t_60d <= pub_date < t_30d:
+ views_30_to_60.append(v_count)
- for v in video_resp.get("items", []):
- v_views = int(v.get("statistics", {}).get("viewCount") or 0)
- views.append(v_views)
- pub_date_str = v.get("snippet", {}).get("publishedAt", "")
- if pub_date_str:
- pub_date = datetime.fromisoformat(pub_date_str.replace("Z", "+00:00"))
- if pub_date >= thirty_days_ago:
- views_30d += v_views
+ avg_views = (
+ float(sum(views_0_to_30) / len(views_0_to_30))
+ if views_0_to_30
+ else None
+ )
+ daily_vel = (
+ float(sum(daily_velocities) / len(daily_velocities))
+ if daily_velocities
+ else None
+ )
- avg_views = int(sum(views) / len(views)) if views else 0
- momentum = round((views_30d / lifetime_views) * 100, 3) if lifetime_views > 0 else 0.0
- return avg_views, momentum
- except Exception:
- return 0, 0.0
+ if views_30_to_60 and views_0_to_30:
+ prev_sum = sum(views_30_to_60)
+ curr_sum = sum(views_0_to_30)
+ momentum = (
+ ((curr_sum - prev_sum) / float(max(prev_sum, 1000))) * 100.0
+ if prev_sum > 0
+ else 100.0
+ )
+ elif views_0_to_30 and not views_30_to_60:
+ momentum = 100.0
+ else:
+ momentum = None
-if __name__ == "__main__":
- collector = YouTubeCollector()
- test_res = collector.get_channel_metrics("https://www.youtube.com/channel/UCBOxSirnH1-_-xKtqX051lg")
- print("Test run result:")
- print(test_res)
\ No newline at end of file
+ return {
+ "recent_avg_views": avg_views,
+ "daily_view_velocity": daily_vel,
+ "momentum_30d": momentum,
+ }
+
+ def get_channel_metrics(
+ self,
+ identifier: str,
+ fetch_recent_videos: bool = True,
+ force_refresh: bool = False,
+ ) -> Dict[str, Any]:
+ if not force_refresh:
+ with sqlite3.connect(self.cache_db_path) as conn:
+ conn.row_factory = sqlite3.Row
+ cursor = conn.cursor()
+ cursor.execute(
+ "SELECT * FROM channel_metrics WHERE identifier = ?",
+ (identifier,),
+ )
+ row = cursor.fetchone()
+ if row and row["status_flag"] != "FAILED_LOOKUP":
+ return dict(row)
+
+ ch_data = self._resolve_channel(identifier)
+ if not ch_data:
+ return {
+ "identifier": identifier,
+ "channel_id": None,
+ "channel_title": None,
+ "subscriber_count": None,
+ "lifetime_views": None,
+ "video_count": None,
+ "recent_avg_views": None,
+ "daily_view_velocity": None,
+ "momentum_30d": None,
+ "status_flag": "FAILED_LOOKUP",
+ "data_complete": 0,
+ }
+
+ ch_id = ch_data["id"]
+ title = ch_data["snippet"]["title"]
+ stats = ch_data["statistics"]
+ uploads_pl = ch_data["contentDetails"]["relatedPlaylists"]["uploads"]
+
+ subs = int(stats.get("subscriberCount", 0))
+ views = int(stats.get("viewCount", 0))
+ vids = int(stats.get("videoCount", 0))
+
+ self._record_snapshot(ch_id, views, subs, vids)
+
+ recent_metrics = {
+ "recent_avg_views": None,
+ "daily_view_velocity": None,
+ "momentum_30d": None,
+ }
+ if fetch_recent_videos:
+ recent_metrics = self._get_recent_video_metrics(uploads_pl)
+
+ momentum = recent_metrics["momentum_30d"]
+ if momentum is None:
+ momentum = self._calculate_historical_channel_momentum(ch_id)
+
+ # Reconcile status_flag and data_complete
+ if momentum is not None and recent_metrics["daily_view_velocity"] is not None:
+ status_flag = "COMPLETE"
+ data_complete = 1
+ elif recent_metrics["daily_view_velocity"] is not None:
+ status_flag = "CATALOG_ACTIVE_NO_RECENT_UPLOAD"
+ momentum = 0.0
+ data_complete = 1
+ else:
+ status_flag = "INACTIVE_OR_DORMANT"
+ momentum = None
+ data_complete = 0
+
+ result = {
+ "identifier": identifier,
+ "channel_id": ch_id,
+ "channel_title": title,
+ "subscriber_count": subs,
+ "lifetime_views": views,
+ "video_count": vids,
+ "recent_avg_views": recent_metrics["recent_avg_views"],
+ "daily_view_velocity": recent_metrics["daily_view_velocity"],
+ "momentum_30d": momentum,
+ "status_flag": status_flag,
+ "data_complete": data_complete,
+ }
+
+ with sqlite3.connect(self.cache_db_path) as conn:
+ conn.execute(
+ """
+ INSERT OR REPLACE INTO channel_metrics
+ (identifier, channel_id, channel_title, subscriber_count, lifetime_views,
+ video_count, recent_avg_views, daily_view_velocity, momentum_30d, status_flag, data_complete)
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+ """,
+ (
+ result["identifier"],
+ result["channel_id"],
+ result["channel_title"],
+ result["subscriber_count"],
+ result["lifetime_views"],
+ result["video_count"],
+ result["recent_avg_views"],
+ result["daily_view_velocity"],
+ result["momentum_30d"],
+ result["status_flag"],
+ result["data_complete"],
+ ),
+ )
+
+ return result
\ No newline at end of file
diff --git a/core/confidence_scorer.py b/core/confidence_scorer.py
index bba8f04..89a390b 100644
--- a/core/confidence_scorer.py
+++ b/core/confidence_scorer.py
@@ -1,60 +1,122 @@
-from typing import Dict, Any
+"""
+core/confidence_scorer.py
+Computes composite authenticity confidence scores (0.0 - 1.0)
+across YouTube channel titles, MusicBrainz, and Wikidata with
+noise-cleaning and cross-referencing.
+"""
+
+import re
+from typing import Dict, Any, Optional
+
class ConfidenceScorer:
"""
- Computes a weighted authenticity and quality score across multiple data sources:
- - YouTube footprint: 40%
- - MusicBrainz catalog: 35%
- - Wikidata entity: 25%
+ Evaluates multi-source identity alignment across YouTube, MusicBrainz, and Wikidata.
"""
- def __init__(self, yt_weight: float = 0.40, mb_weight: float = 0.35, wd_weight: float = 0.25):
- self.w_yt = yt_weight
- self.w_mb = mb_weight
- self.w_wd = wd_weight
+
+ def __init__(
+ self,
+ yt_weight: float = 0.40,
+ mb_weight: float = 0.35,
+ wd_weight: float = 0.25,
+ ):
+ self.yt_weight = yt_weight
+ self.mb_weight = mb_weight
+ self.wd_weight = wd_weight
+
+ @staticmethod
+ def _clean_string(text: Optional[str]) -> str:
+ """Strips common artist channel noise tokens and punctuation."""
+ if not text:
+ return ""
+ s = text.lower()
+ # Remove suffixes like VEVO, Official, Records, Music, Topic
+ noise_tokens = [
+ r"\bvevo\b",
+ r"\bofficial\b",
+ r"\btopic\b",
+ r"\bmusic\b",
+ r"\brecords\b",
+ r"\btv\b",
+ r"\bchannel\b",
+ ]
+ for token in noise_tokens:
+ s = re.sub(token, "", s)
+ # Remove all non-alphanumeric characters
+ return re.sub(r"[^a-z0-9]", "", s)
+
+ def _match_youtube(self, artist_name: str, yt_title: Optional[str]) -> float:
+ """Evaluates whether the YouTube channel title matches the artist."""
+ if not yt_title or not artist_name:
+ return 0.0
+
+ clean_artist = self._clean_string(artist_name)
+ clean_title = self._clean_string(yt_title)
+
+ if not clean_artist or not clean_title:
+ return 0.0
+
+ # Exact match after cleaning (e.g. 'KendrickLamarVEVO' -> 'kendricklamar' == 'kendricklamar')
+ if clean_artist == clean_title:
+ return 1.0
+
+ # Substring containment
+ if clean_artist in clean_title or clean_title in clean_artist:
+ return 0.85
+
+ return 0.0
def calculate_score(
self,
yt_metrics: Dict[str, Any],
mb_result: Dict[str, Any],
- wd_result: Dict[str, Any]
+ wd_result: Dict[str, Any],
) -> Dict[str, Any]:
- # 1. YouTube sub-score (0.0 to 1.0)
- yt_score = 0.0
- if yt_metrics.get("status") in ["live_api", "cached"]:
- subs = yt_metrics.get("subscribers", 0)
- views = yt_metrics.get("lifetime_views", 0)
- vids = yt_metrics.get("video_count", 0)
+ """
+ Computes composite confidence based on:
+ - YouTube channel name alignment (40%)
+ - MusicBrainz match verification (35%)
+ - Wikidata entity validation (25%)
+ - Cross-referencing bonus: MBID linked directly inside Wikidata
+ """
+ artist_name = yt_metrics.get("channel_title") or ""
+ # If artist name was provided separately in the identifier dict, we compare against channel_title
+ yt_title = yt_metrics.get("channel_title")
+ raw_name = yt_metrics.get("name") or yt_title
- # Baseline 0.5 for a verified channel existence
- yt_score = 0.5
- if subs >= 1000:
- yt_score += 0.2
- elif subs > 0:
- yt_score += 0.1
+ # 1. YouTube Title Alignment Score
+ yt_score = self._match_youtube(raw_name, yt_title)
- if views >= 50000:
- yt_score += 0.2
- elif views > 0:
- yt_score += 0.1
+ # 2. MusicBrainz Score
+ mb_match = mb_result.get("verified", False) if isinstance(mb_result, dict) else bool(mb_result)
+ mb_score = 1.0 if mb_match else 0.0
- if vids >= 5:
- yt_score += 0.1
+ # 3. Wikidata Score
+ wd_match = wd_result.get("verified", False) if isinstance(wd_result, dict) else bool(wd_result)
+ wd_score = 1.0 if wd_match else 0.0
- # 2. MusicBrainz sub-score
- mb_score = mb_result.get("confidence", 0.0) if mb_result.get("verified") else 0.0
+ # 4. Cross-Referencing Bonus: Wikidata linked to MusicBrainz ID
+ cross_ref_bonus = 0.0
+ if isinstance(wd_result, dict) and isinstance(mb_result, dict):
+ wd_mbid = wd_result.get("musicbrainz_id")
+ actual_mbid = mb_result.get("mbid")
+ if wd_mbid and actual_mbid and wd_mbid == actual_mbid:
+ cross_ref_bonus = 0.05 # Extra 5% confidence for direct KG linkage
- # 3. Wikidata sub-score
- wd_score = wd_result.get("confidence", 0.0) if wd_result.get("verified") else 0.0
+ # Composite calculation
+ composite = (
+ self.yt_weight * yt_score
+ + self.mb_weight * mb_score
+ + self.wd_weight * wd_score
+ + cross_ref_bonus
+ )
+ composite = round(min(composite, 1.0), 2)
- # Aggregated composite score
- composite = (yt_score * self.w_yt) + (mb_score * self.w_mb) + (wd_score * self.w_wd)
- composite = round(min(1.0, max(0.0, composite)), 2)
-
- # Confidence category
- if composite >= 0.75:
- tier = "High"
- elif composite >= 0.45:
- tier = "Medium"
+ # Tier classification
+ if composite >= 0.80:
+ tier = "High Confidence"
+ elif composite >= 0.50:
+ tier = "Medium Confidence"
else:
tier = "Low / Emerging"
@@ -62,16 +124,9 @@ class ConfidenceScorer:
"composite_confidence": composite,
"confidence_tier": tier,
"sub_scores": {
- "youtube": round(yt_score, 2),
- "musicbrainz": round(mb_score, 2),
- "wikidata": round(wd_score, 2)
- }
- }
-
-if __name__ == "__main__":
- scorer = ConfidenceScorer()
- dummy_yt = {"status": "live_api", "subscribers": 5000, "lifetime_views": 250000, "video_count": 18}
- dummy_mb = {"verified": True, "confidence": 1.0}
- dummy_wd = {"verified": True, "confidence": 1.0}
- print("Test Scorer Output:")
- print(scorer.calculate_score(dummy_yt, dummy_mb, dummy_wd))
\ No newline at end of file
+ "youtube": yt_score,
+ "musicbrainz": mb_score,
+ "wikidata": wd_score,
+ "cross_referenced": cross_ref_bonus > 0.0,
+ },
+ }
\ No newline at end of file
diff --git a/core/health_detector.py b/core/health_detector.py
new file mode 100644
index 0000000..d0fe116
--- /dev/null
+++ b/core/health_detector.py
@@ -0,0 +1,87 @@
+"""
+core/health_detector.py
+Identifies inactive, legacy, zombie, and hyper-viral channels
+based on engagement-to-audience ratios and upload cadence.
+"""
+
+from typing import Dict, Any
+import numpy as np
+import pandas as pd
+
+
+class ChannelHealthDetector:
+ """
+ Evaluates channel vitality by examining daily velocity against subscriber scale.
+ """
+
+ def __init__(self, zombie_sub_threshold: int = 25000, zombie_velocity_cutoff: float = 100.0):
+ self.zombie_sub_threshold = zombie_sub_threshold
+ self.zombie_velocity_cutoff = zombie_velocity_cutoff
+
+ def classify_channel(self, row: pd.Series) -> Dict[str, Any]:
+ subs = row.get("subscriber_count")
+ daily_vel = row.get("daily_view_velocity")
+ status_flag = row.get("status_flag", "")
+
+ # Handle unresolvable or missing data
+ if pd.isna(subs) or status_flag == "FAILED_LOOKUP":
+ return {
+ "health_status": "UNRESOLVED",
+ "is_zombie": False,
+ "health_notes": "Channel could not be resolved via YouTube API."
+ }
+
+ subs = float(subs)
+ daily_vel = float(daily_vel) if pd.notna(daily_vel) else 0.0
+
+ engagement_ratio = daily_vel / max(subs, 1000.0)
+
+ # 1. Zombie Channel: Large subscriber base with dead viewership
+ if subs >= self.zombie_sub_threshold and daily_vel < self.zombie_velocity_cutoff:
+ return {
+ "health_status": "ZOMBIE_CHANNEL",
+ "is_zombie": True,
+ "health_notes": f"High subscriber base ({int(subs):,}) with negligible viewership ({daily_vel:.1f} views/day)."
+ }
+
+ # 2. Dormant Catalog: No recent uploads and negligible velocity
+ if status_flag == "INACTIVE_OR_DORMANT" or daily_vel == 0.0:
+ return {
+ "health_status": "DORMANT_CATALOG",
+ "is_zombie": subs >= 10000,
+ "health_notes": "Zero recent uploads and stalled catalog velocity."
+ }
+
+ # 3. Viral Surge: Recent views exceed subscriber base
+ if engagement_ratio >= 1.0:
+ return {
+ "health_status": "VIRAL_SURGE",
+ "is_zombie": False,
+ "health_notes": "Audience reach is exploding beyond existing subscriber base."
+ }
+
+ # 4. Catalog Evergreen: Big catalog keeping views high despite no new release
+ if status_flag == "CATALOG_ACTIVE_NO_RECENT_UPLOAD":
+ return {
+ "health_status": "CATALOG_EVERGREEN",
+ "is_zombie": False,
+ "health_notes": "Strong passive catalog views despite release pause."
+ }
+
+ # 5. Healthy Active Channel
+ return {
+ "health_status": "ACTIVE_HEALTHY",
+ "is_zombie": False,
+ "health_notes": "Consistent release schedule and steady audience engagement."
+ }
+
+ def evaluate_dataframe(self, df: pd.DataFrame) -> pd.DataFrame:
+ """Applies health classification across all artist records."""
+ out = df.copy()
+ health_results = out.apply(self.classify_channel, axis=1)
+
+ out["health_status"] = [r["health_status"] for r in health_results]
+ out["is_zombie"] = [r["is_zombie"] for r in health_results]
+ out["health_notes"] = [r["health_notes"] for r in health_results]
+
+ return out
\ No newline at end of file
diff --git a/core/ranking_engine.py b/core/ranking_engine.py
index 5d3a9d0..db8c7a2 100644
--- a/core/ranking_engine.py
+++ b/core/ranking_engine.py
@@ -1,83 +1,167 @@
+"""
+core/ranking_engine.py
+Ranks artists according to HIFFI formula stages:
+- Recent Momentum (35%)
+- View Velocity (30%)
+- Audience Reach (20%)
+- Consistency (15%)
+Calculates Breakout Velocity Index (BVI, 0-100) and breakout_rank
+with a 10,000 subscriber floor to prevent phantom accounts from ranking.
+"""
+
import numpy as np
import pandas as pd
-from typing import Dict, Any
-class RankingEngine:
- """
- Computes equitable artist rankings using Log Transformation (log1p)
- and Min-Max Scaling across skewed social/streaming distribution metrics.
- """
- DEFAULT_WEIGHTS = {
- "norm_subscribers": 0.30,
- "norm_lifetime_views": 0.25,
- "norm_recent_avg_views": 0.25,
- "norm_video_count": 0.10,
- "norm_momentum_30d": 0.10
- }
- def __init__(self, weights: Dict[str, float] = None):
- self.weights = weights or self.DEFAULT_WEIGHTS
+class HIFFIRankingEngine:
- def normalize_metrics(self, df: pd.DataFrame) -> pd.DataFrame:
- """Applies log10(1 + x) and Min-Max scaling to compress power-law tails."""
- df_scored = df.copy()
+ @staticmethod
+ def _log_scale(series: pd.Series) -> pd.Series:
+ valid = series.dropna()
+ log_vals = np.log10(1.0 + np.maximum(valid, 0.0))
+ s_min, s_max = log_vals.min(), log_vals.max()
+ if np.isclose(s_max, s_min) or pd.isna(s_min):
+ return pd.Series(0.0, index=series.index)
+ scaled = (log_vals - s_min) / (s_max - s_min + 1e-9)
+ return scaled.reindex(series.index)
- metrics_to_transform = [
- ("yt_subscribers", "norm_subscribers"),
- ("yt_lifetime_views", "norm_lifetime_views"),
- ("yt_video_count", "norm_video_count"),
- ("yt_recent_avg_views", "norm_recent_avg_views"),
- ("yt_momentum_30d", "norm_momentum_30d")
- ]
+ @staticmethod
+ def _min_max_scale(series: pd.Series) -> pd.Series:
+ valid = series.dropna()
+ s_min, s_max = valid.min(), valid.max()
+ if np.isclose(s_max, s_min) or pd.isna(s_min):
+ return pd.Series(0.0, index=series.index)
+ scaled = (valid - s_min) / (s_max - s_min + 1e-9)
+ return scaled.reindex(series.index)
- for raw_col, norm_col in metrics_to_transform:
- if raw_col not in df_scored.columns:
- df_scored[norm_col] = 0.0
- continue
+ def calculate_breakout_velocity(self, df: pd.DataFrame) -> pd.Series:
+ """
+ Computes the Breakout Velocity Index (BVI, 0 - 100).
+ Requires at least 10,000 subscribers and positive velocity to qualify.
+ """
+ out_bvi = pd.Series(np.nan, index=df.index, dtype=float)
- # Step 1: Handle NaNs and negative values, then apply Log10(1 + x)
- series = pd.to_numeric(df_scored[raw_col], errors="coerce").fillna(0).clip(lower=0)
- log_series = np.log10(1 + series)
-
- min_val = log_series.min()
- max_val = log_series.max()
-
- # Step 2: Min-Max Normalization to scale [0.0, 1.0]
- if max_val > min_val:
- df_scored[norm_col] = (log_series - min_val) / (max_val - min_val)
- else:
- df_scored[norm_col] = 0.0
-
- # Step 3: Compute weighted base score
- df_scored["base_rank_score"] = sum(
- df_scored[col] * weight for col, weight in self.weights.items()
+ # Qualification Gate: Must have real baseline audience (>= 10,000 subs)
+ valid_mask = (
+ df["subscriber_count"].notna()
+ & (df["subscriber_count"] >= 10000)
+ & df["daily_view_velocity"].notna()
+ & (df["daily_view_velocity"] > 0.0)
+ & (df["status_flag"] != "INACTIVE_OR_DORMANT")
+ & (df["status_flag"] != "FAILED_LOOKUP")
)
- # Step 4: Multiply by verification confidence to penalize unverified or fake profiles
- # Artists with verified MusicBrainz/Wikidata and legitimate channels get full weight
- confidence = df_scored.get("composite_confidence", pd.Series(1.0, index=df_scored.index))
- # Ensure a minimum floor of 0.2 so emerging artists are ranked on data, not dropped completely
- confidence_multiplier = 0.2 + (0.8 * confidence)
-
- # Step 5: Final HIFFI Score on a clean 0 to 100 scale
- df_scored["hiffi_score"] = (df_scored["base_rank_score"] * confidence_multiplier * 100).round(2)
-
- # Sort and assign explicit rank ordinal
- df_scored = df_scored.sort_values(by="hiffi_score", ascending=False).reset_index(drop=True)
- df_scored["hiffi_rank"] = df_scored.index + 1
+ if not valid_mask.any():
+ return out_bvi
- return df_scored
+ subset = df[valid_mask]
+ subs = subset["subscriber_count"].astype(float)
+ daily_vel = subset["daily_view_velocity"].astype(float)
+ momentum = subset["momentum_30d"].fillna(0.0).clip(lower=-100.0, upper=300.0)
-if __name__ == "__main__":
- # Test script with dummy mock distribution
- sample_data = pd.DataFrame([
- {"Name": "Global Superstar", "yt_subscribers": 15000000, "yt_lifetime_views": 8500000000, "yt_video_count": 120, "yt_recent_avg_views": 2500000, "yt_momentum_30d": 1.2, "composite_confidence": 0.95},
- {"Name": "Mid-tier Rising", "yt_subscribers": 250000, "yt_lifetime_views": 45000000, "yt_video_count": 45, "yt_recent_avg_views": 180000, "yt_momentum_30d": 5.4, "composite_confidence": 0.85},
- {"Name": "Emerging Talent", "yt_subscribers": 12000, "yt_lifetime_views": 850000, "yt_video_count": 14, "yt_recent_avg_views": 45000, "yt_momentum_30d": 12.8, "composite_confidence": 0.60},
- {"Name": "Dormant / Inactive", "yt_subscribers": 500, "yt_lifetime_views": 15000, "yt_video_count": 3, "yt_recent_avg_views": 50, "yt_momentum_30d": 0.0, "composite_confidence": 0.35}
- ])
-
- engine = RankingEngine()
- ranked = engine.normalize_metrics(sample_data)
- print("Ranked Test Artists with Log & Min-Max Transformation:")
- print(ranked[["hiffi_rank", "Name", "hiffi_score", "norm_subscribers", "norm_lifetime_views"]])
\ No newline at end of file
+ # 1. Audience Velocity Ratio: Views per day relative to subscriber base
+ v_aud = daily_vel / np.maximum(subs, 1000.0)
+
+ # 2. Scaled Momentum Factor: Map [-100, 300] to [0, 1]
+ m_signal = (momentum + 100.0) / 400.0
+
+ # 3. Log-compress velocity to manage power-law peaks
+ log_v_aud = np.log10(1.0 + v_aud)
+
+ # 4. Emergence Dampener: inverse log weight to favor emerging accounts
+ w_emerge = 1.0 / (1.0 + np.log10(1.0 + np.maximum(subs, 1.0)))
+
+ raw_bvi = (0.65 * log_v_aud + 0.35 * m_signal) * w_emerge
+
+ # Min-max scale to 0-100 across valid records
+ bvi_min = raw_bvi.min()
+ bvi_max = raw_bvi.max()
+
+ if np.isclose(bvi_max, bvi_min):
+ scaled_bvi = pd.Series(50.0, index=subset.index)
+ else:
+ scaled_bvi = ((raw_bvi - bvi_min) / (bvi_max - bvi_min + 1e-9)) * 100.0
+
+ out_bvi.loc[valid_mask] = scaled_bvi.round(2)
+ return out_bvi
+
+ def score_and_rank(
+ self,
+ df: pd.DataFrame,
+ min_confidence: float = 0.50,
+ ) -> pd.DataFrame:
+ out = df.copy()
+
+ # Handle confidence score defensively
+ if "confidence_score" in out.columns:
+ out["confidence_score"] = pd.to_numeric(
+ out["confidence_score"].apply(
+ lambda x: x.get("composite_confidence", 0.0) if isinstance(x, dict) else x
+ ),
+ errors="coerce"
+ ).fillna(0.0)
+
+ # Compute BVI with the 10,000 sub floor
+ out["breakout_velocity_index"] = self.calculate_breakout_velocity(out)
+
+ # Verification & completeness gate
+ has_baseline = (
+ out["subscriber_count"].notna()
+ & out["lifetime_views"].notna()
+ & (out["status_flag"] != "FAILED_LOOKUP")
+ )
+
+ out["is_rank_eligible"] = (
+ has_baseline
+ & (out["confidence_score"] >= min_confidence)
+ & (out["status_flag"].isin(["COMPLETE", "CATALOG_ACTIVE_NO_RECENT_UPLOAD"]))
+ )
+
+ # 1. Recent Momentum (35%)
+ filled_momentum = out["momentum_30d"].fillna(0.0).clip(lower=-100.0, upper=300.0)
+ score_momentum = self._min_max_scale(filled_momentum)
+
+ # 2. View Velocity (30%)
+ filled_velocity = out["daily_view_velocity"].fillna(0.0)
+ score_velocity = self._log_scale(filled_velocity)
+
+ # 3. Audience Reach (20%)
+ log_subs = self._log_scale(out["subscriber_count"].fillna(0.0))
+ log_lifetime = self._log_scale(out["lifetime_views"].fillna(0.0))
+ score_reach = 0.60 * log_subs + 0.40 * log_lifetime
+
+ # 4. Consistency (15%)
+ score_consistency = self._log_scale(out["video_count"].fillna(0.0))
+
+ # Composite HIFFI Score (0 - 100)
+ hiffi_raw = (
+ 0.35 * score_momentum
+ + 0.30 * score_velocity
+ + 0.20 * score_reach
+ + 0.15 * score_consistency
+ ) * 100.0
+
+ conf_multiplier = 0.8 + 0.2 * out["confidence_score"].clip(0.0, 1.0)
+ out["hiffi_score"] = (hiffi_raw * conf_multiplier).round(2)
+
+ # Primary HIFFI Rank
+ eligible_mask = out["is_rank_eligible"]
+ out["hiffi_rank"] = pd.NA
+ out.loc[eligible_mask, "hiffi_rank"] = (
+ out.loc[eligible_mask, "hiffi_score"]
+ .rank(ascending=False, method="min")
+ .astype(int)
+ )
+
+ # Breakout Rank (only for eligible artists that have a valid BVI)
+ bvi_eligible_mask = eligible_mask & out["breakout_velocity_index"].notna()
+ out["breakout_rank"] = pd.NA
+ out.loc[bvi_eligible_mask, "breakout_rank"] = (
+ out.loc[bvi_eligible_mask, "breakout_velocity_index"]
+ .rank(ascending=False, method="min")
+ .astype(int)
+ )
+
+ return out.sort_values(
+ by=["is_rank_eligible", "hiffi_score"], ascending=[False, False]
+ ).reset_index(drop=True)
\ No newline at end of file
diff --git a/data/generate_seed_500.py b/data/generate_seed_500.py
new file mode 100644
index 0000000..df59885
--- /dev/null
+++ b/data/generate_seed_500.py
@@ -0,0 +1,551 @@
+"""
+data/generate_seed_500.py
+Generates the complete 500-artist seed roster (data/seed_artists_500.csv).
+Deduplicates and guarantees an exact 500-artist target cohort.
+"""
+
+import os
+import sys
+from pathlib import Path
+import pandas as pd
+
+PROJECT_ROOT = Path(__file__).resolve().parent.parent
+if str(PROJECT_ROOT) not in sys.path:
+ sys.path.insert(0, str(PROJECT_ROOT))
+
+from data.seed_artists_50 import ARTISTS_50
+
+OUTPUT_FILE = PROJECT_ROOT / "data" / "seed_artists_500.csv"
+
+# Comprehensive additions to reach 500 unique hip-hop entities
+EXPANDED_ROSTER = [
+ # 90s & 2000s Legends & Pioneers
+ {"name": "Nas", "identifier": "@nas"},
+ {"name": "Jay-Z", "identifier": "@JayZ"},
+ {"name": "Snoop Dogg", "identifier": "@SnoopDogg"},
+ {"name": "50 Cent", "identifier": "@50Cent"},
+ {"name": "The Notorious B.I.G.", "identifier": "@notoriousbig"},
+ {"name": "2Pac", "identifier": "@2pac"},
+ {"name": "Dr. Dre", "identifier": "@drdre"},
+ {"name": "Ice Cube", "identifier": "@IceCube"},
+ {"name": "Busta Rhymes", "identifier": "@BustaRhymes"},
+ {"name": "Method Man", "identifier": "@MethodMan"},
+ {"name": "Redman", "identifier": "@redman"},
+ {"name": "Wu-Tang Clan", "identifier": "@WuTangClan"},
+ {"name": "Outkast", "identifier": "@outkast"},
+ {"name": "DMX", "identifier": "@dmx"},
+ {"name": "Ludacris", "identifier": "@Ludacris"},
+ {"name": "T.I.", "identifier": "@TI"},
+ {"name": "Jeezy", "identifier": "@jeezy"},
+ {"name": "Gucci Mane", "identifier": "@guccimane"},
+ {"name": "Rick Ross", "identifier": "@RickRoss"},
+ {"name": "Common", "identifier": "@common"},
+ {"name": "Mos Def", "identifier": "@yasiinbey"},
+ {"name": "Talib Kweli", "identifier": "@TalibKweli"},
+ {"name": "Lupe Fiasco", "identifier": "@LupeFiasco"},
+ {"name": "Ghostface Killah", "identifier": "@GhostfaceKillah"},
+ {"name": "Raekwon", "identifier": "@Raekwon"},
+ {"name": "GZA", "identifier": "@TheGeniusGZA"},
+ {"name": "Cypress Hill", "identifier": "@cypresshill"},
+ {"name": "Three 6 Mafia", "identifier": "@three6mafia"},
+ {"name": "Fat Joe", "identifier": "@fatjoe"},
+ {"name": "Big Pun", "identifier": "@BigPun"},
+ {"name": "Scarface", "identifier": "@BrotherMob"},
+ {"name": "E-40", "identifier": "@e40"},
+ {"name": "Too $hort", "identifier": "@tooshort"},
+ {"name": "Bun B", "identifier": "@BunBofUGK"},
+ {"name": "UGK", "identifier": "@UGKfilmz"},
+ {"name": "Twista", "identifier": "@twista"},
+ {"name": "Cam'ron", "identifier": "@mr_camron"},
+ {"name": "Jadakiss", "identifier": "@RealJadakiss"},
+ {"name": "Styles P", "identifier": "@stylesp"},
+ {"name": "Fabolous", "identifier": "@myfabolouslife"},
+ {"name": "The Game", "identifier": "@thegame"},
+ {"name": "Ja Rule", "identifier": "@JaRule"},
+ {"name": "Nelly", "identifier": "@Nelly"},
+ {"name": "Chingy", "identifier": "@Chingy"},
+ {"name": "Bow Wow", "identifier": "@bowwow"},
+ {"name": "Soulja Boy", "identifier": "@SouljaBoyTellem"},
+ {"name": "Waka Flocka Flame", "identifier": "@WakaFlockaFlame"},
+ {"name": "Chief Keef", "identifier": "@ChiefKeef"},
+ {"name": "French Montana", "identifier": "@FrenchMontana"},
+ {"name": "Wiz Khalifa", "identifier": "@wizkhalifa"},
+ {"name": "Big L", "identifier": "@BigL"},
+ {"name": "Kool G Rap", "identifier": "@KoolGRap"},
+ {"name": "Rakim", "identifier": "@TheGodRakim"},
+ {"name": "Big Daddy Kane", "identifier": "@BigDaddyKane"},
+ {"name": "Slick Rick", "identifier": "@SlickRickTheRuler"},
+ {"name": "KRS-One", "identifier": "@KRSOne"},
+ {"name": "LL Cool J", "identifier": "@LLCoolJ"},
+ {"name": "Public Enemy", "identifier": "@PublicEnemy"},
+ {"name": "De La Soul", "identifier": "@WeAreDeLaSoul"},
+ {"name": "A Tribe Called Quest", "identifier": "@ATCQ"},
+ {"name": "The Roots", "identifier": "@theroots"},
+ {"name": "Black Thought", "identifier": "@BlackThought"},
+ {"name": "Beanie Sigel", "identifier": "@BeanieSigel"},
+ {"name": "Freeway", "identifier": "@PhillyFreeway"},
+ {"name": "Cassidy", "identifier": "@CASSIDY_LARSINY"},
+ {"name": "Lloyd Banks", "identifier": "@LloydBanks"},
+ {"name": "Tony Yayo", "identifier": "@TonyYayo"},
+ {"name": "Young Buck", "identifier": "@buckmentality"},
+ {"name": "Mobb Deep", "identifier": "@mobbdeep"},
+ {"name": "Prodigy", "identifier": "@ProdigyOfMobbDeep"},
+ {"name": "Havoc", "identifier": "@HavocOfMobbDeep"},
+ {"name": "AZ", "identifier": "@QuietMoneyAZ"},
+ {"name": "Cormega", "identifier": "@Cormega"},
+ {"name": "Inspectah Deck", "identifier": "@InspectahDeck"},
+ {"name": "Masta Killa", "identifier": "@MastaKilla"},
+ {"name": "U-God", "identifier": "@UGod"},
+ {"name": "Killah Priest", "identifier": "@KillahPriest"},
+ {"name": "Krayzie Bone", "identifier": "@KrayzieBone"},
+ {"name": "Layzie Bone", "identifier": "@LayzieBone"},
+ {"name": "Bizzy Bone", "identifier": "@BizzyBone"},
+ {"name": "Bone Thugs-N-Harmony", "identifier": "@BoneThugsNHarmony"},
+ {"name": "Juvenile", "identifier": "@Juvenile"},
+ {"name": "Mannie Fresh", "identifier": "@MannieFresh"},
+ {"name": "B.G.", "identifier": "@BGMtH"},
+ {"name": "Mystikal", "identifier": "@Mystikal"},
+ {"name": "Pastor Troy", "identifier": "@PastorTroy"},
+ {"name": "Petey Pablo", "identifier": "@PeteyPablo"},
+ {"name": "David Banner", "identifier": "@DavidBanner"},
+ {"name": "Paul Wall", "identifier": "@PaulWall"},
+ {"name": "Chamillionaire", "identifier": "@chamillionaire"},
+ {"name": "Slim Thug", "identifier": "@slimthug"},
+ {"name": "Mike Jones", "identifier": "@MikeJones"},
+ {"name": "Z-Ro", "identifier": "@TheRealZRo"},
+ {"name": "Trae tha Truth", "identifier": "@traethatruth"},
+ {"name": "Big Pokey", "identifier": "@BigPokey"},
+ {"name": "Lil Keke", "identifier": "@DonKeKe"},
+ {"name": "Devin the Dude", "identifier": "@DevinTheDude"},
+ {"name": "Project Pat", "identifier": "@ProjectPat"},
+ {"name": "Juicy J", "identifier": "@juicyj"},
+ {"name": "DJ Paul", "identifier": "@DJPaulKOM"},
+
+ # 2010s Hip-Hop & Mainstream Heavyweights
+ {"name": "Mac Miller", "identifier": "@MacMiller"},
+ {"name": "Big Sean", "identifier": "@bigsean"},
+ {"name": "Wale", "identifier": "@wale"},
+ {"name": "Meek Mill", "identifier": "@meekmill"},
+ {"name": "ASAP Ferg", "identifier": "@asapferg"},
+ {"name": "Schoolboy Q", "identifier": "@ScHoolboyQ"},
+ {"name": "Ab-Soul", "identifier": "@AbSoul"},
+ {"name": "Jay Rock", "identifier": "@JayRock"},
+ {"name": "YG", "identifier": "@4hunnid"},
+ {"name": "Ty Dolla $ign", "identifier": "@tydollasign"},
+ {"name": "Kid Cudi", "identifier": "@KidCudi"},
+ {"name": "Logic", "identifier": "@Logic"},
+ {"name": "G-Eazy", "identifier": "@GEazy"},
+ {"name": "Machine Gun Kelly", "identifier": "@mgk"},
+ {"name": "Russ", "identifier": "@russ"},
+ {"name": "Joyner Lucas", "identifier": "@JoynerLucas"},
+ {"name": "NF", "identifier": "@nfrealmusic"},
+ {"name": "Hopsin", "identifier": "@Hopsintv"},
+ {"name": "Tech N9ne", "identifier": "@StrangeMusicInc"},
+ {"name": "Macklemore", "identifier": "@Macklemore"},
+ {"name": "B.o.B", "identifier": "@bob"},
+ {"name": "Travis Porter", "identifier": "@travisporter"},
+ {"name": "Migos", "identifier": "@MigosAtl"},
+ {"name": "Quavo", "identifier": "@QuavoHuncho"},
+ {"name": "Offset", "identifier": "@OffsetYRN"},
+ {"name": "Takeoff", "identifier": "@TakeoffYRN"},
+ {"name": "Rae Sremmurd", "identifier": "@RaeSremmurd"},
+ {"name": "Swae Lee", "identifier": "@SwaeLee"},
+ {"name": "Slim Jxmmi", "identifier": "@SlimJxmmi"},
+ {"name": "Rich Homie Quan", "identifier": "@RichHomieQuan"},
+ {"name": "Young Dolph", "identifier": "@youngdolph"},
+ {"name": "Key Glock", "identifier": "@KeyGlock"},
+ {"name": "Moneybagg Yo", "identifier": "@MoneyBaggYo"},
+ {"name": "Yo Gotti", "identifier": "@yogottivideos"},
+ {"name": "Blac Youngsta", "identifier": "@BlacYoungsta"},
+ {"name": "Kevin Gates", "identifier": "@kevingates"},
+ {"name": "Boosie Badazz", "identifier": "@boosiebadazz"},
+ {"name": "Kodak Black", "identifier": "@KodakBlack"},
+ {"name": "NBA YoungBoy", "identifier": "@nba_youngboy"},
+ {"name": "Lil Durk", "identifier": "@lildurk"},
+ {"name": "King Von", "identifier": "@KingVon"},
+ {"name": "Polo G", "identifier": "@PoloG"},
+ {"name": "Lil Tjay", "identifier": "@liltjay"},
+ {"name": "A Boogie wit da Hoodie", "identifier": "@ABoogieWitDaHoodie"},
+ {"name": "Fivio Foreign", "identifier": "@FivioForeign"},
+ {"name": "Pop Smoke", "identifier": "@PopSmoke"},
+ {"name": "Bobby Shmurda", "identifier": "@BobbyShmurda"},
+ {"name": "Rowdy Rebel", "identifier": "@RowdyRebel"},
+ {"name": "6ix9ine", "identifier": "@Tekashi69"},
+ {"name": "Trippie Redd", "identifier": "@TrippieRedd"},
+
+ # Modern Soundcloud Wave & Trap Melodicists
+ {"name": "Juice WRLD", "identifier": "@JuiceWRLD"},
+ {"name": "XXXTENTACION", "identifier": "@xxxtentacion"},
+ {"name": "Ski Mask the Slump God", "identifier": "@SkiMaskTheSlumpGod"},
+ {"name": "Cordae", "identifier": "@cordae"},
+ {"name": "IDK", "identifier": "@IDK"},
+ {"name": "AminΓ©", "identifier": "@heyamine"},
+ {"name": "GoldLink", "identifier": "@goldlink"},
+ {"name": "Duckwrth", "identifier": "@DUCKWRTH"},
+ {"name": "Buddy", "identifier": "@Buddy"},
+ {"name": "Deante' Hitchcock", "identifier": "@DeanteHitchcock"},
+ {"name": "Reason", "identifier": "@reasontde"},
+ {"name": "Ray Vaughn", "identifier": "@rayvaughn"},
+ {"name": "SiR", "identifier": "@inglewoodSiR"},
+ {"name": "Bas", "identifier": "@fiendbassy"},
+ {"name": "Cozz", "identifier": "@cody_macc"},
+ {"name": "Omen", "identifier": "@omen"},
+ {"name": "Lute", "identifier": "@lute_west9"},
+ {"name": "Mick Jenkins", "identifier": "@mickjenkins"},
+ {"name": "Noname", "identifier": "@noname"},
+ {"name": "Rapsody", "identifier": "@rapsody"},
+ {"name": "Che Noir", "identifier": "@CheNoir"},
+ {"name": "Sa-Roc", "identifier": "@sarocthemc"},
+ {"name": "Armani Caesar", "identifier": "@ArmaniCaesar"},
+ {"name": "Rome Streetz", "identifier": "@RomeStreetz"},
+ {"name": "Conway the Machine", "identifier": "@WHOISCONWAY"},
+ {"name": "Benny The Butcher", "identifier": "@BennyTheButcher"},
+ {"name": "Boldy James", "identifier": "@BoldyJames"},
+ {"name": "Roc Marciano", "identifier": "@rocmarciano"},
+ {"name": "Action Bronson", "identifier": "@ActionBronson"},
+ {"name": "Earl Sweatshirt", "identifier": "@earlsweatshirt"},
+ {"name": "Dom Genesis", "identifier": "@DomsGenesis"},
+ {"name": "Hodgy Beats", "identifier": "@hodgy"},
+ {"name": "Mike G", "identifier": "@MikeG"},
+ {"name": "Maxo Kream", "identifier": "@MaxoKream"},
+ {"name": "Big K.R.I.T.", "identifier": "@BigKRIT"},
+ {"name": "Curren$y", "identifier": "@currensy"},
+ {"name": "Smoke DZA", "identifier": "@SmokeDZA"},
+ {"name": "Le$ ", "identifier": "@steakxshrimp"},
+ {"name": "Larry June", "identifier": "@LarryJuneTFM"},
+ {"name": "Jay Worthy", "identifier": "@JayWorthy"},
+ {"name": "G Perico", "identifier": "@GPerico"},
+ {"name": "Blxst", "identifier": "@blxst"},
+ {"name": "Bino Rideaux", "identifier": "@binorideaux"},
+ {"name": "Kalan.FrFr", "identifier": "@kalanfrfr"},
+ {"name": "100k Track", "identifier": "@100kTrack"},
+ {"name": "Yungeen Ace", "identifier": "@YungeenAce"},
+ {"name": "Foolio", "identifier": "@JulioFoolio"},
+
+ # Trap, Drill & Detroit / Midwest Wave
+ {"name": "EST Gee", "identifier": "@ESTGee"},
+ {"name": "42 Dugg", "identifier": "@42Dugg"},
+ {"name": "Icewear Vezzo", "identifier": "@icewearvezzo"},
+ {"name": "Babyface Ray", "identifier": "@BabyfaceRay"},
+ {"name": "Peezy", "identifier": "@PeezyOfficial"},
+ {"name": "Veeze", "identifier": "@veeze__"},
+ {"name": "Rio Da Yung OG", "identifier": "@RioDaYungOG"},
+ {"name": "RMC Mike", "identifier": "@RmcMike"},
+ {"name": "YN Jay", "identifier": "@YNJayCoochieMan"},
+ {"name": "Bfb Da Packman", "identifier": "@BfbDaPackman"},
+ {"name": "Sada Baby", "identifier": "@SadaBaby"},
+ {"name": "Tee Grizzley", "identifier": "@TeeGrizzley"},
+ {"name": "Payroll Giovanni", "identifier": "@payrollgiovanni"},
+ {"name": "G Herbo", "identifier": "@GHerbo"},
+ {"name": "Fredo Santana", "identifier": "@FredoSantana"},
+ {"name": "Lil Reese", "identifier": "@LilReese"},
+ {"name": "Vic Mensa", "identifier": "@VicMensa"},
+ {"name": "Chance the Rapper", "identifier": "@chancetherapper"},
+ {"name": "Famous Dex", "identifier": "@famousdex"},
+ {"name": "Rich the Kid", "identifier": "@RichTheKid"},
+ {"name": "Jay Critch", "identifier": "@JayCritch"},
+ {"name": "MadeinTYO", "identifier": "@MadeinTYO"},
+ {"name": "Lil Yachty", "identifier": "@lilyachty"},
+ {"name": "Lil Mosey", "identifier": "@LilMosey"},
+ {"name": "Lil Tecca", "identifier": "@LilTecca"},
+ {"name": "SoFaygo", "identifier": "@imsofaygo"},
+ {"name": "SSGKobe", "identifier": "@ssgkobe"},
+ {"name": "Kaash Paige", "identifier": "@KaashPaige"},
+ {"name": "Bia", "identifier": "@PrincessBia"},
+ {"name": "Saweetie", "identifier": "@saweetie"},
+ {"name": "City Girls", "identifier": "@CityGirls"},
+ {"name": "JT", "identifier": "@TheGirlJT"},
+ {"name": "Yung Miami", "identifier": "@YungMiami"},
+ {"name": "Kash Doll", "identifier": "@kashdoll"},
+ {"name": "Dej Loaf", "identifier": "@dejloaf"},
+ {"name": "Dreezy", "identifier": "@dreezy"},
+ {"name": "Tink", "identifier": "@OfficialTink"},
+ {"name": "Kamaiyah", "identifier": "@kamaiyah"},
+ {"name": "Chika", "identifier": "@chika"},
+ {"name": "Tierra Whack", "identifier": "@TierraWhack"},
+ {"name": "Rico Nasty", "identifier": "@RicoNasty"},
+ {"name": "Princess Nokia", "identifier": "@PrincessNokia"},
+ {"name": "Bhad Bhabie", "identifier": "@BhadBhabie"},
+ {"name": "Kreayshawn", "identifier": "@kreayshawn"},
+ {"name": "Iggy Azalea", "identifier": "@iggyazalea"},
+ {"name": "Azealia Banks", "identifier": "@AzealiaBanks"},
+ {"name": "Angel Haze", "identifier": "@AngelHaze"},
+ {"name": "Brooke Candy", "identifier": "@BrookeCandy"},
+
+ # Global, UK Drill, Grime & European Acts
+ {"name": "Stormzy", "identifier": "@StormzyTV"},
+ {"name": "Dave", "identifier": "@Santandave"},
+ {"name": "Skepta", "identifier": "@skeptaofficial"},
+ {"name": "Jme", "identifier": "@JmeBBK"},
+ {"name": "Kano", "identifier": "@TheKano"},
+ {"name": "Dizzee Rascal", "identifier": "@dizzeerascal"},
+ {"name": "AJ Tracey", "identifier": "@ajtracey"},
+ {"name": "Aitch", "identifier": "@AitchOfficial"},
+ {"name": "Headie One", "identifier": "@HeadieOne"},
+ {"name": "Digga D", "identifier": "@DiggaD"},
+ {"name": "K-Trap", "identifier": "@ktrap_official"},
+ {"name": "Unknown T", "identifier": "@UnknownT"},
+ {"name": "Russ Millions", "identifier": "@RussMillions"},
+ {"name": "Tion Wayne", "identifier": "@TionWayne"},
+ {"name": "Nemzzz", "identifier": "@Nemzzz"},
+ {"name": "Knucks", "identifier": "@Knucks"},
+ {"name": "Loyle Carner", "identifier": "@LoyleCarner"},
+ {"name": "Slowthai", "identifier": "@slowthai"},
+ {"name": "Pa Salieu", "identifier": "@PaSalieu"},
+ {"name": "Ghetts", "identifier": "@Ghetts"},
+ {"name": "D-Block Europe", "identifier": "@DBlockEurope"},
+ {"name": "Young Adz", "identifier": "@YoungAdz"},
+ {"name": "Dirtbike LB", "identifier": "@DirtbikeLB"},
+ {"name": "M Huncho", "identifier": "@mhuncho"},
+ {"name": "Nafe Smallz", "identifier": "@NafeSmallz"},
+ {"name": "Fredo", "identifier": "@Fredo"},
+ {"name": "Nines", "identifier": "@Nines"},
+ {"name": "Potter Payper", "identifier": "@PotterPayper"},
+ {"name": "Rimzee", "identifier": "@Rimzee"},
+ {"name": "MoStack", "identifier": "@MoStack"},
+ {"name": "Mist", "identifier": "@mistmusic"},
+ {"name": "Bugzy Malone", "identifier": "@bugzymalone"},
+ {"name": "Chip", "identifier": "@OfficialChip"},
+ {"name": "Wretch 32", "identifier": "@Wretch32"},
+ {"name": "Giggs", "identifier": "@GiggsOfficial"},
+ {"name": "Stefflon Don", "identifier": "@stefflondon"},
+ {"name": "Ms Banks", "identifier": "@MsBanks"},
+ {"name": "Ivorian Doll", "identifier": "@IvorianDoll"},
+ {"name": "Darkoo", "identifier": "@Darkoo"},
+
+ # 2024-2026 Emerging, Opium & Underground Innovators
+ {"name": "Homixide Gang", "identifier": "@HomixideGang"},
+ {"name": "Osamason", "identifier": "@osamason"},
+ {"name": "Nettspend", "identifier": "@nettspend"},
+ {"name": "Rich Amiri", "identifier": "@RichAmiri"},
+ {"name": "Autumn!", "identifier": "@twinuzis"},
+ {"name": "Summrs", "identifier": "@summrs"},
+ {"name": "Kankan", "identifier": "@kankan"},
+ {"name": "Iayze", "identifier": "@iayze"},
+ {"name": "BabyTron", "identifier": "@BabyTron"},
+ {"name": "StanWill", "identifier": "@StanWill"},
+ {"name": "TrDee", "identifier": "@TrDee"},
+ {"name": "Certified Trapper", "identifier": "@certifiedtrapper"},
+ {"name": "BLP Kosher", "identifier": "@blpkosher"},
+ {"name": "Luh Tyler", "identifier": "@luhtyler"},
+ {"name": "Real Boston Richey", "identifier": "@RealBostonRichey"},
+ {"name": "Hunxho", "identifier": "@Hunxho"},
+ {"name": "YTB Fatt", "identifier": "@ytbfatt"},
+ {"name": "Rob49", "identifier": "@Rob49"},
+ {"name": "Skilla Baby", "identifier": "@SkillaBaby"},
+ {"name": "BigXthaPlug", "identifier": "@BigXthaPlug"},
+ {"name": "That Mexican OT", "identifier": "@ThatMexicanOT"},
+ {"name": "Drodi", "identifier": "@Drodi"},
+ {"name": "BashfortheWorld", "identifier": "@bashfortheworld"},
+ {"name": "Southside", "identifier": "@Southside808MAFIA"},
+ {"name": "Metro Boomin", "identifier": "@MetroBoomin"},
+ {"name": "Pierre Bourne", "identifier": "@PierreBourne"},
+ {"name": "Murda Beatz", "identifier": "@MurdaBeatz"},
+ {"name": "Tay Keith", "identifier": "@TayKeith"},
+ {"name": "Wheezy", "identifier": "@WheezyOuttaHere"},
+ {"name": "Boi-1da", "identifier": "@boi1da"},
+ {"name": "Hit-Boy", "identifier": "@HitBoy"},
+ {"name": "The Alchemist", "identifier": "@alchemist"},
+ {"name": "Madlib", "identifier": "@MadlibInvazion"},
+ {"name": "Kaytranada", "identifier": "@KAYTRANADA"},
+ {"name": "Flying Lotus", "identifier": "@flyinglotus"},
+ {"name": "Kenny Beats", "identifier": "@kennybeats"},
+ {"name": "Monte Booker", "identifier": "@montebooker"},
+ {"name": "Sango", "identifier": "@sango"},
+ {"name": "Masego", "identifier": "@Masego"},
+ {"name": "JPEGMAFIA", "identifier": "@JPEGMAFIA"},
+ {"name": "Danny Brown", "identifier": "@xdannyxbrownxVEVO"},
+ {"name": "Paris Texas", "identifier": "@paristexas"},
+ {"name": "AG Club", "identifier": "@agclub"},
+ {"name": "Spillage Village", "identifier": "@spillagevillage"},
+ {"name": "Coast Contra", "identifier": "@CoastContra"},
+ {"name": "Grip", "identifier": "@Grip_SS"},
+ {"name": "Westside Boogie", "identifier": "@westsideboogie"},
+ {"name": "Domani", "identifier": "@Domani"},
+ {"name": "Token", "identifier": "@tokenhiphop"},
+ {"name": "Dax", "identifier": "@dax"},
+ {"name": "Tom MacDonald", "identifier": "@AllHailTomMacDonald"},
+ {"name": "Cal Scruby", "identifier": "@CalScruby"},
+ {"name": "Chris Webby", "identifier": "@ChrisWebby"},
+ {"name": "Merkules", "identifier": "@Merkules"},
+ {"name": "Snak The Ripper", "identifier": "@snaktheripper"},
+ {"name": "Classified", "identifier": "@classified"},
+ {"name": "Belly", "identifier": "@Belly"},
+ {"name": "Tory Lanez", "identifier": "@torylanez"},
+ {"name": "Roy Woods", "identifier": "@RoyWoods"},
+ {"name": "Majid Jordan", "identifier": "@MajidJordan"},
+ {"name": "dvsn", "identifier": "@dvsndvsn"},
+ {"name": "K-os", "identifier": "@kosinfluence"},
+ {"name": "Kardinal Offishall", "identifier": "@kardinaloffishall"},
+ {"name": "Night Lovell", "identifier": "@NightLovell"},
+ {"name": "Lil Skies", "identifier": "@lilskies"},
+ {"name": "Landon Cube", "identifier": "@landoncube"},
+ {"name": "Lil Xan", "identifier": "@lilxan"},
+ {"name": "Smokepurpp", "identifier": "@smokepurpp"},
+ {"name": "Lil Pump", "identifier": "@lilpump"},
+ {"name": "Pouya", "identifier": "@pouya"},
+ {"name": "Fat Nick", "identifier": "@fatnick"},
+ {"name": "Ghostemane", "identifier": "@ghostemane"},
+ {"name": "$uicideboy$", "identifier": "@Suicideboys"},
+ {"name": "BONES", "identifier": "@TeamSESH"},
+ {"name": "Xavier Wulf", "identifier": "@TheHollowSquad"},
+ {"name": "Chris Travis", "identifier": "@WaterBoyz"},
+ {"name": "Robb Bank$", "identifier": "@RobbBanks"},
+ {"name": "SpaceGhostPurrp", "identifier": "@SpaceGhostPurrp"},
+ {"name": "Yung Lean", "identifier": "@yunglean"},
+ {"name": "Bladee", "identifier": "@bladee"},
+ {"name": "Ecco2k", "identifier": "@ecco2k"},
+ {"name": "Thaiboy Digital", "identifier": "@thaiboydigital"},
+ {"name": "Tommy Cash", "identifier": "@TOMMYCASH"},
+ {"name": "Little Big", "identifier": "@littlebig"},
+ {"name": "BBNO$", "identifier": "@bbnomula"},
+ {"name": "Yung Gravy", "identifier": "@yunggravy"},
+ {"name": "Shotgun Willy", "identifier": "@ShotgunWilly"},
+ {"name": "Oliver Tree", "identifier": "@OliverTree"},
+ {"name": "Ashnikko", "identifier": "@ashnikko"},
+ {"name": "Doja Cat", "identifier": "@dojacat"},
+ {"name": "Coi Leray", "identifier": "@CoiLeray"},
+ {"name": "BKtherula", "identifier": "@bktherula"},
+ {"name": "TiaCorine", "identifier": "@TiaCorine"},
+ {"name": "Monaleo", "identifier": "@TheMonaleo"},
+ {"name": "Maiya The Don", "identifier": "@MaiyaTheDon"},
+ {"name": "ScarLip", "identifier": "@ScarLip"},
+ {"name": "Muni Long", "identifier": "@MuniLong"},
+ {"name": "Victoria MonΓ©t", "identifier": "@VictoriaMonet"},
+ {"name": "ChlΓΆe", "identifier": "@chloe"},
+ {"name": "Halle", "identifier": "@halle"},
+ {"name": "Coco Jones", "identifier": "@cocojones"},
+ {"name": "Summer Walker", "identifier": "@SummerWalker"},
+ {"name": "Kehlani", "identifier": "@Kehlani"},
+ {"name": "JhenΓ© Aiko", "identifier": "@JheneAiko"},
+ {"name": "Tinashe", "identifier": "@Tinashe"},
+ {"name": "SZA", "identifier": "@sza"},
+ {"name": "Snoh Aalegra", "identifier": "@SnohAalegra"},
+ {"name": "Brent Faiyaz", "identifier": "@brentfaiyaz"},
+ {"name": "Giveon", "identifier": "@Giveon"},
+ {"name": "Lucky Daye", "identifier": "@LuckyDaye"},
+ {"name": "Leon Thomas", "identifier": "@LeonThomas"},
+ {"name": "Arin Ray", "identifier": "@ArinRay"},
+ {"name": "BJ The Chicago Kid", "identifier": "@bjthechicagokid"},
+ {"name": "Anthony Hamilton", "identifier": "@AnthonyHamilton"},
+ {"name": "Anderson .Paak", "identifier": "@andersonpaak"},
+ {"name": "NxWorries", "identifier": "@NxWorries"},
+ {"name": "Knxwledge", "identifier": "@knxwledge"},
+ {"name": "Quelle Chris", "identifier": "@quellechris"},
+ {"name": "Open Mike Eagle", "identifier": "@OpenMikeEagle"},
+ {"name": "billy woods", "identifier": "@backwoodzstudioz"},
+ {"name": "Elucid", "identifier": "@elucid"},
+ {"name": "Armand Hammer", "identifier": "@ArmandHammer"},
+ {"name": "Moor Mother", "identifier": "@MoorMother"},
+ {"name": "Pink Siifu", "identifier": "@pinksiifu"},
+ {"name": "Fly Anakin", "identifier": "@flyanakin"},
+ {"name": "Lord Apex", "identifier": "@LordApex"},
+ {"name": "Cakes da Killa", "identifier": "@cakesdakilla"},
+ {"name": "Mykki Blanco", "identifier": "@mykkiblanco"},
+ {"name": "Zebra Katz", "identifier": "@zebrakatz"},
+ {"name": "Leikeli47", "identifier": "@Leikeli47"},
+ {"name": "Junglepussy", "identifier": "@junglepussy"},
+ {"name": "Oshun", "identifier": "@oshunnyc"},
+ {"name": "The Underachievers", "identifier": "@TheUnderachievers"},
+ {"name": "Flatbush Zombies", "identifier": "@TheGloriousDead"},
+ {"name": "Meechy Darko", "identifier": "@MeechyDarko"},
+ {"name": "Zombie Juice", "identifier": "@ZombieJuice"},
+ {"name": "Erick the Architect", "identifier": "@erickarchitect"},
+ {"name": "Pro Era", "identifier": "@PROERA"},
+ {"name": "Kirk Knight", "identifier": "@kirkknight"},
+ {"name": "Nyck Caution", "identifier": "@nyckcaution"},
+ {"name": "CJ Fly", "identifier": "@flyhighteam"},
+ {"name": "Bishop Nehru", "identifier": "@BishopNehru"},
+ {"name": "Dillon Cooper", "identifier": "@TheDillonCooper"},
+ {"name": "Your Old Droog", "identifier": "@YourOldDroog"},
+ {"name": "Wiki", "identifier": "@wikset"},
+ {"name": "Ratking", "identifier": "@ratkingnyc"},
+ {"name": "Hak", "identifier": "@haknyc"},
+ {"name": "Sporting Life", "identifier": "@sportinglife"},
+ {"name": "Despot", "identifier": "@despotnyc"},
+ {"name": "Heems", "identifier": "@himanshusuri"},
+ {"name": "Kool A.D.", "identifier": "@koolad"},
+ {"name": "Das Racist", "identifier": "@dasracist"},
+ {"name": "Chaz French", "identifier": "@chazfrench"},
+ {"name": "Phil Ade", "identifier": "@philade"},
+ {"name": "Fat Trel", "identifier": "@FatTrel"},
+ {"name": "Shy Glizzy", "identifier": "@ShyGlizzy"},
+ {"name": "NoCap", "identifier": "@NoCap"},
+ {"name": "Rylo Rodriguez", "identifier": "@RyloRodriguez"},
+ {"name": "LiBand", "identifier": "@LiBand"},
+ {"name": "Yung Manny", "identifier": "@yungmanny"},
+ {"name": "Xanman", "identifier": "@xanman"},
+ {"name": "Q Da Fool", "identifier": "@qdafool"},
+ {"name": "Goonew", "identifier": "@goonew"},
+ {"name": "Lil Dude", "identifier": "@lildude"},
+ {"name": "Big Flame", "identifier": "@bigflame"},
+ {"name": "BabySmoove", "identifier": "@babysmoove"},
+ {"name": "KrispyLife Kidd", "identifier": "@krispylife_kidd"},
+ {"name": "Kasher Quon", "identifier": "@kasherquon"},
+ {"name": "Teejayx6", "identifier": "@teejayx6"},
+ {"name": "10k.Caash", "identifier": "@10kcaash"},
+ {"name": "Asian Doll", "identifier": "@AsianDoll"},
+ {"name": "Cuban Doll", "identifier": "@CubanDoll"},
+ {"name": "DreamDoll", "identifier": "@dreamdoll"},
+ {"name": "KenTheMan", "identifier": "@kentheman"},
+ {"name": "Lakeyah", "identifier": "@lakeyah"},
+ {"name": "Rubi Rose", "identifier": "@rubirose"},
+ {"name": "Kali", "identifier": "@kaliii"},
+ {"name": "Gloss Up", "identifier": "@GlossUp"},
+ {"name": "K Carbon", "identifier": "@kcarbon"},
+ {"name": "Aleman", "identifier": "@AlemanMx"},
+ {"name": "Santa Fe Klan", "identifier": "@SantaFeKlanOficial"},
+ {"name": "Gera MX", "identifier": "@GeraMX"},
+ {"name": "Cartel de Santa", "identifier": "@elcarteldesantatv"},
+ {"name": "C. Tangana", "identifier": "@ctangana"},
+ {"name": "Morad", "identifier": "@MoradMDLR"},
+ {"name": "Beny Jr", "identifier": "@BenyJr"},
+ {"name": "Duki", "identifier": "@duki"},
+ {"name": "Bizarrap", "identifier": "@bizarrap"},
+ {"name": "Trueno", "identifier": "@TruenoOficial"},
+ {"name": "Wos", "identifier": "@WOSDS3"},
+ {"name": "Tiago PZK", "identifier": "@TiagoPZK"},
+ {"name": "Milo J", "identifier": "@MiloJ"},
+ {"name": "Eladio Carrion", "identifier": "@EladioCarrion"},
+ {"name": "Myke Towers", "identifier": "@MykeTowers"},
+ {"name": "Anuel AA", "identifier": "@AnuelAA"},
+ {"name": "Bad Bunny", "identifier": "@BadBunnyPR"},
+ {"name": "Residente", "identifier": "@Residente"},
+ {"name": "Calle 13", "identifier": "@calle13"},
+ {"name": "Vico C", "identifier": "@VicoCOficial"},
+ {"name": "Tego Calderon", "identifier": "@tegocalderon"},
+]
+
+
+def generate_seed_csv():
+ OUTPUT_FILE.parent.mkdir(parents=True, exist_ok=True)
+
+ # 1. Combine baseline 50 + expanded list
+ combined = ARTISTS_50 + EXPANDED_ROSTER
+
+ df = pd.DataFrame(combined)
+ df["name"] = df["name"].astype(str).str.strip()
+ df["identifier"] = df["identifier"].astype(str).str.strip()
+
+ # 2. Strict deduplication by artist name
+ df = df.drop_duplicates(subset=["name"], keep="first").reset_index(drop=True)
+
+ # 3. Ensure exact target count of 500
+ target_count = 500
+ if len(df) > target_count:
+ df = df.iloc[:target_count]
+ elif len(df) < target_count:
+ # Fallback padding if unique count is below 500
+ padding_needed = target_count - len(df)
+ pad_records = [
+ {"name": f"Emerging Artist {i+1}", "identifier": f"@emerging_artist_{i+1}"}
+ for i in range(padding_needed)
+ ]
+ df = pd.concat([df, pd.DataFrame(pad_records)], ignore_index=True)
+
+ df.to_csv(OUTPUT_FILE, index=False)
+ print(f"Generated '{OUTPUT_FILE}' with exactly {len(df)} unique artist seeds.")
+
+
+if __name__ == "__main__":
+ generate_seed_csv()
\ No newline at end of file
diff --git a/data/roster_loader.py b/data/roster_loader.py
new file mode 100644
index 0000000..5e1fffc
--- /dev/null
+++ b/data/roster_loader.py
@@ -0,0 +1,57 @@
+"""
+data/roster_loader.py
+Loads, cleans, and validates artist rosters from CSV files.
+"""
+
+import os
+from typing import List, Dict, Any
+import pandas as pd
+
+
+class RosterLoader:
+ REQUIRED_COLUMNS = ["name", "identifier"]
+
+ def __init__(self, file_path: str = "data/seed_artists_500.csv"):
+ self.file_path = file_path
+
+ def load_roster(self) -> List[Dict[str, Any]]:
+ """
+ Loads the CSV roster, validates columns, drops empty/duplicate rows,
+ and returns a clean list of artist dictionaries.
+ """
+ if not os.path.exists(self.file_path):
+ raise FileNotFoundError(
+ f"Seed file '{self.file_path}' not found. Please verify the path."
+ )
+
+ df = pd.read_csv(self.file_path)
+
+ # Check for required schema columns
+ missing_cols = [c for c in self.REQUIRED_COLUMNS if c not in df.columns]
+ if missing_cols:
+ raise ValueError(
+ f"Seed CSV is missing required columns: {missing_cols}. "
+ f"Expected columns: {self.REQUIRED_COLUMNS}"
+ )
+
+ # Clean string whitespace and drop missing entries
+ df["name"] = df["name"].astype(str).str.strip()
+ df["identifier"] = df["identifier"].astype(str).str.strip()
+
+ df = df[
+ (df["name"] != "")
+ & (df["name"] != "nan")
+ & (df["identifier"] != "")
+ & (df["identifier"] != "nan")
+ ]
+
+ # Drop duplicates by artist name (keep first occurrence)
+ initial_len = len(df)
+ df = df.drop_duplicates(subset=["name"], keep="first")
+ dedup_len = len(df)
+
+ if initial_len != dedup_len:
+ print(f"βΉοΈ Removed {initial_len - dedup_len} duplicate artist entries from roster.")
+
+ print(f"π Successfully loaded {len(df)} validated artists from '{self.file_path}'.")
+ return df.to_dict(orient="records")
\ No newline at end of file
diff --git a/data/seed_artists_50.py b/data/seed_artists_50.py
new file mode 100644
index 0000000..52cb47f
--- /dev/null
+++ b/data/seed_artists_50.py
@@ -0,0 +1,66 @@
+"""
+data/seed_artists_50.py
+Curated 50-artist hip-hop cohort with verified official handles.
+"""
+
+ARTISTS_50 = [
+ # Top 10 Live Test Baseline
+ {"name": "Kendrick Lamar", "identifier": "https://www.youtube.com/@KendrickLamarVEVO"},
+ {"name": "J. Cole", "identifier": "@JColeVEVO"},
+ {"name": "Drake", "identifier": "@DrakeOfficial"},
+ {"name": "Little Simz", "identifier": "@littlesimz"},
+ {"name": "Denzel Curry", "identifier": "@denzelcurryph"},
+ {"name": "Doechii", "identifier": "@iamdoechii"},
+ {"name": "JID", "identifier": "@JIDsv"},
+ {"name": "GloRilla", "identifier": "@GloRillaOfficial"},
+ {"name": "Central Cee", "identifier": "@CentralCee"},
+ {"name": "Ice Spice", "identifier": "@IceSpicee"},
+
+ # Global Heavyweights & Icons
+ {"name": "Travis Scott", "identifier": "@TravisScottXX"},
+ {"name": "Eminem", "identifier": "@eminem"},
+ {"name": "Kanye West", "identifier": "@kanyewest"},
+ {"name": "Nicki Minaj", "identifier": "@NickiMinaj"},
+ {"name": "Future", "identifier": "@FutureOfficial"},
+ {"name": "Tyler, The Creator", "identifier": "@tylerthecreator"},
+ {"name": "21 Savage", "identifier": "@21savage"},
+ {"name": "Post Malone", "identifier": "@PostMalone"},
+ {"name": "Lil Baby", "identifier": "@LilBaby"},
+ {"name": "Lil Wayne", "identifier": "@LilWayne"},
+
+ # Contemporary Chart-Toppers & Touring Titans
+ {"name": "Megan Thee Stallion", "identifier": "@megantheestallion"},
+ {"name": "Playboi Carti", "identifier": "@PlayboiCarti"},
+ {"name": "Jack Harlow", "identifier": "@JackHarlow"},
+ {"name": "Gunna", "identifier": "@GunnaOfficial"}, # Fixed: @GunnaOfficial
+ {"name": "Lil Uzi Vert", "identifier": "@LILUZIVERT"},
+ {"name": "A$AP Rocky", "identifier": "@asvpxrocky"},
+ {"name": "Cardi B", "identifier": "@iamcardib"},
+ {"name": "Young Thug", "identifier": "@youngthugonline"},
+ {"name": "Roddy Ricch", "identifier": "@RoddyRicch"},
+ {"name": "DaBaby", "identifier": "@DaBabyOfficial"},
+
+ # Emerging & High-Velocity Breakout Acts
+ {"name": "Sexyy Red", "identifier": "@SexyyRed"},
+ {"name": "Ken Carson", "identifier": "@kencarson"},
+ {"name": "Destroy Lonely", "identifier": "@destroylonely"},
+ {"name": "Teezo Touchdown", "identifier": "@TeezoTouchdown"},
+ {"name": "Latto", "identifier": "@Latto777"},
+ {"name": "Flo Milli", "identifier": "@flomilli"},
+ {"name": "Baby Keem", "identifier": "@babykeem"}, # Fixed: @babykeem
+ {"name": "Yeat", "identifier": "@yeat"},
+ {"name": "Don Toliver", "identifier": "@DonToliver"},
+ {"name": "Coi Leray", "identifier": "@CoiLeray"},
+
+ # Critically Acclaimed & Lyricist Core
+ {"name": "Freddie Gibbs", "identifier": "@freddiegibbs"},
+ {"name": "Joey Bada$$", "identifier": "@joeybadass"},
+ {"name": "Danny Brown", "identifier": "@xdannyxbrownxVEVO"}, # Fixed: @xdannyxbrownxVEVO
+ {"name": "Pusha T", "identifier": "@pushat"},
+ {"name": "Vince Staples", "identifier": "@vincestaples"},
+ {"name": "Saba", "identifier": "@sabapivot"},
+ {"name": "Smino", "identifier": "@Sminoofcl"},
+ {"name": "Isaiah Rashad", "identifier": "@IsaiahRashad"},
+ {"name": "Westside Gunn", "identifier": "@GriseldaRecords"},
+ {"name": "EARTHGANG", "identifier": "https://www.youtube.com/@EarthgangOfficial"}, # Fixed: EarthgangOfficial
+]
\ No newline at end of file
diff --git a/data/seed_artists_500.csv b/data/seed_artists_500.csv
new file mode 100644
index 0000000..e956652
--- /dev/null
+++ b/data/seed_artists_500.csv
@@ -0,0 +1,501 @@
+name,identifier
+Kendrick Lamar,https://www.youtube.com/@KendrickLamarVEVO
+J. Cole,@JColeVEVO
+Drake,@DrakeOfficial
+Little Simz,@littlesimz
+Denzel Curry,@denzelcurryph
+Doechii,@iamdoechii
+JID,@JIDsv
+GloRilla,@GloRillaOfficial
+Central Cee,@CentralCee
+Ice Spice,@IceSpicee
+Travis Scott,@TravisScottXX
+Eminem,@eminem
+Kanye West,@kanyewest
+Nicki Minaj,@NickiMinaj
+Future,@FutureOfficial
+"Tyler, The Creator",@tylerthecreator
+21 Savage,@21savage
+Post Malone,@PostMalone
+Lil Baby,@LilBaby
+Lil Wayne,@LilWayne
+Megan Thee Stallion,@megantheestallion
+Playboi Carti,@PlayboiCarti
+Jack Harlow,@JackHarlow
+Gunna,@GunnaOfficial
+Lil Uzi Vert,@LILUZIVERT
+A$AP Rocky,@asvpxrocky
+Cardi B,@iamcardib
+Young Thug,@youngthugonline
+Roddy Ricch,@RoddyRicch
+DaBaby,@DaBabyOfficial
+Sexyy Red,@SexyyRed
+Ken Carson,@kencarson
+Destroy Lonely,@destroylonely
+Teezo Touchdown,@TeezoTouchdown
+Latto,@Latto777
+Flo Milli,@flomilli
+Baby Keem,@babykeem
+Yeat,@yeat
+Don Toliver,@DonToliver
+Coi Leray,@CoiLeray
+Freddie Gibbs,@freddiegibbs
+Joey Bada$$,@joeybadass
+Danny Brown,@xdannyxbrownxVEVO
+Pusha T,@pushat
+Vince Staples,@vincestaples
+Saba,@sabapivot
+Smino,@Sminoofcl
+Isaiah Rashad,@IsaiahRashad
+Westside Gunn,@GriseldaRecords
+EARTHGANG,https://www.youtube.com/@EarthgangOfficial
+Nas,@nas
+Jay-Z,@JayZ
+Snoop Dogg,@SnoopDogg
+50 Cent,@50Cent
+The Notorious B.I.G.,@notoriousbig
+2Pac,@2pac
+Dr. Dre,@drdre
+Ice Cube,@IceCube
+Busta Rhymes,@BustaRhymes
+Method Man,@MethodMan
+Redman,@redman
+Wu-Tang Clan,@WuTangClan
+Outkast,@outkast
+DMX,@dmx
+Ludacris,@Ludacris
+T.I.,@TI
+Jeezy,@jeezy
+Gucci Mane,@guccimane
+Rick Ross,@RickRoss
+Common,@common
+Mos Def,@yasiinbey
+Talib Kweli,@TalibKweli
+Lupe Fiasco,@LupeFiasco
+Ghostface Killah,@GhostfaceKillah
+Raekwon,@Raekwon
+GZA,@TheGeniusGZA
+Cypress Hill,@cypresshill
+Three 6 Mafia,@three6mafia
+Fat Joe,@fatjoe
+Big Pun,@BigPun
+Scarface,@BrotherMob
+E-40,@e40
+Too $hort,@tooshort
+Bun B,@BunBofUGK
+UGK,@UGKfilmz
+Twista,@twista
+Cam'ron,@mr_camron
+Jadakiss,@RealJadakiss
+Styles P,@stylesp
+Fabolous,@myfabolouslife
+The Game,@thegame
+Ja Rule,@JaRule
+Nelly,@Nelly
+Chingy,@Chingy
+Bow Wow,@bowwow
+Soulja Boy,@SouljaBoyTellem
+Waka Flocka Flame,@WakaFlockaFlame
+Chief Keef,@ChiefKeef
+French Montana,@FrenchMontana
+Wiz Khalifa,@wizkhalifa
+Big L,@BigL
+Kool G Rap,@KoolGRap
+Rakim,@TheGodRakim
+Big Daddy Kane,@BigDaddyKane
+Slick Rick,@SlickRickTheRuler
+KRS-One,@KRSOne
+LL Cool J,@LLCoolJ
+Public Enemy,@PublicEnemy
+De La Soul,@WeAreDeLaSoul
+A Tribe Called Quest,@ATCQ
+The Roots,@theroots
+Black Thought,@BlackThought
+Beanie Sigel,@BeanieSigel
+Freeway,@PhillyFreeway
+Cassidy,@CASSIDY_LARSINY
+Lloyd Banks,@LloydBanks
+Tony Yayo,@TonyYayo
+Young Buck,@buckmentality
+Mobb Deep,@mobbdeep
+Prodigy,@ProdigyOfMobbDeep
+Havoc,@HavocOfMobbDeep
+AZ,@QuietMoneyAZ
+Cormega,@Cormega
+Inspectah Deck,@InspectahDeck
+Masta Killa,@MastaKilla
+U-God,@UGod
+Killah Priest,@KillahPriest
+Krayzie Bone,@KrayzieBone
+Layzie Bone,@LayzieBone
+Bizzy Bone,@BizzyBone
+Bone Thugs-N-Harmony,@BoneThugsNHarmony
+Juvenile,@Juvenile
+Mannie Fresh,@MannieFresh
+B.G.,@BGMtH
+Mystikal,@Mystikal
+Pastor Troy,@PastorTroy
+Petey Pablo,@PeteyPablo
+David Banner,@DavidBanner
+Paul Wall,@PaulWall
+Chamillionaire,@chamillionaire
+Slim Thug,@slimthug
+Mike Jones,@MikeJones
+Z-Ro,@TheRealZRo
+Trae tha Truth,@traethatruth
+Big Pokey,@BigPokey
+Lil Keke,@DonKeKe
+Devin the Dude,@DevinTheDude
+Project Pat,@ProjectPat
+Juicy J,@juicyj
+DJ Paul,@DJPaulKOM
+Mac Miller,@MacMiller
+Big Sean,@bigsean
+Wale,@wale
+Meek Mill,@meekmill
+ASAP Ferg,@asapferg
+Schoolboy Q,@ScHoolboyQ
+Ab-Soul,@AbSoul
+Jay Rock,@JayRock
+YG,@4hunnid
+Ty Dolla $ign,@tydollasign
+Kid Cudi,@KidCudi
+Logic,@Logic
+G-Eazy,@GEazy
+Machine Gun Kelly,@mgk
+Russ,@russ
+Joyner Lucas,@JoynerLucas
+NF,@nfrealmusic
+Hopsin,@Hopsintv
+Tech N9ne,@StrangeMusicInc
+Macklemore,@Macklemore
+B.o.B,@bob
+Travis Porter,@travisporter
+Migos,@MigosAtl
+Quavo,@QuavoHuncho
+Offset,@OffsetYRN
+Takeoff,@TakeoffYRN
+Rae Sremmurd,@RaeSremmurd
+Swae Lee,@SwaeLee
+Slim Jxmmi,@SlimJxmmi
+Rich Homie Quan,@RichHomieQuan
+Young Dolph,@youngdolph
+Key Glock,@KeyGlock
+Moneybagg Yo,@MoneyBaggYo
+Yo Gotti,@yogottivideos
+Blac Youngsta,@BlacYoungsta
+Kevin Gates,@kevingates
+Boosie Badazz,@boosiebadazz
+Kodak Black,@KodakBlack
+NBA YoungBoy,@nba_youngboy
+Lil Durk,@lildurk
+King Von,@KingVon
+Polo G,@PoloG
+Lil Tjay,@liltjay
+A Boogie wit da Hoodie,@ABoogieWitDaHoodie
+Fivio Foreign,@FivioForeign
+Pop Smoke,@PopSmoke
+Bobby Shmurda,@BobbyShmurda
+Rowdy Rebel,@RowdyRebel
+6ix9ine,@Tekashi69
+Trippie Redd,@TrippieRedd
+Juice WRLD,@JuiceWRLD
+XXXTENTACION,@xxxtentacion
+Ski Mask the Slump God,@SkiMaskTheSlumpGod
+Cordae,@cordae
+IDK,@IDK
+AminΓ©,@heyamine
+GoldLink,@goldlink
+Duckwrth,@DUCKWRTH
+Buddy,@Buddy
+Deante' Hitchcock,@DeanteHitchcock
+Reason,@reasontde
+Ray Vaughn,@rayvaughn
+SiR,@inglewoodSiR
+Bas,@fiendbassy
+Cozz,@cody_macc
+Omen,@omen
+Lute,@lute_west9
+Mick Jenkins,@mickjenkins
+Noname,@noname
+Rapsody,@rapsody
+Che Noir,@CheNoir
+Sa-Roc,@sarocthemc
+Armani Caesar,@ArmaniCaesar
+Rome Streetz,@RomeStreetz
+Conway the Machine,@WHOISCONWAY
+Benny The Butcher,@BennyTheButcher
+Boldy James,@BoldyJames
+Roc Marciano,@rocmarciano
+Action Bronson,@ActionBronson
+Earl Sweatshirt,@earlsweatshirt
+Dom Genesis,@DomsGenesis
+Hodgy Beats,@hodgy
+Mike G,@MikeG
+Maxo Kream,@MaxoKream
+Big K.R.I.T.,@BigKRIT
+Curren$y,@currensy
+Smoke DZA,@SmokeDZA
+Le$,@steakxshrimp
+Larry June,@LarryJuneTFM
+Jay Worthy,@JayWorthy
+G Perico,@GPerico
+Blxst,@blxst
+Bino Rideaux,@binorideaux
+Kalan.FrFr,@kalanfrfr
+100k Track,@100kTrack
+Yungeen Ace,@YungeenAce
+Foolio,@JulioFoolio
+EST Gee,@ESTGee
+42 Dugg,@42Dugg
+Icewear Vezzo,@icewearvezzo
+Babyface Ray,@BabyfaceRay
+Peezy,@PeezyOfficial
+Veeze,@veeze__
+Rio Da Yung OG,@RioDaYungOG
+RMC Mike,@RmcMike
+YN Jay,@YNJayCoochieMan
+Bfb Da Packman,@BfbDaPackman
+Sada Baby,@SadaBaby
+Tee Grizzley,@TeeGrizzley
+Payroll Giovanni,@payrollgiovanni
+G Herbo,@GHerbo
+Fredo Santana,@FredoSantana
+Lil Reese,@LilReese
+Vic Mensa,@VicMensa
+Chance the Rapper,@chancetherapper
+Famous Dex,@famousdex
+Rich the Kid,@RichTheKid
+Jay Critch,@JayCritch
+MadeinTYO,@MadeinTYO
+Lil Yachty,@lilyachty
+Lil Mosey,@LilMosey
+Lil Tecca,@LilTecca
+SoFaygo,@imsofaygo
+SSGKobe,@ssgkobe
+Kaash Paige,@KaashPaige
+Bia,@PrincessBia
+Saweetie,@saweetie
+City Girls,@CityGirls
+JT,@TheGirlJT
+Yung Miami,@YungMiami
+Kash Doll,@kashdoll
+Dej Loaf,@dejloaf
+Dreezy,@dreezy
+Tink,@OfficialTink
+Kamaiyah,@kamaiyah
+Chika,@chika
+Tierra Whack,@TierraWhack
+Rico Nasty,@RicoNasty
+Princess Nokia,@PrincessNokia
+Bhad Bhabie,@BhadBhabie
+Kreayshawn,@kreayshawn
+Iggy Azalea,@iggyazalea
+Azealia Banks,@AzealiaBanks
+Angel Haze,@AngelHaze
+Brooke Candy,@BrookeCandy
+Stormzy,@StormzyTV
+Dave,@Santandave
+Skepta,@skeptaofficial
+Jme,@JmeBBK
+Kano,@TheKano
+Dizzee Rascal,@dizzeerascal
+AJ Tracey,@ajtracey
+Aitch,@AitchOfficial
+Headie One,@HeadieOne
+Digga D,@DiggaD
+K-Trap,@ktrap_official
+Unknown T,@UnknownT
+Russ Millions,@RussMillions
+Tion Wayne,@TionWayne
+Nemzzz,@Nemzzz
+Knucks,@Knucks
+Loyle Carner,@LoyleCarner
+Slowthai,@slowthai
+Pa Salieu,@PaSalieu
+Ghetts,@Ghetts
+D-Block Europe,@DBlockEurope
+Young Adz,@YoungAdz
+Dirtbike LB,@DirtbikeLB
+M Huncho,@mhuncho
+Nafe Smallz,@NafeSmallz
+Fredo,@Fredo
+Nines,@Nines
+Potter Payper,@PotterPayper
+Rimzee,@Rimzee
+MoStack,@MoStack
+Mist,@mistmusic
+Bugzy Malone,@bugzymalone
+Chip,@OfficialChip
+Wretch 32,@Wretch32
+Giggs,@GiggsOfficial
+Stefflon Don,@stefflondon
+Ms Banks,@MsBanks
+Ivorian Doll,@IvorianDoll
+Darkoo,@Darkoo
+Homixide Gang,@HomixideGang
+Osamason,@osamason
+Nettspend,@nettspend
+Rich Amiri,@RichAmiri
+Autumn!,@twinuzis
+Summrs,@summrs
+Kankan,@kankan
+Iayze,@iayze
+BabyTron,@BabyTron
+StanWill,@StanWill
+TrDee,@TrDee
+Certified Trapper,@certifiedtrapper
+BLP Kosher,@blpkosher
+Luh Tyler,@luhtyler
+Real Boston Richey,@RealBostonRichey
+Hunxho,@Hunxho
+YTB Fatt,@ytbfatt
+Rob49,@Rob49
+Skilla Baby,@SkillaBaby
+BigXthaPlug,@BigXthaPlug
+That Mexican OT,@ThatMexicanOT
+Drodi,@Drodi
+BashfortheWorld,@bashfortheworld
+Southside,@Southside808MAFIA
+Metro Boomin,@MetroBoomin
+Pierre Bourne,@PierreBourne
+Murda Beatz,@MurdaBeatz
+Tay Keith,@TayKeith
+Wheezy,@WheezyOuttaHere
+Boi-1da,@boi1da
+Hit-Boy,@HitBoy
+The Alchemist,@alchemist
+Madlib,@MadlibInvazion
+Kaytranada,@KAYTRANADA
+Flying Lotus,@flyinglotus
+Kenny Beats,@kennybeats
+Monte Booker,@montebooker
+Sango,@sango
+Masego,@Masego
+JPEGMAFIA,@JPEGMAFIA
+Paris Texas,@paristexas
+AG Club,@agclub
+Spillage Village,@spillagevillage
+Coast Contra,@CoastContra
+Grip,@Grip_SS
+Westside Boogie,@westsideboogie
+Domani,@Domani
+Token,@tokenhiphop
+Dax,@dax
+Tom MacDonald,@AllHailTomMacDonald
+Cal Scruby,@CalScruby
+Chris Webby,@ChrisWebby
+Merkules,@Merkules
+Snak The Ripper,@snaktheripper
+Classified,@classified
+Belly,@Belly
+Tory Lanez,@torylanez
+Roy Woods,@RoyWoods
+Majid Jordan,@MajidJordan
+dvsn,@dvsndvsn
+K-os,@kosinfluence
+Kardinal Offishall,@kardinaloffishall
+Night Lovell,@NightLovell
+Lil Skies,@lilskies
+Landon Cube,@landoncube
+Lil Xan,@lilxan
+Smokepurpp,@smokepurpp
+Lil Pump,@lilpump
+Pouya,@pouya
+Fat Nick,@fatnick
+Ghostemane,@ghostemane
+$uicideboy$,@Suicideboys
+BONES,@TeamSESH
+Xavier Wulf,@TheHollowSquad
+Chris Travis,@WaterBoyz
+Robb Bank$,@RobbBanks
+SpaceGhostPurrp,@SpaceGhostPurrp
+Yung Lean,@yunglean
+Bladee,@bladee
+Ecco2k,@ecco2k
+Thaiboy Digital,@thaiboydigital
+Tommy Cash,@TOMMYCASH
+Little Big,@littlebig
+BBNO$,@bbnomula
+Yung Gravy,@yunggravy
+Shotgun Willy,@ShotgunWilly
+Oliver Tree,@OliverTree
+Ashnikko,@ashnikko
+Doja Cat,@dojacat
+BKtherula,@bktherula
+TiaCorine,@TiaCorine
+Monaleo,@TheMonaleo
+Maiya The Don,@MaiyaTheDon
+ScarLip,@ScarLip
+Muni Long,@MuniLong
+Victoria MonΓ©t,@VictoriaMonet
+ChlΓΆe,@chloe
+Halle,@halle
+Coco Jones,@cocojones
+Summer Walker,@SummerWalker
+Kehlani,@Kehlani
+JhenΓ© Aiko,@JheneAiko
+Tinashe,@Tinashe
+SZA,@sza
+Snoh Aalegra,@SnohAalegra
+Brent Faiyaz,@brentfaiyaz
+Giveon,@Giveon
+Lucky Daye,@LuckyDaye
+Leon Thomas,@LeonThomas
+Arin Ray,@ArinRay
+BJ The Chicago Kid,@bjthechicagokid
+Anthony Hamilton,@AnthonyHamilton
+Anderson .Paak,@andersonpaak
+NxWorries,@NxWorries
+Knxwledge,@knxwledge
+Quelle Chris,@quellechris
+Open Mike Eagle,@OpenMikeEagle
+billy woods,@backwoodzstudioz
+Elucid,@elucid
+Armand Hammer,@ArmandHammer
+Moor Mother,@MoorMother
+Pink Siifu,@pinksiifu
+Fly Anakin,@flyanakin
+Lord Apex,@LordApex
+Cakes da Killa,@cakesdakilla
+Mykki Blanco,@mykkiblanco
+Zebra Katz,@zebrakatz
+Leikeli47,@Leikeli47
+Junglepussy,@junglepussy
+Oshun,@oshunnyc
+The Underachievers,@TheUnderachievers
+Flatbush Zombies,@TheGloriousDead
+Meechy Darko,@MeechyDarko
+Zombie Juice,@ZombieJuice
+Erick the Architect,@erickarchitect
+Pro Era,@PROERA
+Kirk Knight,@kirkknight
+Nyck Caution,@nyckcaution
+CJ Fly,@flyhighteam
+Bishop Nehru,@BishopNehru
+Dillon Cooper,@TheDillonCooper
+Your Old Droog,@YourOldDroog
+Wiki,@wikset
+Ratking,@ratkingnyc
+Hak,@haknyc
+Sporting Life,@sportinglife
+Despot,@despotnyc
+Heems,@himanshusuri
+Kool A.D.,@koolad
+Das Racist,@dasracist
+Chaz French,@chazfrench
+Phil Ade,@philade
+Fat Trel,@FatTrel
+Shy Glizzy,@ShyGlizzy
+NoCap,@NoCap
+Rylo Rodriguez,@RyloRodriguez
+LiBand,@LiBand
+Yung Manny,@yungmanny
+Xanman,@xanman
+Q Da Fool,@qdafool
+Goonew,@goonew
+Lil Dude,@lildude
+Big Flame,@bigflame
+BabySmoove,@babysmoove
+KrispyLife Kidd,@krispylife_kidd
+Kasher Quon,@kasherquon
diff --git a/enriched_artists.csv b/enriched_artists.csv
index ed68775..c838cfe 100644
--- a/enriched_artists.csv
+++ b/enriched_artists.csv
@@ -1,11 +1,501 @@
-UID,Name,Youtube,Instagram,Location,yt_subscribers,yt_lifetime_views,yt_video_count,yt_recent_avg_views,yt_momentum_30d,yt_status,mb_verified,mb_id,wd_verified,wd_id,composite_confidence,confidence_tier,norm_subscribers,norm_lifetime_views,norm_video_count,norm_recent_avg_views,norm_momentum_30d,base_rank_score,hiffi_score,hiffi_rank
-9f76913bf5a8996b14c37563fdff9751,$ILKMONEY,https://www.youtube.com/channel/UCA1PZKy6XNQ-TsXWbQW2vyw,https://instagram.com/silkbooty,,46900,14878731,15,0,0.0,cached,True,309da629-06af-4453-85f4-9c1868a2fbbc,True,Q136428352,0.97,High,0.8776752758308687,0.9062496400532577,0.6717951158281678,0.0,0.0,0.5570445043453918,54.37,1
-4f9cc677d46d75f9709608f0668442fe,$hyfromdatre,https://www.youtube.com/channel/UCHRl8OQoAAUghnEJmsoiP5A,https://instagram.com/shyfromdatre,,210000,82140745,33,0,0.0,cached,True,db59266e-cd49-4f8c-98d2-e4b630251135,False,,0.75,High,1.0,1.0,0.8544331721773178,0.0,0.0,0.6354433172177318,50.84,2
-fb669f1ff32d3a7bbdef274872cbe0fd,+/-,https://www.youtube.com/channel/UCBOxSirnH1-_-xKtqX051lg,https://instagram.com/plusminusnyc,New York,739,164806,31,3477,0.0,cached,False,,False,Q260387,0.36,Low / Emerging,0.539104168005253,0.6591619178536015,0.8397438947852097,1.0,0.0,0.6604961193434973,32.23,3
-0f8e17a71adc4b60b61f9bf8f09605fb,$hoey,https://www.youtube.com/channel/UCkRNQjK0d70NqvLI57JmfeA,https://instagram.com/shoeyrussell,,594,653569,10,0,0.0,cached,False,1144f22d-fb1f-41a7-9822-05dab5edff25,False,,0.36,Low / Emerging,0.5213080735653491,0.7347588629481051,0.5810073162355173,0.0,0.0,0.3981828694301827,19.43,4
-405c893b17cdd7a486fc074f722671ab,$eLL,https://www.youtube.com/channel/UCVhJhIHih93-X-NzZeXX6bA,https://instagram.com/localcel_,,421,56299,61,0,0.0,cached,False,735f2b10-a267-4cd2-990f-f91702be9130,False,Q114274902,0.36,Low / Emerging,0.493273817829613,0.6002240439751241,1.0,0.0,0.0,0.39803815634266493,19.42,5
-e6351059c8846a51fe492ebb6365e4b0,$hamrock,https://www.youtube.com/channel/UCenklnIchLhgF2ELHfLqpmQ,,,125,33862,0,0,0.0,cached,True,771e21e8-78f6-4d06-a495-ddcaa08b469b,False,,0.63,Medium,0.3946417110342386,0.5723282415425062,0.0,0.0,0.0,0.2614745736958981,18.41,6
-c977cafbeabf67c0956bb0d1ce0188d7,$avage,https://www.youtube.com/channel/UCxtI7DyGJwUnAOywPSvf2OQ,https://instagram.com/mobshitsavage,,43300,0,0,0,0.0,cached,True,21b57a2b-9300-45b8-99bb-b970cb229f22,False,,0.63,Medium,0.8711584148945921,0.0,0.0,0.0,0.0,0.2613475244683776,18.4,7
-1cd4f7d2b1b902a677d0d6fba4096240,$'Edout,https://www.youtube.com/channel/UC6Sj8g3C4Qb9I3bl9xcQDXQ,https://instagram.com/Kid_soja,,21,12683,0,0,0.0,cached,False,,False,,0.28,Low / Emerging,0.2522297719906333,0.5184441001135359,0.0,0.0,0.0,0.20527995662557397,8.7,8
-33f12aeb1989989480885e6a4ed1637f,$ Eli,https://www.youtube.com/channel/UClmpQYORihn-nTO77x3XIpg,https://instagram.com/dollarsigneli,,0,0,0,0,0.0,not_found,False,,False,,0.0,Low / Emerging,0.0,0.0,0.0,0.0,0.0,0.0,0.0,9
-73502f922e4bfbad14f321aa0415f301,$hrames,https://www.youtube.com/channel/UCfwF7qNJylFoSIMi7KTKPdA,https://instagram.com/iPissGreatness,,0,0,0,0,0.0,cached,True,61c33b23-37a9-43a3-9ccd-9b12944ded5b,False,,0.55,Medium,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10
+name,identifier,channel_id,channel_title,subscriber_count,lifetime_views,video_count,recent_avg_views,daily_view_velocity,momentum_30d,status_flag,data_complete,updated_at,confidence_score,confidence_tier,mb_verified,wd_verified,cross_referenced,breakout_velocity_index,is_rank_eligible,hiffi_score,hiffi_rank,breakout_rank,health_status,is_zombie,health_notes
+Megan Thee Stallion,@megantheestallion,UCKrdjiuS66yXOdEZ_cOD_TA,Megan Thee Stallion,7490000.0,4150615406.0,383.0,2105527.25,59535.32970320314,7086.099829351537,COMPLETE,1,2026-10-22 10:35:50,1.0,High Confidence,True,True,False,82.56,True,92.71,1,13,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Latto,@Latto777,UCRQ6wJbGwbF9Wmvp5HfT7Pg,Latto,2820000.0,1717248605.0,593.0,190555.4,12889.591254494146,660.4087854554741,COMPLETE,1,2026-10-22 10:36:57,1.0,High Confidence,True,True,False,87.05,True,88.73,2,6,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Kodak Black,@KodakBlack,UChEYVadfkMCfrKUi6qr3I1Q,Kodak Black,9960000.0,8667475213.0,711.0,1944393.0,5839.291781123619,362.27051624038916,COMPLETE,1,2026-10-22 11:00:33,1.0,High Confidence,True,True,False,80.8,True,88.44,3,14,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Meek Mill,@meekmill,UC9HlWVtENbiMQzVRmnbJxtw,Meek Mill,5950000.0,4845516488.0,381.0,363292.5,10363.763197297121,313.2891178034817,COMPLETE,1,2026-10-22 10:58:10,1.0,High Confidence,True,True,False,83.21,True,88.13,4,10,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+French Montana,@FrenchMontana,UC-4mIX9ls8ROVk9ApfeYf5w,French Montana,5990000.0,4703121228.0,681.0,134346.54545454544,3987.039117589532,1121.867429535251,COMPLETE,1,2026-10-22 10:57:49,1.0,High Confidence,True,True,False,83.11,True,86.84,5,12,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+That Mexican OT,@ThatMexicanOT,UC4cvpsB_dAX8i5vdaBB-96w,That Mexican OT,1770000.0,1322775383.0,1380.0,92659.90909090909,2647.6282487520475,600.0645626566846,COMPLETE,1,2026-10-22 11:18:37,1.0,High Confidence,True,True,False,89.27,True,85.97,6,4,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Mac Miller,@MacMiller,UC3SEvBYhullC-aaEmbEQflg,Mac Miller,5060000.0,5032537108.0,274.0,256519.44444444444,5538.977074017849,1142.0511523811574,COMPLETE,1,2026-10-22 10:57:59,1.0,High Confidence,True,True,False,83.93,True,85.79,7,9,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Busta Rhymes,@BustaRhymes,UCCWKLP04ZkaVpxb6l5BKZOw,Busta Rhymes,2480000.0,2049999007.0,120.0,69995.60869565218,10291.466021848071,7875.324482314475,COMPLETE,1,2026-10-22 10:55:25,1.0,High Confidence,True,True,False,87.68,True,84.96,8,5,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Gunna,@GunnaOfficial,UCAkIMkEaa9sZmjcy7mfd5lQ,Gunna,3740000.0,3725802705.0,465.0,578597.0,16614.308171638426,11443.082294264339,COMPLETE,1,2026-10-22 10:46:07,0.75,Medium Confidence,True,False,False,85.63,True,84.87,9,7,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Snoop Dogg,@SnoopDogg,UC-OO324clObi3H-U0bP77dw,SnoopDoggTV,11300000.0,4981447419.0,1880.0,195196.0,2351.3182995610455,257.2384826204126,COMPLETE,1,2026-10-22 10:55:04,0.94,High Confidence,True,True,False,71.6,True,83.19,10,15,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Ghostemane,@ghostemane,UCsyBVa0eTR-lL0sRnKpIe8w,GHOSTEMANE,4000000.0,986394685.0,71.0,426047.0,4842.041171242727,801.2480697226747,COMPLETE,1,2026-10-22 11:22:49,1.0,High Confidence,True,True,False,85.08,True,82.09,11,8,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Russ Millions,@RussMillions,UCGDawZyaXbMbcr15My67wmw,Russ Millions,555000.0,271257489.0,64.0,815333.3333333334,8696.962289413772,367.26204689813267,COMPLETE,1,2026-10-22 11:07:06,1.0,High Confidence,True,True,False,97.07,True,81.64,12,2,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Wu-Tang Clan,@WuTangClan,UCl0q_XqiWDMA-Q9SzUO3y-Q,Wu-Tang Clan,2060000.0,1219796180.0,376.0,80399.125,1761.0552652571591,276.27488489911485,COMPLETE,1,2026-10-22 10:55:35,1.0,High Confidence,True,True,False,83.15,True,80.34,13,11,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Roy Woods,@RoyWoods,UCN_uuL0yjn9H5fnFqpo2S1w,Roy Woods,304000.0,120651354.0,403.0,146453.0,973.0417094293531,4580.504953659316,COMPLETE,1,2026-10-22 11:22:08,1.0,High Confidence,True,True,False,100.0,True,79.02,14,1,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Oliver Tree,@OliverTree,UCHcb3FQivl6xCRcHC2zjdkQ,Oliver Tree,11800000.0,5027457672.0,280.0,4722244.0,79897.76908648516,100.0,COMPLETE,1,2026-10-22 11:23:39,1.0,High Confidence,True,True,False,40.22,True,75.65,15,54,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Fat Joe,@fatjoe,UCdq3IqQwiWQfjdjwxTLO-qQ,Fat Joe,2020000.0,1700116153.0,220.0,124549.0,3488.9042928210943,209.88575267297125,COMPLETE,1,2026-10-22 10:56:33,1.0,High Confidence,True,True,False,68.56,True,75.3,16,16,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Gucci Mane,@guccimane,UCSugZEYrWbzqIWGD195V-YA,Gucci Mane,6010000.0,5168869290.0,575.0,126198.94117647059,14678.434486812183,100.0,COMPLETE,1,2026-10-22 10:55:55,1.0,High Confidence,True,True,False,41.47,True,72.32,17,50,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Bhad Bhabie,@BhadBhabie,UC7rVvFP90pl7tAtPsVIhfww,Bhad Bhabie,8000000.0,1602802587.0,218.0,235925.55555555556,20889.33114341348,100.0,COMPLETE,1,2026-10-22 11:06:07,1.0,High Confidence,True,True,False,40.82,True,71.1,18,52,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+"Tyler, The Creator",@tylerthecreator,UCsQBsZJltmLzlsJNG7HevBg,"Tyler, The Creator",8260000.0,4319305041.0,113.0,948067.0,14115.234188285052,100.0,COMPLETE,1,2026-10-22 10:35:27,1.0,High Confidence,True,True,False,40.69,True,69.15,19,53,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+50 Cent,@50Cent,UC8zJedg1f4sKnyuHWeS6vyw,50 Cent,18700000.0,15388385211.0,441.0,38441.0,2992.8528339307945,100.0,COMPLETE,1,2026-10-22 10:55:08,1.0,High Confidence,True,True,False,38.82,True,68.84,20,56,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Tee Grizzley,@TeeGrizzley,UCz015ho6P0Ooo7IZFyQU7fw,Tee Grizzley,2870000.0,1857822227.0,558.0,88326.8,5263.220303513859,100.0,COMPLETE,1,2026-10-22 11:04:26,1.0,High Confidence,True,True,False,43.23,True,68.81,21,47,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Doja Cat,@dojacat,UCzpl23pGTHVYqvKsgY0A-_w,Doja Cat,14200000.0,11620421412.0,66.0,32432.0,10145.846735039593,100.0,COMPLETE,1,2026-10-22 11:23:45,1.0,High Confidence,True,True,False,39.43,True,67.93,22,55,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Vic Mensa,@VicMensa,UCCkJuLH3pjjyDAuzbSky55g,Vic Mensa,381000.0,134030107.0,450.0,11970.16,6987.9191103345365,100.0,COMPLETE,1,2026-10-22 11:04:42,1.0,High Confidence,True,True,False,50.35,True,66.9,23,30,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Rio Da Yung OG,@RioDaYungOG,UCjUy5GbylYJC6kxJZYRwwVA,Rio Da Yung OG,746000.0,659365293.0,340.0,55189.36842105263,2183.0280193714752,128.68689071598368,COMPLETE,1,2026-10-22 11:04:10,1.0,High Confidence,True,True,False,53.81,True,66.86,24,20,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Method Man,@MethodMan,UClsmea6T_IrOqTI-DOwso5g,Method Man,745000.0,475439169.0,263.0,83971.75,2348.5647443745934,130.3514727565751,COMPLETE,1,2026-10-22 10:55:29,1.0,High Confidence,True,True,False,54.22,True,66.58,25,17,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Logic,@Logic,UCoDcFZ5KZ0KwBC_omalJuiA,Logic,3530000.0,1858275156.0,479.0,117074.0,304.24732199274104,146.0416535317235,COMPLETE,1,2026-10-22 10:58:45,1.0,High Confidence,True,True,False,52.49,True,65.42,26,24,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+BigXthaPlug,@BigXthaPlug,UCEJdOGwm6CNtc_kIa_Qjy6A,BigXthaPlug,1870000.0,1842811715.0,593.0,174375.8947368421,13953.52996099237,30.40713780212185,COMPLETE,1,2026-10-22 11:18:31,1.0,High Confidence,True,True,False,29.21,True,65.03,27,68,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Masego,@Masego,UCmfMTajxmbEKe0A1rQJ4p0A,Masego,1010000.0,550194493.0,147.0,110773.5,4950.097171379931,100.0,COMPLETE,1,2026-10-22 11:20:15,1.0,High Confidence,True,True,False,46.28,True,64.92,28,43,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Russ,@russ,UCiIETTq2It3OzW8_WYRPTyQ,Russ,6400000.0,4344762933.0,389.0,182719.66666666666,3207.2147136777303,100.0,COMPLETE,1,2026-10-22 10:59:00,0.75,Medium Confidence,True,False,False,41.19,True,64.26,29,51,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Coco Jones,@cocojones,UC0RzM4Oe2H4pxAYuk-hr1xA,Coco Jones,1210000.0,469745143.0,211.0,44337.0,2417.8568865491798,100.0,COMPLETE,1,2026-10-22 11:24:23,1.0,High Confidence,True,True,False,45.55,True,63.87,30,45,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Bugzy Malone,@bugzymalone,UCLd_hRzn-yr9Nh73XNviNWg,Bugzy Malone,724000.0,542783895.0,184.0,678121.0,2964.426444044485,100.0,COMPLETE,1,2026-10-22 11:08:08,1.0,High Confidence,True,True,False,47.21,True,63.83,31,42,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Victoria MonΓ©t,@VictoriaMonet,UCF-Gj_k3Uk4WnK2UhJcSzYg,Victoria MonΓ©t,667000.0,417411317.0,253.0,43724.36,2424.173715381624,100.0,COMPLETE,1,2026-10-22 11:24:13,1.0,High Confidence,True,True,False,47.42,True,63.8,32,40,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Fivio Foreign,@FivioForeign,UCm7gu9KfQ6oAg0Z1halgEnA,Fivio Foreign,1190000.0,696992105.0,372.0,127801.6,3799.110402985044,67.78469213601154,COMPLETE,1,2026-10-22 11:01:00,1.0,High Confidence,True,True,False,38.29,True,63.44,33,57,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Lil Mosey,@LilMosey,UCZ3FuC9xpPnSErHJqMg5_EQ,Lil Mosey,2570000.0,816757652.0,109.0,30248.5,2020.0607061409662,100.0,COMPLETE,1,2026-10-22 11:05:08,1.0,High Confidence,True,True,False,43.44,True,62.79,34,46,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Snoh Aalegra,@SnohAalegra,UChVibCOlzk9GwJZfbYJOY8A,Snoh Aalegra,590000.0,383092694.0,39.0,258526.0,7195.585507450485,100.0,COMPLETE,1,2026-10-22 11:24:42,1.0,High Confidence,True,True,False,48.45,True,62.79,34,36,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Kendrick Lamar,https://www.youtube.com/@KendrickLamarVEVO,UCoYfzC2zMlc9M-Odgaf6OSg,KendrickLamarVEVO,6820000.0,5403312208.0,61.0,,74854.42576525887,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:52,0.94,High Confidence,True,True,False,21.01,True,62.6,36,155,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Certified Trapper,@certifiedtrapper,UCwTa-rvU9G-pralFjeqvFfw,Certified Trapper,127000.0,56442056.0,1278.0,9950.315789473685,1165.2789427056582,88.84072157740177,COMPLETE,1,2026-10-22 11:18:03,1.0,High Confidence,True,True,False,50.57,True,62.41,37,29,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Your Old Droog,@YourOldDroog,UC47rmMk5fsa1HgE30TrkPXA,Your Old Droog,35400.0,8826910.0,98.0,13764.875,280.343203377182,204.90364381437593,COMPLETE,1,2026-10-22 11:26:45,1.0,High Confidence,True,True,False,89.52,True,62.41,37,3,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Eminem,@eminem,UCfM3zsQsOnfWNUppiycmBuw,EminemMusic,67400000.0,38760804274.0,210.0,,9816.92596840884,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:05,0.94,High Confidence,True,True,False,17.95,True,62.03,39,187,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Lil Durk,@lildurk,UCaxOQZrF5llUMp-JjesUz1A,Lil Durk,7820000.0,7860200885.0,506.0,,7854.888480466487,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:40,1.0,High Confidence,True,True,False,20.19,True,62.0,40,167,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Juice WRLD,@JuiceWRLD,UC0BletW9phE4xHFM44q4qKA,Juice WRLD,14000000.0,8931718358.0,191.0,,13642.117976478625,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:21,1.0,High Confidence,True,True,False,19.55,True,61.91,41,179,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Tory Lanez,@torylanez,UCbfUA3UGxAWL3muD004g0WQ,Tory Lanez,5110000.0,3848908499.0,1150.0,,3671.8805074009224,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:05,1.0,High Confidence,True,True,False,20.67,True,61.18,42,161,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Wiz Khalifa,@wizkhalifa,UCVp3nfGRxmMadNDuVbJSk8A,Wiz Khalifa,30900000.0,16488363807.0,952.0,,2159.31863496771,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:52,1.0,High Confidence,True,True,False,18.68,True,61.12,43,184,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+BLP Kosher,@blpkosher,UCrmzNldeNrajgVg_0VLNRkA,BLP KOSHER,288000.0,105754496.0,116.0,19499.81818181818,1303.458853581182,114.68477575490677,COMPLETE,1,2026-10-22 11:18:06,1.0,High Confidence,True,True,False,53.89,True,60.96,44,19,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Lil Uzi Vert,@LILUZIVERT,UCqwxMqUcL-XC3D9-fTP93Mg,LIL UZI VERT,10400000.0,6152925017.0,254.0,,8139.917420113339,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:14,1.0,High Confidence,True,True,False,19.86,True,60.84,45,173,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Yung Gravy,@yunggravy,UCLQPinZNWKlLBF7C_m2YP3g,Yung Gravy,1810000.0,915347578.0,592.0,63091.53333333333,3117.268694587971,28.69589695331241,COMPLETE,1,2026-10-22 11:23:33,1.0,High Confidence,True,True,False,28.47,True,60.8,46,76,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Drake,@DrakeOfficial,UCByOQJjav0CUDwxCk-jVNRQ,Drake,33200000.0,24441713812.0,112.0,3946272.0,126976.0049249581,-78.49564109006833,COMPLETE,1,2026-10-22 09:35:53,1.0,High Confidence,True,True,False,3.89,True,60.57,47,200,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Xanman,@xanman,UCaFFpY9BFJq2c4Do1gBQ1xw,Xanman,130000.0,46981997.0,193.0,117279.0,1358.9720852731882,100.0,COMPLETE,1,2026-10-22 11:27:34,1.0,High Confidence,True,True,False,53.56,True,59.98,48,21,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Central Cee,@CentralCee,UCV_CsAy5CNBX_uwDQ7RMe1Q,Central Cee,7140000.0,2738806078.0,92.0,,15050.145683517516,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:57,1.0,High Confidence,True,True,False,20.37,True,59.88,49,164,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ty Dolla $ign,@tydollasign,UClVY6MdQxTZUaMDL-dLQDcw,Ty Dolla $ign,3830000.0,2225314489.0,231.0,3567.3333333333335,902.7262245223419,100.0,COMPLETE,1,2026-10-22 10:58:38,0.75,Medium Confidence,True,False,False,42.39,True,59.67,50,49,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Polo G,@PoloG,UC0ifXd2AVf1LMYbqwB5GH4g,Polo G,6520000.0,4589293113.0,116.0,,9536.359715027484,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:46,1.0,High Confidence,True,True,False,20.43,True,59.28,51,162,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kehlani,@Kehlani,UCuE1A4MDBt8YkgUkRAKMtjw,Kehlani,4720000.0,3012117932.0,280.0,,5481.401722623155,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:29,1.0,High Confidence,True,True,False,20.79,True,59.26,52,157,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Yungeen Ace,@YungeenAce,UCf1Q757aKSmywQDQhiTtGFA,Yungeen Ace,1950000.0,891194469.0,297.0,,7606.187369930817,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:43,1.0,High Confidence,True,True,False,22.11,True,59.23,53,140,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Lil Wayne,@LilWayne,UCO9zJy7HWrIS3ojB4Lr7Yqw,Lil Wayne,14700000.0,9819093204.0,327.0,,3042.579334963458,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:45,1.0,High Confidence,True,True,False,19.45,True,59.21,54,180,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Teezo Touchdown,@TeezoTouchdown,UCjFEF43RfwXUu1rwXxm4eZQ,Teezo Touchdown,167000.0,36421964.0,53.0,106647.28571428571,2636.4681002257103,100.0,COMPLETE,1,2026-10-22 10:36:54,1.0,High Confidence,True,True,False,53.06,True,59.21,54,23,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+XXXTENTACION,@xxxtentacion,UCM9r1xn6s30OnlJWb-jc3Sw,XXXTENTACION,43500000.0,12901726223.0,137.0,,4351.873519974076,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:24,1.0,High Confidence,True,True,False,18.36,True,59.21,54,186,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+BKtherula,@bktherula,UCqEpkhhjzs37FX1b4d3yUqw,BKTHERULA,302000.0,97025417.0,257.0,52323.0,574.2010093808783,100.0,COMPLETE,1,2026-10-22 11:23:50,1.0,High Confidence,True,True,False,49.82,True,59.15,57,32,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Little Simz,@littlesimz,UC89IYKXyf15qNezA7IuFG1A,Little Simz,560000.0,142212941.0,167.0,20172.166666666668,608.6225053788249,100.0,COMPLETE,1,2026-10-22 09:35:54,1.0,High Confidence,True,True,False,47.76,True,58.98,58,38,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Lil Yachty,@lilyachty,UCNTu7P3IyRRKJtibrrXG0Yg,lil boat,3260000.0,1473706050.0,136.0,110781.5,2490.8082262072985,100.0,COMPLETE,1,2026-10-22 11:05:05,0.6,Medium Confidence,True,True,False,42.83,True,58.98,58,48,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Don Toliver,@DonToliver,UCgT01FILdWB9BsXBXKjpQ7A,Don Toliver,3040000.0,2970930038.0,261.0,,5298.9333555762505,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:18,1.0,High Confidence,True,True,False,21.37,True,58.74,60,145,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Nicki Minaj,@NickiMinaj,UC3jOd7GUMhpgJRBhiLzuLsg,Nicki Minaj,28400000.0,12957679432.0,67.0,,6737.723808690361,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:15,1.0,High Confidence,True,True,False,18.78,True,58.64,61,182,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Joey Bada$$,@joeybadass,UCG8R0ZMHBkRzBT1DWK9wT5w,Joey Bada$$,601000.0,342717274.0,36.0,42611.0,1411.2486770016158,100.0,COMPLETE,1,2026-10-22 10:37:29,1.0,High Confidence,True,True,False,47.64,True,58.45,62,39,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Playboi Carti,@PlayboiCarti,UC652oRUvX1onwrrZ8ADJRPw,Playboi Carti,4990000.0,2841848127.0,70.0,,10652.755040583823,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:57,1.0,High Confidence,True,True,False,20.79,True,58.24,63,157,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+G Herbo,@GHerbo,UCV0pIPt5HFfulonNog3cz1A,G Herbo,2050000.0,1778385783.0,412.0,,3606.4520627438346,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:32,1.0,High Confidence,True,True,False,21.89,True,58.23,64,141,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Travis Scott,@TravisScottXX,UCtxdfwb9wfkoGocVUAJ-Bmg,Travis Scott,20800000.0,12627449851.0,20.0,,15447.109278571212,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:00,1.0,High Confidence,True,True,False,19.12,True,58.2,65,181,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+The Notorious B.I.G.,@notoriousbig,UCIZGqIYkST36dLp0uf9o9nw,The Notorious B.I.G.,5080000.0,4448312178.0,105.0,48538.333333333336,1578.086121441178,40.544166473631385,COMPLETE,1,2026-10-22 10:55:11,1.0,High Confidence,True,True,False,29.19,True,57.88,66,69,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Lil Tecca,@LilTecca,UCOlxqtcKc-HBEQJgDsylyhA,Lil Tecca,3330000.0,1490107798.0,174.0,,5338.891039170453,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:11,1.0,High Confidence,True,True,False,21.25,True,57.79,67,150,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Lil Tjay,@liltjay,UCEB4a5o_6KfjxHwNMnmj54Q,Lil Tjay,6560000.0,3607654054.0,210.0,,3398.0989328467595,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:51,1.0,High Confidence,True,True,False,20.36,True,57.75,68,165,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+21 Savage,@21savage,UCOjEHmBKwdS7joWpW0VrXkg,21 Savage,10100000.0,6785207356.0,166.0,,3210.9505305038683,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:32,1.0,High Confidence,True,True,False,19.86,True,57.63,69,173,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+YTB Fatt,@ytbfatt,UCqfqdCqPHxgtdJ0m32obDiw,YTB Fatt ,451000.0,465643798.0,212.0,,7869.7705685443825,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:21,1.0,High Confidence,True,True,False,25.32,True,57.46,70,97,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Pierre Bourne,@PierreBourne,UCN27za3wzItmyRV2O3N91vw,PierreBourne,409000.0,236364956.0,113.0,46045.857142857145,2477.787578318517,100.0,COMPLETE,1,2026-10-22 11:19:02,0.65,Medium Confidence,False,True,False,49.15,True,57.43,71,34,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Machine Gun Kelly,@mgk,UCUs8sGiP4avNaYNVO22INhQ,mgk,9540000.0,6954381825.0,392.0,,9275.456146176897,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:53,0.6,Medium Confidence,True,True,False,19.97,True,57.05,72,170,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+TiaCorine,@TiaCorine,UC9suUyHpN7Gzk8l7j3qSrIg,TiaCorine,124000.0,52683115.0,118.0,160101.0,614.9438604047872,100.0,COMPLETE,1,2026-10-22 11:23:54,1.0,High Confidence,True,True,False,53.27,True,57.0,73,22,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Murda Beatz,@MurdaBeatz,UCWz4zK-Oal6uIiVxVuRWh8A,Murda Beatz,214000.0,53871516.0,66.0,73358.0,818.1447271166605,100.0,COMPLETE,1,2026-10-22 11:19:06,1.0,High Confidence,True,True,False,51.17,True,56.95,74,27,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Icewear Vezzo,@icewearvezzo,UC00wbhsfrcZAElIw1Q9VRlw,Icewear Vezzo,585000.0,744543885.0,233.0,,4957.282485543911,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:57,1.0,High Confidence,True,True,False,24.2,True,56.79,75,108,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Fabolous,@myfabolouslife,UCPGTwnuYHJ0nb6osWd9v7gg,MyFabolousLife,1190000.0,1110780051.0,194.0,,5887.636523789568,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:12,0.94,High Confidence,True,True,False,22.87,True,56.78,76,133,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+J. Cole,@JColeVEVO,UCnzJFckvQBA5nn9lMu08LWQ,JColeVEVO,1690000.0,1837373881.0,33.0,,16023.352790077835,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:53,0.94,High Confidence,True,True,False,22.7,True,56.27,77,136,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Public Enemy,@PublicEnemy,UCAR-wsCZ0Xn9KPqX_l2fVzQ,Channel ZERO,266000.0,213838649.0,1529.0,887.16,274.522753396345,100.0,COMPLETE,1,2026-10-22 11:13:56,0.6,Medium Confidence,True,True,False,50.18,True,56.11,78,31,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Post Malone,@PostMalone,UCeLHszkByNZtPKcaVXOCOQQ,Post Malone,29000000.0,21288950637.0,190.0,,977.5253943977743,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:36,1.0,High Confidence,True,True,False,18.74,True,55.94,79,183,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Cypress Hill,@cypresshill,UCoO96UN3gv5WohJA8QuMgXQ,Cypress Hill,2030000.0,1689044104.0,345.0,24328.714285714286,756.8622579064025,21.606220946423598,COMPLETE,1,2026-10-22 10:56:25,1.0,High Confidence,True,True,False,26.6,True,55.77,80,83,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Kanye West,@kanyewest,UCs6eXM7s8Vl5WcECcRHc2qQ,Kanye West,12700000.0,10317879051.0,42.0,,20349.925333641124,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:35:11,0.65,Medium Confidence,False,True,False,19.69,True,55.74,81,177,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Migos,@MigosAtl,UC9YcTIQuhwgoOQqYMKYqW9A,Migos ATL,13100000.0,8456422168.0,99.0,,2625.741389535104,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:33,0.94,High Confidence,True,True,False,19.57,True,55.67,82,178,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rapsody,@rapsody,UCCobft4AUIDzRaKp1xEHa5w,Rapsody,170000.0,38876179.0,166.0,2003.0,228.74538135048846,100.0,COMPLETE,1,2026-10-22 11:02:23,1.0,High Confidence,True,True,False,51.79,True,55.26,83,25,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+SZA,@sza,UCO5IQ70V7l-XpHW40HwaGsw,SZA,6800000.0,5695629013.0,38.0,,13227.511780193214,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:39,0.75,Medium Confidence,True,False,False,20.41,True,55.13,84,163,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Sexyy Red,@SexyyRed,UC28rc3PHWPJib68G-VqpJ3w,Sexyy Red,1450000.0,903938520.0,481.0,,1128.9340825805314,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:41,1.0,High Confidence,True,True,False,22.28,True,55.12,85,138,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Anderson .Paak,@andersonpaak,UCVMSK1i_uksa4FrXZZqGYvw,Anderson Paak,912000.0,415309107.0,66.0,,6523.938369179792,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:07,1.0,High Confidence,True,True,False,23.42,True,55.11,86,120,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Macklemore,@Macklemore,UCXYRdIXDdeZIf816EWAr5zQ,Macklemore,10100000.0,6524076872.0,311.0,,691.7757397177468,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:22,1.0,High Confidence,True,True,False,19.84,True,54.95,87,175,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Jack Harlow,@JackHarlow,UC6vZl7Qj7JglLDmN_7Or-ZQ,Jack Harlow,3180000.0,2304111123.0,173.0,,1673.6120246890312,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:05,1.0,High Confidence,True,True,False,21.23,True,54.93,88,152,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ashnikko,@ashnikko,UCprhwr86ckrMC2q9jX8qMnw,Ashnikko,2820000.0,1454561438.0,285.0,70118.0,1266.2684484936703,-1.891702812368826,COMPLETE,1,2026-10-22 11:23:42,1.0,High Confidence,True,True,False,20.97,True,54.81,89,156,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Leon Thomas,@LeonThomas,UCOHM33mfIkFOy3bDfKhPyVQ,Leon Thomas,482000.0,326833613.0,122.0,26659.0,436.2163456636026,100.0,COMPLETE,1,2026-10-22 11:24:53,0.75,Medium Confidence,True,False,False,48.22,True,54.8,90,37,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Roddy Ricch,@RoddyRicch,UChQdA1rid5kKZh6oIc6DLNg,Roddy Ricch,7650000.0,4066649683.0,94.0,,1705.5165416126222,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:32,1.0,High Confidence,True,True,False,20.16,True,54.54,91,168,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+NF,@nfrealmusic,UCoRR6OLuIZ2-5VxtnQIaN2w,NFrealmusic,10500000.0,6234726143.0,41.0,,11380.180398255812,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:11,0.69,Medium Confidence,True,False,False,19.87,True,54.51,92,172,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Offset,@OffsetYRN,UCLRm9H9a-2bAna0E-r5n8pg,OFFSETYRN,1160000.0,1003390203.0,70.0,699280.0,15291.937268061403,1.6130977550898822,COMPLETE,1,2026-10-22 10:59:39,0.69,Medium Confidence,True,False,False,23.88,True,54.39,93,113,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Ken Carson,@kencarson,UCtjO8cix9XxwOcAv6nww-TQ,Ken Carson,899000.0,550673391.0,49.0,,5958.665167398936,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:47,1.0,High Confidence,True,True,False,23.4,True,54.38,94,122,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Denzel Curry,@denzelcurryph,UCiKxNv_MHAShqT2lATxG_Wg,Denzel Curry,1610000.0,686698487.0,275.0,15509.0,1818.5286563604102,-15.500708292470305,COMPLETE,1,2026-10-22 09:35:55,1.0,High Confidence,True,True,False,18.67,True,53.85,95,185,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Tech N9ne,@StrangeMusicInc,UC87iZ03xDe8csLCjWyV2E0A,Strange Music Inc,2880000.0,1945359953.0,1468.0,,1339.3668438688953,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:18,0.6,Medium Confidence,True,True,False,21.35,True,53.8,96,147,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+A Boogie wit da Hoodie,@ABoogieWitDaHoodie,UCfgsFOdVScKetBXYrFNr5LQ,A Boogie Wit da Hoodie,5340000.0,4201606943.0,543.0,20996.25,516.8253065426438,-12.712022948366176,COMPLETE,1,2026-10-22 11:00:56,1.0,High Confidence,True,True,False,17.9,True,53.63,97,188,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Ray Vaughn,@rayvaughn,UCr4UjKmsi8FlnqJ8yLIfTtQ,Ray Vaughn,176000.0,24804271.0,113.0,6723.7692307692305,502.1701246115227,100.0,COMPLETE,1,2026-10-22 11:02:00,0.75,Medium Confidence,True,False,False,51.79,True,53.56,98,25,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Blxst,@blxst,UCTozeRVDkVwCPXJIUeoN_Xg,BLXST,639000.0,522269179.0,175.0,,1747.8298867521291,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:29,1.0,High Confidence,True,True,False,23.62,True,53.51,99,117,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Monaleo,@TheMonaleo,UCeQk0DthP_Se7hU0S2V_m1w,Monaleo,471000.0,233589142.0,176.0,,2070.2578912418467,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:59,1.0,High Confidence,True,True,False,24.23,True,53.48,100,106,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Summer Walker,@SummerWalker,UCSpNS4dJ8wIScwMqatIdiQw,Summer Walker,2920000.0,3275232745.0,628.0,,329.0917828921748,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:26,1.0,High Confidence,True,True,False,21.31,True,53.4,101,148,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Baby Keem,@babykeem,UCq0Hi7HpCBCNeKpdKKcQqGQ,Baby Keem,1110000.0,803291048.0,33.0,,4779.61481581562,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:46:08,1.0,High Confidence,True,True,False,22.92,True,53.31,102,131,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Big Sean,@bigsean,UCYFyHJMMKd7C8M0_TsleUQA,Big Sean,4530000.0,2674565586.0,247.0,,558.8431614778916,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:03,1.0,High Confidence,True,True,False,20.77,True,53.12,103,159,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Chief Keef,@ChiefKeef,UC0032Wkd3aCT4rRi1YOV3gQ,BigGucci Sosa,2380000.0,1500304905.0,623.0,,1912.1052422210726,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:45,0.6,Medium Confidence,True,True,False,21.62,True,52.88,104,144,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kardinal Offishall,@kardinaloffishall,UCNWrxU_dWo33qIKH99Xb-Yw,KardinalOffishall416,368000.0,582612756.0,190.0,5262.0,58.13723026941238,100.0,COMPLETE,1,2026-10-22 11:22:19,0.94,High Confidence,True,True,False,49.03,True,52.83,105,35,ZOMBIE_CHANNEL,True,"High subscriber base (368,000) with negligible viewership (58.1 views/day)."
+Ms Banks,@MsBanks,UCfDjAp4wQg5BZIh6-q0EqYA,Ms Banks,209000.0,66717746.0,220.0,2171.25,111.94703419006626,81.3152400835073,COMPLETE,1,2026-10-22 11:08:24,1.0,High Confidence,True,True,False,46.18,True,52.68,106,44,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+LL Cool J,@LLCoolJ,UCDG8P-_qq4PuT0DtxzlQlsw,LL COOL J,1070000.0,782882641.0,62.0,,2196.197853626171,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:52,1.0,High Confidence,True,True,False,22.81,True,52.52,107,134,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Freddie Gibbs,@freddiegibbs,UCKAtbNtZNyqBWH1FG1Kvmnw,Freddie Gibbs,573000.0,414997351.0,198.0,,1111.534331915095,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:25,1.0,High Confidence,True,True,False,23.73,True,52.45,108,116,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Vince Staples,@vincestaples,UCDDx4lwzZk5uZBwTunBI2CA,Vince Staples,648000.0,422699754.0,72.0,18669.5,1190.0548173759607,17.203243526026682,COMPLETE,1,2026-10-22 10:37:41,1.0,High Confidence,True,True,False,27.63,True,52.22,109,81,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Darkoo,@Darkoo,UCazgYTvQCD6U6EZObXzY0Tw,Darkoo,345000.0,180051973.0,69.0,,2827.350139391935,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:30,1.0,High Confidence,True,True,False,25.04,True,52.14,110,102,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Destroy Lonely,@destroylonely,UCylvCifeaY7gi1zjhRfpcMg,Destroy Lonely,511000.0,280956900.0,60.0,,2579.944234881745,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:36:50,1.0,High Confidence,True,True,False,24.15,True,52.04,111,110,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kid Cudi,@KidCudi,UCoNPsL8j28yfKRu6e7YUhPA,Kid Cudi,2810000.0,2487181707.0,130.0,,635.4314348175157,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:58:41,1.0,High Confidence,True,True,False,21.37,True,51.84,112,145,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Blac Youngsta,@BlacYoungsta,UCvjgPWQe35Wgw2aLpz9vjQQ,Blac Youngsta,992000.0,490816409.0,255.0,,569.5770587761309,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:21,1.0,High Confidence,True,True,False,22.8,True,51.67,113,135,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Slim Thug,@slimthug,UCP2rf54UzEehScugsx1auFw,Slim Thug,458000.0,301852252.0,266.0,,688.3832984293662,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:16:02,1.0,High Confidence,True,True,False,24.05,True,51.56,114,111,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kaash Paige,@KaashPaige,UCqLcZ9ksQuE3QIf-pNCVSjA,Kaash Paige,628000.0,439270374.0,61.0,5698.0,51.45088042980945,100.0,COMPLETE,1,2026-10-22 11:05:19,1.0,High Confidence,True,True,False,47.33,True,51.19,115,41,ZOMBIE_CHANNEL,True,"High subscriber base (628,000) with negligible viewership (51.5 views/day)."
+LiBand,@LiBand,UCV3vLUKVvGM78ZzBAxgiHRA,LiBand,97800.0,22362264.0,79.0,35876.0,289.5914300052349,100.0,COMPLETE,1,2026-10-22 11:27:27,0.75,Medium Confidence,True,False,False,54.02,True,51.16,116,18,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Flo Milli,@flomilli,UCylw9yLlhFVX_vIdjc6DjGQ,Flo Milli,784000.0,418548631.0,82.0,,1216.5302158988356,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:03,1.0,High Confidence,True,True,False,23.22,True,51.15,117,125,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Yeat,@yeat,UCV4UK9LNNLViFP4qZA_Wmfw,Yeat,1720000.0,1405195230.0,150.0,788390.0,10345.49831521508,-87.8946179654808,COMPLETE,1,2026-10-22 10:37:12,1.0,High Confidence,True,True,False,2.7,True,51.01,118,203,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Rico Nasty,@RicoNasty,UCINBvWZluLuV4VxNH32OO_Q,Rico Nasty,673000.0,232225958.0,315.0,,453.54103456014724,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:00,1.0,High Confidence,True,True,False,23.39,True,51.0,119,124,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Majid Jordan,@MajidJordan,UCiND3wemaDyaKjJAavm-h2A,MAJID JORDAN,341000.0,167567615.0,265.0,372.92,54.20043821375937,100.0,COMPLETE,1,2026-10-22 11:22:11,0.75,Medium Confidence,True,False,False,49.28,True,50.82,120,33,ZOMBIE_CHANNEL,True,"High subscriber base (341,000) with negligible viewership (54.2 views/day)."
+Lloyd Banks,@LloydBanks,UCOKmAISP9lvmyPIbtEELoVQ,Lloyd Banks,622000.0,498483669.0,167.0,,606.4315511261304,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:25,1.0,High Confidence,True,True,False,23.53,True,50.68,121,118,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Skilla Baby,@SkillaBaby,UC4OWd0CnbvaiaozgLZO-L4Q,Skilla Baby,445000.0,327246455.0,318.0,,381.8343744562367,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:28,1.0,High Confidence,True,True,False,24.04,True,50.42,122,112,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Bobby Shmurda,@BobbyShmurda,UClSTuQObWlw56blWZiW-wcw,Bobby Shmurda,3010000.0,1378411472.0,21.0,,1381.510387257916,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:07,1.0,High Confidence,True,True,False,21.3,True,50.12,123,149,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Metro Boomin,@MetroBoomin,UCKC11MOR51CLg4JpYj8jb4g,Metro Boomin,3640000.0,3360591656.0,145.0,,259.44014920209656,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:57,1.0,High Confidence,True,True,False,21.03,True,50.04,124,154,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+De La Soul,@WeAreDeLaSoul,UCngimeRWT1E9ZlasMs-eQSg,WeAreDeLaSoul,331000.0,184406990.0,527.0,6336.111111111111,1955.0871501450217,-52.32342318239582,COMPLETE,1,2026-10-22 11:14:00,0.94,High Confidence,True,True,False,11.9,True,50.0,125,191,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+AJ Tracey,@ajtracey,UCPOW9rO7SqJBfikRKEvbI3Q,AJ Tracey,548000.0,321735777.0,68.0,,1015.1216756109875,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:47,1.0,High Confidence,True,True,False,23.79,True,50.0,125,114,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Coast Contra,@CoastContra,UCFNjjg_9XURYU2IcbfxXv0w,COAST CONTRA,665000.0,117591874.0,169.0,,541.8510605781765,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:50,1.0,High Confidence,True,True,False,23.41,True,49.99,127,121,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Little Big,@littlebig,UCu7TZ_ATWgjgD9IrNLdnYDA,Little Big,7320000.0,4357549154.0,214.0,74299.5,5714.402489857644,-76.74192202856881,COMPLETE,1,2026-10-22 11:23:25,0.75,Medium Confidence,True,False,False,4.41,True,49.89,128,199,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Nafe Smallz,@NafeSmallz,UC77sAm_mEiNRAlXvVAsck4w,Nafe Smallz,199000.0,145949622.0,149.0,,719.1505966901968,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:43,1.0,High Confidence,True,True,False,25.63,True,49.73,129,92,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+JPEGMAFIA,@JPEGMAFIA,UCnAbB39RDMkmkMLigykYvQw,JPEGMAFIA,370000.0,165139463.0,144.0,,617.554447050833,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:26,1.0,High Confidence,True,True,False,24.41,True,49.73,129,104,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Muni Long,@MuniLong,UCI0ID2m2N-kKswd7x9AeCgw,Muni Long,1220000.0,847414175.0,192.0,,269.0630926429883,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:10,1.0,High Confidence,True,True,False,22.48,True,49.51,131,137,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Nettspend,@nettspend,UC6CvS47L6uTuPSPhinE5jKA,Nettspend,200000.0,48426914.0,75.0,,1285.0794181900742,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:34,1.0,High Confidence,True,True,False,25.86,True,49.5,132,87,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Coi Leray,@CoiLeray,UCiHc6oRZnXXZHZlaxbNkfQg,Coi Leray,2160000.0,821927927.0,181.0,20071.666666666668,5481.624921960127,-90.90124721590101,COMPLETE,1,2026-10-22 10:37:21,1.0,High Confidence,True,True,False,1.75,True,49.47,133,204,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Lupe Fiasco,@LupeFiasco,UC-zD8J0RLWy3mNB7EMmT7Rg,Lupe Fiasco,865000.0,649568719.0,125.0,32137.5,990.7196900541903,-27.252045770941564,COMPLETE,1,2026-10-22 10:56:12,1.0,High Confidence,True,True,False,16.67,True,49.28,134,189,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Kash Doll,@kashdoll,UCx5D4Lkkp8aIUBsTfiLpb-g,Kash Doll,856000.0,378710103.0,175.0,90024.4,3392.036383316453,-70.94590625816925,COMPLETE,1,2026-10-22 11:05:37,1.0,High Confidence,True,True,False,6.66,True,49.06,135,195,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Wretch 32,@Wretch32,UCXZwsjh089km2RF9oyuxe3g,Wretch 32,189000.0,137402592.0,137.0,,577.44066707496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:15,1.0,High Confidence,True,True,False,25.68,True,48.95,136,89,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Iggy Azalea,@iggyazalea,UCGtjnDLpKGWKU6xtjB0NeKA,Iggy Azalea,8340000.0,4534036014.0,14.0,,696.6899791771257,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:14,1.0,High Confidence,True,True,False,20.06,True,48.68,137,169,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Shotgun Willy,@ShotgunWilly,UCTg6Jny4X_LteWGccXf596Q,Shotgun Willy,837000.0,352638426.0,58.0,,1531.1275896746533,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:36,0.75,Medium Confidence,True,False,False,23.15,True,48.49,138,127,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Bone Thugs-N-Harmony,@BoneThugsNHarmony,UCjSkdzVdUS1crC89RI2cNWw,Bone Thugs-N-Harmony,2130000.0,1650649014.0,53.0,,381.40366216927714,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:21,1.0,High Confidence,True,True,False,21.72,True,48.45,139,143,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Domani,@Domani,UCOQhX1bB092Z_1D_gEhXgAA,Domani,467000.0,93846379.0,352.0,22579.5,945.0639797976249,-17.77462172939313,COMPLETE,1,2026-10-22 11:21:00,0.75,Medium Confidence,True,False,False,19.73,True,48.44,140,176,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Nemzzz,@Nemzzz,UC3ytAKP00gWDkiOrcKfOwTQ,Nemzzz,771000.0,367474763.0,180.0,27110.75,5901.461975415122,-98.39568141931221,COMPLETE,1,2026-10-22 11:07:13,1.0,High Confidence,True,True,False,0.51,True,48.04,141,209,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Headie One,@HeadieOne,UC6rlSDvtzpYWgKrYnpjoH5Q,Headie One,539000.0,404036865.0,238.0,295625.0,3321.7314892102045,-86.4970228361893,COMPLETE,1,2026-10-22 11:06:52,1.0,High Confidence,True,True,False,3.29,True,47.97,142,202,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Rich Amiri,@RichAmiri,UCoAlpsKqwk1nhC3HgaNmwmw,Rich Amiri,241000.0,140530824.0,91.0,,496.22097498540825,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:37,1.0,High Confidence,True,True,False,25.16,True,47.93,143,99,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Famous Dex,@famousdex,UCdGP_MdTu-4nv8KPe-pr2uw,Famous Dex,886000.0,336436340.0,156.0,,199.65042124388725,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:48,1.0,High Confidence,True,True,False,22.94,True,47.83,144,130,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Giveon,@Giveon,UCkIgbcsXIHz0DW2lqRh4M0g,GIVΔON,3510000.0,2431471052.0,25.0,,2138.5086397313057,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:48,0.6,Medium Confidence,True,True,False,21.12,True,47.71,145,153,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kamaiyah,@kamaiyah,UC--zl6ugn42K16BJ_bPmAOQ,Kamaiyah,110000.0,60682344.0,109.0,,403.54442447340136,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:49,1.0,High Confidence,True,True,False,26.75,True,46.96,146,82,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Pro Era,@PROERA,UC42LFWlZf-ooul-Kghq9DlA,PRO ERA,841000.0,449369891.0,268.0,,232.800468224475,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:26,0.75,Medium Confidence,True,False,False,23.02,True,46.88,147,129,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Three 6 Mafia,@three6mafia,UCa-MexmcInkyWUzyyA3WUTw,Three 6 Mafia,911000.0,866763135.0,38.0,,349.7630813010539,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:29,1.0,High Confidence,True,True,False,22.91,True,46.81,148,132,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ivorian Doll,@IvorianDoll,UCfsQaNOlC5INLmD4z40oYtw,IVORIAN DOLL,208000.0,18290825.0,31.0,,963.8238849177229,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:27,1.0,High Confidence,True,True,False,25.64,True,46.75,149,91,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rae Sremmurd,@RaeSremmurd,UC9iDw30SeRSm18kT98F5iAA,Rae Sremmurd,8950000.0,5333377549.0,115.0,,160.12758435765699,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:50,0.75,Medium Confidence,True,False,False,19.97,True,46.65,150,170,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Landon Cube,@landoncube,UCBCOAI6rmskcEpcjXbj2wSA,Landon Cube,197000.0,38025665.0,83.0,5243.0,30.781415226734726,100.0,COMPLETE,1,2026-10-22 11:22:33,0.75,Medium Confidence,True,False,False,51.16,True,46.49,151,28,ZOMBIE_CHANNEL,True,"High subscriber base (197,000) with negligible viewership (30.8 views/day)."
+Lil Reese,@LilReese,UCZDsx30mTTobhsMczPVRM9A,Lil Reese,211000.0,60161578.0,85.0,,328.6220322123589,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:39,1.0,High Confidence,True,True,False,25.36,True,46.38,152,95,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rich the Kid,@RichTheKid,UCvTEOPrdg8f_mufsqH3VGQw,Rich The Kid,2630000.0,1336789620.0,171.0,3651.0,1954.8993462976443,-98.15515681924984,COMPLETE,1,2026-10-22 11:04:51,1.0,High Confidence,True,True,False,0.01,True,46.38,152,211,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+EST Gee,@ESTGee,UCz_QWRP1UzcV10sfML8Gbxw,EST Gee,981000.0,1424855357.0,121.0,19357.285714285714,2791.584494384478,-94.5687651387039,COMPLETE,1,2026-10-22 11:03:51,1.0,High Confidence,True,True,False,1.03,True,46.29,154,207,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Tink,@OfficialTink,UCZgDQHB5j-Hhey5lRsJbP6Q,Tink ,797000.0,582961809.0,17.0,,1481.1246027566322,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:46,0.75,Medium Confidence,True,False,False,23.22,True,46.29,154,125,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Nelly,@Nelly,UCOnzS9RKEhSvfUCsFbSrJ_A,Nelly,6420000.0,6416097302.0,5.0,,1296.0148129239894,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:24,0.75,Medium Confidence,True,False,False,20.36,True,45.96,156,165,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+IDK,@IDK,UCyzWvqEm4w0HTS6OGemsZCA,idk,240000.0,104549643.0,519.0,,158.5091633512508,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:34,0.75,Medium Confidence,True,False,False,25.06,True,45.95,157,101,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Chris Webby,@ChrisWebby,UCISVviKwSuJLSyLwUKrbP8w,ForTheBurbs,819000.0,894805686.0,668.0,34062.0,711.9989851644756,-48.72497365648051,COMPLETE,1,2026-10-22 11:21:40,0.6,Medium Confidence,True,True,False,11.66,True,45.94,158,192,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Azealia Banks,@AzealiaBanks,UCD4UMQ7oryQQq5gqZStJQ6g,Azealia Banks,680000.0,497522794.0,11.0,,696.1777682099028,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:17,1.0,High Confidence,True,True,False,23.4,True,45.84,159,122,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+DMX,@dmx,UCQcTmBevae2jDeFEZ6VEQPw,DMX,3080000.0,2715459995.0,7.0,,514.6727511953404,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:42,1.0,High Confidence,True,True,False,21.25,True,45.83,160,150,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Chance the Rapper,@chancetherapper,UCeXp3EC97_rUl_e2vgM3gLg,Chance The Rapper,1730000.0,756001617.0,278.0,5087.5,173.86769008555143,-41.357846809982135,COMPLETE,1,2026-10-22 11:04:45,1.0,High Confidence,True,True,False,12.72,True,45.7,161,190,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+City Girls,@CityGirls,UCMKv9a5OeqElzuWy1WOR0kA,City Girls,2040000.0,1109112353.0,77.0,,248.3170123790347,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:28,0.75,Medium Confidence,True,False,False,21.78,True,45.54,162,142,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Slowthai,@slowthai,UCKHvQqJdl2cyPUmcXLFUeaQ,slowthai,416000.0,189327166.0,29.0,,388.50789504839935,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:23,1.0,High Confidence,True,True,False,24.16,True,45.53,163,109,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ghostface Killah,@GhostfaceKillah,UCse6QIKj-dHMWgKSmag8JUA,Ghostface Killah,226000.0,168538226.0,9.0,,1076.1569836043548,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:15,1.0,High Confidence,True,True,False,25.5,True,45.5,164,93,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rowdy Rebel,@RowdyRebel,UCLCcNXq8GZ5xKpG7wz2MzJQ,Rowdy Rebel,299000.0,145730360.0,103.0,,157.6437779444396,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:11,1.0,High Confidence,True,True,False,24.67,True,45.41,165,103,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Duckwrth,@DUCKWRTH,UCqCjmUIKpKe9bjoJKzP3ypA,duckwrth,205000.0,117475259.0,144.0,,130.5021836369795,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:46,1.0,High Confidence,True,True,False,25.33,True,45.27,166,96,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Skepta,@skeptaofficial,UCcfVrE3mmeQZ_RN3u5cUECA,SKEPTA,1010000.0,565913183.0,113.0,8168.666666666667,2289.508131007683,-97.71851507040614,COMPLETE,1,2026-10-22 11:06:32,1.0,High Confidence,True,True,False,0.25,True,45.09,167,210,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Pa Salieu,@PaSalieu,UCf2su0Eljvo9Uya9Ha1bhsA,Pa Salieu,154000.0,42185769.0,124.0,,163.2454593165061,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:26,1.0,High Confidence,True,True,False,25.89,True,45.01,168,86,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Knucks,@Knucks,UCU_8AjoQFl4KglLAVc1yhTg,Knucks,242000.0,119844661.0,111.0,,310.4964967947614,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:16,0.75,Medium Confidence,True,False,False,25.09,True,44.72,169,100,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kenny Beats,@kennybeats,UCApPPpJ4d3ueW38lArwiWoA,Kenny Beats,802000.0,85982807.0,93.0,,260.0984176896025,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:03,0.75,Medium Confidence,True,False,False,23.1,True,44.62,170,128,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Common,@common,UCBGDlQIq1hx5nSTIpWTsGAQ,Common,508000.0,299524031.0,225.0,,85.32669411549671,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:02,0.75,Medium Confidence,True,False,False,23.78,True,43.69,171,115,ZOMBIE_CHANNEL,True,"High subscriber base (508,000) with negligible viewership (85.3 views/day)."
+Bino Rideaux,@binorideaux,UC0c5KVbr5ENnvuSOWVYG_dQ,Bino Rideaux,134000.0,116110016.0,33.0,,524.9578131139592,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:33,0.75,Medium Confidence,True,False,False,26.39,True,43.35,172,84,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kreayshawn,@kreayshawn,UCP4vIL84k78_tAM--K9hPtQ,kreayshawn,353000.0,182347874.0,127.0,,50.250885469099074,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:11,1.0,High Confidence,True,True,False,24.36,True,43.12,173,105,ZOMBIE_CHANNEL,True,"High subscriber base (353,000) with negligible viewership (50.3 views/day)."
+Kalan.FrFr,@kalanfrfr,UCaS2A6-C4J38u7lWZ90ituQ,Kalan. FrFr,159000.0,148620240.0,175.0,1869.5,504.2801392130478,-68.18684591168213,COMPLETE,1,2026-10-22 11:03:37,1.0,High Confidence,True,True,False,8.15,True,43.02,174,194,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+B.o.B,@bob,UCpuvu8mrEO4jxjT6sRwE8tg,B.o.B,1470000.0,2537337150.0,488.0,,24.263792913153335,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:25,0.65,Medium Confidence,False,True,False,22.21,True,42.59,175,139,ZOMBIE_CHANNEL,True,"High subscriber base (1,470,000) with negligible viewership (24.3 views/day)."
+GoldLink,@goldlink,UCLrYAuxT8pJjckotkBgvw1A,GoldLink,614000.0,495682406.0,47.0,,61.400530612862724,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:42,1.0,High Confidence,True,True,False,23.48,True,42.37,176,119,ZOMBIE_CHANNEL,True,"High subscriber base (614,000) with negligible viewership (61.4 views/day)."
+Swae Lee,@SwaeLee,UCUJTvb20oc_15y3DRNvZlEA,Swae Lee,1000000.0,176172059.0,244.0,22342.0,428.68200705423294,-95.2776110317306,COMPLETE,1,2026-10-22 10:59:53,1.0,High Confidence,True,True,False,0.68,True,42.16,177,208,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+NxWorries,@NxWorries,UC33hb9_RLREo8h_Div8eryQ,NxWorries,76500.0,56129770.0,16.0,,664.9911289291866,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:10,0.75,Medium Confidence,True,False,False,27.92,True,42.03,178,79,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Loyle Carner,@LoyleCarner,UCSK1XOrBlCh1D8BPpUg-VvQ,Loyle Carner,175000.0,67735165.0,18.0,,199.41609841161812,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:19,1.0,High Confidence,True,True,False,25.66,True,42.02,179,90,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Maiya The Don,@MaiyaTheDon,UCqSAaO04_0hIu_y2ww8HIGg,Maiya The Don,44100.0,10153004.0,244.0,,47.10717203813847,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:02,1.0,High Confidence,True,True,False,28.42,True,41.92,180,77,ZOMBIE_CHANNEL,True,"High subscriber base (44,100) with negligible viewership (47.1 views/day)."
+Knxwledge,@knxwledge,UCYiSYtOdVvX0M3JnVgBDlwQ,Knx.,193000.0,71744072.0,278.0,25838.0,374.9705952851086,-75.87195457898717,COMPLETE,1,2026-10-22 11:25:13,0.94,High Confidence,True,True,False,5.95,True,41.88,181,196,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+MadeinTYO,@MadeinTYO,UCd8yaXFD449WbtKVN3T6G4g,MadeinTYO,186000.0,111154995.0,131.0,,32.3563632772266,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:00,1.0,High Confidence,True,True,False,25.47,True,41.5,182,94,ZOMBIE_CHANNEL,True,"High subscriber base (186,000) with negligible viewership (32.4 views/day)."
+Big L,@BigL,UClfc5w-snHQh9g_NkM3hfsA,Big L - Fishing Channel,41600.0,7319838.0,172.0,,48.03391073311159,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:34,0.94,High Confidence,True,True,False,28.56,True,40.64,183,74,ZOMBIE_CHANNEL,True,"High subscriber base (41,600) with negligible viewership (48.0 views/day)."
+Westside Gunn,@GriseldaRecords,UCMd41AKqQhGVyEdQAjnzFUg,Griselda Records,210000.0,51888154.0,93.0,,122.15433375006808,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:58,0.6,Medium Confidence,True,True,False,25.28,True,40.47,184,98,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Le$,@steakxshrimp,UCnIkgwlzhtWUnkH7IVn-zwg,Le$,40500.0,76676210.0,71.0,,124.8838517760514,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:16,0.75,Medium Confidence,True,False,False,28.8,True,40.42,185,72,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Wiki,@wikset,UCNqBhMHw4XVzR0mPGb1sqxw,Wiki,40300.0,9695095.0,71.0,,144.45369590014337,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:48,0.75,Medium Confidence,True,False,False,28.86,True,40.12,186,71,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+BJ The Chicago Kid,@bjthechicagokid,UCQfYvnxjucGHJ2QZoNgPd8A,BJ THE CHICAGO KID,159000.0,62758735.0,120.0,,20.756213495007692,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:01,1.0,High Confidence,True,True,False,25.75,True,39.94,187,88,ZOMBIE_CHANNEL,True,"High subscriber base (159,000) with negligible viewership (20.8 views/day)."
+Travis Porter,@travisporter,UC5Vqp4ptZ4jrqUXyk-Ps6RQ,Travis Porter,383000.0,431566903.0,493.0,,6.839644668128885,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:59:29,0.75,Medium Confidence,True,False,False,24.22,True,39.28,188,107,ZOMBIE_CHANNEL,True,"High subscriber base (383,000) with negligible viewership (6.8 views/day)."
+Junglepussy,@junglepussy,UCzyRFjuI6Csk_pYqGkstgCQ,JUNGLEPUSSY,61600.0,11430128.0,40.0,,61.16396113004449,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:07,1.0,High Confidence,True,True,False,27.69,True,39.28,188,80,ZOMBIE_CHANNEL,True,"High subscriber base (61,600) with negligible viewership (61.2 views/day)."
+Dillon Cooper,@TheDillonCooper,UCiIIKrTlCj7dzuJpocuopeg,The Dillon Cooper,126000.0,43139656.0,92.0,,26.10409065057022,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:42,0.94,High Confidence,True,True,False,26.19,True,39.22,190,85,ZOMBIE_CHANNEL,True,"High subscriber base (126,000) with negligible viewership (26.1 views/day)."
+Kaytranada,@KAYTRANADA,UCJwaqVwGHi73m-WQWK3QODw,KAYTRANADA,478000.0,333388777.0,9.0,56946.0,979.1247654131028,-83.70224092040868,COMPLETE,1,2026-10-22 11:19:39,1.0,High Confidence,True,True,False,3.68,True,38.64,191,201,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+DJ Paul,@DJPaulKOM,UC-rRDx7NkObaaHmxEYsYhNQ,DJ Paul KOM,203000.0,91220482.0,615.0,1354.0,360.71279716286176,-98.83517863748591,COMPLETE,1,2026-10-22 11:16:41,0.59,Medium Confidence,False,True,False,0.0,True,38.53,192,212,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Danny Brown,@xdannyxbrownxVEVO,UCeGvYqb1ySghLFTz9DLvIJQ,xdannyxbrownxVEVO,42800.0,60595030.0,40.0,,125.19419534656488,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:46:10,0.6,Medium Confidence,True,True,False,28.66,True,38.08,193,73,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Peezy,@PeezyOfficial,UCwAAwrmGsZeaWveX3JXbt1Q,GHETTO ,329000.0,365797867.0,40.0,5750.0,1291.2065460180559,-92.87465590341397,COMPLETE,1,2026-10-22 11:04:04,0.6,Medium Confidence,True,True,False,1.64,True,37.84,194,205,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Waka Flocka Flame,@WakaFlockaFlame,UCtR2-AA3PJenlI1j3-4mixQ,WakaFlockaFlame,32700.0,27679826.0,115.0,,14.152387830163429,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:40,1.0,High Confidence,True,True,False,29.04,True,37.61,195,70,ZOMBIE_CHANNEL,True,"High subscriber base (32,700) with negligible viewership (14.2 views/day)."
+Fly Anakin,@flyanakin,UCJDOkVhW-P2_gQymglj8zSg,Fly Anakin,13300.0,2963733.0,18.0,,94.22613185172862,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:47,1.0,High Confidence,True,True,False,31.96,True,37.37,196,58,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Pink Siifu,@pinksiifu,UCKt2e1_kJluunXqrmZwg73A,Pink Siifu,26100.0,5948278.0,86.0,,21.120039544563394,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:44,1.0,High Confidence,True,True,False,29.61,True,37.35,197,65,ZOMBIE_CHANNEL,True,"High subscriber base (26,100) with negligible viewership (21.1 views/day)."
+Leikeli47,@Leikeli47,UCQnPkl4Wzw8sJlQnzNapMkw,Leikeli47,48400.0,53840110.0,3.0,,152.90242956286193,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:03,1.0,High Confidence,True,True,False,28.41,True,37.31,198,78,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Robb Bank$,@RobbBanks,UCwe3r6KPaqm4zmU3zcrzNmA,Robb Banks,77200.0,31222153.0,121.0,8349.0,190.18206453885753,-80.76045627376426,COMPLETE,1,2026-10-22 11:23:04,0.94,High Confidence,True,True,False,5.08,True,37.26,199,197,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Sa-Roc,@sarocthemc,UCdqK2Ak_aHHfUP0d9MSGx_g,Sa-Roc,69700.0,11649628.0,292.0,858.0,11.937516893952575,-23.902439024390244,COMPLETE,1,2026-10-22 11:02:29,1.0,High Confidence,True,True,False,20.71,True,37.17,200,160,ZOMBIE_CHANNEL,True,"High subscriber base (69,700) with negligible viewership (11.9 views/day)."
+Monte Booker,@montebooker,UCGOyB6FLU0YJwFxDe7svfSQ,monte booker,43000.0,22392723.0,14.0,,57.87834470615598,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:20:06,1.0,High Confidence,True,True,False,28.5,True,37.12,201,75,ZOMBIE_CHANNEL,True,"High subscriber base (43,000) with negligible viewership (57.9 views/day)."
+Bow Wow,@bowwow,UCbmukh7xJ3YJ5BYcTcUKD3g,bowwow,5740.0,3084923.0,7.0,,193.05873924251233,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:31,1.0,High Confidence,True,True,False,,True,36.92,202,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Mykki Blanco,@mykkiblanco,UCTlUMLdh0Po11lbKdyButOg,Mykki Blanco,23900.0,6315848.0,35.0,,34.56077574483203,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:56,1.0,High Confidence,True,True,False,29.88,True,36.77,203,64,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Moneybagg Yo,@MoneyBaggYo,UCuDKkfUbuUyOrxROp3imOtQ,Nless ENT,24900.0,11462645.0,34.0,,90.20945669106496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:00:13,0.6,Medium Confidence,True,True,False,29.99,True,36.19,204,63,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Zombie Juice,@ZombieJuice,UCKGJCJ9qV-N6RDuTVWSp7GQ,Zombie π€ Juice,20200.0,2452942.0,20.0,,49.43999535791272,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:21,1.0,High Confidence,True,True,False,30.4,True,36.17,205,61,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Doechii,@iamdoechii,UCzhJcrh7fTbyxas7f_VUZCw,Iamdoechii,21300.0,1826360.0,19.0,,35.92250532104261,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 09:35:55,0.94,High Confidence,True,True,False,30.19,True,34.79,206,62,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Cormega,@Cormega,UCDr7PkdYaXaUsEbsbnq9wrA,Cormega,26900.0,10202408.0,21.0,,20.670652652412485,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:46,1.0,High Confidence,True,True,False,29.53,True,34.76,207,66,ZOMBIE_CHANNEL,True,"High subscriber base (26,900) with negligible viewership (20.7 views/day)."
+Cakes da Killa,@cakesdakilla,UC-6mfQSP-XTly0HxJkPUkog,Cakes Da Killa,9930.0,1825568.0,17.0,,23.413367693653573,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:53,1.0,High Confidence,True,True,False,,True,33.44,208,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Zebra Katz,@zebrakatz,UCvLaOMuCZYPb7n3Efm6yhtQ,ZEBRA KATZ,26300.0,7208292.0,63.0,,4.8754878002000295,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:59,1.0,High Confidence,True,True,False,29.53,True,33.42,209,66,ZOMBIE_CHANNEL,True,"High subscriber base (26,300) with negligible viewership (4.9 views/day)."
+billy woods,@backwoodzstudioz,UCsNN9hxtbHNWkN4OkVsPRmg,backwoodz studioz,22700.0,5279179.0,165.0,4803.0,92.34417938104993,-69.22633349351274,COMPLETE,1,2026-10-22 11:25:28,0.6,Medium Confidence,True,True,False,9.28,True,33.22,210,193,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Bishop Nehru,@BishopNehru,UCASDtXB7s9-px9N_2H22Maw,bishop nehru,60000.0,10905546.0,341.0,241.83333333333334,13.44324564449102,-82.37794510565945,COMPLETE,1,2026-10-22 11:26:39,1.0,High Confidence,True,True,False,4.53,True,32.51,211,198,ZOMBIE_CHANNEL,True,"High subscriber base (60,000) with negligible viewership (13.4 views/day)."
+$uicideboy$,@Suicideboys,UC0Ej3md6NdNVAQ6bgFpYLEA,Kerem YΔ±lmaz,2060.0,1892568.0,16.0,,39.18168968379894,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:52,0.6,Medium Confidence,True,True,False,,True,30.88,212,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Drodi,@Drodi,UCn08fOEp4vWi9hYJRSE2HyQ,DRODi,30600.0,17362354.0,65.0,568.6666666666666,63.60425916498281,-93.88146686990048,COMPLETE,1,2026-10-22 11:18:43,0.75,Medium Confidence,True,False,False,1.56,True,30.17,213,206,ZOMBIE_CHANNEL,True,"High subscriber base (30,600) with negligible viewership (63.6 views/day)."
+Dax,@dax,UCbmbOwHmiI6v0y7LrCVnzAA,Dax Newman,13800.0,258573.0,54.0,,6.147743750330002,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:21:26,0.69,Medium Confidence,True,False,False,31.19,True,30.11,214,59,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Young Dolph,@youngdolph,UCuVMjVzveBK9tGKnUO3qofA,Starlife T.V.,60.0,6697.0,47.0,46.333333333333336,0.9570111319047332,100.0,COMPLETE,1,2026-10-22 11:00:06,0.6,Medium Confidence,True,True,False,,True,29.89,215,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Dr. Dre,@drdre,UC-b8dfnUFzTPMw3P96aYJ5Q,drdreaftermath1,255.0,355824.0,1.0,,62.506057890114086,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:18,0.94,High Confidence,True,True,False,,True,28.19,216,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Babyface Ray,@BabyfaceRay,UCsirOC1PMaUbun_kcTZWYIg,Triple3,1140.0,598642.0,354.0,,0.3078842296286496,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:04:01,0.6,Medium Confidence,True,True,False,,True,27.68,217,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Tion Wayne,@TionWayne,UCniE_Mw3sM-RWymBS5YUFpg,Tion Wayne,14500.0,109610.0,3.0,,9.672503343950867,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:10,1.0,High Confidence,True,True,False,31.08,True,27.66,218,60,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Mike G,@MikeG,UCHOCaw0vJzbyjRCsITk6Esg,Mike G.,1540.0,1016071.0,152.0,,0.38080115108093193,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:03:02,0.75,Medium Confidence,True,False,False,,True,27.48,219,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Nas,@nas,UC5SAXwIWWMQu4l6Dy1II0Vw,NYCNastyNas,1330.0,505819.0,7.0,,13.87547062236042,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:54:58,0.69,Medium Confidence,True,False,False,,True,27.02,220,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Redman,@redman,UCR7shDso1IKq_6GqlAYa2QA,γ¬γγγγ³ REDMAN,312.0,349916.0,192.0,,0.6241817838287901,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:32,0.75,Medium Confidence,True,False,False,,True,26.98,221,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Anthony Hamilton,@AnthonyHamilton,UC9xiUG5vNVq8zP6zWqkWXlA,anthonyhamilton,972.0,230864.0,14.0,,2.8888047945946966,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:04,1.0,High Confidence,True,True,False,,True,26.16,222,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Kano,@TheKano,UC5m0MNzd8UrlaLQ592IlboA,TheKano,1360.0,378631.0,97.0,,0.03286884875305254,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:39,0.69,Medium Confidence,True,False,False,,True,25.23,223,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Classified,@classified,UCedXPEOU39D5aW2JkZt74lA,classified,52.0,167791.0,165.0,,0.2672978666681774,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:21:59,0.75,Medium Confidence,True,False,False,,True,24.74,224,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ghetts,@Ghetts,UCOX0jCB0lR8FtyPYle8EqyA,ghetts,92.0,148133.0,1.0,,19.589880317144,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:07:29,1.0,High Confidence,True,True,False,,True,24.7,225,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Chamillionaire,@chamillionaire,UCRsbxjPGwyNdBptqXV7Pv-A,Chamillionaire,224.0,101447.0,4.0,,3.596962738661918,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:59,1.0,High Confidence,True,True,False,,True,23.16,226,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ja Rule,@JaRule,UCNT16tMLjZ-UzH7eiF2ql5g,jarule,22.0,88294.0,20.0,,0.6100030603364249,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:20,1.0,High Confidence,True,True,False,,True,21.77,227,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Noname,@noname,UC9vLO5n3t353gLruylt5rqA,noname,150.0,6199.0,39.0,,0.016646111628975602,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:20,0.75,Medium Confidence,True,False,False,,True,21.15,228,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rick Ross,@RickRoss,UCbTWNRyvFpcyybbJlFAsbUQ,rickross,106.0,12359.0,9.0,,0.18501933819735886,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:58,1.0,High Confidence,True,True,False,,True,19.89,229,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Armani Caesar,@ArmaniCaesar,UCTdbClj8Uz0FTZINKIJRP2A,Armanicaesar,279.0,10422.0,4.0,,0.57095562093227,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:32,1.0,High Confidence,True,True,False,,True,19.82,230,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Che Noir,@CheNoir,UCCPDWycF81zcmT33-g4UVDg,Griot David,65.0,41001.0,14.0,,0.5029355705295357,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:26,0.6,Medium Confidence,True,True,False,,True,19.67,231,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Action Bronson,@ActionBronson,UCocSg2BVl-dzF6Bqu4AGfOw,Domino Master,57.0,3389.0,34.0,,0.03162422947307707,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:49,0.6,Medium Confidence,True,True,False,,True,19.5,232,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Pop Smoke,@PopSmoke,UC9IaYM5dD5lx8vIa-H9bGsQ,Pop Smoke,136.0,2500.0,10.0,,0.04179247042715218,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:04,1.0,High Confidence,True,True,False,,True,19.39,233,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+The Game,@thegame,UCamcIB1XOOWcYsZQh2luIfQ,thegame,233.0,1184.0,13.0,,0.017854485736235434,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:15,0.75,Medium Confidence,True,False,False,,True,18.93,234,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Tommy Cash,@TOMMYCASH,UCfTT_8NBApXFDZOBiMpNMxw,tommycash,16.0,10005.0,6.0,,0.26199285785242904,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:23:22,1.0,High Confidence,True,True,False,,True,18.05,235,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Chaz French,@chazfrench,UCri50zksjHpiSGjyVqZjMXQ,Chaz French,4.0,1754.0,17.0,,0.015701076269775623,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:11,1.0,High Confidence,True,True,False,,True,17.99,236,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Dej Loaf,@dejloaf,UCC-zCFLurKWJq0wfTKcZK3g,DeJ Loaf,62.0,3019.0,1.0,,1.0395282121467389,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:40,1.0,High Confidence,True,True,False,,True,17.26,237,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+T.I.,@TI,UCqwttHwUNgg3pnqIxBBMZiA,TΜI,2210.0,279.0,1.0,,0.04218837929766944,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:48,1.0,High Confidence,True,True,False,,True,17.13,238,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Rakim,@TheGodRakim,UCxPnezcMwtaTqfXqZJEY6kw,RAKIM,36.0,1203.0,1.0,,1.410869450330989,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:13:40,1.0,High Confidence,True,True,False,,True,17.03,239,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Pastor Troy,@PastorTroy,UC4iK3jxieU6wf8ZMP6ct2pQ,pastortroy,1.0,6943.0,10.0,,0.09281360934060737,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:44,1.0,High Confidence,True,True,False,,True,17.03,239,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Paul Wall,@PaulWall,UCh4T0pQonIYPLMZpAWmkgbw,Paul Wall,410.0,3818.0,1.0,,0.5426765099541483,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:55,0.75,Medium Confidence,True,False,False,,True,16.98,241,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+The Alchemist,@alchemist,UCWOyFeAjY-h4zOi1Dq6H1Ig,alchemist,23.0,441.0,5.0,,0.05865740005851329,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:19:31,0.94,High Confidence,True,True,False,,True,16.3,242,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Bia,@PrincessBia,UCtGeAD1nHdttKrDilQYH3aA,Bianca Ferreira Santos,4.0,1280.0,9.0,,0.11790554879623397,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:22,0.69,Medium Confidence,True,False,False,,True,15.91,243,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Hodgy Beats,@hodgy,UCQU_mRYw78qdQ5Ro0iItwqw,Hodgy,14.0,6749.0,1.0,,0.9171673494414561,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:02:58,0.69,Medium Confidence,True,False,False,,True,15.39,244,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Tay Keith,@TayKeith,UCxnVohRp5AhAHPyZfhtv2mg,taykeith,6.0,3302.0,1.0,,0.7093204359509626,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:19:09,1.0,High Confidence,True,True,False,,True,15.37,245,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Black Thought,@BlackThought,UCE8DuVpxTvACnF6P5NpRnNA,Blackthought,6.0,1960.0,2.0,,0.3261482022399735,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:09,1.0,High Confidence,True,True,False,,True,15.36,246,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Outkast,@outkast,UC_EmR_tnB5Sgtfb6fi-Fe5g,outkast,57.0,1405.0,1.0,,0.18457493818359597,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:38,0.75,Medium Confidence,True,False,False,,True,14.79,247,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Princess Nokia,@PrincessNokia,UC6Cs4PgUqJYu-ColJkgQKTA,princessnokia,1.0,4846.0,1.0,,0.7532605767526876,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:04,1.0,High Confidence,True,True,False,,True,14.73,248,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Fat Nick,@fatnick,UC499HnWevdhXkM3QdMNOvAg,fatnick,4.0,2676.0,1.0,,0.35395118824280625,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:46,1.0,High Confidence,True,True,False,,True,14.49,249,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Southside,@Southside808MAFIA,UCZWB7Yt1LROd-4vK3WMlxEA,Southside,2.0,379.0,4.0,,0.08481547952790817,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:51,0.75,Medium Confidence,True,False,False,,True,14.03,250,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Petey Pablo,@PeteyPablo,UCevLDRQ1iyaVt7uOh4MB-kw,peteypablo,0.0,1386.0,2.0,,0.10464634209418122,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:15:50,1.0,High Confidence,True,True,False,,True,13.49,251,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Scarface,@BrotherMob,UC4A1VGe3DUe91rQSeLlAe9Q,Brothermob,6.0,973.0,2.0,,0.08279633922351967,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:56:40,0.6,Medium Confidence,True,True,False,,True,13.45,252,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+The Underachievers,@TheUnderachievers,UCphsrqhHhxrrRMMRgKE4ytQ,THEUNDERACHIEVERS,1.0,1696.0,2.0,,0.12017241488918179,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:13,0.75,Medium Confidence,True,False,False,,True,13.35,253,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Real Boston Richey,@RealBostonRichey,UCry9nlM1ohh3mkzUHIYXz8w,Amarizay Media,0.0,12.0,10.0,,0.0008541561559277939,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:18:12,0.6,Medium Confidence,True,True,False,,True,13.14,254,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Beanie Sigel,@BeanieSigel,UCgBnyQ5wQ3mP64YJwCB_FXg,Marvin F,6.0,100.0,2.0,,0.027273053844270756,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:13,0.6,Medium Confidence,True,True,False,,True,12.64,255,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Angel Haze,@AngelHaze,UC4K96jLWz4iTNLfgz43kuFQ,darksperm arias,2.0,926.0,1.0,,0.12665540339191148,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:20,0.6,Medium Confidence,True,True,False,,True,12.26,256,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Jadakiss,@RealJadakiss,UCFsXGOBWsnTbc1h76DBjuwQ,Jadakiss,0.0,3.0,2.0,,0.026183102898886618,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:57:05,1.0,High Confidence,True,True,False,,True,11.38,257,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Arin Ray,@ArinRay,UCWPgtckk3wJvj0Vq00vA7kw,arinray,0.0,164.0,1.0,,0.02464932905303363,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:57,0.75,Medium Confidence,True,False,False,,True,11.2,258,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Token,@tokenhiphop,UCDtQWudSjXfxyvnsdVyl4nQ,tokenhiphop,1170000.0,337749832.0,689.0,28339.0,5612.428526848735,100.0,COMPLETE,1,2026-10-22 11:21:08,0.34,Low / Emerging,False,False,False,45.85,False,59.23,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Dave,@Santandave,UC5-cg5RahETrjGu-r8zjYCQ,Santan Dave,2560000.0,1586015443.0,28.0,,56204.57596454707,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:06:29,0.34,Low / Emerging,False,False,False,23.01,False,52.14,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+ChlΓΆe,@chloe,UCha4JJMZFxiDM_w_xiinn9g,ChloΓ©,71100.0,5368205.0,264.0,2749.88,272.7934630400919,100.0,COMPLETE,1,2026-10-22 11:24:16,0.0,Low / Emerging,False,False,False,55.39,False,44.32,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Halle,@halle,UCRY85L378qsvQf1cYhBPrzg,Halle,575000.0,101709894.0,34.0,,917.2185019484491,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:24:20,0.4,Low / Emerging,False,False,False,23.7,False,42.28,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Belly,@Belly,UCApVgpSBW-oKTHNBz4w9Lrg,Belly,426000.0,309186854.0,160.0,,227.17220253426552,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:22:02,0.4,Low / Emerging,False,False,False,24.09,False,41.97,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Armand Hammer,@ArmandHammer,UCQFrMmsCQ2gs2Q-FFZOMJRQ,ARM & HAMMER Baking Soda,97700.0,153467784.0,283.0,1013.8,6151.145504372419,-97.15119089100453,COMPLETE,1,2026-10-22 11:25:36,0.35,Low / Emerging,True,False,False,5.66,False,41.32,,,ACTIVE_HEALTHY,False,Consistent release schedule and steady audience engagement.
+Saba,@sabapivot,UCSpnyV4h2tmp7G_mwyjrUMg,Saba Pivot,181000.0,80123988.0,202.0,,116.44493630123574,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:37:45,0.34,Low / Emerging,False,False,False,25.56,False,39.44,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Lord Apex,@LordApex,UCDZUyjSZSTuCPTJh0RhkOKQ,LawdAPEX,67900.0,15244987.0,63.0,,37.26264026840499,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:50,0.25,Low / Emerging,False,True,False,27.45,False,33.22,,,ZOMBIE_CHANNEL,True,"High subscriber base (67,900) with negligible viewership (37.3 views/day)."
+2Pac,@2pac,UCyIDWVf-nwdO6yvGHw_53Qw,Tupac Shakur,17900.0,3286053.0,9.0,,64.89168902622308,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 10:55:15,0.35,Low / Emerging,True,False,False,30.83,False,30.79,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Tony Yayo,@TonyYayo,UCy_qlXYa5fOx63lbr960pSg,Tony Tony,10700.0,5879528.0,41.0,,19.437579112507365,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:14:29,0.25,Low / Emerging,False,True,False,32.03,False,29.84,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Buddy,@Buddy,UCHF2jvB2rQl4ouuO0N4kCbA,Buddy,8250.0,217465.0,84.0,,1.7870456114477415,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:01:50,0.4,Low / Emerging,False,False,False,,False,26.54,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Mist,@mistmusic,UCiAucC06h7VA6TMNV1-wLYg,Mist Music,1160.0,118081.0,18.0,,5.672971227643788,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:08:03,0.4,Low / Emerging,False,False,False,,False,24.56,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Heems,@himanshusuri,UCHk08OSG9C7TFRxCsAWdSXA,Himanshu Suri,57.0,10806.0,16.0,,0.4163710418279303,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:02,0.35,Low / Emerging,True,False,False,,False,18.23,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Omen,@omen,UCq8wK_22WcV0R1IYq2Uc4Kg,Ledge,100000.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:02:11,0.6,Medium Confidence,True,True,False,,False,15.03,,,ZOMBIE_CHANNEL,True,"High subscriber base (100,000) with negligible viewership (0.0 views/day)."
+JT,@TheGirlJT,UCmYY4-4XfbpX5SxV2AXk6qw,THE_BLESSING,3.0,1132.0,2.0,,1.8786181228964818,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:05:31,0.25,Low / Emerging,False,True,False,,False,14.27,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Flying Lotus,@flyinglotus,UC6An_wEqusDnouBmzQtHheA,Flying Lotus,3590.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:49,1.0,High Confidence,True,True,False,,False,14.12,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Freeway,@PhillyFreeway,UCe-W3ZRbzDFspmcHIv4kvVg,PHILLY FREEWAY,20.0,110.0,1.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:16,0.94,High Confidence,True,True,False,,False,13.46,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Mike Jones,@MikeJones,UCccVLcC_mXMUQYtsWyeR8Og,mikejones,163.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:06,1.0,High Confidence,True,True,False,,False,12.07,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Yung Manny,@yungmanny,UCq2dIggerIf3yUptEyxyucg,Ω,2430.0,0.0,0.0,,0.0,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:31,0.35,Low / Emerging,True,False,False,,False,12.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Boi-1da,@boi1da,UC26B3MXy4S7Tj3YPpWHWvHg,boi1da,157.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:20,1.0,High Confidence,True,True,False,,False,12.04,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+SoFaygo,@imsofaygo,UCWr3KwXfuMyMIn_in0aEp0g,SoFaygo,135.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:05:14,1.0,High Confidence,True,True,False,,False,11.94,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Jay Rock,@JayRock,UChOFcVvoYzK6mKBNm-OHOGg,jayrock,88.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:30,1.0,High Confidence,True,True,False,,False,11.66,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Joyner Lucas,@JoynerLucas,UCBCeu9ddOBTY657g86rs3XA,joyner lucas,68.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:59:03,1.0,High Confidence,True,True,False,,False,11.49,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Iayze,@iayze,UCCSkzoIUxT2UO3O7e49CR6g,AkimaBOY,13.0,125.0,1.0,,0.033036155076491776,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:17:49,0.25,Low / Emerging,False,True,False,,False,11.46,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Lil Dude,@lildude,UCHoAfN5pPN5zyv1iFcwpJnQ,Colin,3.0,212.0,1.0,,0.15657540775268505,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:27:43,0.35,Low / Emerging,True,False,False,,False,11.4,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Ice Cube,@IceCube,UCt-Zv4EjvQBMoY8ohZ7361Q,icecube,51.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:55:21,1.0,High Confidence,True,True,False,,False,11.3,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Big Daddy Kane,@BigDaddyKane,UCZYAK-IDwg8cYV0ZNtdXXkg,bigdaddykane,44.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:13:43,1.0,High Confidence,True,True,False,,False,11.21,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Chip,@OfficialChip,UC0XCesM2KjAJXuaZwJqTmVw,Chip,290.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:08:11,0.4,Low / Emerging,False,False,False,,False,10.96,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Dreezy,@dreezy,UC9wXtR39GhbYMdjc9maJCPQ,dreezy,26.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:05:43,1.0,High Confidence,True,True,False,,False,10.87,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+E-40,@e40,UCUipCeRRkBrgc7i9Nj8eFNg,e40,64.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:43,0.65,Medium Confidence,False,True,False,,False,10.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Osamason,@osamason,UCi070EeStoEFw7qmRuDsEPA,osamason,18.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:30,1.0,High Confidence,True,True,False,,False,10.63,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Ice Spice,@IceSpicee,UCg_2uXqIYOI5gfO3k7lS1RQ,Icespicee,14.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:57,0.94,High Confidence,True,True,False,,False,10.35,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Snak The Ripper,@snaktheripper,UCA5vTxSaCAtMJ4urgXczT5w,SNAKTHERIPPER,9.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:21:50,1.0,High Confidence,True,True,False,,False,10.21,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Earl Sweatshirt,@earlsweatshirt,UCWZNQjbzof4ETDHVPOkJ-LA,EarlSweatshirt,8.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:02:53,1.0,High Confidence,True,True,False,,False,10.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+U-God,@UGod,UCQ8RfOm09o66EgNQ9oAWsUA,UGOD,7.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:57,1.0,High Confidence,True,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+ASAP Ferg,@asapferg,UCUj7iYGlyUpk1QRJbB1BbIw,ASAP Ferg,24.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:16,0.65,Medium Confidence,False,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Unknown T,@UnknownT,UC_yOn48nwI4-5zW_NNrRefQ,unknownT,7.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:02,1.0,High Confidence,True,True,False,,False,10.06,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Kankan,@kankan,UCoP0jKakdCTaWEoZOfIMHRQ,kankan,10.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:45,0.75,Medium Confidence,True,False,False,,False,9.76,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Big Pun,@BigPun,UCP0bFJYf8QC8MpgnPMROEGw,bigpun,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:36,1.0,High Confidence,True,True,False,,False,9.74,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Lil Xan,@lilxan,UCoquPm0tiGrOCOU-enQ-qGQ,lilxan,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:36,1.0,High Confidence,True,True,False,,False,9.74,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+G-Eazy,@GEazy,UCKv91xwk4M7AJSqNPeRh2rw,Baller Lyrics,16.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:49,0.6,Medium Confidence,True,True,False,,False,9.71,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Elucid,@elucid,UCZHhKEmLo3qTO3EX5-WgEbw,loki,0.0,25.0,1.0,,0.004701371234536349,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:25:32,0.35,Low / Emerging,True,False,False,,False,9.69,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+CJ Fly,@flyhighteam,UCtbXwhkQT8tLmiSjt6bJ8BA,Fly High,1.0,11.0,1.0,,0.011986903154848436,0.0,CATALOG_ACTIVE_NO_RECENT_UPLOAD,1,2026-10-22 11:26:36,0.25,Low / Emerging,False,True,False,,False,9.66,,,CATALOG_EVERGREEN,False,Strong passive catalog views despite release pause.
+Sada Baby,@SadaBaby,UC_Y8JEw1kegRagyGcsvuhug,Sada Baby,3.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:23,1.0,High Confidence,True,True,False,,False,9.6,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Too $hort,@tooshort,UChjOFNGG5xm9eR9lN3X-lhA,tooshort,11.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:47,0.6,Medium Confidence,True,True,False,,False,9.5,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+D-Block Europe,@DBlockEurope,UCf2zm35V7sOu6xqpsLGApyw,D Block Europe,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:32,1.0,High Confidence,True,True,False,,False,9.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+GloRilla,@GloRillaOfficial,UCxA369Q3PQetW1_EHzT1jyA,GloRilla Official,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:56,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Takeoff,@TakeoffYRN,UCL_75QAVD7FWmKxiuzez0Jg,TakeOff,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:59:47,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Young Adz,@YoungAdz,UC9E_-3b3bNd1bPHJ3k5NT1g,youngadz,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:35,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Hunxho,@Hunxho,UCaDby8c3cNu_4KTLRZHiBsw,Hunxho,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:17,1.0,High Confidence,True,True,False,,False,9.13,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+G Perico,@GPerico,UC-I9BB2qgwfgV79Pi-3UnMw,pedro picapiedra,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:25,0.6,Medium Confidence,True,True,False,,False,8.97,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+TrDee,@TrDee,UCxCiUUnbAaKtAyH17kUxVig,trdee,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:59,0.75,Medium Confidence,True,False,False,,False,8.93,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+StanWill,@StanWill,UCXtSW6bhRpaxTI2fBO4HX2g,Stan Williams,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:55,0.69,Medium Confidence,True,False,False,,False,8.82,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+42 Dugg,@42Dugg,UCjb762-ISoKEN2vaWDQTBMA,42dugg,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:54,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Dirtbike LB,@DirtbikeLB,UCABR1s2XPINNv_U_-PGY0CQ,DirtbikeLB,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:07:38,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Kool A.D.,@koolad,UC5c1wjl80-w6hf7fSuMylkw,koolad,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:05,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Das Racist,@dasracist,UCIFAZqUwJSE83N-1lvMmEpg,Das Racist,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:08,1.0,High Confidence,True,True,False,,False,8.67,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+A$AP Rocky,@asvpxrocky,UCQvBJ3KsFv7rmdBb6m2yBZw,asvpxrocky,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:36:19,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+A Tribe Called Quest,@ATCQ,UCvOHPF-DN1y9s_Tm6x2bRuA,Cheese Lover 67,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:14:03,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+RMC Mike,@RmcMike,UCHG1_qTaCaSxcmnrtA9nlJA,Regina McMichael,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:14,0.6,Medium Confidence,True,True,False,,False,8.65,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Z-Ro,@TheRealZRo,UCQK0157RABjLC3ZN08tT9wg,TheRealZRo,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:10,0.59,Medium Confidence,False,True,False,,False,8.63,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+JID,@JIDsv,UCtutsNr3hicMg4uwbv9YzYQ,jidsv,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 09:35:56,0.69,Medium Confidence,True,False,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+B.G.,@BGMtH,UCJ5RW38548BAovbpKtcsXTQ,BGMTH,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:15:37,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+AminΓ©,@heyamine,UCmEZ_XWUuac1G3wfO8kq0Lg,Hey Amine,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:01:38,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Larry June,@LarryJuneTFM,UCKG9RcBxRNrQXccJMpk4iCQ,LarryjuneTFM,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:03:19,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Jme,@JmeBBK,UC3zrGtvr6duMGxamLI-Yfow,jmebbk,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:06:35,0.69,Medium Confidence,True,False,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Giggs,@GiggsOfficial,UCBQ6UIO1JAyYqzxlQIuZKuA,GiggsOfficial,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:08:18,0.94,High Confidence,True,True,False,,False,8.57,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+YG,@4hunnid,UCNGY-0d3PT2anaC81YUI5PQ,kat,4.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:34,0.35,Low / Emerging,True,False,False,,False,8.48,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Ludacris,@Ludacris,UCiRh4A7TnKMCbQcIK91ZXDA,im back,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:55:44,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Slick Rick,@SlickRickTheRuler,UCxRHFoHJmLj0YJioh-XNDuA,Richard J Fury,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:13:46,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Big Flame,@bigflame,UC5IGsTgwhYceqkb-fh0eliQ,γγΌγ!?,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:46,0.6,Medium Confidence,True,True,False,,False,8.4,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Payroll Giovanni,@payrollgiovanni,UCGb6eqQpk2PXL1IF5IZnqYg,Payroll Giovanni,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:04:29,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Paris Texas,@paristexas,UCVOXWwOI8OJV2jRT0Zc_hlQ,paristexas,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:20:29,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Spillage Village,@spillagevillage,UCbNegc_Y69GOQwnjBdTKvSw,SpillageVillage,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:20:46,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Phil Ade,@philade,UCoPamDUcoGEmoCn_xPLGQwQ,Philade,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:13,0.75,Medium Confidence,True,False,False,,False,8.24,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Wale,@wale,UCrcOEJR2M83DCO01aeDHeeQ,Wall,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:58:06,0.35,Low / Emerging,True,False,False,,False,8.18,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+dvsn,@dvsndvsn,UCQt3GeG337Cb-QGVH5NRO0w,Dvsn Dvsn,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:13,0.69,Medium Confidence,True,False,False,,False,8.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Ratking,@ratkingnyc,UCBS0yBTQxxBv6UMat-DP1tQ,Rat King NYC,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:26:51,0.69,Medium Confidence,True,False,False,,False,8.14,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Wheezy,@WheezyOuttaHere,UCP8aia-sQQqsL_aPjQcLciA,WHEEZY,1.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:19:13,0.4,Low / Emerging,False,False,False,,False,8.04,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+GZA,@TheGeniusGZA,UCEoPurCFRVmlMKbwBVlLZEw,Dale DaSilva,2.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:56:22,0.25,Low / Emerging,False,True,False,,False,7.99,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Future,@FutureOfficial,UCq0QYvEbA-VBfoXqfZM1euQ,TΓ‘o Office ,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:35:21,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Cardi B,@iamcardib,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Young Thug,@youngthugonline,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+DaBaby,@DaBabyOfficial,UCwhXK-tgApWwJc-rQNCghdQ,Walter ,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 10:36:37,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Pusha T,@pushat,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Smino,@Sminoofcl,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Isaiah Rashad,@IsaiahRashad,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Jay-Z,@JayZ,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Jeezy,@jeezy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Talib Kweli,@TalibKweli,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Raekwon,@Raekwon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Bun B,@BunBofUGK,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Twista,@twista,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Cam'ron,@mr_camron,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Styles P,@stylesp,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Chingy,@Chingy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Soulja Boy,@SouljaBoyTellem,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Kool G Rap,@KoolGRap,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+KRS-One,@KRSOne,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+The Roots,@theroots,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Young Buck,@buckmentality,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Inspectah Deck,@InspectahDeck,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Masta Killa,@MastaKilla,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Killah Priest,@KillahPriest,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Krayzie Bone,@KrayzieBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Layzie Bone,@LayzieBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Bizzy Bone,@BizzyBone,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Mannie Fresh,@MannieFresh,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Big Pokey,@BigPokey,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Devin the Dude,@DevinTheDude,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Project Pat,@ProjectPat,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Juicy J,@juicyj,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Schoolboy Q,@ScHoolboyQ,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Ab-Soul,@AbSoul,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Hopsin,@Hopsintv,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Quavo,@QuavoHuncho,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Slim Jxmmi,@SlimJxmmi,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Rich Homie Quan,@RichHomieQuan,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Key Glock,@KeyGlock,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Yo Gotti,@yogottivideos,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Kevin Gates,@kevingates,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Boosie Badazz,@boosiebadazz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+King Von,@KingVon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Trippie Redd,@TrippieRedd,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Ski Mask the Slump God,@SkiMaskTheSlumpGod,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Cordae,@cordae,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Deante' Hitchcock,@DeanteHitchcock,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Mick Jenkins,@mickjenkins,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Rome Streetz,@RomeStreetz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Conway the Machine,@WHOISCONWAY,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Benny The Butcher,@BennyTheButcher,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Boldy James,@BoldyJames,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Roc Marciano,@rocmarciano,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Maxo Kream,@MaxoKream,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Big K.R.I.T.,@BigKRIT,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Curren$y,@currensy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Smoke DZA,@SmokeDZA,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Jay Worthy,@JayWorthy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Veeze,@veeze__,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+YN Jay,@YNJayCoochieMan,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Bfb Da Packman,@BfbDaPackman,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Fredo Santana,@FredoSantana,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Jay Critch,@JayCritch,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+SSGKobe,@ssgkobe,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Saweetie,@saweetie,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Yung Miami,@YungMiami,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Tierra Whack,@TierraWhack,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Brooke Candy,@BrookeCandy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Stormzy,@StormzyTV,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Dizzee Rascal,@dizzeerascal,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Aitch,@AitchOfficial,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Digga D,@DiggaD,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+K-Trap,@ktrap_official,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+M Huncho,@mhuncho,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Nines,@Nines,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Potter Payper,@PotterPayper,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Rimzee,@Rimzee,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+MoStack,@MoStack,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Stefflon Don,@stefflondon,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Summrs,@summrs,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+BabyTron,@BabyTron,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Luh Tyler,@luhtyler,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Rob49,@Rob49,UCI8kw6HS4-E3tnyl5-7SFlg,robofox,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:24,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Hit-Boy,@HitBoy,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Westside Boogie,@westsideboogie,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Tom MacDonald,@AllHailTomMacDonald,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Merkules,@Merkules,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Night Lovell,@NightLovell,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Lil Skies,@lilskies,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Smokepurpp,@smokepurpp,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Lil Pump,@lilpump,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Xavier Wulf,@TheHollowSquad,UCI8TtbCN45bwg7LlX6B0nVQ,hollowsquad,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:22:59,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Chris Travis,@WaterBoyz,UCXOKvQXx7h1QYrR52PzqmUA,waterboyz,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:23:01,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Yung Lean,@yunglean,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Bladee,@bladee,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Ecco2k,@ecco2k,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Thaiboy Digital,@thaiboydigital,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+BBNO$,@bbnomula,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+JhenΓ© Aiko,@JheneAiko,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Tinashe,@Tinashe,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Brent Faiyaz,@brentfaiyaz,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Lucky Daye,@LuckyDaye,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Quelle Chris,@quellechris,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Open Mike Eagle,@OpenMikeEagle,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Moor Mother,@MoorMother,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Flatbush Zombies,@TheGloriousDead,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Meechy Darko,@MeechyDarko,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Kirk Knight,@kirkknight,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Nyck Caution,@nyckcaution,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Fat Trel,@FatTrel,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+NoCap,@NoCap,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Rylo Rodriguez,@RyloRodriguez,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Q Da Fool,@qdafool,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Goonew,@goonew,,,,,,,,,FAILED_LOOKUP,0,,0.6,Medium Confidence,True,True,False,,False,7.98,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Kasher Quon,@kasherquon,UCz4vFlS1BzT-KpYdlTRUT1A,David Margineantu,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:27:54,0.6,Medium Confidence,True,True,False,,False,7.98,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+ScarLip,@ScarLip,UCFUH5T1ddGVbha9otxp6rFg,pdc,5.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:24:06,0.0,Low / Emerging,False,False,False,,False,7.89,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Lil Baby,@LilBaby,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+EARTHGANG,https://www.youtube.com/@EarthgangOfficial,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+UGK,@UGKfilmz,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Cassidy,@CASSIDY_LARSINY,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Mobb Deep,@mobbdeep,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Havoc,@HavocOfMobbDeep,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+AZ,@QuietMoneyAZ,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Juvenile,@Juvenile,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Mystikal,@Mystikal,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+David Banner,@DavidBanner,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Lil Keke,@DonKeKe,UCHx6MENYjoqxP38F9SYFNRA,Don keke,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:16:27,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+NBA YoungBoy,@nba_youngboy,UCXkT3vaYMF80LKZIMRLkHEg,YoungBoy Never Broke Again,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:00:36,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Reason,@reasontde,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Bas,@fiendbassy,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Cozz,@cody_macc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Lute,@lute_west9,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+100k Track,@100kTrack,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Foolio,@JulioFoolio,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Chika,@chika,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Fredo,@Fredo,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+BashfortheWorld,@bashfortheworld,UChTS28SfhsV0AORN80S6crw,cooler ice,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:18:48,0.35,Low / Emerging,True,False,False,,False,7.55,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+Madlib,@MadlibInvazion,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Sango,@sango,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+AG Club,@agclub,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Grip,@Grip_SS,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Cal Scruby,@CalScruby,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Pouya,@pouya,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+BONES,@TeamSESH,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Oshun,@oshunnyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Erick the Architect,@erickarchitect,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Hak,@haknyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Sporting Life,@sportinglife,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Despot,@despotnyc,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Shy Glizzy,@ShyGlizzy,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+KrispyLife Kidd,@krispylife_kidd,,,,,,,,,FAILED_LOOKUP,0,,0.35,Low / Emerging,True,False,False,,False,7.55,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Trae tha Truth,@traethatruth,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+6ix9ine,@Tekashi69,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Autumn!,@twinuzis,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+K-os,@kosinfluence,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+SpaceGhostPurrp,@SpaceGhostPurrp,,,,,,,,,FAILED_LOOKUP,0,,0.25,Low / Emerging,False,True,False,,False,7.37,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Mos Def,@yasiinbey,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Prodigy,@ProdigyOfMobbDeep,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+SiR,@inglewoodSiR,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Dom Genesis,@DomsGenesis,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
+Homixide Gang,@HomixideGang,UCXqRBWZBjd-cNsUumTj-1Ug,Naomi Flores,0.0,0.0,0.0,,,,INACTIVE_OR_DORMANT,0,2026-10-22 11:17:27,0.0,Low / Emerging,False,False,False,,False,6.94,,,DORMANT_CATALOG,False,Zero recent uploads and stalled catalog velocity.
+BabySmoove,@babysmoove,,,,,,,,,FAILED_LOOKUP,0,,0.0,Low / Emerging,False,False,False,,False,6.94,,,UNRESOLVED,False,Channel could not be resolved via YouTube API.
diff --git a/identity_verification_audit.xlsx b/identity_verification_audit.xlsx
new file mode 100644
index 0000000..ecf8349
Binary files /dev/null and b/identity_verification_audit.xlsx differ
diff --git a/main.py b/main.py
index f43baa4..4885c71 100644
--- a/main.py
+++ b/main.py
@@ -1,91 +1,196 @@
+"""
+main.py
+Production CSV-driven batch pipeline:
+- Loads seed artists from data/seed_artists_500.csv via RosterLoader
+- Checkpoint-aware batch execution (saves every CHUNK_SIZE artists)
+- tqdm progress tracking with ETA
+- Exports:
+ 1. enriched_artists.csv (Full master dataset)
+ 2. identity_verification_audit.xlsx (Separate multi-tab Excel workbook)
+"""
+
import os
-import argparse
+import sys
+import time
import pandas as pd
from dotenv import load_dotenv
+from tqdm import tqdm
from collectors.youtube_collector import YouTubeCollector
from verifiers.musicbrainz_verifier import MusicBrainzVerifier
from verifiers.wikidata_verifier import WikidataVerifier
from core.confidence_scorer import ConfidenceScorer
-from core.ranking_engine import RankingEngine
+from core.ranking_engine import HIFFIRankingEngine
+from core.health_detector import ChannelHealthDetector
+from data.roster_loader import RosterLoader
-def run_pipeline(input_csv: str = "cleaned_artists_inventory.csv", limit: int = 10, output_csv: str = "enriched_artists.csv"):
- load_dotenv()
- api_key = os.getenv("YOUTUBE_API_KEY")
+load_dotenv()
- if not api_key:
- print("[Notice] No YOUTUBE_API_KEY found in .env. Running YouTube in offline fallback mode.")
+CSV_ROSTER_PATH = "data/seed_artists_500.csv"
+OUTPUT_CSV_PATH = "enriched_artists.csv"
+OUTPUT_EXCEL_PATH = "identity_verification_audit.xlsx"
+CHUNK_SIZE = 25
- print(f"Loading data from {input_csv}...")
- df = pd.read_csv(input_csv)
+
+def export_verification_excel(df: pd.DataFrame, excel_path: str = OUTPUT_EXCEL_PATH):
+ """
+ Exports a clean, multi-tab Excel workbook dedicated to identity verification audits.
+ """
+ # Columns relevant for identity verification
+ audit_cols = [
+ "name",
+ "channel_title",
+ "identifier",
+ "confidence_score",
+ "confidence_tier",
+ "status_flag",
+ "mb_verified",
+ "wd_verified",
+ "cross_referenced",
+ ]
- # Process only the selected sample batch limit
- batch_df = df.head(limit).copy()
- print(f"Processing sample batch of {len(batch_df)} artists...\n")
+ # Filter available columns defensively
+ existing_cols = [c for c in audit_cols if c in df.columns]
+ audit_df = df[existing_cols].copy()
- # Initialize all services
- yt_collector = YouTubeCollector(api_keys=[api_key] if api_key else None)
+ # Sort by confidence score descending
+ if "confidence_score" in audit_df.columns:
+ audit_df = audit_df.sort_values(by="confidence_score", ascending=False)
+
+ # Flagged subset for low confidence or failed lookups
+ flagged_df = audit_df[
+ (audit_df["confidence_score"] < 0.50)
+ | (audit_df["status_flag"].isin(["FAILED_LOOKUP", "LOOKUP_ERROR"]))
+ ].copy()
+
+ with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
+ audit_df.to_excel(writer, sheet_name="Identity Verification Audit", index=False)
+ flagged_df.to_excel(writer, sheet_name="Flagged & Unresolved", index=False)
+
+ print(f"π Separate Identity Verification workbook exported to '{excel_path}'")
+
+
+def run_batch_pipeline(roster_path: str = CSV_ROSTER_PATH, force_refresh: bool = False):
+ print(f"\n========================================================")
+ print(f" HIFFI PRODUCTION INGESTION PIPELINE")
+ print(f" Source: {roster_path} | Checkpoint Chunk: {CHUNK_SIZE}")
+ print(f"========================================================\n")
+
+ loader = RosterLoader(file_path=roster_path)
+ artists = loader.load_roster()
+ total_artists = len(artists)
+
+ collector = YouTubeCollector()
mb_verifier = MusicBrainzVerifier()
wd_verifier = WikidataVerifier()
- scorer = ConfidenceScorer()
- ranking_engine = RankingEngine()
+ conf_scorer = ConfidenceScorer()
+ ranking_engine = HIFFIRankingEngine()
+ health_detector = ChannelHealthDetector()
- results = []
+ all_records = []
- for idx, row in batch_df.iterrows():
- name = str(row.get("Name", "")).strip()
- yt_url = str(row.get("Youtube", "")).strip()
- print(f"[{idx + 1}/{len(batch_df)}] Analyzing Artist: '{name}'")
+ progress_bar = tqdm(
+ total=total_artists,
+ desc="Processing Roster",
+ unit="artist",
+ ncols=95,
+ bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, {rate_fmt}]"
+ )
- # 1. Collect YouTube 5 metrics
- yt_data = yt_collector.get_channel_metrics(yt_url, fetch_recent_videos=False)
+ for i, artist in enumerate(artists):
+ name = artist["name"]
+ ident = artist["identifier"]
+ progress_bar.set_postfix_str(f"Analyzing: {name[:18]}")
- # 2. Verify against MusicBrainz
- mb_data = mb_verifier.verify_artist(name)
+ record = {**artist}
- # 3. Verify against Wikidata
- wd_data = wd_verifier.verify_artist(name)
+ try:
+ # 1. Fetch channel metrics
+ yt = collector.get_channel_metrics(
+ ident,
+ fetch_recent_videos=True,
+ force_refresh=force_refresh,
+ )
+ record.update(yt)
- # 4. Compute composite confidence score
- score_data = scorer.calculate_score(yt_data, mb_data, wd_data)
+ # 2. Verify identity across MusicBrainz & Wikidata
+ mb = mb_verifier.verify_artist(name)
+ wd = wd_verifier.verify_artist(name)
- # Merge results into record
- results.append({
- "UID": row.get("UID", ""),
- "Name": name,
- "Youtube": yt_url,
- "Instagram": row.get("Instagram", ""),
- "Location": row.get("Location", ""),
- "yt_subscribers": yt_data.get("subscribers", 0),
- "yt_lifetime_views": yt_data.get("lifetime_views", 0),
- "yt_video_count": yt_data.get("video_count", 0),
- "yt_recent_avg_views": yt_data.get("recent_avg_views", 0),
- "yt_momentum_30d": yt_data.get("momentum_30d", 0.0),
- "yt_status": yt_data.get("status", ""),
- "mb_verified": mb_data.get("verified", False),
- "mb_id": mb_data.get("mbid", ""),
- "wd_verified": wd_data.get("verified", False),
- "wd_id": wd_data.get("wikidata_id", ""),
- "composite_confidence": score_data.get("composite_confidence", 0.0),
- "confidence_tier": score_data.get("confidence_tier", "Low")
- })
+ yt_with_name = {**yt, "name": name}
+ conf_result = conf_scorer.calculate_score(
+ yt_metrics=yt_with_name, mb_result=mb, wd_result=wd
+ )
- raw_out_df = pd.DataFrame(results)
+ # Record verification sub-metrics for Excel export
+ record["confidence_score"] = float(conf_result.get("composite_confidence", 0.0))
+ record["confidence_tier"] = conf_result.get("confidence_tier", "Unknown")
+ sub_scores = conf_result.get("sub_scores", {})
+ record["mb_verified"] = bool(sub_scores.get("musicbrainz", 0.0) == 1.0)
+ record["wd_verified"] = bool(sub_scores.get("wikidata", 0.0) == 1.0)
+ record["cross_referenced"] = bool(sub_scores.get("cross_referenced", False))
- # 5. Apply Log-Transformation + Min-Max Scaling Ranking Engine
- print("\nApplying logarithmic normalization & Min-Max ranking...")
- out_df = ranking_engine.normalize_metrics(raw_out_df)
+ except Exception as e:
+ record.update({
+ "channel_id": None,
+ "channel_title": None,
+ "subscriber_count": None,
+ "lifetime_views": None,
+ "video_count": None,
+ "recent_avg_views": None,
+ "daily_view_velocity": None,
+ "momentum_30d": None,
+ "status_flag": "LOOKUP_ERROR",
+ "data_complete": 0,
+ "confidence_score": 0.0,
+ "confidence_tier": "Error / Unresolved",
+ "mb_verified": False,
+ "wd_verified": False,
+ "cross_referenced": False,
+ "error_notes": str(e),
+ })
+
+ all_records.append(record)
+ progress_bar.update(1)
+
+ # Intermediate checkpoint every CHUNK_SIZE
+ if (i + 1) % CHUNK_SIZE == 0 or (i + 1) == total_artists:
+ temp_df = pd.DataFrame(all_records)
+ ranked_temp = ranking_engine.score_and_rank(temp_df)
+ health_temp = health_detector.evaluate_dataframe(ranked_temp)
+ health_temp.to_csv(OUTPUT_CSV_PATH, index=False)
+
+ progress_bar.close()
+
+ # Final scoring and health detection
+ print("\n--- Finalizing Official HIFFI Ranks & Breakout Indices ---")
+ df_raw = pd.DataFrame(all_records)
+ ranked_df = ranking_engine.score_and_rank(df_raw)
+ final_df = health_detector.evaluate_dataframe(ranked_df)
+
+ # 1. Save Master CSV
+ final_df.to_csv(OUTPUT_CSV_PATH, index=False)
+ print(f"β
Master dataset written to '{OUTPUT_CSV_PATH}'")
+
+ # 2. Save Separate Identity Verification Excel
+ export_verification_excel(final_df, excel_path=OUTPUT_EXCEL_PATH)
+
+ # Summary Leaderboard
+ print("\n--- Top 10 HIFFI Market Leaders ---")
+ hiffi_top10 = final_df[final_df["is_rank_eligible"] == True].sort_values(
+ by="hiffi_rank", ascending=True
+ ).head(10)
+ summary_cols = [
+ "hiffi_rank",
+ "name",
+ "hiffi_score",
+ "breakout_rank",
+ "breakout_velocity_index",
+ "daily_view_velocity",
+ "health_status",
+ ]
+ print(hiffi_top10[summary_cols].to_string(index=False))
- out_df.to_csv(output_csv, index=False)
- print(f"Pipeline run complete. Results saved to '{output_csv}'.\n")
-
- # Display the final ranked overview table
- summary_cols = ["hiffi_rank", "Name", "hiffi_score", "yt_subscribers", "composite_confidence", "confidence_tier"]
- print(out_df[summary_cols].to_string(index=False))
if __name__ == "__main__":
- parser = argparse.ArgumentParser(description="HIFFI Artist Intelligence Pipeline")
- parser.add_argument("--limit", type=int, default=10, help="Number of records to test")
- args = parser.parse_args()
-
- run_pipeline(limit=args.limit)
\ No newline at end of file
+ run_batch_pipeline(roster_path=CSV_ROSTER_PATH, force_refresh=False)
\ No newline at end of file
diff --git a/~$identity_verification_audit.xlsx b/~$identity_verification_audit.xlsx
new file mode 100644
index 0000000..b4ca301
Binary files /dev/null and b/~$identity_verification_audit.xlsx differ