Parrot
A Farcaster mini app that cross-posts your tweets. Swipe to pick what goes out, or let YOLO Mode do it. 300+ beta users.
Overview
Parrot is a Farcaster mini app that cross-posts from Twitter to Farcaster. You swipe through your tweets to pick what goes out, or turn on YOLO Mode and it posts for you. It handles text, images, quote tweets, retweets and threads, and reformats mentions and links the way Farcaster expects them.

My Contributions
I built Parrot end to end: the UI and UX, API routes, background jobs and platform integrations. The stack was Next.js for the frontend and APIs, React Query for client state, Neynar Managed Signer for casting permissions, Base MiniKit for mini app context, Supabase and Node.js for storage and jobs, and wagmi and viem for wallet interactions.
First, Parrot checks whether the user’s Farcaster account has a verified Twitter handle. If it doesn’t, the app deep-links them to the verification flow. Once that’s done, it pulls their timeline through the Rapid Twitter API and lines the tweets up for cross-posting.
Every tweet is reformatted before it’s posted. Mentions and links are converted to Farcaster’s format, media carries over unchanged, quotes and retweets map to their Farcaster equivalents, and threads stay in order.

Swipe-First Composer
Tweets show up as cards, and you swipe each one to cast it, edit it or skip it. Edits happen inline, with a character count that follows Farcaster’s limits.

Casting Permissions
Neynar Managed Signer lets Parrot post directly on the user’s behalf. The permission is scoped and can be revoked at any time. Failed casts are retried without creating duplicates.

YOLO Mode (Auto-Cast)
With YOLO Mode on, a job runs every 10 minutes to fetch new tweets and post them automatically. Users choose whether it posts regular tweets, quotes, retweets or everything.

Payments and Notifications
Each cast costs $0.10 in USDC. Users approve an allowance once and can top it up or revoke it whenever they want. The fee is taken automatically with each cast, and the payment routes are idempotent, so a retry can’t charge anyone twice.
Users get real-time toasts and push notifications too, like when a cast goes out or their balance or allowance is running low.
