User Walkthrough
A step-by-step catalog of every feature and user flow in the Agency Beats platform.
Last updated: July 30, 2026
01Authentication & Onboarding
1.1 Sign Up /signup
Enter your name
e.g., "Jane Doe"
Enter organization name
e.g., "Acme Agency" — this becomes your workspace
Enter email address
Must be a valid email
Set password
Minimum 6 characters
Click Sign up
The organization is created, you become its admin, and you land on /projects
1.2 Sign In /login
Option A — Email and password: enter your credentials and sign in.
Option B — Google: click Continue with Google, complete the consent screen, and you are returned through /auth/callback.
1.3 Team Invitation /invite/[token]
Admin side — sending the invite:
Open the Team page
Invitations are admin-only
Click Invite Member
Opens the invite dialog
Enter details
Email, role, and optionally a department and job title
Send the invite
An email goes out with a unique link that expires after 7 days
Invitee side — accepting:
Open the invite link
The page is public — no sign-in required to view it
Already have an account?
Sign in and click Accept Invitation. The link only works for the address it was sent to.
New to Agency Beats?
Set a name and password directly on the invite page — no separate sign-up needed
You land in the workspace
You are added with the role, department and job title from the invitation
02The In-App Walkthrough
Everything on this page also exists inside the product. Agency Beats ships a guided walkthrough that runs in a panel beside the real application — not a video, not a screenshot tour, but the actual workspace with your own data in it.
Opening it
- Walkthrough at the bottom of the sidebar, next to your avatar
- Run the walkthrough in the command palette — press
Cmd+Kon a Mac orCtrl+Kelsewhere
How it behaves
| Behaviour | What it means in practice |
|---|---|
| 17 sections | One per major surface, opening with an overview of how brands, projects, tasks and content fit together |
| It moves the app | Stepping into a section navigates to the page that section describes, so you are always reading about what is on screen |
| It follows you | Navigate somewhere yourself and the panel jumps to that page’s section, expanded in full — it answers "what is this page?" without making you click through |
| Paced reading | Continue reveals one message at a time; Next section moves on once you reach the end of one |
| Element highlighting | Messages marked with a crosshair ring the exact element they describe on Dashboard, Brands, Projects, Calendar and Queue. Hovering a message you have already read re-points the ring at it. |
| Section index | The list button in the panel header shows all sections with a one-line summary and a tick against the ones you have finished |
| Progress is remembered | Kept in your browser, so closing the panel and coming back tomorrow resumes where you stopped. Start over resets it. |
| Role-aware | Sections describing pages your role cannot open — Invoices, Billing — are skipped rather than shown and blocked |
03Dashboard Home
The morning read on the agency: what is due, what is waiting on someone, and who is loaded.
The five counters
| Counter | Links to |
|---|---|
| Active Clients | Brands |
| Active Projects | Projects |
| Tasks Due Today | — |
| Overdue Tasks | — (turns red once there is at least one) |
| Team Members | Team |
The panels below
| Panel | Content |
|---|---|
| Today’s Tasks | Everything due today, with a status badge and colour dot per row |
| Pending Approvals | Everything sitting in Internal Review or Client Review — each row opens the project it belongs to |
| Upcoming Deadlines | The next seven days grouped by date; today is amber and anything past is red |
| Team Workload | A bar per member broken into in progress, done and overdue |
| Upcoming Meetings | Your next scheduled calls with time and type |
| Recent Activity | A chronological feed of team actions, with Load more at the bottom |
- Both task lists show up to eight rows with a count badge beside the title
- Tasks already marked Done or Published are left out
- Workload bars go amber at one overdue task and red at three, and are scaled against the busiest person rather than a fixed capacity
04Brand Management
4.1 Brands List /brands
A brand is the client record, and everything else hangs off it — projects, tasks, content, knowledge and social connections all trace back to a brand. Four counters run across the top, then a row of controls, then the cards.
- Search brands — filters by name after a short pause
- Platform filter — Instagram through Newsletter
- Status filter — All Status, Active or Archived
- Sort — Name, Recently Updated, Most Projects or Most Tasks
- New Brand — top right, for managers and admins
Each card carries the logo (or a coloured initial), the description, platform badges in each platform's colour, Website and Guidelines markers, and three counts — projects, tasks and team members. Hover a count for its breakdown.
4.2 Create a Brand /brands/new
Brand name
The only required field
Description
A short summary of the client
Website URL
Optional
Logo
Upload an image, or leave it and get a coloured initial
Active platforms
Instagram, Facebook, X (Twitter), LinkedIn, TikTok, YouTube, Blog, Newsletter, Other
Create Brand
You are taken to the new brand’s detail page
4.3 Brand Detail /brands/[id]
| Tab | Contents |
|---|---|
| Overview | Brand summary and key figures |
| Contacts | The client-side people, including the primary contact invoices are emailed to |
| Guidelines | Named brand colours and fonts, each with an optional usage note |
| Assets | Uploaded logos, images and documents |
| Social | Per-platform publishing connections for this brand |
| Knowledge Base | Documents scoped to this brand, alongside the agency-wide library |
| Client Access | Grant a client account access to this brand’s portal |
4.4 Archiving
Hover a card for a three-dot menu with Edit Brand, View Projects and Archive Brand. Archiving is not deletion: the card stays on the list at reduced opacity, drops out of the Total Brands counter, and can be restored at any time.
05Project Management
5.1 Projects List /projects
Projects are a vertical list rather than a grid — one row each, with four counters above them for Active, Completed, With Overdue and Total.
- Search projects — filter by name
- Type filter — Content Operations, Web Build, Full Service
- Status filter — Active, Draft, Paused, Completed, Archived
- Sort — Recently Updated, Due Date, Progress or Client Name
A row carries the brand logo, the project and brand names, the end date, type and status badges, and a health dot. Below that sits a progress bar with completed over total tasks, an overdue count in red when there is one, and the assignees' avatars.
5.2 Create a Project /projects/new
Pick the project type
Content Operations, Web Build or Full Service — this decides which tabs the project gets
Choose a brand and name it
These two are the only required fields
Description and dates
Optional start and end dates
Tick service templates
Website, SEO, Content, Social, Paid Ads and more — each card shows how many tasks it would bring in from the task library
Create Project
If you picked any services, the task selection drawer opens straight away so you can choose what to import
5.3 Project Detail /projects/[id]
A project page is a set of tabs, with a Room button in the header and a Settings button for managers and admins. Two tabs only appear for certain project types.
| Tab | Shown For | Purpose |
|---|---|---|
| Overview | All | Project summary, key dates, description |
| Tasks | All | Work grouped by service and phase, with the task selection drawer |
| Board | Content Ops, Full Service | Kanban board with drag-and-drop between status columns |
| Phases | Web Build, Full Service | Web build stage tracker with milestone dates |
| List | All | Flat task list with sorting |
| Meetings | All | Project-specific meetings |
| Intake & Briefs | All | Turn a meeting transcript into structured service briefs and tasks |
| Emails | All | Email threads linked to this project |
| Team | All | Assigned team members |
| Chat | All | Project conversation, with an unread badge that also shows in the sidebar |
06Tasks, Board & Phases
6.1 Task Statuses
Backlog → To Do → In Progress → Internal Review → Client Review → Approved
↓
Done ← Published ← Publishing ← Scheduled
Blocked can be set on any task at any point.Eleven statuses in total. The later ones — Scheduled, Publishing, Published — are what put a content item on the Publishing Queue, so a task's status is also its position in the publishing pipeline.
6.2 The Board (Content Ops and Full Service)
Six columns — To Do, In Progress, Internal Review, Client Review, Approved, Done. Cards drag between them.
- Task title, assignee avatar, due date and priority on every card
- A purple sparkle on tasks the AI generated from a brief, with its reasoning in the tooltip
- Drag a card to change status
- Click a card to open the task detail panel
6.3 Task Detail
| Tab | What is there |
|---|---|
| Details | Title, description, status, priority, assignee, due date, service and phase |
| Content | The draft body for content tasks, with version history and scheduling |
| Files | Deliverables — uploads and Figma links, versioned, with pin-on-image annotation |
| Comments | The discussion thread, with a Mark internal toggle that hides a comment from the client portal |
6.4 Phases (Web Build and Full Service)
Discovery → Wireframe → Design → Development → Testing → Launch
- Phase name, description and completion status
- An optional milestone date, which draws a diamond on the Project Timeline
- The tasks that belong to each phase
07Content Calendar
The calendar merges three things that live elsewhere in the app: task due dates, content items scheduled from a task, and meetings. The header keeps a running count of each for the range you are looking at, plus a red deadline count for tasks still open.
Moving around
- Month, Week and Day tabs on the right
- Back and forward arrows — they step by whichever view you are in — plus a Today button
- Brand filter — narrows the whole page to one client, with a colour dot per brand
- Legend showing which colour belongs to which event type
Drag to reschedule
In Month and Week views you can pick an event up and drop it on another day. Tasks get a new due date; content and meetings keep their time of day and only move the date. A toast confirms the move, and a failure puts the event back. Dragging only starts after a short movement, so a click never moves anything. Day view is read-only for dragging.
Creating something on a date
Hover any day cell in Month or Week view and a small plus appears in its corner; Day view has an Add Event button instead. Both open the same dialog with the date filled in.
- The Task tab needs a title and an active project
- The Meeting tab takes a time, duration and Internal, Client or Review type
- The Meeting tab is disabled unless you are a manager or admin
When a day gets busy
A month cell shows three events, then a "+N more" link. That link and the day number both switch you into Day view, which splits the day into timed events and an All Day group with the brand and project named on each. On a wide screen an Upcoming panel sits to the right listing the next ten events, with Today and Tomorrow spelled out.
08Project Timeline
A Gantt chart of every task in your active projects, drawn as bars and grouped by brand and then by project down the left-hand side. Projects that are not active are left out entirely. When the chart loads it scrolls itself so today sits near the left.
Controls
- Scale — Day, Week, Month and Quarter change how wide a day is
- Filters — brand, project, assignee, status and priority, plus Clear to drop them all at once
- Zoom — a slider from 50% to 300%
- Collapse — click a brand or project row on the left to fold it away
Editing by dragging
Drag a bar sideways to shift a task, or drag its right edge to change only the due date. The chart updates as you drag and saves when you let go, rolling back if the save fails. These are the same task records your project boards use, so the change is immediately visible everywhere else.
- Hover a bar for status, priority, assignee and both dates
- Overdue tasks get a red outline and turn red in the left-hand column
- Double-click empty chart space to open Quick Add Task against that row’s project, starting on the day you clicked and due three days later
Reading the chart
- A blue Today line runs the full height
- Weekends are shaded
- Dashed arrows join tasks that depend on each other
- Amber diamonds sit on a project row wherever one of its phases has a milestone date
09Publishing Queue
The queue gathers every content item whose task has reached the publishing stretch of its life. Two dropdowns at the top — brand and platform — narrow the whole board. A Pipeline / List toggle switches between the columns and a flat view grouped by date.
Four columns
| Column | Holds | Drag |
|---|---|---|
| In Review | Drafts still waiting on internal or client sign-off | Neither |
| Approved | Signed off, but with no date yet | Drag from |
| Scheduled | Has a date and time | Drag from and to |
| Published | Already out | Drop target |
Scheduling
Drag a card from Approved onto Scheduled, or use the Schedule button on the card. Either way the Schedule Content dialog asks for a date and time, starting at 09:00. Reschedule reopens it with the current date filled in, and the small cross — or Remove Schedule — sends the item back to Approved. Past days are disabled in the picker.
Publish Now is not the same as Publish
Which button a scheduled card offers depends on whether that brand has a live connection for that platform, shown as a green or red dot beside the platform badge.
- Publish Now — really posts to Facebook, Instagram, X or LinkedIn through the brand's connected account
- Publish — records the item as published inside Agency Beats and nothing more
- Accounts are connected per brand, under Brands then the Social tab
- The history icon on a card opens its publish log
What actually posts it
A scheduled job runs every fifteen minutes, claims anything whose time has passed and sends it out. A failed attempt is put back and retried up to three times before it is treated as a permanent failure, and you are notified at every stage. If the platform token has expired the app tries to refresh it first, and only asks you to reconnect when that also fails.
10Meetings & Video Rooms
10.1 Meetings List /meetings
Every meeting in the organization, grouped by when it happens — Today, Tomorrow, This Week, Upcoming and Earlier. Three counters under the title track upcoming meetings, meetings completed this week, and completed meetings that still have nothing written up.
- Next Up cards at the top show only the meetings you are on
- Filters — search, brand, type, status and a date range
- Schedule Meeting — title, an Internal, Client or Review type, a duration from 15 to 90 minutes, date and time, and optionally a brand and project
10.2 Meeting Detail /meetings/[meetingId]
| Tab | What is there |
|---|---|
| Details | Meeting type, status and duration |
| Transcript | The stored transcript, and the box you paste or upload one into |
| AI | Summarise the transcript, then turn the summary into a brief |
| Participants | The participant list, with an Invite button |
10.3 Transcripts
Leave "Also mark this meeting completed" ticked when you save one. A project's Intake & Briefs tab only offers meetings that are marked completed and have a transcript, so an untidied meeting is invisible to the intake pipeline.
Once a transcript exists, the AI tab writes a summary from it. With a summary in place, the Brief Generator underneath can turn that into a content brief, a set of project requirements, or a change request.
10.4 Joining the Call
Press Join Meeting to drop into a full-screen video room powered by LiveKit — camera, microphone and screen sharing. Only people on the participant list can get a way in, and anyone added as a viewer can watch and listen without publishing camera or microphone. The status moves to In Progress and then Completed as the room opens and closes.
10.5 Project Rooms /projects/[id]/room
Every project also has a standing room, which is the richer of the two surfaces. Start Session opens the video room with a side panel beside it.
- Five side panels — Participants, Transcript, Notes, Chat and an AI panel that answers questions about the project's transcripts
- Session history — the ten most recent sessions with duration, participant count and a Transcript badge where one exists
- Copy Guest Link — a shareable URL that needs no account
- Managers can import an external transcript against the room, tagged Zoom, Google Meet, Teams or upload
10.6 Guest Rooms /meet/[slug]
Copy the guest link
From the project room lobby
The guest opens it
A pre-join screen asks for a name, and optionally an email so they can be sent the notes afterwards
Room check
The link is refused if the room has been made inactive
Join
They enter the video room with camera and microphone — no account, no sign-up
Guests take part in the call itself and nothing more — they never reach the dashboard, and the side panels are for signed-in team members.
11Messages
Two organization-wide channels — General and Announcements — plus direct messages, created for your organization the first time anybody opens the page. Project-specific conversation lives on each project's Chat tab instead.
- Unread conversations show a red count and a bolder name
- New DM opens a searchable list of your teammates
- Everyone can read Announcements, but only admins can post there
- Enter sends, Shift+Enter adds a line, and typing @ mentions a teammate and notifies them
- The paperclip attaches a file of up to 10 MB
Slash commands
Start the message box with / to reach the AI commands. Each reads the recent messages in the channel and posts its answer back into the conversation.
/ai summarize— a summary of the recent conversation/ai tasks— pulls actionable tasks out of the chat/ai decisions— picks out the decisions that were made
Per-message actions
- React from a grid of emoji, and click again to take it back
- Reply in a thread, which opens in a panel on the right rather than filling the channel
- Pin a message — five per channel, reachable from the banner at the top
- Edit or delete your own messages
12Intake & Service Briefs
The intake pipeline turns a kickoff transcript into structured service briefs, and those briefs into a real task list. It is the bridge between the conversation you had with the client and the work you are about to do.
Completed meeting with a transcript
↓ Extract
Intake record (draft) → review and edit → Approve
↓ Generate briefs
One brief per service discussed → Approve → Complete
↓ Generate Tasks
Tasks in the project, each with the AI's reason attached12.1 Creating an Intake
Pick a meeting
The dropdown only offers meetings that are marked completed and have a transcript saved
Click Extract
The AI reads the transcript and fills in a structured record
Review what it found
Client and company name, industry, goals, services requested, target audience, competitors, budget range, timeline, start date, pain points and existing assets
Approve the intake
You can edit the key fields first, or Re-extract if the transcript was thin
12.2 Service Briefs
Once the intake is approved, Generate Briefs writes one brief per service the meeting discussed. Each brief has fields built for that service.
| Service Type | Key Brief Fields |
|---|---|
| Website | Page count, CMS requirement, responsive needs, integrations, design style |
| SEO | Target keywords, competitor URLs, local SEO, technical audit scope |
| Content | Content types, frequency, tone, target audience, distribution channels |
| Social Media | Platforms, posting frequency, content pillars, engagement goals |
| Paid Ads | Platforms, budget, target audiences, campaign types, KPIs |
| Email Marketing | List size, campaign types, automation flows, ESP requirements |
| Branding | Deliverables, brand personality, competitor positioning, style preferences |
| CRO | Conversion goals, testing scope, analytics tools, landing page count |
| Analytics | Platforms, KPIs, reporting frequency, attribution model |
| Strategy | Goals, market position, competitive landscape, budget allocation |
A brief starts as a draft you can edit freely, becomes approved when it is signed off, and complete when it is final. Only a complete brief can generate tasks.
12.3 AI Task Generation
Click Generate Tasks
Available on complete briefs only
The AI reads the task library
It compares the brief against every template for that service type
Include or exclude, with a reason
Each template gets a decision and an explanation — for example "CMS setup excluded — no CMS required per brief"
Included tasks land in the project
With their phase, estimated hours and the AI’s reasoning stored on the task
Afterwards a collapsible panel shows the full decision log: included tasks with a green border and a check, excluded ones with a red border, an X and an Addbutton so a project manager can pull any of them back in with one click.
- Generated tasks carry a purple icon on the project List view and the Board, with the reason as a tooltip
- Tasks you add back manually from the excluded list are ordinary tasks — they carry no AI reason and no sparkle
13AI Agents
The sidebar calls it AI Agents; the page is headed Marketing AI Workspace. It is a grid of seven cards in three groups — click one to open its form underneath, click it again to close. Output streams in as formatted markdown, using the Anthropic Claude API through the Vercel AI SDK.
Content Creation
| Tool | What it does and what it asks for |
|---|---|
| Ad Copy Generator | Platform-specific ad copy. Asks for platform, campaign objective, target audience and the CTA you want. |
| CTA Suggestions | High-converting call-to-action variations. Asks for industry context, the CTA’s purpose and where it sits. |
| Content Drafter | Drafts a post from a brief, per platform, in the brand’s voice. |
Research & Analysis
| Tool | What it does and what it asks for |
|---|---|
| SEO Research | Keyword opportunities, search intent and content gaps. Asks for an optional focus topic or URL. |
| Competitor Analysis | Positioning, content approach and market stance. Asks for competitor names or URLs, one per line, plus an analysis focus. |
Performance & Strategy
| Tool | What it does and what it asks for |
|---|---|
| Performance Report | Writes up your own task and content data as a narrative report. Asks for a date range and a focus of overview, content or team. |
| Brand Strategy | An editor, not a generator. Collapsible sections for content pillars, audience personas, tone and voice with do and don’t lists, campaign objectives with KPIs, and competitive notes. |
What the model is given
Picking a brand does more than label the output. Each request is assembled from:
- The brand profile — platforms, description, guidelines
- Passages retrieved from the knowledge base for that brand
- That brand’s recent content items and non-internal client comments
- Its saved brand strategy
- How you rated earlier outputs for the same brand and the same tool
Variations and feedback
- Ad Copy, CTA Suggestions, SEO Research, Competitor Analysis and Performance Report keep each run as a numbered variation — up to five, switched with the V1 / V2 tabs
- Copy puts the current variation on your clipboard; Clear discards them and starts over
- Under a finished output: Save or Discard, Save to Brand (which appends the text to that brand’s guidelines), and a 1-to-5 star rating
- Saved and highly rated results are fed back as examples of what worked, discarded ones as what to avoid — scoped per brand and per tool, so rating one client’s ad copy never bends another client’s work
AI elsewhere in the product
- Meeting summariser and brief generator — on a meeting's AI tab (see Meetings)
- Intake extraction and task generation — on a project's Intake & Briefs tab
- Ask Knowledge Base — semantic Q&A over your indexed documents
- Transcript Q&A — in the project room side panel, across that project's transcripts
- Chat slash commands — summarise a conversation, or pull tasks and decisions out of it
- AI Insights — short observations on velocity and capacity on the Analytics page
14Knowledge Base & RAG
Headed Agency Intelligence Hub, this is the material the AI tools read. Add a document and its text is extracted, split into segments and embedded, which is what lets the tools retrieve passages by meaning rather than by keyword match.
Eight ways to add knowledge
| Tab | Details |
|---|---|
| Upload File | PDF, TXT, Markdown, CSV. Text is extracted and indexed. Dragging a file onto the document grid opens the dialog here. |
| Paste Text | Any text content — meeting notes, briefs, research |
| Import URL | A web page is fetched, cleaned and indexed |
| Customer Persona | Name, role, demographics, goals, pain points, preferred channels, quotes |
| Strategy | Mission, vision, target audience, pillars, competitive advantages |
| Competitor | Company, positioning, strengths, weaknesses, market share, key products |
| Campaign | Name, objective, channels, budget, timeline, KPIs, creative notes |
| SOP / Process | Title, objective, scope, steps with substeps, tools, review schedule |
Every tab has an Assign to Brand select and an Agency / Brand / Project scope. Fields on the five structured forms are embedded individually, so an AI tool can pull one persona's goals rather than a whole document.
Retrieval is scoped by brand
AI Auto-Fill
Any structured form can be populated from existing material instead of typed out.
Open a structured form
Click the auto-fill button (sparkles icon) at the top of the form
Choose a source
A file, a URL, or raw pasted text
Extract with AI
Fields populate with an amber highlight marking AI-filled values, so you know what to check. Editing a field clears the highlight, and the source filename or URL is kept on the document.
Watching a document become searchable
| Status | Meaning |
|---|---|
| Processing | Text is still being extracted and embedded |
| Ready | Indexed, with a segment count on the card |
| No Text | Nothing could be extracted — a scanned image, for example |
| Failed | Extraction or embedding error; hover the card for the retry button |
A stats bar at the top counts Documents, Segments Indexed and Total Words for whichever brand you have filtered to.
Asking it questions
The purple Ask Knowledge Base card runs a semantic search across your documents and answers from the passages it finds, with four suggested questions to start from. When nothing relevant matches it says so rather than guessing.
Version history and sharing
- Documents created through a structured form get a History button — browse earlier versions, preview the differences, and restore one (restoring is non-destructive: it creates a new version)
- Share generates a public link at /kb/share with an optional password and expiry date, counts views, and can be revoked at any time
- Presence avatars show who else has a document open at the same time
What else gets indexed
Uploaded documents are only one of six sources the RAG index draws on:
- Knowledge base documents
- Brand guidelines and saved brand strategy
- Meeting transcripts
- Content items
- Service briefs generated from intake
- Comments
Upload / Paste / URL / Form → Text extraction → Segmenting → Embedding (1536-dim) → pgvector
↓
Structured forms → per-field embedding ──────────────────────────────────────────────→ ↓
AI request → semantic search (brand-scoped) → context → response15Task Library
126 ready-made task templates covering the ten service types the app knows about. It is a catalogue you read from and copy into projects — templates are read-only here, and no work is tracked on this page.
| Service | Templates | Example Phases |
|---|---|---|
| Website | 16 | Discovery, Design, Development, Launch |
| Paid Ads | 15 | Setup, Campaign Build, Launch, Reporting |
| SEO | 14 | Audit, On-Page, Off-Page, Reporting |
| Content | 13 | Strategy, Production, Review, Publishing |
| Social Media | 13 | Setup, Content, Engagement, Reporting |
| Branding | 13 | Discovery, Strategy, Design, Delivery |
| Strategy | 12 | Discovery, Planning, Documentation, Alignment |
| Email Marketing | 11 | Setup, Automation, Campaigns, Reporting |
| CRO | 10 | Audit, Research, Testing, Reporting |
| Analytics | 9 | Audit, Implementation, Reporting |
Using it
- Choosing a service in the left sidebar loads its templates and shows the task count and total estimated hours
- Templates are grouped under phase headings, each group a small table of task, type and estimate
- Search matches on task name and description; the chips underneath filter by task type, and only types present in the current service are offered
- Add to Project — pick a project, then Open Task Drawer takes you there with the picker already filtered to the service you were browsing
16Email Integration
Connect Gmail or Outlook and project-related threads land inside the project, so the client conversation sits next to the work it is about.
Connecting
Open Settings, then Email Connections
Linkable directly at /settings?section=email
Choose a provider
Gmail, or Outlook via Microsoft Graph
Authorize via OAuth
Tokens are encrypted at rest
Connected
The account is listed with its address and last-synced time
Inside a project
| Feature | Description |
|---|---|
| Thread list | Every thread linked to the project, with search and All / Unread / Starred / Archived filters |
| Thread viewer | Full conversations with sender, timestamps and attachments |
| Compose | Send a new email from the project, choosing which connected account it goes from |
| Reply | Reply straight into an existing thread |
| Link | Attach an already-synced thread that is not yet tied to any project |
How syncing works
- Provider push notifications deliver new mail as it arrives
- A scheduled job also sweeps every active mailbox each fifteen minutes, with mailbox watches renewed nightly
- One Gmail and one Outlook account can be connected per organization
- Disconnect asks for confirmation, and only the person who connected an account can disconnect it
17Calendar Sync
Connect Google Calendar so your organization's event data is available to Agency Beats without anyone re-entering it.
Open Settings, then Calendar
Linkable directly at /settings?section=calendar
Click Connect Google Calendar
Starts the OAuth flow
Grant read-only access
The app never asks for write permission
Connected
Shows the account, a last-synced time, and a disconnect option
What it does
- Events are pulled hourly by a scheduled job and stored against your organization
- The sync is strictly read-only — Agency Beats never creates, modifies or deletes anything in your Google Calendar
- Disconnecting stops the sync; events already pulled in remain until removed
18Analytics Dashboard
Analytics reports on the work that lives in this app — projects, tasks and content items. Nothing here comes from ad platforms or social accounts, so the numbers move when your team moves work through the board. Charts are built with Recharts.
Two filters drive everything
- Brand — All Brands, or a single brand
- Date range — Last 7 days, Last 30 days, Last 90 days, Last year, All time
What is on the page
| Section | Cards |
|---|---|
| Overview | Total Brands, Active Projects, Tasks Completed, Overdue Tasks |
| Task Analytics | Tasks Over Time, Team Workload |
| Projects & Status | Task Status Distribution, Project Progress |
| Content Pipeline | Content by Platform, Content Pipeline funnel |
| Intelligence | AI Insights, Compare Periods |
Drill down to the tasks behind a chart
Three of the charts are clickable. Clicking one opens a sheet from the right listing the matching tasks with status, project and due date, each row linking through to its project.
- Task Status Distribution — click a slice of the donut
- Team Workload — click a bar for one team member
- Project Progress — click a project bar
The Intelligence row
AI Insights sends your task counts to the model and returns three to five one-line observations about velocity, bottlenecks and capacity; it shows an empty state until there are tasks in range. Compare Periods puts two ranges side by side for Tasks Created, Tasks Completed and Overdue Tasks.
19Notifications
19.1 The Bell
In the top bar on every dashboard page. An unread count badge, a popover with recent notifications grouped for compactness, and a View All link through to the full page.
19.2 Notifications Page /notifications
Full-text search across titles and bodies, a filter by event type with an active-filter count, and three tabs:
| Tab | Shows |
|---|---|
| All | Every notification |
| Unread | Only unread, with a red count badge |
| Archived | Manually archived, plus older items swept nightly |
Each row carries an icon, title, body preview, relative timestamp, group badge, action buttons and archive or delete controls, with Load more pagination at the bottom.
19.3 Channels
| Channel | Delivery |
|---|---|
| In-App | Real-time via Supabase Realtime, in the bell and on the notifications page |
| Individual emails via Resend, or batched into a daily or weekly digest | |
| Web Push | Native browser notifications (VAPID — requires permission) |
| Slack | Block Kit messages to a configured incoming webhook |
| Webhook | HMAC-SHA256-signed HTTP POST to your own endpoint |
19.4 Events you can tune
Seven event types have per-channel switches in Settings:
| Event | When it fires |
|---|---|
| Task Assigned | A task is assigned to you |
| Status Changed | A task you are involved with changes status |
| New Comment | Someone comments on a task you are on |
| Due Date Approaching | A daily job flags due dates coming up |
| Content Scheduled | Content is given a publish date |
| Content Published | Content goes live |
| Meeting Starting | A meeting you are invited to is about to begin |
20Team Management
Everyone in the organization, grouped by department with an Unassigned group at the end, and what each person is currently carrying. Stats along the top count Team Members, Departments and Active Tasks.
Member cards
- Name, job title, skills and a colour-coded role badge
- Active task count and the number of projects they span
- An overdue count in red when any assigned task is past due
- A capacity bar with a workload label beside it
Inviting someone (admin only)
Click Invite Member
Admins only
Enter the email address
The invitation link is bound to this address
Choose a role
Admin, Manager, Creator, Developer or Viewer
Optionally set department and job title
Applied automatically when they accept
Send
The link expires after 7 days
Pending invitations
Once there is at least one outstanding invitation, admins see a Pending invitations card above the member list with each address, the role it was sent for, and either its expiry date or the word Expired. Cancel revokes it and the link stops working immediately; you can always send a fresh one.
Departments
Admins can open Departments to add, rename, recolour or delete departments, and can edit any member's role, department and job title from the menu on their card. Deleting a department moves its members to Unassigned rather than removing them.
Role badges
21Settings & Integrations
Settings is a single page with a searchable nav down the left. Picking a panel swaps the content on the right and writes the choice into the address bar, so every panel is linkable and bookmarkable.
The panels
| Panel | Who | What is in it |
|---|---|---|
| General | Everyone (admin edits) | Default task duration, working days, organization timezone — the defaults scheduling reads |
| Organization | Admin | Organization name and logo, plus a read-only Organization ID for API use |
| Account | Everyone | Your avatar, name, personal timezone, email and password |
| Notification Preferences | Everyone | Seven event types against five channels, plus email digest frequency |
| Quiet Hours | Everyone | A start and end time, a timezone, and the days it applies to |
| Email Connections | Everyone | Connect and disconnect Gmail or Outlook |
| Calendar | Everyone | Connect Google Calendar, read-only |
| Apps & Integrations | Admin | Figma, and the Slack incoming webhook URL with a Test Connection button |
| Social Media | Admin | An overview of which platforms each brand has connected, linking through to the brand |
| Webhooks | Admin | Your endpoint URL, a generated signing secret, event subscriptions, a test payload and a delivery log |
| Auto-Assignment Rules | Manager and admin | Route new tasks automatically (see below) |
| API Keys | Admin | Generate a key — shown once — then metadata, last-used and Revoke |
| Audit Log | Admin | Time, actor, action and entity for everything that happened |
Auto-assignment rules
A rule matches on what kind of work it is, and then routes it.
- Conditions — project type, platform, task type, service type
- Actions — assign to a specific member, round robin across several, or assign to a department
Webhooks
- Payloads are signed with HMAC-SHA256 — verify the signature header before trusting a request
- The panel sends a test payload and reports the status code it got back
- A delivery log sits underneath the configuration
- Leaving the event list empty subscribes you to everything; tick specific events only when you want to narrow it
22Client Invoicing
22.1 The Page
Two tabs under the title: Invoices for one-off bills, Recurring for retainers. The Invoices tab has a status filter and, when anything is outstanding, a running total of everything sent but unpaid. Each row shows the reference, status, client, issue and due dates, and total.
22.2 Building a Draft
New invoice
Choose the client, currency, issue and due dates, and an optional tax percentage
Add line items
Description, quantity and unit price — subtotal, tax and total recalculate as you type
Add notes
A good home for payment terms or bank details
Save
It saves as a draft, and nothing is visible to the client until you send it
22.3 Sending
Send to client flips the invoice to sent, renders the PDF on the server, stores it, and emails it to the brand's primary contact with the PDF attached and a link to their portal. A Download PDF entry then appears in the row menu.
22.4 What Can Still Change
An issued invoice is a document of record, so the lifecycle is deliberately strict.
Draft ──edit / delete──▶ Draft
│
└─send─▶ Sent ──▶ Paid (final)
│
└────▶ Void (number retained)- Edit and Delete only appear on drafts
- Mark paid and Void only appear on sent invoices
- A paid invoice cannot be voided
- Voiding keeps the number, so the sequence never has gaps
22.5 Retainers
A retainer is a schedule that issues the same invoice every month, quarter or year. Set the client, cadence, billing day, first issue date, optional end date and the line items once, and each period produces an invoice from them.
- New retainer to create one, then Pause, Resume, Edit or Delete
- A banner appears when schedules are due, with Generate due invoices
- A daily job also issues anything that has come due
- Deleting a schedule keeps every invoice it has already issued
23Billing & Subscription
What your agency pays for Agency Beats. Everything here is backed by Stripe. The bar across the top gives your plan name, subscription status, next billing date and current member count, and counts down the remaining days of a trial.
Plan limits
Two things are actually capped — team members and brands — and both are enforced, not advisory.
| Limit | Starter | Pro | Agency |
|---|---|---|---|
| Team members | 3 | 10 | Unlimited |
| Brands | 3 | 10 | Unlimited |
On the page
| Section | Content |
|---|---|
| Status bar | Plan, status (free, trialing, active, past due), next billing date, member count |
| Usage | A progress bar for members and one for brands, or "unlimited" on Agency |
| Plan cards | The three tiers with what each includes, and an Upgrade button |
| Payment Method | The card on file, its expiry and the next charge date |
| Billing history | Recent Stripe invoices, with links to the PDF or the hosted copy |
Changing plan
Upgrade hands you to Stripe Checkout and returns you here with a confirmation. Checkout charges the plan price plus a per-seat line for your current member count. Update Payment Method opens the Stripe customer portal, which is also where you change the card, cancel, or pull older receipts.
24Client Portal
A separate, stripped-down surface for your clients — no sidebar, no dashboard, just the brands they have been given access to.
24.1 Granting Access
The client creates an account
Access is granted to an existing account, so they sign up first
Open the brand, then Client Access
Managers and admins only
Grant Access by email
Access is per brand — a client sees only the brands they have been added to
Revoke any time
Removing access takes effect immediately
24.2 Portal Home /portal
A grid of the brands the client can see, each card showing the logo or initials, name and description, linking into that brand's portal.
24.3 Brand Portal /portal/[brandId]
| Tab | Content |
|---|---|
| Content Review | Everything sitting in Client Review — the draft body, platform badge and every attached deliverable with its version. Approve, or Request Changes with a comment (required). |
| Project Milestones | Read-only. Active and completed projects, each with a progress bar and a numbered phase list showing milestone names, dates and status. |
| Invoices | Read-only. Outstanding balance, then every issued invoice with its reference, status, dates, total and a PDF download. Drafts are never shown. |
What the client can do
- Read content drafts and view attached deliverables
- Leave pin-on-image annotations on image deliverables
- Approve a piece of content, which moves the task to Approved
- Request changes with a comment, which sends the task back to In Progress
- Track project phase progress and download issued invoices
What the client cannot do
- Reach the dashboard, projects, brands or any internal page
- See comments your team marked internal
- See invoice drafts, or pay online — the portal shows the document, not a checkout
- Create or manage anything: projects, tasks, team, AI tools, brand settings
25Super Admin
Platform-level administration, for whoever operates the platform rather than for agencies using it. It has its own sidebar — Overview, Organizations, Subscriptions, Platform Admins — and a link back to the dashboard.
25.1 Overview
- Three stat cards: Organizations, Active Users, Active Subscriptions
- The ten most recent organizations with member count, plan and creation date
25.2 Organizations /super-admin/organizations
- Search by name, with a total count
- Per row: slug, member count, plan, active or disabled state, created date
- Disable or enable an organization in one click
Opening one gives member, brand and project counts, a subscription card that can override the plan between Starter, Pro and Agency, a member list where individual accounts can be banned or re-enabled, and the brands on the account.
25.3 Subscriptions /super-admin/subscriptions
A searchable table of organization, members, plan, status and a plan override select, for support and testing.
25.4 Platform Admins /super-admin/admins
- Add a platform admin by user ID, with optional notes
- List current admins with the date granted
- Remove admin rights — you cannot remove yourself
25.5 Impersonation
From an organization's detail page, Impersonate switches your context into that organization so you see exactly what they see. An amber banner across the top of every dashboard page reads "You are viewing this organization as a Super Admin" with a Return to Super Admin button, so the state is never ambiguous.
26User Roles & Permissions
Role Hierarchy
Admin > Manager > Creator > Developer > Viewer > Client
What is enforced
| Capability | Admin | Manager | Creator | Developer | Viewer | Client |
|---|---|---|---|---|---|---|
| View the workspace | ||||||
| Create and edit tasks | ||||||
| Comment and upload deliverables | ||||||
| Schedule and publish content | ||||||
| Use AI agents | ||||||
| Use the knowledge base | ||||||
| View analytics | ||||||
| Create and edit brands | ||||||
| Create and edit projects | ||||||
| Schedule meetings | ||||||
| Client invoicing | ||||||
| Auto-assignment rules | ||||||
| Invite and manage team | ||||||
| Manage departments | ||||||
| Edit organization settings | ||||||
| Manage integrations & webhooks | ||||||
| Manage API keys | ||||||
| View the audit log | ||||||
| Manage billing | ||||||
| Post in Announcements | ||||||
| Access the client portal | ||||||
| Approve content in the portal |
- A meeting host is the only person who can cancel their meeting or change its status, whatever their role
- Participants added to a meeting as viewers can watch and listen but cannot publish camera or microphone
- Client is granted per brand from the brand’s Client Access tab, never from the Team page
- Super Admin is a separate platform-level flag, outside this hierarchy entirely
Application Summary
By the Numbers
| Dashboard pages | 24 |
| Marketing pages | 10 |
| Portal pages | 2 |
| Super Admin pages | 5 |
| API routes | 62 |
| tRPC routers | 40 |
| Sidebar items | 16 |
| In-app walkthrough sections | 17 |
| Notification channels | 5 |
| Tunable notification events | 7 |
| AI tools on the AI page | 7 |
| RAG source types | 6 |
| Knowledge form types | 5 |
| Service types | 10 |
| Task templates | 126 |
| User roles | 6 + Super Admin |
| Task statuses | 11 |
| Project types | 3 |
| Default web build phases | 6 |
| Social publishing targets | 4 (Facebook, Instagram, X, LinkedIn) |
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | Next.js 15, TypeScript, TailwindCSS, shadcn/ui |
| API | tRPC (end-to-end type safe) |
| Database | Supabase (PostgreSQL + RLS + Realtime) |
| Auth | Supabase Auth (email/password + Google OAuth) |
| Video | LiveKit |
| AI | Anthropic Claude via the Vercel AI SDK |
| RAG | pgvector (HNSW) + OpenAI text-embedding-3-small |
| Email delivery | Resend |
| Email sync | Gmail API + Microsoft Graph (OAuth) |
| Calendar | Google Calendar API (read-only sync) |
| Push | Web Push (VAPID) |
| Charts | Recharts |
| Timeline | Purpose-built Gantt renderer |
| Editor | Tiptap (rich text) |
| Storage | Cloudflare R2 |
| Payments | Stripe |
| Scheduled jobs | GitHub Actions cron against guarded endpoints |
