"""Hand-logged Profile Views / Profile Appearances per team member, since LinkedIn doesn't offer a file export for either (unlike the Aggregate Analytics content file team_exports.py parses) - both only show live on a person's own profile page, under "Profile appearances" and "Who's viewed your profile." Profile Appearances = how often someone's name/headline showed up across LinkedIn (search results, others' feeds, comments, People You May Know), split into All appearances and the Search-appearances subset. Profile Views = actual visits to the profile page. Add an entry here each Monday alongside that person's export - same "add an entry, no code change needed" pattern as conversation_tracker.py. """ # { # "name": "Mckinley Black", # "week_start": "2026-10-20", # "week_end": "2026-10-26", # "all_appearances": 10, # "all_appearances_change_pct": 67, # "search_appearances": 1, # "search_appearances_change_pct": 0, # "profile_views": None, # }, VISIBILITY_LOG = [ { "name": "Mckinley Black", "week_start": "2026-10-20", "week_end": "2026-10-26", "all_appearances": 10, "all_appearances_change_pct": 67, "search_appearances": 1, "search_appearances_change_pct": 0, "profile_views": None, }, ] def latest_for(name): """Most recent logged week for a person, by week_end - None if nothing logged yet.""" entries = [e for e in VISIBILITY_LOG if e["name"] == name] if not entries: return None return max(entries, key=lambda e: e["week_end"])