A&R Utility & Revenue Assistant
How to run your label from one dashboard.
Your session lasts 7 days. After that, you'll be redirected to sign in again.
AURA has three main regions:
The aesthetic is intentionally dark and minimal — designed for long studio sessions without eye strain.
| Surface | Route | What you do there |
|---|---|---|
| Dashboard | / |
Today's priorities at a glance |
| AI Assistant | /ai |
Generate copy and strategy with AI |
| Content Engine | /content |
Platform-specific content generation |
| Artists | /artists |
Manage your roster |
| Releases | /releases |
Track your release pipeline |
| Contracts | /contracts |
Manage rights and agreements |
| Demo Inbox | /demo-inbox |
Review artist submissions |
| Promo Campaigns | /promo |
Plan and run campaigns |
| Calendar | /calendar |
Tasks and deadlines |
| Revenue | /revenue |
Track earnings and payouts |
| Settings | /settings |
Configure your label |
AURA has two parts that work together:
┌──────────────────────────────────────────────────────┐
│ Your Browser │
│ │
│ ┌──────────┐ ──── JWT token ────► ┌──────────┐ │
│ │ Frontend │ │ API │ │
│ │ (React) │ ◄──── JSON data ────── │ (Worker) │ │
│ └──────────┘ └────┬─────┘ │
│ │ │
│ ┌──────┴──────┐ │
│ │ Database │ │
│ │ (Postgres) │ │
│ └─────────────┘ │
│ │
│ What you see What stores your data │
│ (auralabels.app) (Neon cloud database) │
└──────────────────────────────────────────────────────┘
Each sidebar surface talks to dedicated API endpoints:
Sidebar Surface API Endpoints Used
────────────────── ──────────────────────────
Dashboard /api/revenue
/api/demos
/api/campaigns
/api/tasks
/api/notifications
/api/ai-actions
/api/activities
Artists /api/artists
Releases /api/releases
Contracts /api/contracts
/api/files (uploads)
Demo Inbox /api/demos
/api/webhook/:uuid (public intake)
Promo Campaigns /api/campaigns
Calendar /api/tasks
Revenue /api/revenue
AI Assistant /api/ai/generate
Content Engine /api/ai/generate
Settings /api/admin (team access)
When you generate content with the AI Assistant or Content Engine, AURA chains three AI engines:
Your Prompt
│
▼
┌──────────────┐
│ 1. Claude │ ← Anthropic (primary, shows cyan badge)
│ Sonnet 4 │
└──────┬───────┘
│ fails or not configured?
▼
┌──────────────┐
│ 2. GPT-4o │ ← OpenAI (fallback, shows emerald badge)
└──────┬───────┘
│ fails or not configured?
▼
┌──────────────┐
│ 3. Template │ ← Built-in templates (shows zinc badge)
│ Fallback │ Always available, no key needed
└──────┬───────┘
│
▼
Your Result
This means AURA works even without any AI keys — the template fallback produces platform-aware copy with correct character limits for every channel.
Files you upload (artwork, contracts, demo audio) are stored in Cloudflare R2, a secure cloud storage service. They're served through the same auralabels.app domain via /api/files/:key.
AURA protects your data with five security layers:
| Layer | What It Does |
|---|---|
| WAF | Blocks malicious requests before they reach the app |
| Zero Trust | Every request is authenticated at the network edge |
| Turnstile | Bot protection on the login form (invisible to humans) |
| Rate Limiting | Caps failed login attempts (5 per 15 minutes) |
| Timing-Safe Auth | Prevents attackers from guessing valid usernames |
The Dashboard is your operational cockpit. It shows everything that needs your attention today.
The Dashboard loads all data in parallel when you sign in. Use it as your morning briefing:
Navigate to Artists (/artists). You'll see all artists in your label, with:
Artists with missing information show orange "missing info" indicators. The system tracks:
Fill these in to clear the indicators. A complete profile helps the AI Assistant generate better copy.
| Status | Meaning |
|---|---|
| Active | Currently releasing and performing |
| Inactive | On hiatus, no current activity |
| Signed | Under active contract |
| Prospect | Being considered for signing |
Navigate to Releases (/releases). You'll see all releases with:
| Status | Meaning |
|---|---|
| Draft | Initial creation, not yet in active pipeline |
| Mastering | Audio is being mastered |
| Artwork Pending | Waiting on cover art |
| Scheduled | Locked release date, all assets ready |
| Released | Live on platforms |
| Archived | Catalog item, no longer active |
The orange readiness bar shows how close a release is to launch. It's calculated from:
Aim for 80%+ two weeks before release date.
Every release has a checklist with required and optional items. Required items block the readiness percentage. Typical items:
Each track in a release stores:
Navigate to Contracts (/contracts). You'll see all agreements with:
| Type | Use Case |
|---|---|
| Exclusive | Artist signs exclusively to your label |
| Non-Exclusive | Artist retains rights, label distributes specific releases |
| Distribution | Distribution-only deal, no rights transfer |
| Licensing | Sync licensing or sample clearance |
Every contract tracks two compliance fields:
These are important for EU-based labels. The system flags contracts where either status is "Pending" as needing attention.
Contracts approaching expiry show a warning in the Dashboard and Notifications. Renew or terminate before the expiry date to keep your rights chain clean.
Demos come in via a public webhook endpoint (/api/webhook/:uuid). You can connect this to:
Each submission captures: artist name, email, Instagram handle, track title, genre, duration, BPM, key, and a private listening link.
/demo-inbox)| Status | Meaning | Next Step |
|---|---|---|
| New | Unreviewed | Listen and rate |
| Listening | Currently evaluating | Finish your review |
| Interested | Want to follow up | Contact the artist |
| Rejected | Not a fit | Archived |
| Accepted | Signing the artist | Create artist profile + contract |
The recommended flow:
Navigate to Promo Campaigns (/promo). Each campaign shows:
Each campaign tracks platform-specific deliverables:
| Deliverable | Status Options |
|---|---|
| Promo Pool | Not Started / In Progress / Done / N/A |
| DJ Feedback | Not Started / In Progress / Done / N/A |
| Instagram Content | Not Started / In Progress / Done / N/A |
| YouTube Teaser | Not Started / In Progress / Done / N/A |
| Beatport Feature Pitch | Not Started / In Progress / Done / N/A |
| Spotify Pitch | Not Started / In Progress / Done / N/A |
| Email Blast | Not Started / In Progress / Done / N/A |
Similar to releases, campaigns have a readiness percentage. Missing content flags tell you what still needs to be created. Use the Content Engine (/content) to generate platform-specific copy for each deliverable.
Navigate to Calendar (/calendar). Tasks are displayed with:
| Status | Meaning |
|---|---|
| Backlog | Not yet prioritized |
| To Do | Queued for this sprint/week |
| In Progress | Currently working on it |
| Done | Completed |
Tasks past their due date with status ≠ Done show a red "Overdue" flag. These appear in the Dashboard under "Deadlines Needing Attention."
Navigate to Revenue (/revenue). You'll see:
Revenue data comes from the /api/revenue endpoint. The system shows:
Use this surface to make signing and marketing decisions. If one artist generates 60% of revenue, you need to diversify. If one release from two years ago still earns, you have catalog value.
The AI Assistant generates copy and strategy, wired to your actual label data. It knows your artists, releases, and contracts — so it can produce context-aware output.
/ai)The output header shows which engine generated the text:
| Badge Color | Engine |
|---|---|
| Cyan | Anthropic Claude |
| Emerald | OpenAI GPT-4o |
| Zinc | Template (no AI key configured) |
| Red | Error |
The Content Engine (/content) is distinct from the AI Assistant. It's purpose-built for platform-specific content — the AI Assistant handles general copy and strategy; the Content Engine handles channel-aware generation.
Choose a platform from the dropdown. Each platform has specific rules:
| Platform | Character Cap | Notes |
|---|---|---|
| 220 chars | Short-form social | |
| Spotify | 500 chars | Artist bio / release description |
| Beatport | 500 chars | Store description |
| TikTok | 220 chars | Short-form video caption |
| YouTube | No cap | Video description |
| SoundCloud | No cap | Track description |
| Radio | No cap | Radio one-sheet |
| Press | No cap | Full press release |
| No cap | Newsletter / promo email | |
| Multi-channel | Varies | Batch generation across platforms |
/content)The platform rules are injected into the LLM system prompt AND hard-capped in the template fallback. So even without an AI key, you get properly-sized output for your chosen platform.
Navigate to Settings (/settings). This is where you configure your label.
Settings uses one global Save button. Edit any card, then click the single Save at the top. This prevents the ambiguity of "which card did I just save?" — a deliberate UX choice.
You can sign out from two places:
Both clear your token and redirect to the login page. There's no "silent logout" — you always know you're signed out.
/api/files/:key endpoint| Entity | Statuses |
|---|---|
| Artists | Active, Inactive, Signed, Prospect |
| Releases | Draft, Mastering, Artwork Pending, Scheduled, Released, Archived |
| Contracts | Draft, Sent, Signed, Expired, Terminated |
| Demos | New, Listening, Interested, Rejected, Accepted |
| Campaigns | Planning, Active, Completed, Paused |
| Tasks | Backlog, To Do, In Progress, Done |
| Level | Use When |
|---|---|
| Critical | Must be done today, blocking other work |
| High | Important, this week |
| Medium | Standard priority |
| Low | Nice to have, no urgency |
AURA — A&R Utility & Revenue Assistant. Built for ORBEAT Records. Ready for your label.