Formula fields: default values, calculations, and conditions on offer fields

Last updated: October 15, 2026

A custom or default field on an offer can now get its value automatically — a fixed default, or a value calculated from other fields — instead of a recruiter typing it in every time. You can also make a field show or hide based on other fields, not just department and office.

Who can do this: Admin, Super Admin — the same permission that already governs managing offer fields. No new permission was introduced for this feature.

Where to find it: Settings → Custom fields → Offer fields, in the field drawer's Values section (and, for AI-assisted setup, the assistant panel in that same drawer).

Setting a field's value

Open an offer field (new or existing) and look for the Values section. It has two modes:

  • Regular — the field's normal choices (for a select field), plus an optional Set default: a fixed value that pre-fills the field.

  • Formula — the value is calculated from a formula you write, referencing other fields.

If you don't set anything in Regular mode, the field behaves exactly as it does today — blank until the user fills it in.

Under either mode, there's a Prevent edits checkbox. Leave it off to let the recruiter change the pre-filled value; turn it on to lock the field as read-only. Switching to Formula mode turns Prevent edits on automatically (since a calculated value isn't normally meant to be hand-edited), but you can still uncheck it afterward if you want a formula's result to stay editable.

Writing a formula

Reference another field by wrapping its name in curly braces: {Field name}. To reference a field on the offer's job or requisition, prefix it: {Job.Field name} or {Requisition.Field name}.

Operators: + - * / % (arithmetic), = <> > >= < <= (comparison — != also works as an alternate spelling of <>), and and / or (logical, case-insensitive).

Functions, grouped as they appear in the formula editor:

  • Math: round(value, decimals), ceiling(value), floor(value), abs(value), min(a, b), max(a, b)

  • Date: today(), date(year, month, day), parsedate(text, format), dateadd(date, number, unit), datediff(later, earlier, unit), now(), days_between(from, to), months_between(from, to), age_years(from, to), business_days(from, to), start_day(unit, date), end_day(unit, date), lastday(date), quarter(date), weekday(date), dayname(date), format_date(date, format), year(date), month(date), day(date)

  • Text: concat(a, b), len(text), upper(text), lower(text), trim(text), contains(needle, haystack), equaltext(a, b)

  • Logic: if(condition, then, else) — the else is optional — and(a, b), or(a, b), not(condition)

  • Empty values: isnull(value), ifnull(value, fallback), coalesce(a, b)

For example, a "Total compensation" offer field calculated as {Base salary} + {Bonus amount} — both fields on the same offer.

Setting a display condition

Under Display conditions, build the rule(s) that decide when a field shows. Office and Department live in the same list as any other offer field — add as many rows as you need, and they all combine with AND.

The operator you get depends on the watched field's type — a single-select field offers "is" / "is not," a multi-select field offers the "includes" operators, and so on.

A field hidden by its condition stores no value. If a recruiter already filled it in and a later change hides it, Kula clears what was stored.

Setting up a field with AI

Instead of configuring a formula or condition by hand, describe what you want in the assistant panel (Describe what you need) — for example, "Bonus is the annual salary times the bonus percentage." The assistant proposes a field (its type, formula or condition, and any new fields it needs to create along the way), and shows you the whole plan — including every field it's about to reuse or create — before anything is saved. Nothing is created until you click Add to offer form.

Good to know

  • Offer fields only, for now. Default values, formulas, display conditions, and the AI assistant are all scoped to Offer custom and default fields — Job and Requisition fields don't have this yet.

  • A field can't have both a default and a formula. Switching between Regular and Formula replaces whatever was set in the other mode.

  • Kula blocks saving a formula that doesn't make sense — a result type that doesn't match the field, a circular reference, arithmetic across two different currencies, or a reference that breaks the Requisition → Job → Offer hierarchy (an offer can read its job and requisition; a requisition can't read either).

  • You can't delete or change the type of a field another formula or condition depends on. Kula blocks it and shows you which fields would break.

  • If a referenced field is empty, the calculated field stays empty too — it resolves once every field it depends on has a value.

  • If someone manually edits a calculated value and an input it depends on later changes, Kula keeps their edit rather than silently recalculating over it. A "Reset to calculated value" action is available if they want the formula's answer back.

Need help?

If you have questions or need assistance, reach out to us at support@kula.ai or use the in-app chat.