> ## 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

# Interview portal configuration

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

The interview portal is the candidate-facing side: the public 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.

## 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
    }
  ]
}
```

## Fields

| Field                        | Type         | Where it appears                                                |
| ---------------------------- | ------------ | --------------------------------------------------------------- |
| `languages`                  | string\[]    | Language codes to enable on the interview portal.               |
| `pages[].language`           | string       | Required on every page entry.                                   |
| `hero_box`                   | markdown     | Top of the public position page.                                |
| `about_box`                  | markdown     | "About the company" section.                                    |
| `quote`                      | string       | Pull quote. 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.                  |
| `application_tracking_box`   | markdown     | Shown on the application-tracking screen.                       |
| `support_page`               | markdown     | The portal's support page.                                      |
| `public_avatar_id`           | uuid \| null | Avatar on public pages. Leave `null` unless you have a real id. |
| `discover_id`                | uuid \| null | Discovery interview. 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.                       |

### 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.

## 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.
