DEV Community

Cover image for I Built an AI News Desk for My MMA Site. Here's What Actually Worked.
Paul N
Paul N

Posted on

I Built an AI News Desk for My MMA Site. Here's What Actually Worked.

My first prompt was: "You are a sports journalist. Write a 400-word article about this UFC event." A friend texted me "bro this reads like a bot wrote it." Three published pieces in. Fair.

The Stack

GidStats.com runs on a custom CMS with structured fight data across UFC, PFL, LFA, DWCS. The news pipeline sits on top of that. Playwright scrapes official promotion feeds, a webhook fires a Claude API call with relevant database stats as context, output lands in staging for review before anything goes live.

The Prompt

You need to specify what to avoid as precisely as what to produce. Mine has a 75-term banned-words list - "delve," "nuance," "tapestry" and everything else that screams AI. Explicit sentence structure instructions. Style references: ESPN MMA, The Athletic, Bloody Elbow.

Structured fighter data gets injected before the generation instruction. Records, finish rates, physical attributes. The model can't hallucinate stats it's already been given, and MMA fans will fact-check you.

Review

Early on I reviewed for accuracy. Wrong question. The right question is "would I actually read this MMA news?" I rebuilt the checklist around that: does the first sentence pull you into the second, does the fight analysis say something tactical rather than obvious.

What It Can't Do

Breaking news at speed - the pipeline isn't a 10-minute turnaround. Anything emotionally weighted: injuries, retirements. The model produces something flat where a human voice is the whole point.

What I'd Do Differently

Start with the voice problem, not the infrastructure. I spent two months on scraper architecture before solving what the output should sound like. Get one piece reading exactly right, reverse-engineer the prompt, then build the pipes. Also: inject structured data as context, always. Model memory is wrong often enough to matter.

Top comments (0)