← BACK TO work
Product2026Built & QA’d

Greenlight

A content desk for managers running many brands.

The problem

Running social for several client brands meant keeping each brand's voice and credentials separate while chasing approvals outside the publishing workflow. Clients needed a way to approve or request changes from a phone without being provisioned into another account.

What it does

An all-in-one approval desk for social media managers juggling multiple client brands, each with its own tone, audience, and channel credentials. Posts move draft → awaiting → approved → scheduled → posted, with a per-post audit log the whole way.

The signature feature is a no-login client approval link — send a token URL, the client approves or requests changes without an account, and you rotate the token to revoke access. Plus an all-brands calendar and a printable monthly report per brand.

Why it is built this way

I separated this from Repurpose Studio because it is the client-facing workflow that a personal writing system deliberately is not. Each manager gets isolated brand workspaces, each post carries an audit trail, and a revocable token link gives the client only the approval surface; local Claude Code or the manager's own key handles drafting, and native channel APIs handle scheduled publishing.

What was hard

Letting a client approve work without an account meant building auth twice: scrypt-hashed manager sessions on httpOnly cookies for the people running the desk, and revocable per-post links for clients who only ever see one screen. Each brand holds its own channel credentials, so a publish failure has to surface readably against the right brand instead of dying quietly inside a scheduler tick.

Outcomes

  • No-login client approvals
  • Multi-brand isolation
  • 60s publish scheduler

Stack

ExpressVanilla SPAJSON storeClaude headless CLI