Back to cases
Webapp · SaaS

Capafla

Post approval platform for agencies — born from a real problem, does one thing and does it well

ReactTypeScriptSupabaseTailwind CSS
Capafla

The origin

This started with a conversation with Capa (@ux.capa), a designer with 10+ years doing UI/UX, branding and social media. He works with Allvento (German auto shops) and Grow Up Fitness Marketing (gym marketing agency), and he came to me with something that sounded simple but nobody had actually solved.

The post approval workflow was a mess. Not because of a lack of tools — because of too many. The market offered two options: platforms that do everything (scheduling, analytics, CRM, editorial calendar, approval, reports) where none of those parts work well, or WhatsApp and Trello, which work fine until the volume increases.

The analogy he used that stuck with me: it’s like a duck. It swims, flies and walks. But it doesn’t do any of those three things well.

The real problem

I researched agencies that Capa served and confirmed the pattern. Large agencies used platforms like Ekyte that did a thousand things at once — approval was just a feature inside a massive system. Smaller agencies used WhatsApp (“send the post in the group, the client replies with 👍”) or Trello (card with image, comment requesting changes, another image, another comment, and in 3 weeks nobody knows which version was approved).

Both scenarios break when volume increases. An agency posting 3x per week for 5 clients has 60+ creatives per month. In a WhatsApp group, that becomes chaos. In a generic Trello board, it becomes organizational work that nobody does.

The problem wasn’t a lack of software. It was a lack of software that did only this and did it well.

The solution

I built a platform focused 100% on creative approval for social media. No scheduling, no analytics, no CRM.

Agency/designer panel:

  • Dashboard with overview of all posts and statuses
  • Client management with individual access
  • Post creation with image or video upload, description and planned publication date
  • Filter by client and status (awaiting client, changes requested, approved, finalized)
  • “Created by me” filter for designers working in teams
  • Version flow: when a client requests changes, the designer uploads a new version on the same post without losing history
  • Internal user management (multiple designers on the same account)

Client panel:

  • Simplified access (no technical knowledge required)
  • View of posts pending approval
  • Two buttons per post: Approve or Request changes
  • Feedback field when requesting changes (what needs to change)
  • Version history (see what changed between versions)

Status flow:

Designer creates post → Awaiting client → Client approves → Approved → Designer finalizes → Finalized. When the client requests changes → Changes requested → Designer uploads new version → Awaiting client (cycle).

Four statuses, nothing more. The entire flow fits in one sentence. If the designer or the client needs a manual to understand it, the product failed.

Video support: posts can be static images or videos (carousels, reels, stories). A visual “VIDEO” tag appears on the card for quick differentiation.

Rating: the client can give a star rating when approving. Quick quality feedback without needing to write a message.

Technical decisions

Why not use Trello/Notion/Asana with a custom template? Because the post approval workflow has specific needs that generic tools don’t solve natively: image upload with preview, visual versioning (seeing v1 and v2 side by side), status specific to the creative workflow, and an interface clean enough for the client’s client to use without training.

Why not add scheduling? Because the moment you add scheduling, you need to integrate with Instagram API, Facebook API, each with their own rules and limitations. The scope triples, maintenance triples, and the product becomes yet another “does everything” tool. The designer already has a scheduling tool. What they don’t have is an approval tool that works.

Stack: React + TypeScript + Supabase. Same stack as the other webapps. RLS to ensure each client only sees their own posts. Supabase Storage for image and video uploads. Auth with email access for clients (no complex passwords, magic link or direct invite).

Results

  • Functional platform validated with a 10+ year designer and two real agencies
  • 4-status flow that anyone understands without training
  • “Lost version in WhatsApp” problem eliminated with per-post versioning
  • Client’s client approves directly on the platform without needing technical context
  • Reduced feedback time: instead of sending to the group and waiting, the client receives a notification and approves in 2 clicks

What I’d take away from this

Most devs would build a “complete agency management platform” with 50 screens. This project went the other way. Capa showed me where it hurt, I confirmed it with his agencies, and built only what fixes it.

The duck swims, flies and walks. But nobody hires a duck for any of the three.

Next step

Need a dev who truly delivers?

Whether it's a one-time project, team reinforcement, or a long-term partnership. Let's talk.

Chat on WhatsApp

I reply within 2 hours during business hours.