Phase 1 · shipped

ShirtPost

Fast-fashion print-on-demand for family-friendly internet trends — “we are so back”, “very mindful very demure”, “delulu is the solulu”. A radar spots the trend, a human approves the copy, the factory makes and announces the merch.

The pipeline

RADAR scrape · score · rank STUDIO human approves copy FACTORY Printful + X.com

Three subsystems

Radar

Token-efficient scraper

Polls feeds, HTML-strips every title with BeautifulSoup, and ranks by a per-source-normalized Hype Score (volume × velocity boost). Disk-cached, rate-limited, 429 backoff.

Studio

Admin queue

A single-page Next.js dashboard listing trends by Hype Score with the source trail. The operator pastes design copy; submitting fires the factory and the card live-polls to published / failed.

Factory

Make & broadcast

Builds a fit-to-canvas SVG, generates a Printful mockup, syncs the catalog, then posts to X (v2 media + tweet). Fails loud without creds; a dry-run mode completes the loop for demos.

Built like it matters

Stack

Python 3.12 FastAPI SQLAlchemy + SQLite Pydantic Next.js 15 TypeScript Zod Tailwind GitHub Actions

What’s here

This page is documentation, not the app. ShirtPost is an internal tool — a Python backend plus a server-rendered admin dashboard that needs live Printful/X credentials. It runs locally, not on static hosting. The public storefront and checkout are intentionally out of Phase 1 scope.