---
title: "Build a job application form"
description: "Collect candidate details, role-specific answers, and files in a multi-page application flow."
order: 5
type: "guide"
topic: "Use cases"
tags:
  - "job application"
  - "hiring"
  - "multi-page"
  - "file upload"
updated: "2026-07-15"
---

A job application form splits contact details from role-specific questions and sends uploaded materials straight to your connected storage.

## Split contact and role details

```ts
const application = defineForm({
  id: "engineering-application",
  title: "Apply to Acme",
  pages: [
    {
      id: "about",
      title: "About you",
      blocks: [
        { id: "name", kind: "short_text", label: "Full name", required: true },
        { id: "email", kind: "email", label: "Email", required: true },
        { id: "portfolio", kind: "url", label: "Portfolio or GitHub" },
      ],
    },
    {
      id: "role",
      title: "The role",
      blocks: [
        { id: "motivation", kind: "long_text", label: "Why this role?", maxLength: 800, required: true },
        { id: "available", kind: "date", label: "Earliest start date" },
        { id: "resume", kind: "file_upload", label: "Resume", maxFiles: 1, accept: [".pdf"], required: true },
      ],
    },
  ],
  settings: { showProgress: true, submitLabel: "Submit application", successTitle: "Application received" },
});
```

Connect Google Drive, Box, or S3 before publishing the upload field. State the accepted format and size in the form so candidates don't find out the rule only after picking a file.

## Set access and retention before launch

Collect only what the hiring process needs, restrict workspace access, and agree on retention with the responsible team. Fillo doesn't decide whether a hiring question is lawful or appropriate in your jurisdiction — review the flow with qualified counsel and the hiring owners.

## Test the candidate path

Run through the application by keyboard, on a narrow screen, with an invalid URL, an oversized file, an interrupted upload, and a successful retry. Then check that the file lands in the intended storage account and the hiring destination receives one duplicate-aware response.

## Try it

[Start with a prompt](/start?from=guide-build-a-job-application-form) and your coding agent builds the first form, staged for your review — or [open the editor](/new).

## Related

- [Job application example](/examples#job-application): Test the complete multi-page renderer and upload flow.
- [File uploads](/docs/uploads): Configure customer-owned storage and file limits.
- [Pages and layout](/docs/pages): Keep long applications understandable and navigable.
- [Data retention](/docs/data-retention): Understand Fillo's current retention behavior.
