Nutrition Engine

What it takes to decide one person's dinner.

A plan has to respect what someone cannot eat, hit calorie and macro targets, push on the nutrients they are short of, avoid what they rejected last week, and still not repeat itself for a fortnight. This is the part ONE does.

How it works

From a person to a plate.

The engine resolves context into constraints, constraints into a candidate set, and the candidate set into a plan your product can present.

  1. 1

    Person

  2. 2

    Nutritional requirements

  3. 3

    Allergies + restrictions + preferences

  4. 4

    Nutrient priorities

  5. 5

    ONE Nutrition Engine

  6. 6

    Meal plans + recipes + substitutions + logging

Layered personalisation

Each layer narrows the answer.

Layers are applied in order. The earlier ones are absolute, the later ones are preferences — which is what stops a preference from ever overriding a safety rule.

ONE applies nutrition logic in layers — so personalisation stays safe, goal-aware and adaptable over time.

  1. 01

    Goals

    What is the person trying to achieve?

  2. 02

    Calorie & macro targets

    What targets support that goal?

  3. 03

    Hard dietary requirements

    What must never be included?

  4. 04

    Micronutrient priorities

    Which nutrients should receive additional focus?

  5. 05

    Preferences

    What does the person like or dislike?

  6. 06

    History & variety

    What have they eaten recently?

  7. 07

    Personalised plan

    What combination best satisfies the requirements?

Meet calorie, macro and micronutrient priorities while respecting hard dietary requirements.

Capabilities

The mechanics, stated plainly.

Worth reading if you are comparing ONE against building in-house, because these are the specific behaviours that take the longest to get right.

01

Energy and macro targets

Mifflin–St Jeor basal rate scaled by activity level, adjusted for the goal and its rate, with sensible floors. Macro splits follow the goal type unless your product sets grams directly.

02

Micronutrient references

Targets resolve against EU NRV, UK RNI or US DV depending on the tenant's market — or against a reference table you supply for a market we do not ship.

03

Hard constraints first

Diet archetype and allergens filter the candidate set before scoring begins, so an unsafe meal is never a near miss that a tie-break might select.

04

Scored objectives

Macro bands, micronutrient floors, cuisine affinity and recent history are scored rather than enforced, so the planner returns the best feasible plan instead of failing.

05

Variety across the horizon

Days are solved together, not independently. Without that, a fortnight of locally optimal days collapses into the same three dinners.

06

Substitutions that hold the maths

Alternatives come from substitution templates, your own substitution graph and food-group siblings, chosen to keep calories and protein close to the item they replace.

Targets

Targets are derived, not guessed.

Give ONE demographics and a goal and it computes the numbers. Give it explicit targets instead and it uses those. Either way the planner optimises against the same structure.

  • Energy from Mifflin–St Jeor, scaled by activity and goal rate
  • Macro grams per day, split by goal type or set by your product
  • Micronutrient floors from the tenant’s reference standard
  • An optional focus that lifts specific nutrients, such as iron
  • Protein 30%
  • Carbs 40%
  • Fat 30%

Modes

How hard should preferences push?

The same profile can produce different plans depending on how much you let preferences bend. You choose the mode per request, per user or per tenant.

Strict

Preferences are held nearly as firmly as requirements. Fewer candidates survive, so the catalog needs depth.

Balanced

The default. Requirements are absolute; preferences give way only when nothing else satisfies the targets.

Flexible

Preferences yield early in favour of hitting nutritional targets. Useful for clinical or goal-driven products.

Transparency

Recommendations your support team can explain.

When a user asks why they were offered something — or why they were not — the answer should not require reading solver logs.

Rules carry attribution

Resolution reports whether a value came from the request, the profile, your tenant default or the platform default.

Relaxations are reported

When a preference had to give way to hit a target, that is in the response rather than hidden inside the result.

Safety never bends

Allergens and diet type are filters, not weights. No scoring path can trade them away.

Build personalised nutrition into your product.

Talk to the ONE by OSCA team about how personalised nutrition can fit your product roadmap — and how optional wearable data context can extend it when needed.

Product teams book a demo · Engineering teams explore the API and SDKs