← Dashboard

Request #{{ req.id }} — {{ req.name }}

{% if req.album_cover_url %}
Album cover {% if not deliver_album_cover %}

Album cover is hidden from the customer preview/delivery because delivery is disabled in settings.

{% endif %}
{% endif %}

Request Status

{% if current_step == -1 %}

Cancelled

{% else %}
    {% for i in range(steps|length) %} {% set key, label = steps[i] %} {% set is_completed = i < current_step %} {% set is_current = i == current_step %}
  1. {% if is_completed %}✓{% else %}{{ i + 1 }}{% endif %}
    {{ label }}
  2. {% endfor %}
{% endif %} {% if req.musicgpt_status %}

Recording Studio Status

    {% set mg_steps = [ ('IN_QUEUE', 'Queued'), ('IN_PROGRESS', 'Generating'), ('COMPLETED', 'Completed') ] %} {% set current_mg = req.musicgpt_status %} {% set ns = namespace(mg_index=-1) %} {% for j in range(mg_steps|length) %} {% if mg_steps[j][0] == current_mg %}{% set ns.mg_index = j %}{% endif %} {% endfor %} {% if current_mg in ('FAILED', 'ERROR', 'CANCELLED') %}{% set ns.mg_index = -2 %}{% endif %} {% for j in range(mg_steps|length) %} {% set mg_key, mg_label = mg_steps[j] %} {% set mg_completed = j < ns.mg_index %} {% set mg_current = j == ns.mg_index %}
  1. {% if mg_completed %}✓{% else %}{{ j + 1 }}{% endif %}
    {{ mg_label }}
  2. {% endfor %}
{% if req.musicgpt_cost is not none %}

LLM Cost: {{ format_musicgpt_cost(req.musicgpt_cost) }}

{% endif %} {% endif %} {% if req.status != 'cancelled' %}
{% endif %}
{% with messages = get_flashed_messages(with_categories=true) %} {% for category, message in messages %}
{{ message }}
{% endfor %} {% endwith %}

Customer Info

Operators can correct customer details here. Click Save when done.

Stored style: {{ req.style_genre or '—' }}

Request #: {{ req.id }}

{% if req.revision_note %}

📝 Revisions Requested{% if req.revision_count %}Revision #{{ req.revision_count }}{% endif %}

{{ req.revision_note }}

{% endif %}

Revision History

{% if revision_history %}
    {% for h in revision_history %}
  • Revision #{{ h.revision_count }} — {{ h.created_at }} {% if h.old_song_a_path or h.old_song_b_path %}
    Archived: {% if h.old_song_a_path %}
    A: {{ basename(h.old_song_a_path) }}{% endif %} {% if h.old_song_b_path %}
    B: {{ basename(h.old_song_b_path) }}{% endif %} {% endif %}

    {{ h.note or 'No note provided.' }}

  • {% endfor %}
{% else %}

No revisions recorded yet.

{% endif %}

Operator Notes

Internal notes for the booth team. Customers cannot see this.

Stems / Extras Link

Paste a self-hosted file share link (e.g. from Pingvin Share). It will appear on the customer player page once delivered.

1. Generate & Save Music Prompt

Paste Hermes' Title, Style, and Lyrics directly into the fields below, then save or generate.

{% if req.musicgpt_error %}
Error: {{ req.musicgpt_error }}
{% endif %}

{% set in_progress = req.musicgpt_status in ('IN_QUEUE', 'IN_PROGRESS') %}
{% if in_progress %} {% endif %} {% if req.musicgpt_task_id and req.musicgpt_status not in ('IN_QUEUE', 'IN_PROGRESS') %} {% endif %}

2. Songs



Select source MP3 for stems extraction:

{% set a_ready = req.song_a_path and file_exists(req.song_a_path) %} {% set b_ready = req.song_b_path and file_exists(req.song_b_path) %}

Vocal + instrumental extraction: ~$0.018–$0.084 USD per song on Pro plan.

{% if req.stems_status %} {{ req.stems_status }} {% if req.stems_cost is not none %}({{ format_musicgpt_cost(req.stems_cost) }}){% endif %} {% else %} Not requested {% endif %}

{% if req.stems_error %}
{{ req.stems_error }}
{% endif %} {% if req.stems_url %} {% endif %} {% set stems_in_progress = req.stems_status in ('IN_QUEUE', 'IN_PROGRESS') %}

3. Notify Customer

Preview email: {% if req.preview_sent_at %} ✅ Sent {{ req.preview_sent_at }} {% else %} ❌ Not sent yet {% endif %}

Both songs must be uploaded first.

{% if req.song_a_path and req.song_b_path %}

Operator preview link: Open customer player in new tab →

{% endif %}

4. Payment & Delivery

Customer approved: {% if req.customer_approved == 'none' %} Nothing yet {% else %} {{ (req.customer_approved or 'none').upper() }} {% endif %}

Delivery email: {% if req.delivery_sent_at %} ✅ Sent {{ req.delivery_sent_at }} {% else %} ❌ Not sent yet {% endif %}

{% if req.square_payment_ref %}

Square Payment Reference: {{ req.square_payment_ref }}

{% endif %}

Delivery options:


Select files to deliver:

{% set all_files = [] %} {% if req.song_a_path and file_exists(req.song_a_path) %} {% set _ = all_files.append(req.song_a_path) %} {% endif %} {% if req.song_b_path and file_exists(req.song_b_path) %} {% set _ = all_files.append(req.song_b_path) %} {% endif %} {% if req.deliver_wav %} {% if req.song_a_wav_path and file_exists(req.song_a_wav_path) %} {% set _ = all_files.append(req.song_a_wav_path) %} {% endif %} {% if req.song_b_wav_path and file_exists(req.song_b_wav_path) %} {% set _ = all_files.append(req.song_b_wav_path) %} {% endif %} {% endif %} {% set files_to_show = all_files + extra_files %} {% for fpath in files_to_show %}
{% if not (fpath == req.song_a_path or fpath == req.song_b_path) %}
archived / revision file
{% endif %}
{% else %}

No files available. Upload songs first.

{% endfor %}
{% if req.customer_approved == 'none' %}

⚠️ Customer must approve a version before you can mark paid or deliver.

{% endif %}