DEV Community

Ado Daniel Nj
Ado Daniel Nj

Posted on

Global Freelancer Sync — an AI-powered command center for freelancers managing clients

Notion MCP Challenge Submission 🧠

This is a submission for the Notion MCP Challenge

What I Built

Global Freelancer Sync — an AI-powered command center for freelancers managing clients
across timezones.

As a freelancer in Cameroon (WAT), I work with clients in New York, London, and Tokyo. Every
week I face the same questions: Who should I reach out to right now? Is it a good time to
send this update? What should I even say?

Doing this manually for 8+ clients across 5 timezones is tedious and easy to get wrong. So I
built a system that handles it automatically.

Here's what it does:

  • Connects to your Notion Clients database and reads each client's timezone, project context, and last update
  • Shows a live world clock strip — who's available right now, who's sleeping, and how long until each client's window opens
  • Uses AI (Gemini, Claude, DeepSeek, Groq, HuggingFace with automatic fallback) to draft personalized outreach emails using your project context and sent message history
  • Lets you review and approve drafts — you stay in control
  • Auto-sends emails via Gmail when clients enter their active window, even while you sleep
  • Logs every action to Supabase with a real-time activity feed
  • Includes a chat assistant that knows your full client state and can answer questions like "Who should I reach out to first today?"

The core philosophy: AI handles the timing and the words. You handle the decisions. Human-in
-the-loop, by design.

Video Demo

Show us the code

GitHub: https://github.com/acetennyson/global-freelancer-assistant

Live demo: global-freelancer-assistant.vercel.app

Tech stack:

  • Next.js 15 (App Router)
  • Notion SDK + MCP TypeScript SDK
  • Supabase (activity logs, draft history, sent history, Realtime)
  • Multi-provider AI: Gemini 2.5 Flash → Claude → DeepSeek → Groq → HuggingFace
  • Nodemailer (Gmail SMTP)
  • Vercel Cron (every 15 minutes)
  • Framer Motion + next-themes (light/dark/system)

How I Used Notion MCP

Notion is the single source of truth for everything client-related. The MCP server exposes
three tools that any MCP-compatible AI client (like Claude Desktop) can call:

get_client_local_times
Returns every active client's current local time, availability status, and whether they're
within their send window. Claude can call this to answer "who's available right now?"
without any manual timezone math.

generate_client_outreach
Takes a client_id, checks if the client is in their business hours window, reads their
project context from Notion (Project, Last_Update, Next_Action), generates a personalized
draft using Gemini, and writes it directly back to the AI_Draft column in Notion. The
freelancer sees the draft appear in their dashboard and can approve or edit before sending.

sync_and_draft
A combined tool that fetches the client from Supabase, checks their timezone window,
generates a context-aware draft, and writes it to Notion — all in one call. Designed for
batch workflows where you want to draft for all available clients at once.

What MCP unlocks:
Without MCP, this would be a closed app — useful only through the dashboard. With MCP, any
AI agent can become a timezone-aware outreach assistant. You can tell Claude Desktop: "Draft
updates for all clients who are currently in business hours" and it calls
get_client_local_times, identifies the available ones, then calls generate_client_outreach
for each — writing personalized drafts into Notion for you to review. The AI does the work.
You approve and send.

That's the human-in-the-loop system the challenge asked for.

Top comments (0)