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.
| Driver | File bytes | Required configuration |
|---|---|---|
| memory | Process-local, 128 MiB cap | None |
| s3 | Private AWS S3 bucket | Bucket and region or AWS_REGION |
| minio | Private S3-compatible bucket | Bucket, endpoint, access key, secret key |
Run MinIO locally
# From the template root
docker compose -f compose.storage.yml up -dAdd these values to portal-api/lite/.env, then run make run from that directory:
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=hireiqdemo1234Data 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.