Centralized task management for account teams and solution architects. Aggregate tasks from meeting notes, Slack, and Google Docs, then feed each task to your preferred AI coding agent (e.g. Cursor) via deeplink or copy-prompt.
- Task list: Single list with status (todo / in progress / sent to agent / done), filter by All / To do / Done
- Open in Cursor: Builds a Cursor prompt deeplink so the task opens in Cursor with the prompt pre-filled
- Copy prompt: Copy a well-formed prompt for pasting into GitHub Copilot, Windsurf, or any other agent
- Meeting notes: Paste notes from customer calls; AI extracts action items as tasks (OpenAI optional; fallback to simple extraction)
- From Slack: Paste a Slack message URL to create a task linked to that conversation
- Google Docs: Sign in with Google, list your Docs, and extract tasks from a doc’s content (requires Google OAuth + OpenAI for extraction)
From the project root:
# One-time setup: install deps and create the SQLite DB
npm run setup
# Build (optional; use for production)
npm run build
# Run the app
npm run devThen open http://localhost:3000. The app will load with a default dev config (task list, add task, meeting notes, Slack URL, Cursor/Copy prompt). Google Docs and AI extraction need extra env vars below.
A .env.local with dev defaults is included so the site runs without changes. To enable optional features:
| Variable | Required | Purpose |
|---|---|---|
NEXTAUTH_URL |
Yes (dev: http://localhost:3000) |
NextAuth base URL |
NEXTAUTH_SECRET |
Yes | Any random string (e.g. openssl rand -base64 32) |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET |
For Google Docs tab | Create in Google Cloud Console, enable Drive API |
OPENAI_API_KEY |
For AI extraction | Meeting notes and Google Docs use simple extraction if unset |
- Development: Copy
.env.exampleto.env.localand set at leastNEXTAUTH_SECRETif you replace the default. - Production: Set
NEXTAUTH_URLto your public URL and use a strongNEXTAUTH_SECRET.
- Next.js 14 (App Router), React, Tailwind
- SQLite + Drizzle ORM for the task store
- NextAuth with Google (Drive read) for Google Docs
- OpenAI (gpt-4o-mini) for extracting tasks from text when
OPENAI_API_KEYis set
| Use case | How |
|---|---|
| Central task list | One place for all tasks from meetings, Slack, and Google Docs. |
| Meeting notes → tasks | Paste notes from customer calls; AI extracts action items (or add manually). |
| Slack → tasks | Paste a Slack message URL to create a task linked to that thread. |
| Google Docs → tasks | Sign in with Google, pick a Doc, Extract tasks to create tasks from its content. |
| Feed tasks to AI agents | Open in Cursor (deeplink) or Copy prompt for Copilot, Windsurf, or CLI. |
- Add tasks — Use Add task (manual), Meeting notes (paste + extract), From Slack (paste message URL), or Google Docs (sign in, pick doc, extract).
- Manage — Open Task list to filter (All / To do / Done), mark tasks done, and open source links.
- Hand off to AI — For a task, click Open in Cursor to open Cursor with the prompt, or Copy prompt to paste into another tool.
To use the Google Docs tab you must configure Google OAuth:
- In Google Cloud Console, create a project (or use an existing one).
- Enable the Google Drive API (we use it to list and export Docs).
- Go to APIs & Services → Credentials and create OAuth 2.0 Client ID (application type: Web application).
- Under Authorized redirect URIs add:
http://localhost:3000/api/auth/callback/google(use your production URL when deploying). - Copy the Client ID and Client Secret into
.env.local:GOOGLE_CLIENT_ID=...apps.googleusercontent.com GOOGLE_CLIENT_SECRET=...
- Restart the dev server (
npm run dev). Then open the Google Docs tab and click Sign in with Google.