S
Sandesh
Sandesh

Your message,
every platform.

Draft once, post everywhere. LinkedIn, Threads, Instagram, YouTube — all in your voice, scheduled to land when your audience is awake.

Scroll to explore
See it in action

Watch the demo

A couple of minutes, end to end: draft a post, render it, preview every platform, and publish — all driven from Claude Code in the terminal. (Plays muted — tap for sound.)

sandesh.devfrend.com
Sandesh demo
One composer · Four platforms

Publish everywhere from one place.

OAuth-connect once per platform. Compose, attach media, post or schedule — Sandesh handles the platform-specific quirks.

LinkedIn
Text · Image · Video · PDF carousel
Threads
Text · Image · Video
Instagram
Photo · Reel
YouTube
Long-form · Short
Ideate

Idea → drafts in your voice. Instantly.

Type one rough thought. Sandesh chats with you, references your past posts, and returns four platform-tuned drafts ready to confirm.

You
Walked through Bandra at 6am. Realized our deploy script ran during a metro outage and saved us. Story idea?
Sandesh
Got it. Pulling your last 30 LinkedIn posts to match tone… Drafting for LinkedIn (deeper), Threads (punchy), Instagram (visual hook), YouTube Short (15s script).
LinkedIn
Metro outage. 6am Bandra. Our deploy script ran exactly when we needed it…
Threads
Deploy script ran during a metro blackout. Saved us. Sometimes the boring infra wins.
Instagram
6am. Bandra. Metro down. Code shipped anyway. → swipe for the story
YouTube
Title: How a 12-line script saved our prod
Brand · Voice

Drafts that already sound like you.

Generic AI writes generic copy. Sandesh learns your voice from your own posts and writes for that voice — not the model's.

01
Voice samples
Paste 5–20 of your past posts. Sandesh learns the rhythm, slang, and emoji habits that make you sound like you.
02
Brand profile
Niche, audience, tone, what to avoid. One source of truth that every draft reads from.
03
On-brand drafts
Every Ideate run is grounded in your brand + voice. No generic AI slop.
LinkedIn-native composer

The dashboard feels like LinkedIn.

Same card layout, same actions, same UX habits — minus LinkedIn's algorithmic noise. Compose, attach images / videos / PDFs, schedule, and see your activity feed in one place.

  • Linkified URLs and hashtags
  • PDF document carousels (LinkedIn document API)
  • Drafts, scheduled, published — all on one tab strip
  • Confirm before posting; edit drafts inline
A
Amar Gupta• You
AI-Powered Full Stack Consultant · MCP Servers · LLM Chatbots
11h·
Walk pe nikla. Idea aaya. Phone nikala.

Aur realise hua — Claude Code mere terminal pe hai, mere paas nahi.

So I built Sandesh. #BuildInPublic #MCP #ClaudeCode
👍243 comments
This week4 scheduled
  • Metro outage post-mortem
    Tue · 9:00 AM·LinkedIn
  • Hot take on AI tools
    Wed · 12:30 PM·Threads
  • Architecture carousel
    Thu · 5:45 PM·Instagram
  • How Setu works · 60s Short
    Sat · 10:00 AM·YouTube
Schedule · Drafts · Failed

Land when your audience is online.

Pick date and time — Sandesh queues the post, watches OAuth tokens, and publishes at exactly the moment you set. Drafts hold ideas; failed rows tell you why and let you retry once you fix the cause.

  • • Lead-time validation: ≥10 min, ≤90 days.
  • • Edit drafts in place, then publish-now or re-schedule.
  • • Auto-retry on transient platform errors.
Built for Claude Code

Drive Sandesh from your terminal.

One MCP per platform. Hard-isolated, OAuth-protected. Attach the endpoint you need, talk to Claude Code, and ship a post — drafts, schedules, edits, retries, and live LinkedIn-style previews all flow back through the chat.

LinkedIn
sandesh.devfrend.com/api/mcp-linkedin
Threads
sandesh.devfrend.com/api/mcp-threads
Instagram
sandesh.devfrend.com/api/mcp-instagram
YouTube
sandesh.devfrend.com/api/mcp-youtube
$ claude mcp add sandesh-linkedin \
https://sandesh.devfrend.com/api/mcp-linkedin
Connected · OAuth complete · 10 tools
Architecture

One composer, four platforms,
one Supabase project.

Sandesh runs as a publishing layer on top of the same MCP fabric as Setu. Ideate prompts flow through a desktop Claude Code answerer; the preview envelope renders in-browser; per-platform OAuth fan-out handles the actual publish.

[ 01 ]

cloud

Ingress

  • Browser composer

    /ideate · CORS + Bearer

  • Vercel · /api/sandesh-chat

    send · confirm · publish

  • sandesh_chat_messages

    rls per user · realtime publication

[ 02 ]

desktop

Process

  • Sutra · SSE bridge

    electron main · keytar token store

  • Local MCP · 127.0.0.1:9000/sandesh

    sandesh_chat_respond_begin/chunk/finish

  • Preview envelope

    json-schema · CI-hashed across 3 copies

[ 03 ]

back to browser

Confirm + draft

  • Browser preview

    real LinkedIn / Threads / IG card

  • Operator clicks Publish

    human-in-the-loop · always

  • pa_scheduled_posts

    fan-out worker fires per platform

LinkedIn

URN · ugcPosts API

Threads

media-id · two-step publish

Instagram

media-id · b64 shortcode

YouTube

video-id · publicAtPrivacy

01

Per-platform OAuth, one chat surface

LinkedIn, Threads, Instagram, and YouTube each have their own OAuth flow, token store, and publisher. They surface through one chat composer and one preview envelope — the operator only sees "draft" and "publish."

02

Shared Supabase, JWT-compatible with Setu

Sandesh and Setu point at the same Supabase project (`avcnoywxnkajfuobftmr`). A Setu-issued JWT validates as the same `auth.uid()` against Sandesh RLS — so the Setu dashboard can drive sandesh-chat over CORS+Bearer without a token exchange.

03

Twin MCP handlers, deliberate split

Vercel `/api/mcp` registers post/schedule tools (10+ across LinkedIn/Threads/IG/YT). The chat-respond family lives only in Sutra (Electron) — Vercel serverless can't hold a persistent answerer. External Claude Code clients post via Vercel; chat responses come from the desktop.

04

Per-platform preview envelopes

Every assistant reply carries a structured preview envelope validated against a JSON schema duplicated across three locations (Vercel, Sutra, and the Sandesh skill). CI hashes all three — drift = red build. Browser renders a real LinkedIn-style preview before publish.

Amar Gupta

Amar Gupta

AI-Powered Full-Stack Developer · Delhi / Remote

Portfolio piece

Built by Amar Gupta.

Sandesh is one of five dogfooded products in my portfolio — built end-to-end as a demonstration of MCP / AI / full-stack engineering, not as a startup. Real OAuth tokens, real publish pipeline, real inboxes — which is why signup stays gated.

MCP server designTypeScript / Next.js 16Electron + IPCSupabase + Postgres RLSOAuth fan-out (LI / Threads / IG / YT)LLM tool calling

Sibling products

All four ride the same MCP fabric, Supabase project, and channel-based wake protocol as Sandesh.

Start in 60 seconds

Stop staring at the
empty composer.

Connect LinkedIn. Paste a few of your past posts. Type your idea. Sandesh handles the rest.

Sandesh · संदेश · The message