The Problem
Those employee advocacy programs. So hot right now.

According to Semrush, LinkedIn is the second most-cited source in LLM responses (after Reddit), which means your team's social presence directly impacts your company's AI discoverability.

But tracking who's posting what? That's usually a spreadsheet nightmare.
I wanted something visual. A scoreboard that updates automatically when someone shares company content. Here's how I built it.
The Stack
- Slack - where teammates drop links to their posts
- Zapier - automation layer with GPT-4o-mini for AI detection
- Directus - headless CMS as the data backend
- Next.js + Vercel - frontend dashboard
- Claude Code - scaffolded the entire frontend from a conversation and mapped the Directus data.
The Flow
- Teammate posts on LinkedIn or X
- They drop the link in our #upvotes-plz Slack channel
- Zapier catches the message, runs it through GPT-4o-mini to detect if it's a social link
- If yes, a second AI step extracts the platform and cleans the URL
- Zapier posts the data to Directus
- Dashboard pulls from Directus and displays the leaderboard
Step 1: The Slack Trigger
We have a dedicated Slack channel where teammates drop links after they post. Nothing fancy - just paste the URL with optional context.

Step 2: AI Detection (Zapier)

The first Zapier step runs the message through GPT-4o-mini with a simple prompt:
Analyze the provided post to assess whether it includes a link to a social media platform. If the post does contain a link to a social platform, output the boolean value true. If it does not contain such a link, output the boolean value false.
This returns a boolean. A path condition routes true results to the next step.
Step 3: Data Cleaning (Zapier)
The second AI step extracts structured data:
## CONTEXT ##
You are a data cleaning expert tasked with analyzing and cleaning Slack posts in order to effectively understand and evaluate a specific post. Your responsibilities include:
1. Extracting the context of the post.
2. Identifying the platform where the post originates (to be scraped via link).
3. Analyzing the social link included in the post.
The output will be integrated into a Directus instance, so it is essential that we achieve clarity in the shared message and ensure conformity to the specified data model.
## OBJECTIVE ##
Our team at Directus will send a message every time they share content on social media. We will then input this information into a Directus instance, necessitating strict adherence to the post requirements. Your goal is to extract specific information from the post, focusing on the following:
1. Determine if the shared content includes a link to a social post on LinkedIn or X. If the link does not lead to either of these platforms, please disregard the post as it is not relevant for this task.
2. Identify the platform of the social post based on the URL provided, checking specifically for indicators such as LinkedIn or X.com.
## OUTPUT ##
Based on your analysis of the post, please provide the following in your output:
1. Identify the platform as either "X" or "LinkedIn" based on the presence of a relevant link.
2. Supply the cleaned URL, ensuring that any UTM parameters or extraneous query strings are removed from the link.
This outputs two fields: Social Platform (LinkedIn or X) and Cleaned URL (stripped of tracking params).
Step 4: Post to Directus

Zapier sends the cleaned data to our Marketing instance of Directus and a specific collection via the API. The schema is simple:
| Field | Type | Notes |
|---|---|---|
| id | uuid | Auto-generated |
| platform | string | linkedin or x |
| url | string | Cleaned post URL |
| slack_user | string | Who shared it |
| created_at | datetime | When logged |
Step 5: The Dashboard (Claude Code)
For the frontend, I started with a quick sketch in tldraw:

Then I described what I wanted to Claude Code:
- Leaderboard with medal rankings (🥇🥈🥉)
- Monthly filtering
- Click names to drill into individual posts
- Dark mode
Claude Code scaffolded the Directus integration, built the aggregation logic, wired up filtering. In all, ~6 files of actual code. Nothing fancy, just boring readable components.

Stack: Next.js 16 + Directus SDK + Tailwind. Deployed to Vercel.
What I Learned

- AI actions in Zapier are underrated. GPT-4o-mini is cheap and fast enough for real-time automations
- Directus as a quick backend. Didn't need a full database setup, just spun up a collection
- Claude Code for internal tools. Describe what you want, get working code
Not every internal tool needs to be complex to be useful. This took an afternoon and saves hours of manual tracking.