Files
LinkedIn-Analytics-Dashboard/theme_tracker.py
T
beantownbabeandClaude Sonnet 5 efcad4a6da Add Engagement Response tab for the new campaign (pending approval)
New tab, separate from the Reports dropdown (which stays tied to
actual calendar-month/campaign-approval data), covering what the new
campaign plan cares about that the old reporting never tracked:

- theme_tracker.py: per-post theme classification (Failure Analysis /
  Standardization / WaveGate), same hand-tagged pattern as
  MANUAL_CONTENT_TYPES. Powers a Theme Performance chart showing each
  theme's Real Eng % across the whole campaign, not just its lead
  month - the explicit ask was to see if a theme keeps earning
  engagement even when a different theme is leading that month.

- conversation_tracker.py: logs every real conversation (a comment
  from an actual person) through to resolution (open -> replied ->
  followed_up -> closed). Exists because the old campaign's two real
  conversations, Sabine Brock on 20/08 and Dr. Debnath on 08/09, were
  both left open with no reply and no follow-up - this makes that
  visible instead of silent. An "N open" badge flags anything still
  needing a reply.

Both data sources start empty and render a clean "nothing logged yet"
state - nothing to log until the campaign is approved and posts start
going up, but the tooling is ready.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-26 11:41:21 +01:00

24 lines
739 B
Python

"""Per-post theme classification for the new engagement-response campaign (Nov 2026
onward, pending approval). Same pattern as app.py's MANUAL_CONTENT_TYPES (LinkedIn's
export has no "theme" field at all, so this is entirely hand-tagged), keyed by
"YYYY-MM-DD". Empty until the campaign starts and posts go up — add an entry here as
each post is published, no other code changes needed for it to show up in the
Theme Performance chart.
"""
THEMES = ["Failure Analysis", "Standardization", "WaveGate"]
THEME_COLORS = {
"Failure Analysis": "#E8825A",
"Standardization": "#1b3a5c",
"WaveGate": "#52C41A",
}
# "2026-11-03": "Failure Analysis",
POST_THEMES = {
}
def theme_for(date_iso):
return POST_THEMES.get(date_iso)