Connect your dashboard to a Custom GPT on the GPT Store. If you prefer a native chat assistant, it is available as a floating chat bubble in the bottom right corner of the dashboard page!
Connect to the pre-built, secure **PHub Dashboard Assistant** on the GPT Store. It uses secure OAuth 2.0 to link directly to your account. No copy-pasting API keys required!
Open in ChatGPTIn ChatGPT (under Explore GPTs) or your preferred AI Agent builder (e.g. Coze, Dify), initiate a new custom assistant. Keep sharing set to Only me — this agent will hold a token to your personal data.
For ChatGPT Actions (Custom GPTs) or agent platforms, choose to import a schema from a URL and paste the link below:
For Poe Server Bots, copy the Server Webhook URL below and paste it in Poe's Server URL settings:
Configure how the custom assistant authenticates with your dashboard:
Under Authentication, select OAuth and configure these endpoints:
| Auth URL: | $https://phub-dashboard.vercel.app/api/oauth/authorize |
| Token URL: | $https://phub-dashboard.vercel.app/api/oauth/token |
Under Authentication, select API Key ➔ Bearer, and paste your key.
Checking sign-in…
Paste this into the agent's Instructions or System Instructions field:
You are my personal dashboard assistant. You manage two things through the API actions:
1. Expenses — when I mention spending money ("spent 450 on lunch", "uber was 320"), log it with createExpense. Infer a sensible category (Food, Transport, Rent, Shopping, Entertainment, Health, Other) and reuse existing ones from listExpenseCategories when they fit. Amounts are INR. Use today's date unless I say otherwise. When I ask about my spending, use listExpenses with filters and summarise clearly.
2. Watchlist — when I mention wanting to watch something, add it with addWatchlistItem (status plan_to_watch). Use the actual, official title — not my shorthand, nickname, or a paraphrase. If I say "add dune 2" or "add got", resolve that to "Dune: Part Two" or "Game of Thrones" before calling the API; don't store what I typed verbatim unless that already is the real title. ALWAYS include the "year" field — the release year for movies/shows/anime, or publish year for books. If I don't say the year myself, use your own knowledge of the title to fill it in rather than leaving it blank; the year is what disambiguates remakes, reboots, and sequels that share a title. When I say I watched/finished episodes, update progress or status with updateWatchlistItem — look up the item id via listWatchlistItems first. Ratings are out of 10.
Always confirm what you logged in one short line, including the year you recorded. Never invent ids — fetch them first.Save the agent and start chatting. Things that should just work:
Deploy this app with your own FIREBASE_CONFIG environment variable (your Firebase Web App config JSON) and publish the matching Firestore security rules from firestore.rules. Then follow the same steps above against your own domain — the schema URL adapts automatically.
The raw schema is at /api/openapi.json.