> ## Documentation Index
> Fetch the complete documentation index at: https://developer.jobmojito.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interview portal

> The interview portal document: languages, the classic home page texts, and the support, tracking and completion messages.

## Interview portal configuration

Generates the document imported by **Portal customisation → Interview portal → Import configuration**.

The interview portal is the candidate-facing side: the public job list and position pages, the apply flow, and the screens a candidate sees around an interview. It is a different product from the coaching portal and has its own languages and content.

Every field is optional — omitted fields keep their current value. Languages are only ever added, never removed.

<Note>
  Since the **Pages** editor (Configuration → Interview portal), the support, application-tracking and interview-completed texts are **built-in pages**. This import still accepts them, but writes them into those pages' drafts — see [Where each field goes](#where-each-field-goes). To build full pages, a menu, a site footer or a theme, use the [portal pages import](/cookbooks/portal-customisation/portal-pages) instead.
</Note>

## Document

```json theme={null}
{
  "kind": "interview-portal",
  "version": 1,

  "languages": ["en"],

  "pages": [
    {
      "language": "en",

      "hero_box": "# Join the team at _Northgate_\n\nEvery application is reviewed by a person.",
      "about_box": "## About us\n\nWe run 14 clinics across the region.",
      "quote": "The interview felt like a conversation, not an interrogation.",

      "readmore_text": "Read about our hiring process",
      "readmore_link": "https://northgate.example.org/careers/process",
      "readmore_button": "How we hire",

      "interview_completed_box": "Thanks — we will be in touch within five working days.",
      "application_tracking_box": "Track your application any time using the link in your email.",

      "support_page": "## Help\n\nEmail careers@example.org.",

      "public_avatar_id": null,
      "discover_id": null,

      "public_interviews_disabled": false,
      "disable_easy_apply": false
    }
  ]
}
```

`kind` is optional, but when present it must be `"interview-portal"`; a document declaring another kind is refused.

## Fields

| Field                        | Type         | Where it appears                                                                             |
| ---------------------------- | ------------ | -------------------------------------------------------------------------------------------- |
| `languages`                  | string\[]    | Language codes to enable on the interview portal.                                            |
| `pages[].language`           | string       | Required on every page entry; entries without it are skipped.                                |
| `hero_box`                   | markdown     | Hero of the portal's classic home page.                                                      |
| `about_box`                  | markdown     | "About the company" section of the classic home page.                                        |
| `quote`                      | string       | Pull quote on the classic home page. Plain text, no markdown.                                |
| `readmore_text`              | string       | Label of the read-more block.                                                                |
| `readmore_link`              | url          | Its target.                                                                                  |
| `readmore_button`            | string       | Its button text.                                                                             |
| `interview_completed_box`    | markdown     | Shown after a candidate finishes an interview (`/interview/success`).                        |
| `application_tracking_box`   | markdown     | Shown on the application-tracking screen (`/application-tracking`).                          |
| `support_page`               | markdown     | The portal's support page (`/support`).                                                      |
| `public_avatar_id`           | uuid \| null | Talking avatar on the classic home page. Leave `null` unless you have a real id.             |
| `discover_id`                | uuid \| null | Discovery interview offered beside the job openings. Leave `null` unless you have a real id. |
| `public_interviews_disabled` | boolean      | `true` hides publicly listed interviews.                                                     |
| `disable_easy_apply`         | boolean      | `true` removes the one-click apply route.                                                    |

## Where each field goes

The document touches two places, and they behave differently:

| Fields                                                                                                                                                   | Goes to                     | Saved                                                                                                                                                                                                              |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `languages`, `hero_box`, `about_box`, `quote`, the read-more trio, `public_avatar_id`, `discover_id`, `public_interviews_disabled`, `disable_easy_apply` | The Interview portal form.  | **Not yet** — the operator reviews the form and presses **Save**.                                                                                                                                                  |
| `support_page`                                                                                                                                           | Built-in page `_support`    | **Immediately, as a draft.** Each text becomes one text block of that language, replacing the language's blocks; the page's other languages stay. Nothing is published — the operator publishes it from **Pages**. |
| `application_tracking_box`                                                                                                                               | Built-in page `_tracking`   | Same as above.                                                                                                                                                                                                     |
| `interview_completed_box`                                                                                                                                | Built-in page `_completion` | Same as above.                                                                                                                                                                                                     |

### The classic home page

`hero_box`, `about_box`, `quote`, the read-more block, `public_avatar_id` and `discover_id` make up the portal's **classic home page**. They show only while the home page has not been customised in **Pages**. Once the operator presses *Customise home page*, those sections become editable blocks of the page and the page wins — importing these fields afterwards changes nothing a candidate sees. For a customised home page, import the page itself (slug `""`) with the [portal pages import](/cookbooks/portal-customisation/portal-pages).

### The read-more block

`readmore_text`, `readmore_link` and `readmore_button` are one unit. Supply all three or none — a partial set renders a block with a missing label or a button that goes nowhere.

### Ids

`public_avatar_id` and `discover_id` are database ids. **Never invent them.** If you do not have a confirmed id, emit `null` or omit the field. A fabricated id produces a broken page rather than a validation error, because the importer cannot check ids that live in another table.

### Markdown

Rendered with a restricted renderer: headings, bold, italic, lists, links. In `hero_box`, wrapping a word in `_underscores_` renders it as the italic accent word.

Keep `interview_completed_box` short — it is read once, by someone who has just finished an interview and wants to know what happens next. Say what happens and when.

## Not in this document

Set by hand in Portal customisation → Interview portal: **Portal type** (interview portal or career page — a career page shows positions as job ads and calls them "Positions" in the admin), **Scheduling**, the SMS / WhatsApp sender, and the candidate e-mail flow. Pages, the site footer, the menu and the theme CSS come from the [portal pages import](/cookbooks/portal-customisation/portal-pages).

## Rules

* Put the primary language first in `pages[]` — the editor opens on it after import.
* Write candidate-facing copy in second person ("your application"), not third ("the candidate's application").
* Do not set `public_interviews_disabled: true` on a portal whose whole purpose is a public careers page; check before emitting it.
* Tell the operator that the support, tracking and completion texts land as drafts in **Pages** and need publishing there.
