@extends('layouts.app') @section('title', 'Post several jobs from a CSV | healthcareers.app') @section('robots', 'noindex, nofollow') @section('content')

Post several jobs at once

Upload a CSV file (one job per row). Every row is checked first; you see any problems before anything is posted or paid.

Post one job My posts
@if (! $orgs)

Bulk upload is for organizations. Post your first job with the Post a job form, signed in as {{ auth()->user()->email }}, to start your organization. Then come back here.

Already on a team? Accept the invitation email and confirm your address first.

@else
@csrf @include('partials.errors')
1 · Get the file ready

Start from the sample CSV (the column names and two example jobs). Allowed values for each column, and every standard job title: allowed values.

In Excel or Google Sheets, save as CSV UTF-8. Keep the first row (the column names). Descriptions can have commas and line breaks.

2 · Upload

By posting you accept our No Ghosting Policy: answer every candidate within {{ \App\Services\Orgs\ReplyStats::PENDING_DAYS }} business days.

The columns
@foreach ($columns as $name => $c) @endforeach
ColumnWhat goes in it
{{ $name }}{{ $c['required'] ? 'Required' : 'Optional' }}{{ $c['help'] }}

Paid upgrades (website link, highlight, urgent, featured, alert blast) are added to the card payment. Free posts and job pack posts cover the listing only.

@endif @if ($batches->isNotEmpty())

Recent uploads

@foreach ($batches as $b) @endforeach
FileRowsStatusWhen
{{ $b->filename ?: 'Upload #'.$b->id }} {{ $b->valid_count }} of {{ $b->row_count }} ready {{ ['checked' => 'Not posted yet', 'paying' => 'Waiting for payment', 'publishing' => 'Posting…', 'finishing' => 'Posting…', 'done' => 'Done'][$b->status] ?? $b->status }} {{ $b->created_at->format('M j, Y g:ia') }}
@endif @endsection