All work
Own productIn use

Aphrodite: Website & Social Media Writer

Aphrodite writes for an Arabic football news brand: articles for its website from the news feeds, posts for its social accounts, and live updates during matches, with people deciding what is covered and what goes live.

Category:
Media
Type:
Content automation
Services:
Product design, full-stack development, AI integration, video rendering
Result:
Publishing news and live match coverage since October 2026

The problem

A football news brand has to publish fast, in Arabic, on its website and its social accounts, including every key moment of a match, without a newsroom of writers on shift.

tools in one system: analyst, planner, production and operations
4
between reads of a covered match, from kick-off to the final whistle
1 min
live posts at most per match, besides the final whistle
8
articles published on the website without a person pressing the button
0

How it works

From the news to the feed

  1. Collect

    The newsroom reads the brand's news feeds and groups related items into stories. Match data comes from API-Football.

  2. Choose

    A person picks the stories, switches on the matches to cover, or plans a month of posts with the planner.

  3. Write

    Gemini writes the article, the post or the live update from the sources' words, in the brand's voice.

  4. Check

    Every version passes the checks: caption lengths, claims, file sizes, near-duplicates and the AI label.

  5. Approve

    Posts wait in the Notion calendar and Slack for approval. Breaking news and live updates go out in the name of the person who started them.

  6. Publish and measure

    The publishing queue sends each post with retries, and its results flow back into the analyst's dashboard.

Inside the product

Newsroom

Stories, not a firehose of links

Related items from the feeds become one story with its sources, newest first. A person picks a story and Gemini writes an Arabic article for the website from the sources' words. It goes to WordPress for review, or live with a second button.

  • A story closes 48 hours after its first item
  • The best photo the sources carried becomes the article's picture

Match day

Live coverage that never posts a stale score

A person switches a match on. From 70 minutes before kick-off the system looks for the line-ups, then reads the match every minute and posts the moments that matter: the preview, the line-ups, goals, red cards, half-time and the final whistle.

  • Each moment gets a priority score; one below the brand's threshold is recorded as skipped, with why
  • A moment that cannot go out within 15 minutes is skipped, never sent late
  • Players' names always come out in Arabic

Review

Nothing unchecked reaches an approver

Every post lives as a row in the brand's Notion calendar. When it is ready, a card arrives in the right Slack channel and the approver reads it on a review page, with its brief, its captions and the result of every check. An edit after approval removes the approval.

Publishing

A queue built for bad days

Approved posts enter a queue the publisher works through every minute, with staged preparation, retries, checks for lost answers and pause switches. Videos, carousels and cards are rendered in a container, and any approved post can be exported as a delivery pack to publish by hand.

Under the hood

Engineering decisions

  • Cloudflare Workers with Hono, a container with Chromium and FFmpeg for rendering, R2 for files, and Postgres through Hyperdrive and Drizzle
  • Gemini writes under one monthly spending cap; Workers AI writes the live updates when Gemini is unavailable, so the coverage never stops
  • A names memory keeps every player's name in Arabic and pays for each translation once
  • Nightly backups, alerts in Slack, heartbeats for every scheduled job and a system status page
  • Every check runs the type checker, the automated tests and a deploy rehearsal before anything ships

Stack

  • Cloudflare
  • TypeScript
  • Hono
  • PostgreSQL
  • Drizzle
  • Gemini
  • Notion
  • WordPress
  • FFmpeg

Building something similar?

Tell us what it is. You get a reply within one business day.

Get your MVP estimate