Exclude non-campaign posts from format/day/traction breakdowns

Added NON_CAMPAIGN_DATES (starting with 02/09), excluded the same way
REPOST_DATES already is — a real TXproducts post, but not part of the
24-post branding campaign, so it shouldn't skew "what worked" findings
that are specifically about the campaign's own content.

Also closed out July's "end-of-week boss report" outstanding item per
Mckinley: discarded, no longer tracked.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
beantownbabeandClaude Sonnet 5 committed 2026-09-14 08:37:24 +02:00
1 parent 736d101d6a
commit f08fb1d1c4
2 files changed
+13 -7

No files matched your search

+13 -4
View File
@@ -46,6 +46,13 @@ MANUAL_POST_TITLES = {
# who reposts TXproducts' own content, so that direction isn't tracked at all.
REPOST_DATES = {"2026-07-10"}
# Posts that exist in the LinkedIn export but aren't part of the 24-post branding
# campaign (confirmed by Mckinley 2026-09-14, starting with 02/09) — excluded from
# every format/day/traction breakdown and the Audience/Team audit the same way
# REPOST_DATES is, so a one-off non-campaign post can't skew "what worked" findings
# that are specifically about the campaign's own content.
NON_CAMPAIGN_DATES = {"2026-09-02"}
# LinkedIn's export doesn't distinguish carousel/document posts from generic Image — override by hand.
MANUAL_CONTENT_TYPES = {
"2026-07-09": "Carousel",
@@ -2945,12 +2952,14 @@ _real_eng_pct = engagement_audit.real_eng_pct
def _reports_posts_f(month_value="2026-07"):
"""Shared by every Roadmap-family insights page — the selected month's posts with
Shares/Weekday columns added, so each page computes from the identical base
instead of drifting. Excludes REPOST_DATES: a reshare of someone else's post, not
TXproducts' own content, so it doesn't belong in a format/day/traction breakdown
of what TXproducts published."""
instead of drifting. Excludes REPOST_DATES (a reshare of someone else's post, not
TXproducts' own content) and NON_CAMPAIGN_DATES (a real TXproducts post, but not
part of the 24-post branding campaign) — neither belongs in a format/day/traction
breakdown of what the campaign itself published."""
stats = report.compute_period_stats(_build_report_ctx(), month_value)
posts_f = stats["posts_f"].copy()
posts_f = posts_f[~posts_f["Created date"].dt.strftime("%Y-%m-%d").isin(REPOST_DATES)]
excluded_dates = REPOST_DATES | NON_CAMPAIGN_DATES
posts_f = posts_f[~posts_f["Created date"].dt.strftime("%Y-%m-%d").isin(excluded_dates)]
posts_f["Shares"] = posts_f["Comments"].fillna(0) + posts_f["Reposts"].fillna(0)
posts_f["Weekday"] = posts_f["Created date"].dt.day_name()
return posts_f
-3
View File
@@ -96,9 +96,6 @@ NOTES = {
"Aug 3 and falls outside this report.",
],
"outstanding": [
"The end-of-week report explaining every dashboard chart to the bosses was "
"due Fri Jul 31, status needs confirming with the user before marking this "
"done.",
"The conversion-rate weekly-bucket and 3 to 7 day match-window widening "
"discussed Jul 28, to make the follow-attribution pattern more convincing "
"across multiple weeks, is still conceptual, not implemented.",