Skip to content

PlanIt

Planning a group activity dies in the group chat.

Core trick

Gemini watches a shared reel to draft an event itinerary, then iMessage group votes trigger a scheduler that reads Google Calendar to book confirmed members.

Tags

Description

Planning a group activity dies in the group chat. Every time. Someone shares a TikTok of a rooftop bar, a hiking trail, a cool restaurant — it gets a few reactions, someone says "we should do this," and then nothing happens. The actual planning requires five separate actions that nobody wants to coordinate: figuring out what the place actually is, deciding if everyone's interested, finding a date that works for everyone, making sure nobody forgets, and getting it on the calendar. Right now all five of those fall on one person, happen manually, and require chasing people down across iMessage, Instagram DMs, and Google Calendar. The friction is high enough that most plans never materialize. PlanIt compresses all five steps into a single action. You send a reel. That's it. A multimodal AI agent watches the video, understands the venue and vibe, and drafts a complete event itinerary — name, location, agenda, estimated cost, duration. That itinerary gets sent to your friend group as a native iMessage via POKE, where people vote with a thumbs up or down. Once enough people are in, a scheduling agent reads everyone's Google Calendar, finds a time that works, and creates the event for every confirmed member — automatically. The specific problem it eliminates is the coordination tax: the invisible labor of translating a vague "we should do this" into a real plan that everyone shows up to. PlanIt makes the AI bear that cost instead of a person.
bobdethird/planit-lite★ 00 forksTypeScriptCreated Mar 21, 2026 · last push Mar 29, 2026

README excerpt

# Planit Lite

Next.js app to **download** Instagram / TikTok videos (via [yt-dlp](https://github.com/yt-dlp/yt-dlp)), **play** them in the browser, and **transcribe** with [ElevenLabs Scribe](https://elevenlabs.io/).

There is also a small in-memory **Planit** layer (groups + events) for future planning features — see `GET /api/groups` and `GET /api/events`.

## Setup

1. **Install dependencies**

   ```bash
   pnpm install
   ```

2. **Environment**

   Copy `.env.example` to `.env.local` and set:

   ```bash
   cp .env.example .env.local
   ```

   - `ELEVENLABS_API_KEY` — required for transcription.
   - `GOOGLE_GENERATIVE_AI_API_KEY` — required for **Analyze video** and **Plan event** (Gemini via Vercel AI SDK).

3. **System tools**

   `youtube-dl-exec` bundles yt-dlp; you still need **ffmpeg** on your PATH for merging video+audio to MP4 (e.g. `brew install ffmpeg` on macOS).

4. **Instagram login issues**

   Export browser cookies to `cookies.txt` in the project root (Netscape format). The download API passes `--cookies` automatically when that file exists. This file is gitignored.

## Scripts

| Command        | Description        |
| -------------- | ------------------ |
| `pnpm dev`     | Dev server         |
| `pnpm build`   | Production build   |
| `pnpm start`   | Run production app |
| `pnpm lint`    | ESLint             |
| `pnpm typecheck` | TypeScript       |

## API

| Route | Method | Description |
| ----- | ------ | ----------- |
| `/api/download` | POST 

Team