Skip to content
Inside the engine

From what you ate
to how you slept.

A look at how DeepEats finds eating habits that line up with changes in your sleep. Your nights are the comparison—not someone else’s average.

From meals to patterns, in three steps

Log your meals

Time and sleep-related tags

Pair with your nights

Sleep and recovery recorded by Oura

Compare your habits

Repeated associations, with evidence
01 · Build a night

“Late” depends on
when you fall asleep.

Meals are paired with the following night using a window of up to 24 hours before sleep. Meals during recorded sleep or already paired with another night are excluded. Like Oura, a night is named for the morning you wake up.

A dinner is late if it ended within 2 hours before Oura says you fell asleep. A glass of wine or a coffee on its own doesn’t count as dinner.

The Nights tab draws every night on that scale: hours before you fell asleep, with the last 2 hours shaded, so late dinners line up in one column and you can see how many nights out of how many fell there.

Move dinner. Keep sleep at 11 PM.

Dinner8:00 PM
Sleep11 PM
3 hours before sleep

Outside the late-dinner window.

The shaded end of the timeline is the final two hours before sleep. Moving dinner changes the habit label, not a prediction about tonight’s sleep.

02 · Define the habits

Five questions. No food grades.

Photos and typed names help identify the food. You confirm the time and tags. These five rules—not estimated calories or macros—define the habits the pattern engine tests.

Late dinner

Last real meal is an evening meal, within 2 hours of sleep.

Late caffeine

Anything with caffeine (coffee, tea, cola, energy drinks) in the 9 hours before your usual bedtime. If you usually fall asleep at 11 PM, that’s after 2 PM. DeepEats works out your usual bedtime from Oura.

Alcohol

Alcohol within 6 hours of sleep onset.

Dessert

A Sweet tag at or after the first evening meal.

Spicy dinner

An evening meal tagged Spicy.

A dinner is a meal you mark as dinner, or an unmarked real meal from 3 PM until the 4 AM meal-day cutoff. A meal marked not dinner stays excluded. You can also mark ingredients like dairy, garlic or onions on a meal. Those comparisons need more nights (8 with the group and 10 with other reviewed meals), never go above Possible, and are never a diagnosis of an intolerance.

03 · Make the comparison usable

First, learn
your usual.

For each measure, DeepEats looks at your last 30 nights and finds your typical value: your usual. It needs at least 7 nights. It also learns how much you normally vary, so a five-minute change means more for a steady sleeper than for someone whose nights swing a lot.

The app shows this as your usual range: the middle of your last 30 nights plus your usual night-to-night spread. Each measure has its own trend screen against that band. Above or below it is a direction, not a grade.

Patterns use your latest 30 nights. A night counts when it has a logged dinner, a full night from Oura, and a usual for the measure being compared.

↔

Keep unusual bedtimes out

A sleep onset more than two hours from your usual bedtime is excluded.

⊘

Keep coffee and alcohol from muddying things

When checking any other habit, nights with late coffee or alcohol are set aside. When checking coffee, alcohol nights are set aside, and the other way round.

+

Count each metric on its own

Missing HRV doesn’t erase a night’s usable time-to-sleep or total-sleep measurements.

04 · Compare with and without

Look across nights.
Show the difference.

For each habit, the engine compares nights with it against nights without it. It separately tests time to fall asleep, HRV, resting heart rate and total sleep.

It needs at least 5 nights with the habit and 7 without. You see both counts and the typical night for each, in minutes or beats per minute.

A gap between typical nights isn’t enough on its own. The difference also has to pass the check below.

Late dinners vs. other dinners

With late dinner · 8 nights
Without · 10 nights
● One night│ Group median

Invented walkthrough data, not a user result or a confidence verdict. Each dot is one night; switching metrics shows why they are compared separately.

05 · Ask how convincing it is

A small sample should make a smaller claim.

The engine pulls uncertain differences toward zero. Bigger samples and more consistent differences lose less of their signal. It also checks that the displayed medians point the same way as the statistical result.

Not enough to compare yet

Keep logging

Fewer than 5 nights with the habit or 7 without. No answer yet.

No clear difference so far

Enough nights, no steady gap

The comparison did not meet the evidence needed for a finding. That isn’t proof the habit never matters.

Possible

A difference worth watching

Big enough and consistent enough to notice. More nights could still change it.

Likely

The clearest pattern DeepEats shows

A bigger, steadier difference, seen on at least 8 nights with the habit, that has held for 3 weeks and isn’t tangled up with another habit.

If another habit appears on at least 60% of the with-nights and at least 30 percentage points more often than in the other nights, the finding is capped at Possible. Different usual bedtimes or weekend shares can also cap confidence. The engine tells you those habits are hard to separate.

Open the math and exact thresholds

Each night is standardized against its own prior baseline. Spread is the larger of 1.4826 × median absolute deviation and a metric-specific floor. Scores are oriented so positive means the better direction, then clipped to ±3.5.

d = mean(z with) − mean(z without)
se² = variance(with) / n with + variance(without) / n without
shrunk = d × τ² / (τ² + se²), with τ = 0.35
shrunkSE = √(τ² × se² / (τ² + se²))
P(direction) = Φ(|shrunk| / shrunkSE)

Each group’s variance has a floor of 0.5. Possible requires |shrunk| ≥ 0.30 and P ≥ 0.975. The statistical bar for Likely is |shrunk| ≥ 0.45 and P ≥ 0.995, plus the sample, history and overlap requirements above. These probabilities describe the model’s direction confidence; they are not the probability that a food caused the outcome.

The engine tests five habits against four metrics: 20 comparisons. In the repository’s simulated 30-night calibration, about 9.7% of noise-only histories (58 of 600) produced at least one finding across all 20 comparisons. That is a simulation result, not a measured real-world error rate or a clinical validation.

Baseline spread floors: time to sleep 5 min; HRV 8 ms; resting HR 1 bpm; total sleep 15 min. Sleep efficiency is shown in the morning read but is not a pattern-test outcome.

Ready when your dinner is.

Log tonight’s dinner. Wake up to it next to your own Oura nights.

iPhone and Oura Ring Gen3 or newer. Free during the beta. Details