Skip to content

Configuration

File Storage

Configure private resume uploads for memory, S3, or MinIO.

Buyer documentation is provided in English.

Upload contract

POST /jobs/{id}/resumes accepts multipart files under the files field. The demo accepts PDF and DOCX uploads with a 20 MiB total request limit and returns candidate records or per-file failures.

For profiles without CV files, download the CSV template from Upload candidates and submit it to POST /jobs/{id}/candidates/import. Name and email are required. The import validates the entire file before creating records; it does not attach resumes or generate scores.

Choose a driver

memory is the default and requires no setup. s3 uses the AWS credential chain unless explicit storage keys are set. minio uses a custom endpoint and path-style requests. All three keep downloads behind the authenticated API; never expose the bucket publicly.

DriverFile bytesRequired configuration
memoryProcess-local, 128 MiB capNone
s3Private AWS S3 bucketBucket and region or AWS_REGION
minioPrivate S3-compatible bucketBucket, endpoint, access key, secret key

Run MinIO locally

bash
# From the template root
docker compose -f compose.storage.yml up -d

Add these values to portal-api/lite/.env, then run make run from that directory:

env
STORAGE_DRIVER=minio
STORAGE_S3_BUCKET=hireiq-resumes
STORAGE_S3_ENDPOINT=http://localhost:9000
STORAGE_S3_ACCESS_KEY_ID=hireiqdemo
STORAGE_S3_SECRET_ACCESS_KEY=hireiqdemo1234
The compose example pins a community-built MinIO image because the historical official image is unavailable. Its keys are for local development only. Review your storage deployment and change both root credentials and matching API values before sharing an environment.

Data lifecycle

S3/MinIO preserve original bytes across API restarts, but Lite candidate and asset records reset from JSON fixtures. Previous objects become unlinked. Production requires durable metadata, backup, and an object lifecycle policy. Lite does not parse CV contents.