Sign in with your Four28 Google account to continue.
You're signed in as , but an admin needs to grant you access before you can use the portal.
You'll be let in as soon as someone on the team approves your account. This usually doesn't take long.
Operations
Operations| Proposal | Client | Activity | Status | |
|---|---|---|---|---|
| Loading... | ||||
| Client / Document | Link | Status | Activity | |
|---|---|---|---|---|
| Loading... | ||||
| Employee / Document | Link | Status | Activity | |
|---|---|---|---|---|
| Loading... | ||||
| Employee | File | Uploaded | Size | |
|---|---|---|---|---|
| No files. | ||||
| Title | Client | File | Uploaded | |
|---|---|---|---|---|
| No strategy documents. | ||||
| Name | Category | File | Uploaded | |
|---|---|---|---|---|
| No files uploaded. | ||||
| Client | Project | Status | Phase | Started | Revenue | |
|---|---|---|---|---|---|---|
| No projects yet. | ||||||
Use this when you've deployed a custom onboarding HTML for a client. Registering links the form to the client and lets you track entries here.
—One real client can show up as several Stripe records (a personal name, a business name, old accounts). Confirm the suggested groups below to merge them into one — nothing is sent to Stripe, and you can unmerge anytime.
Are you sure? This will move the entry to the trash. You can recover it later from Settings → Trash if needed.
Once assigned, this entry will appear under that client's profile in the Onboarding tab.
Project review documents are client-facing pages where clients approve, discuss, or reject key strategic decisions. Each lives at /<client-slug>/project-overview?t=<token> and stores decisions in the client_overviews collection.
| Client | Contact | Monthly | Status | Project | Last activity | |
|---|---|---|---|---|---|---|
| Loading... | ||||||
| Amount | Status | Customer | Description | Created |
|---|---|---|---|---|
| Loading... | ||||
| Total | Status | Number | Customer | Method | Due | Created |
|---|
| Description | Qty | Price | Amount |
|---|

| Desc | Qty | Price | Amt |
|---|
| Customer | Product | Status | Amount | Freq | Next | Ad spend | |
|---|---|---|---|---|---|---|---|
| No subscriptions. | |||||||
| Name | Invoices | Spend | Created |
|---|
| Amount | Status | Description | Customer | Method | Date |
|---|
| Name | Role | Type | Salary | Per check | Status | |
|---|---|---|---|---|---|---|
| No US employees. | ||||||
| Name | Role | Country | Bi-weekly | Currency | Wise ID | Type | Status | |
|---|---|---|---|---|---|---|---|---|
| No contractors. | ||||||||
| Name | Deals | Revenue | Earned | Override |
|---|---|---|---|---|
| No reps. | ||||
| Client | Rep | Value | Monthly | Upfront | Date |
|---|---|---|---|---|---|
| No deals. | |||||
| Name | Role | Type | Location | Start | Status |
|---|---|---|---|---|---|
| Populates from payroll. | |||||
Every employment contract, in one place — drafts, sent, viewed, signed, and executed. Edit or delete drafts, archive older ones, and click any contract to open it.
Expense submissions by employees. Approvers can mark items as approved and paid.
This is exactly what will be delivered. Review it, then send.
Time-off balances, requests & approvals
| Employee | Type | Dates | Days | Reason | Submitted | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
| Employee | Vacation | Sick | Personal | YTD Used | Next Reset | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
| Type | Dates | Days | Reason | Status | Submitted |
|---|---|---|---|---|---|
| No requests yet. | |||||
| Employee | Type | Dates | Days | Reason | Status | Decided by | Submitted |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Approved time off across the team
| Employee | Type | Dates | Days |
|---|---|---|---|
| No approved PTO this month. | |||
Use + Invite user to pre-authorise a teammate by email — they get their role automatically the first time they sign in with that Google account. Anyone who signs in without an invite lands in Pending approval and can't see anything until you give them a role here. Choose a role to grant access; each role unlocks exactly its own tools. Use Revoke access to send someone back to pending.
| User | Role | First sign-in | Last active | ||
|---|---|---|---|---|---|
| Loading... | |||||
Your Ledger is a hardware wallet with no API, so enter its coins here. One per line as SYMBOL AMOUNT — e.g. BTC 0.5. They're valued at live USD prices on every refresh.
Paste read-only keys (Kraken: Query Funds; Coinbase: View). They're stored securely server-side and never shown again — leave a field blank to keep its current value. Saving runs a balance sync immediately.
From your Plaid dashboard (Team Settings → Keys). Stored securely server-side, never shown again. Use Production for real accounts (Sandbox is for testing with fake banks). After saving, click Link account to connect each bank.
https://dashboard.four28.com/admin as an allowed redirect URI in your Plaid dashboard (API → Allowed redirect URIs).Every bank and card linked through Plaid. Mark each as Personal or Business so it lands in the right place. If an account also flows into QuickBooks, tick also in QBO and its Plaid transactions are kept out of totals and the advisor so nothing double-counts.
Add as many as you like — exchanges (Kraken, Coinbase, Binance), on-chain wallets (paste a public address from Ledger, Trust, Phantom, or any wallet and we read the live balance), or manual holdings. Mark each Personal or Business; personal ones roll up under your Personal crypto, business ones stay in business net worth.
For anything the portal can't auto-link — a student loan, a vehicle, real estate, a 401(k). It's counted in your net worth.
Link one or more Stripe accounts with a read-only restricted key. In Stripe: Developers → API keys → Create restricted key, and grant Balance: Read, Customers: Read, and Invoices: Read (the last two power the client-revenue mapping under Finance → Clients). Paste the rk_live_… key below. Stored server-side, never shown again.
One-time setup so you can sign in with Google (no more expiring tokens, and you can add multiple accounts). Create an OAuth client in Google Cloud, then paste its Client ID & Secret here.
console.cloud.google.com → APIs & Services → OAuth consent screen → choose External, fill the basics, and under Test users add every Google email you'll connect.| Debt | Balance | Monthly | Rate |
|---|
Your household accounts. Anything linked here shows up on the personal dashboard for both of you.
Personal bank & card accounts (kept separate from business)
Kraken, Coinbase, Binance, Ledger & custom wallets
How money moves through Four28 — billing clients, the books, and paying the team.
Payments, invoicing, subscriptions
Checking connection…
Overseas contractor payroll (counts, monthly pay, 24-month totals)
Where client work happens. These feed the AI brain and the handoff documents.
Leads, conversations, sub-accounts & signed documents — for the AI brain
Projects, tasks & delivery — for the AI brain
Call recordings & notes — for the AI brain
Team messages & sentiment — for the AI brain
The model behind every AI feature, and the mail and files it is allowed to read.
The Anthropic key that runs the AI Advisor & all AI features
Gmail + Drive (Docs, Sheets, Slides) across your accounts — for the AI brain
Ship the console itself.
Push your local public/ changes live to dashboard.four28.com. Runs firebase deploy --only hosting via the local helper daemon.
Your assigned training courses. Complete each course to build the skills for your role. Progress saves automatically.
Draw your actual signature once. It's applied automatically as Four28's signature on every employment contract — on the signing page and the executed PDF. Employees only add their own signature.
Loading...
Permanently deletes everything in the trash (proposals AND onboarding entries) from the server. Frees up storage space. This cannot be undone.
All active contractors will be auto-populated with their default bi-weekly amounts.
PDF, DOCX, or images up to 25MB