PHub Dashboard
← Back to dashboard

ChatGPT Setup Guide

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!

RECOMMENDED (EASIEST)

Use the Official Public Custom GPT

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 ChatGPT
— OR SETUP CUSTOM AGENTS / SELF-HOSTED —
1

Create a Custom GPT or AI Agent

In 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.

2

Import the API schema (or set up Poe webhook)

For ChatGPT Actions (Custom GPTs) or agent platforms, choose to import a schema from a URL and paste the link below:

https://phub-dashboard.vercel.app/api/openapi.json

For Poe Server Bots, copy the Server Webhook URL below and paste it in Poe's Server URL settings:

https://phub-dashboard.vercel.app/api/assistant/poe?key=YOUR_PERMANENT_API_KEY
3

Authenticate your Agent

Configure how the custom assistant authenticates with your dashboard:

Option A: Configure OAuth 2.0 (Recommended)

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

Option B: Permanent API Key (Manual copy-paste)

Under Authentication, select API KeyBearer, and paste your key.

Checking sign-in…

4

Teach the Agent how to behave

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.
5

Try it out

Save the agent and start chatting. Things that should just work:

Log 450 for lunch at the office cafe
I spent 1,200 on groceries and 300 on an auto today
How much did I spend on food this month?
Add Dune: Part Two to my watchlist
I just finished episode 8 of Frieren — update it
What am I currently watching?
Self-hosting?

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.