The composer that drafts social posts from real platform signals in the founder's voice, and the auto-draft review queue.
Doozer markets itself the way it was built: in public, from real signals, in the founder's voice. The composer drafts social posts (X) grounded in what actually happened on the platform, never invented hype.
marketingMineChangelogVersions() (parses CHANGELOG.md), marketingMineLbMetrics() (network reach, businesses indexed, hot leads, GSC impressions, weekly new sites), and marketingMineRecentDiscoveries() (new domains + businesses in the last 30 days) turn platform reality into post material. Metrics come from the same numbers that run the business, so posts are true.
marketing_posts holds drafts; ai_prompts rows (changelog / metric / discovery / freeform) carry a @levelsio-style build-in-public voice with a banned-phrase list baked in so drafts avoid AI-slop tells (and no em-dashes, per the no-slop quality bar). Each request drafts 3 variants; the operator picks one.
When a Prospector discovery becomes a live Doozer site, marketingDraftFromDiscovery() fires automatically. All 3 variants persist as draft rows tagged auto_drafted: true; the Marketing admin's Review queue groups them by business, the operator picks one, siblings are trashed. So growth events produce marketing material with no manual step, closing the discovery → build → announce loop from Prospector.
Marketing is the outward voice of the flywheel; the outward data voice is the Atlas.