> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evomarketing.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Brand Deals

> Managing job board listings and applications

Brand Deals is the job board where creators discover and apply to brand opportunities. Admins manage listings and review applications.

## Overview

Brand deals are **brand-level** (one per brand), managed separately from campaigns:

* Decoupled from campaign creation
* Edited in Brand Deals tab
* Applications flow to review queue

## Admin interface

Navigate to `/team/brand-deals` for:

### Deals subtab

Create and edit deal listings:

| Field        | Description                     |
| ------------ | ------------------------------- |
| Title        | Deal headline                   |
| Description  | What the brand is looking for   |
| Base pay     | Pay per post rate               |
| Platforms    | Required platforms (TT, IG, YT) |
| Deliverables | Expected content volume         |
| Timeline     | Campaign duration               |
| Spots        | Total creator spots             |
| Backup needs | Waitlist positions              |

### Applications subtab

Review queue for incoming applications:

* Filter by brand, status
* Approve/backup/reject with one click
* View applicant profile
* Add rejection reason

## Deal card design

Creators see gamified deal cards:

### Left rail

* Icon-led facts (deliverables, timeline, spots, wants)
* Platform logos
* Capacity indicator

### Right vault

* Base pay with count-up animation
* Prize podium showing top-3 bonuses
* "Apply" button

### Ranking

Deals sorted by most spots needed first. Full brands appear at bottom.

## Application flow

### Creator applies

1. **Growth Gate Check** - Verify minimum standing
2. **Answer Questions** - Three yes/no readiness questions
3. **Trial Video** - Upload sample (Galaxy can skip)
4. **Submit** - Application enters queue

### Admin reviews

1. View application in queue
2. Review creator profile, connected accounts
3. Choose action:
   * **Approve** - Add to brand
   * **Backup** - Add to waitlist
   * **Reject** - Decline with reason

### Post-decision

| Decision | Effect                                              |
| -------- | --------------------------------------------------- |
| Approved | `BrandCreatorMembership` created, onboarding starts |
| Backup   | Waitlisted, notified when spot opens                |
| Rejected | Can reapply after cooldown                          |

## Application statuses

| Status     | Meaning           |
| ---------- | ----------------- |
| `pending`  | Awaiting review   |
| `approved` | Accepted to brand |
| `backup`   | Waitlisted        |
| `rejected` | Declined          |

## Re-application rules

| Scenario           | Can reapply?          |
| ------------------ | --------------------- |
| Rejected           | After cooldown period |
| Removed from brand | Immediately           |
| Brand full         | When spots open       |

## Capacity management

### Spots tracking

```
Total spots: 50
Approved: 45
Backup: 10
Available: 5
```

### Overstaff

Contracts can specify overstaff allowance:

* Contracted slots + overstaff = max capacity
* Prevents over-hiring

## Deal visibility

| Setting | Effect                      |
| ------- | --------------------------- |
| Public  | Visible on job board        |
| Hidden  | Not shown, direct link only |
| Closed  | No new applications         |

## Prize configuration

Per-brand top-3 cash prizes:

1. Navigate to brand detail
2. Go to Brand Deals tab
3. Edit prize amounts
4. Save

Prizes display on deal card and brand hub leaderboard.

## API endpoints

| Method | Path                                                     | Purpose      |
| ------ | -------------------------------------------------------- | ------------ |
| GET    | `/api/internal/brand_deals`                              | List deals   |
| GET    | `/api/internal/brand_deals/:id`                          | Deal detail  |
| PATCH  | `/api/internal/brand_deals/:id`                          | Update deal  |
| GET    | `/api/internal/brand_deals/:id/applications`             | Applications |
| POST   | `/api/internal/brand_deals/:id/applications/:id/approve` | Approve      |
| POST   | `/api/internal/brand_deals/:id/applications/:id/reject`  | Reject       |

## Backend implementation

**Key files:**

* `app/controllers/api/internal/brand_deals_controller.rb`
* `app/models/brand_deal.rb`
* `app/models/job_board_application.rb`
* `app/services/job_board/` - Application processing

## Best practices

1. **Keep deals updated** - Stale listings hurt credibility
2. **Review quickly** - Applicants expect prompt responses
3. **Use backup wisely** - Don't over-waitlist
4. **Provide rejection reasons** - Help creators improve
5. **Monitor capacity** - Close when approaching full
