Why ZIP, not API
We initially designed an API-pull importer for Award Force and Submittable. Both gate sandbox API access behind sales calls — there's no self-serve path for a customer to give us their data. So we pivoted: customer exports the ZIP, customer uploads, we don't need API keys at all.
This is also better long-term: your private data stays in your control during transit, and we're not coupled to upstream API breakages.
What gets exported
Each source has its own export menu. The wizard's first step shows you exactly which menu to click and what to include. The ZIP typically contains:
- One or more CSVs (entries / submissions / nominations)
- A folder of binary files (writing samples, video clips, photos, PDFs) named by entry id or filename
Don't try to pre-edit the ZIP — leave the original structure intact. The AI matcher uses both the CSV column names and a sample of rows to guess the mapping; trimming the export will degrade the match quality.
Step-by-step
- Pick source. Aclamos shows the right export instructions for Award Force, OpenWater, Submittable, Reviewr, WizeHive, Evalato, Zealous, or generic CSV.
- Export following those steps. Save the ZIP locally.
- Upload. Drag the ZIP onto the wizard. Cap is 1 GB per upload — if you're over, split into multiple shows or run multiple imports.
- AI mapping proposal. Claude reads the column headers + 5 sample rows and proposes a mapping like
title → nomineeName,organization → nomineeOrganization. Each row also gets a confidence score. - Confirm or adjust. Anything Claude was unsure about is flagged with a question — "I see 'project_status' but I'm not sure if VALIDATED / SUBMITTED / DRAFT mean active or archive in your data." Answer those.
- Dry-run preview. We project every row through the mapping and show you what would be created without writing anything. If 12 rows fail validation, you see them now, not after committing.
- Commit. Aclamos creates Categories, Nominations, and Reviews in a single transaction. After the CSV import, an async pass walks the ZIP and attaches each binary file to the matching nomination.
What carries over
- Nominations — every column you mapped, plus all unmapped columns preserved as JSON in
responsesso nothing is lost. - Categories with descriptions.
- Submitter metadata (nominator name, email, organization).
- Payment status — entries marked PAID get a synthetic
Paymentrow tagged with the source ("AWARD_FORCE", "SUBMITTABLE", etc.) so accounting reconciles. - Past winners + finalists — status preserved.
- Binary attachments — videos, photos, PDFs, writing samples. Re-hosted on R2/S3 with original filenames preserved.
What needs re-creating
- Auto-assignment logic — we run our own assigner during import, but you should review the proposed assignments before opening the round.
- Per-judge calibration data — judges recalibrate their first 5 reviews on Aclamos.
- Single-sign-on for old judges — re-issue magic-links so they can log in.
Idempotency
Every nomination created by the importer gets a publicId of the form IMPORT-{showFragment}-{n}. Re-running the same import is safe — duplicate publicIds skip with "already imported." If you commit, find a column you mistyped, fix the mapping, and re-commit, only the changed rows will be touched.
Where to find it
Settings → Migration → Import wizard once you have at least one show. The wizard URL pattern is /[org]/settings/migration/import.
We'll help
During the beta, our team migrates you for free. Email migrations@aclamos.app after you sign up and someone walks you through it on Slack.