---
title: "Build a personality quiz"
description: "Collect quiz answers in Fillo and score them into a result with a rubric your backend owns."
order: 1
type: "guide"
topic: "Use cases"
tags:
  - "personality quiz"
  - "choices"
  - "classification"
  - "redirect"
updated: "2026-07-15"
---

A personality quiz maps several preference answers to a result category. Fillo collects and validates the answers; your backend owns the scoring rubric and the result page.

## Build neutral questions

```ts
const quiz = defineForm({
  id: "working-style-quiz",
  title: "Find your working style",
  pages: [
    {
      id: "preferences",
      blocks: [
        {
          id: "start",
          kind: "select",
          label: "How do you start an unfamiliar project?",
          required: true,
          options: [
            { id: "map", label: "Map the system first" },
            { id: "prototype", label: "Build a small version" },
            { id: "discuss", label: "Talk through the goal" },
          ],
        },
        {
          id: "energy",
          kind: "select",
          label: "Which work gives you the most energy?",
          required: true,
          shuffleOptions: true,
          options: [
            { id: "analysis", label: "Finding the pattern" },
            { id: "making", label: "Shipping the thing" },
            { id: "alignment", label: "Creating alignment" },
          ],
        },
      ],
    },
  ],
  settings: { submitLabel: "See my result", redirectUrl: "https://app.example.com/quiz/result" },
});
```

## Classify on the server

Weight the raw option IDs and calculate the category once a response is accepted. Decide how ties break, and version the rubric so an old response stays explainable after the quiz changes. Don't draw diagnostic, medical, hiring, or other high-stakes conclusions unless the method and review process support them.

The redirect happens after Fillo accepts the response. Your result route can look up the signed-in person's latest quiz response in your own result store — don't put the full answer set in a query string.

## Test for bias and dead ends

Enumerate the answer combinations, confirm every one produces a result, and check whether shuffled option order changes interpretation. Then test keyboard selection, narrow screens, repeat submissions, delayed result processing, and a result lookup that isn't ready yet.

## Try it

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

## Related

- [Feature priority example](/examples#feature-priority): See structured preference choices in a live form.
- [Pages and layout](/docs/pages): Split longer quizzes into focused sections.
- [Response limits](/docs/response-limits): Keep one standing result per verified account.
- [Completion](/docs/completion): Redirect only after the response is accepted.
