# Agent Cody — Agent Guide

> Agent Cody is a content operations platform for Social Media Marketing Agencies. It manages brands, deliverables, scheduling, approvals, research, and AI-assisted script generation from templates and reels.

Agents that need to drive Agent Cody do so via a logged-in browser session — the app has no public API. Selectors below identify the primary action element on each page; combine with the page summary to plan a click sequence.

## Public

### Sign In — `/login`

Email + password or Google OAuth sign-in.

Auth: `public`

Actions:

- **sign-in-email** — Sign in with email and password
- **sign-in-google** — Sign in with Google

### Agent Guide — `/agent-guide`

Public navigation map for AI agents — the same content as llms-full.txt rendered as HTML.

Auth: `public`

## Core

### Home — `/`

Authenticated landing page: greeting, brand list with active project counts, quick action to create a new brand.

Auth: `session`

Actions:

- **open-brand** — Jump into a brand workspace
- **create-brand** — Open the create-brand dialog from home

### In-app Guide — `/guide`

Interactive help / onboarding documentation: PESTO framework, research, board, calendar, performance, inbox, roles, glossary.

Auth: `session`

## Brands

### Brands — `/brands`

List of all brands in the active organization with search, filter, and a create dialog.

Auth: `session`

Actions:

- **create-brand** — Open the create-brand dialog and submit a new brand
  - selector: `[data-testid="brand-create-button"]`
- **open-brand** — Navigate to a brand workspace by clicking a row
  - selector: `[data-testid="brand-row-{slug}"]`
- **search-brands** — Filter the list by typing into the search input
  - selector: `[data-testid="brand-search-input"]`

### Brand Overview — `/brands/[brandSlug]`

Brand dashboard with stats, upcoming content, recent deliverables, and quick links.

Auth: `session`

Actions:

- **edit-brand** — Open the brand-settings dialog
  - selector: `[data-testid="brand-edit-button"]`
- **open-board** — Jump to the deliverables board
  - selector: `[data-testid="brand-action-board-link"]`
- **open-calendar** — Jump to the scheduling calendar
  - selector: `[data-testid="brand-open-calendar-link"]`
- **open-approvals** — Jump to the approvals queue
  - selector: `[data-testid="brand-action-approvals-link"]`

## Brand Profile

### Brand Profile — `/brands/[brandSlug]/profile`

Editable brand profile across identity, audience/ICP, voice, pillars, visual identity, sponsored content, offer, tone, guardrails, brand story, differentiation, and per-platform voice.

Auth: `session`

Actions:

- **expand-section** — Expand or collapse a profile section
  - selector: `[data-testid="profile-section-{section}-toggle"]`
- **save-section** — Save edits to a section
  - selector: `[data-testid="profile-section-{section}-save-button"]`

### Brand Profile Wizard — `/brands/[brandSlug]/profile/wizard`

Step-by-step onboarding for a new brand: identity, audience/ICP, voice/tone, topics, brand story.

Auth: `session`

Actions:

- **wizard-next** — Advance to the next step
  - selector: `[data-testid="profile-wizard-next-button"]`
- **wizard-back** — Return to the previous step
  - selector: `[data-testid="profile-wizard-back-button"]`
- **wizard-finish** — Submit the wizard and persist the profile
  - selector: `[data-testid="profile-wizard-finish-button"]`

## Board & Deliverables

### Deliverables Board — `/brands/[brandSlug]/board`

Kanban view of every deliverable for a brand with platform/media/pillar/format/angle filters and create actions.

Auth: `session`

Actions:

- **create-deliverable** — Open the single-deliverable create dialog and submit
  - selector: `[data-testid="deliverable-create-button"]`
- **create-deliverables-batch** — Generate a batch of deliverables from a brief
  - selector: `[data-testid="deliverable-batch-create-button"]`
- **open-deliverable** — Navigate to a deliverable detail page by clicking a card
  - selector: `[data-testid="board-card-{deliverableId}"]`
- **change-card-status** — Drag a card between kanban columns to change its status
  - selector: `[data-testid="board-column-{status}"]`
- **apply-filters** — Open the filters popover and toggle pillar/angle/format/platform/media filters
  - selector: `[data-testid="board-filters-trigger"]`

### Deliverable Detail — `/brands/[brandSlug]/board/[deliverableId]`

Full view of a single deliverable: script, caption/hashtags, posting URLs, scheduled date, status stepper, performance, tasks, and activity timeline.

Auth: `session`

Actions:

- **edit-script** — Edit the script body inline
  - selector: `[data-testid="deliverable-script-input"]`
- **edit-caption** — Edit the caption + hashtags
  - selector: `[data-testid="deliverable-caption-input"]`
- **change-status** — Move the deliverable through its status stepper
  - selector: `[data-testid="deliverable-status-stepper"]`
- **set-schedule** — Pick a posting date and time
  - selector: `[data-testid="deliverable-schedule-input"]`
- **add-platform-url** — Add a published-post URL for IG/TikTok/YouTube
  - selector: `[data-testid="deliverable-platform-url-input"]`

## Calendar

### Calendar — `/brands/[brandSlug]/calendar`

Monthly calendar with drag-to-schedule from an unscheduled tray and a per-deliverable detail sheet.

Auth: `session`

Actions:

- **navigate-month** — Move forward or back one month
  - selector: `[data-testid="calendar-month-prev-button"]`
- **go-to-today** — Jump back to the current month
  - selector: `[data-testid="calendar-today-button"]`
- **drag-to-schedule** — Drag an unscheduled item from the tray onto a date cell
  - selector: `[data-testid="calendar-cell-{yyyy-mm-dd}"]`
- **open-deliverable-sheet** — Click a calendar event to open its detail sheet
  - selector: `[data-testid="calendar-event-{deliverableId}"]`

## Inbox

### Inbox — `/inbox`

Unified action list — research-profile decisions, deliverable approvals, and triage items.

Auth: `session`

Actions:

- **filter-tab** — Switch between action / resolved tabs
  - selector: `[data-testid="inbox-tab-{tab}"]`
- **open-item** — Open the preview panel for an inbox row
  - selector: `[data-testid="inbox-row-{itemId}"]`
- **approve-item** — Approve the selected item
  - selector: `[data-testid="inbox-approve-button"]`
- **reject-item** — Reject the selected item with a reason
  - selector: `[data-testid="inbox-reject-button"]`

## Research

### Brand Research — `/brands/[brandSlug]/research`

Redirects into the brand competitors view; entry point for research surfaces.

Auth: `session`

### Swipe File — `/brands/[brandSlug]/research/swipe`

Reference-content library per brand: drag-drop upload, URL ingest, tagging, and pillar/category assignment.

Auth: `session`

Actions:

- **add-swipe-item** — Open the add-swipe-item dialog (upload, paste URL, link Drive)
  - selector: `[data-testid="swipe-add-button"]`
- **apply-tags** — Apply pillar / category / tags to a swipe row
  - selector: `[data-testid="swipe-row-{itemId}-tag-button"]`

### Research Profile — `/brands/[brandSlug]/research/profiles/[username]`

Per-brand creator profile view fed by research database (used as input for script generation).

Auth: `session`

### Research Reel — `/brands/[brandSlug]/research/reels/[reelId]`

Reel detail from research — metadata, hooks, transcript, Adapt action.

Auth: `session`

Actions:

- **adapt-reel** — Adapt a reel into N brand-voice scripts via the adapt pipeline
- **view-transcript** — View the transcript
- **tag-reel** — Apply pillar / angle / format tags

### Brand Hooks — `/brands/[brandSlug]/research/hooks`

Per-brand hook templates (subset of the global hooks library).

Auth: `session`

## Competitors

### Competitors — `/brands/[brandSlug]/competitors`

Per-brand list of competitors / creator profiles with sort + filter by platform/niche/followers; add or import.

Auth: `session`

Actions:

- **search-creators** — Filter creators by name
- **sort-followers** — Sort by follower count
- **add-profile** — Add a new creator profile
- **import-video** — Import a reel from a URL
- **open-creator** — Open a creator detail page

### Competitor Detail — `/brands/[brandSlug]/competitors/[username]`

Detail view of a single competitor / creator — metadata, follower counts, related content.

Auth: `session`

### Creator Intel — `/brands/[brandSlug]/competitors/[username]/intel`

Deep dive into a creator — niche, top hooks, performance patterns, AI-extracted insights.

Auth: `session`

## Playbooks

### Playbooks — `/playbooks`

Reusable copywriting playbooks (frameworks / checklists / references / transcripts) — org-wide and per-brand.

Auth: `session`

Actions:

- **create-playbook** — Open the new-playbook page
  - selector: `[data-testid="playbook-create-link"]`
- **edit-playbook** — Edit an existing playbook
  - selector: `[data-testid="playbook-row-{id}-edit-button"]`
- **delete-playbook** — Delete a playbook (with confirm)
  - selector: `[data-testid="playbook-row-{id}-delete-button"]`

### New Playbook — `/playbooks/new`

Form to create a playbook (name, type, scope, body).

Auth: `session`

Actions:

- **submit-playbook** — Submit the new playbook form
  - selector: `[data-testid="playbook-submit-button"]`

## Hooks

### Hooks — `/hooks`

Hook-template library used to seed new scripts — CRUD + duplicate + categorize.

Auth: `session`

Actions:

- **create-hook** — Create a new hook template
  - selector: `[data-testid="hook-create-button"]`
- **edit-hook** — Edit a hook template
  - selector: `[data-testid="hook-row-{id}-edit-button"]`
- **duplicate-hook** — Duplicate a hook template
  - selector: `[data-testid="hook-row-{id}-duplicate-button"]`
- **delete-hook** — Delete a hook template
  - selector: `[data-testid="hook-row-{id}-delete-button"]`

## Library (global)

### Content Library — `/content`

Global reel database across the org — search, filter (pillar / platform / angle), tag, manage taxonomy.

Auth: `session`

Actions:

- **search-reels** — Search reels by title / hook / transcript
- **add-reel** — Add a reel by URL
- **apply-tags** — Tag with pillar / angle / format

### Reel Detail — `/content/[reelId]`

Full reel view: metrics, hooks, tags, creator info; copy hashtags, bookmark, view/create hooks, Adapt.

Auth: `session`

Actions:

- **view-metrics** — View reel performance metrics
- **copy-hashtags** — Copy hashtags to clipboard
- **create-hook** — Create a hook template from this reel
- **adapt-reel** — Adapt this reel into brand-voice scripts
- **tag-reel** — Tag with pillar / angle / format
- **open-external** — Open the reel on its source platform

### Global Taxonomy — `/content/taxonomy`

Org-wide pillar + angle taxonomy: add / edit / delete pillars and angles; manage angle options.

Auth: `session`

Actions:

- **add-pillar** — Add a new pillar
- **add-angle** — Add an angle to a pillar
- **edit-pillar-or-angle** — Edit a pillar or angle
- **inspect-taxonomy** — Read the org-wide pillar + angle taxonomy

### Brand Taxonomy — `/brands/[brandSlug]/content`

Per-brand pillar + angle overrides on top of the global taxonomy.

Auth: `session`

### Templates — `/templates`

Redirects to /content. Kept for backward-compatible deep links.

Auth: `session`

### Creators — `/creators`

Global creator browser across the org — search, filter, sort, bulk-assign creators to brands.

Auth: `session`

Actions:

- **search-creators** — Search creators across the org
- **add-profile** — Add a creator profile
- **bulk-assign** — Assign selected creators to a brand

### Creator Profile — `/creators/[username]`

Global creator profile view (org-wide, not brand-scoped).

Auth: `session`

## Analytics & Reports

### Analytics — `/analytics`

Placeholder that prompts you to switch the active brand; per-brand performance lives under /brands/[slug]/performance.

Auth: `session`

### Brand Performance — `/brands/[brandSlug]/performance`

Per-brand performance dashboard: engagement rates, top performers, content breakdowns, AI-generated insights for published content.

Auth: `session`

Actions:

- **view-engagement** — See engagement-rate breakdowns
- **drill-into-post** — Click a published post to view its detail
- **generate-insights** — Run insight generation across recent posts

### Reports — `/brands/[brandSlug]/reports`

Historical performance reports per brand by date range; summary metrics + export.

Auth: `session`

Actions:

- **pick-date-range** — Select a date range to summarize
- **export-report** — Export the report

## Settings

### Brand Settings — `/brands/[brandSlug]/settings`

Edit brand basic info, social handles + follower counts, posting goals, social integrations; archive or permanently delete the brand.

Auth: `session`

Actions:

- **save-brand** — Persist brand info changes
- **archive-brand** — Archive the brand
- **delete-brand** — Permanently delete the brand (with name-confirmation)
- **connect-social** — Connect or disconnect IG / TikTok / YouTube / Drive

### API keys — `/settings/api-keys`

Self-serve provisioning of bearer tokens for the MCP server, the Chrome extension, and any server-to-server caller. The raw key is shown once on creation and stored only as a SHA-256 hash.

Auth: `session`

Actions:

- **create-api-key** — Mint a new API key (name + optional expiry); raw key shown once
  - selector: `[data-testid="api-key-create-button"]`
- **copy-claude-code-command** — Copy a pre-filled `claude mcp add` snippet from the reveal dialog
- **revoke-api-key** — Revoke a key (soft-delete, immediate)
  - selector: `[data-testid="api-key-revoke-trigger"]`

## Public Share Links

### Public Report — `/report/[token]`

Token-gated public performance report (optionally password-protected).

Auth: `token`

Actions:

- **verify-password** — Submit the report password if required
- **download-report** — Download the report

### Shared Insights — `/share/insights/[token]`

Token-gated insights / performance narrative — read-only embeddable view.

Auth: `token`

Actions:

- **view-insights** — Read the insights breakdown
- **print** — Print or export the insights view
