Repository navigation
Promotion campaigns: promote first, measure 30 days, then outreach with the results (0.5.0) - #25
Merged
Merged
Conversation
…r 30 days, then draft outreach with the results (0.5.0) - Import a complete OutreachGraph campaign snapshot (scripts/outreachgraph-campaign-export.sh): every source row gets one disposition, leads at one domain merge into one business, re-imports are idempotent, only a complete snapshot can mark a business as having left. - Members launch only when upstream outreach is held (suppressed, or only in approval campaigns). - Verified members of a running campaign come first in /pros, in SQL before pagination. - /roundup/<slug>, a posting calendar of spotlights handed to myna by `pit promo worker`, which reconciles against myna history/queue by tracking id before posting and verifies through the networks' public APIs. Organic only: ad-buying networks are refused, paid budget defaults to zero. - Measurement without cookies or stored IPs: listing views, website clicks (/b/<d>/go redirect to the listing's own site), phone taps (beacon), quote requests; bots, previews, prefetches, internal and marked test traffic excluded; day-salted visitor hash. Roundup views stay campaign-level. - Per-business 30-day windows (listing live + tracking tested + verified placement), hourly pass, one review job per window, versioned reports (HTML/Markdown/JSON, shareable /r/<token>), CSV comparison, report-based drafts (introduction vs follow-up from recorded contact), sending off until authorized and re-checked at delivery. - API /api/v1/promotion, /admin/promo dashboard, `pit promo` CLI + TUI, promo_* MCP tools. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements the Los Gatos Builders Promotion and Outreach PRD as a feature of the pit.world pro directory, which already lists the 99 campaign builders.
What it adds
cmp_w12ps27dw6pecnja9n90pc7h94(the exporter isscripts/outreachgraph-campaign-export.sh, read-only: OutreachGraph has no complete members API). Every row gets one disposition. Merges by domain, imports are idempotent, and a business that leaves keeps its listing./pros(applied in SQL before pagination),/roundup/<slug>, a spotlight calendar and the myna worker. The worker reconciles before posting and verifies through public APIs, and it only does organic posts./r/<token>), CSV comparison and report-based drafts. Sending stays off until it is authorized./api/v1/promotion/*, the/admin/promodashboard,pit promoCLI + TUI, andpromo_*MCP tools (only whenPIT_ADMIN_TOKENis set).Tests: 28 new in
test/promotion.test.ts, mapped to PRD AC-01..AC-22. They use simulated time across the 2026-11-01 DST change and a fake myna for no-double-post and uncertain-outcome reconciliation. 136/136 pass, tsc clean, threatcrush clean.🤖 Generated with Claude Code