What this tool measures (and what it does not)
The LBL Sleep-Cognition Optimizer measures current behavioral sleep patterns — what your sleep actually does on workdays vs. free days — and produces a personalized 24-hour schedule with prescription alignment scoring.
From 12 LBL-original items, the Optimizer derives:
- Behavioral chronotype via the MSFsc methodology (Roenneberg 2003), expressed as a 0-100 morningness score.
- Social jetlag in minutes, classified against Arab 2024 meta-analytic thresholds.
- Estimated Sleep Regularity Index (SRI proxy) on a 0-100 scale, with target 87+ per Windred 2023.
- Biology-behavior gap when paired with the LBL Chronotype Profile.
- Personalized 24-hour schedule with bedtime, wake time, peak cognitive window, exercise window, wind-down, caffeine cutoff.
- 5-axis prescription alignment radar across Timing / Caffeine / Exercise / Wind-down / Cognitive dimensions.
- Tier 3 prescription tiles with current behavior, recommendation, and rationale for each leverage point.
The Optimizer does not measure:
- Your biological/trait chronotype directly — that is measured by the companion LBL Chronotype Profile.
- Sleep stage architecture or sleep efficiency — polysomnography is required for that.
- Light exposure quantitatively — light timing matters greatly but cannot be captured by self-report.
- Sleep disorders. Persistent symptoms warrant clinical evaluation.
The Optimizer measures what you are doing. The Chronotype Profile measures who you are biologically. Together they compute the biology-behavior gap — the most clinically meaningful output of the pair.
Why behavioral metrics carry the health signal
The strongest health correlates in modern chronobiology are not about whether you are biologically a morning or evening type — they are about the misalignment between biology and behavior, and the regularity of sleep timing.
Social jetlag. The Arab et al. 2024 meta-analysis (n=231,648 across 43 studies) found social jetlag is independently associated with elevated BMI, abdominal adiposity, and metabolic dysfunction — independent of total sleep duration. This effect was first proposed by Wittmann et al. 2006 and has been replicated dozens of times.
Sleep regularity. Windred et al. 2023 (Sleep, UK Biobank n=60,977) demonstrated that the Sleep Regularity Index (SRI) is a stronger predictor of all-cause mortality than total sleep duration. People in the highest SRI quintile (>=87) had markedly lower mortality risk than those in the lowest quintile, after controlling for sleep duration and a battery of demographic and clinical covariates.
Biology-behavior gap. When both the Chronotype Profile and Optimizer are taken, the gap between biological and behavioral chronotype quantifies modern sleep dysfunction. A 30-point gap means your behavior is operating 30 morningness-percentile-points away from your biological set point — a substantial chronic stressor.
This is why the Optimizer foregrounds behavioral metrics rather than treating chronotype identification as the primary output. Knowing your chronotype is diagnostic information. Knowing your social jetlag, SRI, and biology-behavior gap is actionable health information.
Instrument structure
The Optimizer consists of 12 items in 5 sections.
| Section | Items | Construct | Role |
|---|---|---|---|
| I. Chronotype input | Q1 | Self-reported chronotype band (or auto-imported from Profile) | Used for schedule generation if Profile not available |
| II. Behavioral sleep timing | Q2-Q5 | Workday + free-day sleep onset and wake times (4 time inputs) | Drives MSFsc, SJL, SRI, and behavioral chronotype computation |
| III. Sleep quality | Q6-Q7 | Sleep latency and night awakenings | Contributes to SRI proxy and wind-down recommendations |
| IV. Behavioral context | Q8-Q9 | Last caffeine and exercise timing | Used for alignment scoring on Caffeine and Exercise axes |
| V. Constraints + goal | Q10-Q12 | Must-wake time, cognitive demand window, optimization goal | Bounds schedule generation; selects which output is foregrounded |
Q12 (optimization goal) is conditional: "Reduce biology-behavior gap" is shown only when Profile data exists in localStorage; otherwise "Reduce social jetlag" is the maximum-leverage goal option.
Scoring algorithm — full pseudocode
The exact algorithm running in your browser.
function midsleep(sleepMinutes, wakeMinutes):
# Compute midpoint of sleep window, handling cross-midnight wraparound
if sleepMinutes > wakeMinutes:
adjustedSleep = sleepMinutes - 1440 # treat as previous day
midpoint = (adjustedSleep + wakeMinutes) / 2
return (midpoint + 1440) modulo 1440 # normalize to 0-1440 range
else:
return (sleepMinutes + wakeMinutes) / 2
function sleepDuration(sleepMinutes, wakeMinutes):
if sleepMinutes > wakeMinutes:
return ((1440 - sleepMinutes) + wakeMinutes) / 60 # hours
else:
return (wakeMinutes - sleepMinutes) / 60
function computeBehavioralChronotype(answers):
wdMid = midsleep(answers.Q2, answers.Q3) # workday midsleep
fdMid = midsleep(answers.Q4, answers.Q5) # free-day midsleep
wdDur = sleepDuration(answers.Q2, answers.Q3)
fdDur = sleepDuration(answers.Q4, answers.Q5)
weeklyAvg = (5 * wdDur + 2 * fdDur) / 7
# MSFsc: sleep-debt-corrected midsleep on free days (Roenneberg 2003)
msfsc = fdMid
if fdDur > weeklyAvg: # free-day oversleep
excessMinutes = (fdDur - weeklyAvg) * 30 # half of excess hours
msfsc = (fdMid - excessMinutes + 1440) modulo 1440
# Linear mapping: MSFsc clock time → 0-100 morningness score
# 2:00 AM → ~75 (morning); 4:00 AM → ~50; 6:00 AM → ~25; 8:00 AM → ~0
msfscClock = msfsc
if msfscClock > 720:
msfscClock = msfscClock - 1440 # handle evening-hours edge case
score = round(100 - ((msfscClock - 60) / 6))
return clip(score, 0, 100)
function computeSocialJetlag(answers):
wdMid = midsleep(answers.Q2, answers.Q3)
fdMid = midsleep(answers.Q4, answers.Q5)
diff = abs(fdMid - wdMid)
if diff > 720: diff = 1440 - diff # handle wraparound
if diff < 30: return diff, "Minimal"
if diff < 60: return diff, "Mild"
if diff < 90: return diff, "Moderate"
if diff < 120: return diff, "High"
return diff, "Severe"
function computeSRIProxy(answers, sjl):
# Self-report proxy. True SRI requires actigraphy (Phillips 2017).
wdDur = sleepDuration(answers.Q2, answers.Q3)
fdDur = sleepDuration(answers.Q4, answers.Q5)
durationDelta = abs(wdDur - fdDur) # hours
sjlPenalty = min(40, sjl.minutes * 0.3)
durationPenalty = min(20, durationDelta * 8)
continuityPenalty = (answers.Q7 - 1) * 3
sri = 100 - sjlPenalty - durationPenalty - continuityPenalty
return clip(round(sri), 0, 100)
function computeBiologyBehaviorGap(behavioralScore, profile):
if profile is null: return null
bioScore = profile.biologicalChronotype.calibratedScore
gap = abs(bioScore - behavioralScore)
if gap < 10: return gap, "Well-Aligned"
if gap < 20: return gap, "Mild Misalignment"
if gap < 35: return gap, "Moderate Misalignment"
return gap, "Severe Misalignment"
function generateSchedule(answers, behavioral):
chronotypeScore = behavioral.score or mapFromQ1(answers.Q1)
targetDuration = 7.5 # hours, NSF 2015 default for adults
latencyMinutes = mapFromQ6(answers.Q6) # 7..100 minutes
mustWake = parseTime(answers.Q10)
sleepOnset = (mustWake - targetDuration*60 - latencyMinutes + 1440) modulo 1440
bedtime = (sleepOnset - latencyMinutes + 1440) modulo 1440
# Peak cognitive window: chronotype-shifted (Carrier 2008 paradigm)
peakStart = (mustWake + (180 - (chronotypeScore - 50) * 1.5) + 1440) modulo 1440
peakEnd = (peakStart + 120) modulo 1440
# Tier 3 prescriptions
caffeineCutoff = (sleepOnset - 420 + 1440) modulo 1440 # 7h half-life buffer
exerciseStart = (sleepOnset - 300 + 1440) modulo 1440
exerciseEnd = (sleepOnset - 180 + 1440) modulo 1440
windownStart = (bedtime - 60 + 1440) modulo 1440
return {bedtime, sleepOnset, mustWake, peakStart, peakEnd,
caffeineCutoff, exerciseStart, exerciseEnd, windownStart}
All computation runs locally in the user's browser. No inputs leave the device.
MSFsc derivation — using the open scientific method
MSFsc (sleep-debt-corrected midsleep on free days) is the chronotype metric introduced by Roenneberg, Wirz-Justice & Merrow in 2003. The key insight: people's sleep timing on workdays is biased by alarm clocks and obligations; their sleep timing on free days reflects biological preference; but free-day timing is itself biased by recovery from accumulated weekday sleep debt. MSFsc corrects for that recovery oversleep.
Crucially, the MSFsc methodology is open published science. What is copyrighted is the MCTQ questionnaire — the specific item wording and response options used in published MCTQ studies. We do not administer the MCTQ. We collect sleep onset and wake times using our own LBL-original item wording (Q2-Q5), then apply the published MSFsc computation to those data.
The formula used:
- MSF = midsleep on free days = (free-day-sleep-onset + free-day-wake) / 2, handling cross-midnight wraparound.
- Weekly average sleep duration = (5 × workday-duration + 2 × free-day-duration) / 7.
- If free-day duration > weekly average (oversleep), subtract half of the excess hours from MSF to get MSFsc.
- If free-day duration ≤ weekly average (no oversleep), MSFsc = MSF.
Mapping MSFsc to the 0-100 morningness score is a linear approximation: MSFsc 2:00 AM → ~75 (morning); 4:00 AM → ~50; 6:00 AM → ~25; 8:00 AM → ~0. The true relationship is non-linear at extremes but linear is adequate for the educational use case.
Social jetlag thresholds and rationale
Social jetlag thresholds are calibrated against Arab 2024 meta-analytic effect sizes:
| Band | Minutes | Interpretation |
|---|---|---|
| Minimal | < 30 | Healthy range; no significant health signal |
| Mild | 30 - 59 | Common pattern; modest signal in some studies |
| Moderate | 60 - 89 | Clinically meaningful; Arab 2024 inflection point for BMI/metabolic associations |
| High | 90 - 119 | Strong association with cardiometabolic risk markers |
| Severe | >= 120 | Largest effect sizes in the meta-analysis |
The 60-minute Moderate threshold is the most evidence-supported cut-point. Below ~60 min, social jetlag is statistically common in modern populations and associations are inconsistent. Above 60 min, effect sizes for adiposity and metabolic markers become consistently positive across studies.
SRI proxy methodology and disclosure
The Sleep Regularity Index (SRI) was developed by Phillips et al. 2017 and quantifies how consistently a person sleeps at the same times day-to-day. It is computed from minute-by-minute actigraphy data over multiple weeks: SRI = 100 - (proportion of minute pairs across days where sleep/wake state differs) × 100. Higher = more regular.
True SRI requires wrist actigraphy. The Optimizer cannot measure that. Instead, we compute a self-report proxy from your reported workday vs. free-day timing and continuity. The proxy:
- Starts at 100 (perfect regularity).
- Subtracts up to 40 points penalty for social jetlag magnitude (0.3 points per minute, capped).
- Subtracts up to 20 points penalty for sleep duration variance between workdays and free days (8 points per hour of difference, capped).
- Subtracts up to 12 points penalty for sleep continuity (Q7 awakening frequency, 3 points per scale step).
The target threshold is SRI >= 87, per Windred 2023 (UK Biobank n=60,977), which identified this as the inflection point above which all-cause mortality risk drops markedly.
We explicitly disclose that this is a proxy, not an actigraphy-derived measurement. The proxy correlates with true SRI in face-validity testing but Level 3 convergent validity (comparison to actigraphy in the same individuals) is not yet established. Users seeking precise SRI measurement should use a research-grade actigraphy wearable.
Schedule generation algorithm
The recommended schedule is solved within the user's hard constraint (Q10 must-wake-time) using chronotype, sleep latency, and cognitive demand window inputs.
| Output | Formula | Rationale |
|---|---|---|
| Sleep onset | wake_time - target_duration - latency_buffer | Sleep duration target = 7.5h (NSF 2015 adult midpoint); latency from Q6. |
| Bedtime | sleep_onset - latency_buffer | Bedtime = when you should be in bed; sleep onset = when sleep actually begins. |
| Peak cognitive window | wake + (180 - (chronotype - 50) * 1.5) minutes; 120 min duration | Morning types peak ~2-3h after wake; evening types peak later. Synchrony effect per 2025 systematic review. |
| Caffeine cutoff | sleep_onset - 7h | Caffeine half-life 5-7h. Conservative buffer. |
| Exercise window | sleep_onset - 5h to sleep_onset - 3h | Moderate-to-vigorous exercise >=3h before sleep optimizes sleep quality. |
| Wind-down start | bedtime - 60 min | 60-min low-stimulation period reduces sleep latency. |
The schedule is a starting point, not a fixed prescription. Adaptation takes 2 weeks; phase shifts should be gradual (~15 min/day).
5-axis prescription alignment radar
The radar visualizes alignment between current behavior and the recommended schedule across 5 dimensions. Each axis is scored 0-100; higher = better aligned.
| Axis | Input | Computation |
|---|---|---|
| Timing | SJL + duration variance | Equals SRI proxy. Lower SJL and steadier duration → higher timing alignment. |
| Caffeine | Q8 last caffeine time | 100 - (hours_diff × 15); current caffeine vs. recommended cutoff. |
| Exercise | Q9 exercise time | 100 - (hours_diff × 12); current vs. recommended exercise window midpoint. |
| Wind-down | Q6 sleep latency | Maps Q6 (1-5 scale) to alignment (100, 95, 80, 55, 30, 15). Long latency suggests poor wind-down. |
| Cognitive | Q11 demand window vs. behavioral chronotype | Distance between user's stated peak demand window and chronotype-aligned peak. 100 - (distance × 25). |
The radar shape is informative: a regular pentagon-like polygon = well-aligned across all dimensions. Collapsed inward on specific axes = where the largest leverage exists for sleep optimization. Each Tier 3 tile below the radar makes the recommendation for that axis explicit.
Biology-behavior gap analysis
When the user has taken the LBL Chronotype Profile (Profile data exists in localStorage under key 'lbl-chronotype-profile'), the Optimizer computes:
gap = |biology_chronotype - behavior_chronotype|
where biology_chronotype is the calibrated score from the Profile and behavior_chronotype is the 0-100 score derived from MSFsc in this Optimizer.
| Classification | Gap range | Clinical significance |
|---|---|---|
| Well-Aligned | < 10 | Behavior matches biology; lowest health risk |
| Mild Misalignment | 10 - 19 | Small adjustments close this; subclinical |
| Moderate Misalignment | 20 - 34 | Clinically meaningful per Arab 2024; metabolic + mood risk elevated |
| Severe Misalignment | >= 35 | Strong health correlate; gap-closure of 10-15 points typically yields measurable benefit |
The direction of the gap is also computed and reported: "behavior more evening than biology" vs. "behavior more morning than biology". The schedule generation algorithm uses this direction to bias recommendations toward gap closure within Q10 constraints.
Validation strategy
| Level | Type | Status | Method |
|---|---|---|---|
| 1 | Construct validity through formula correspondence | Complete (v1.0) | MSFsc computation matches Roenneberg 2003 published formula. SJL computation matches Wittmann 2006. SRI proxy formula documented as proxy. Schedule formulas grounded in NSF 2015, Arab 2024, Windred 2023. |
| 2 | Face validity through synthetic-profile testing | Complete (v1.0) | Synthetic profiles across chronotype spectrum produce expected behavioral chronotype scores, SJL classifications, schedule outputs, and alignment radar shapes. Edge cases (cross-midnight sleep, oversleep correction) tested. |
| 3 | Convergent validity vs. lab MSFsc + actigraphy SRI | Planned for v2.0 | n >= 200 sample completing both Optimizer and 14-day actigraphy + MCTQ; hypothesized r >= 0.7 for behavioral chronotype vs. lab MSFsc. |
| 4 | Schedule effectiveness via RCT | Future research direction | Comparison of Optimizer-prescribed schedule vs. control on sleep quality, mood, and metabolic markers. Documented as direction, not current claim. |
Users should treat the Optimizer as an educational tool for sleep self-assessment and schedule personalization. Schedule recommendations are evidence-grounded but not validated as superior to alternatives in randomized trials.
Edge cases and handling
- Shift workers: The Optimizer assumes typical workday/free-day patterns. Rotating shift workers should consult specialized clinical guidance; the standard recommendations do not apply.
- Cross-midnight sleep: Sleep onset after midnight (e.g., 1 AM) and wake before noon is handled by the midsleep wraparound logic. Sleep onset before midnight (e.g., 9 PM) is treated as previous-day for midpoint computation.
- Oversleep correction: If a free-day duration exceeds weekly average, MSFsc subtracts half the excess hours. This is the Roenneberg 2003 correction. For users without weekday sleep debt, MSFsc = MSF (unchanged).
- No regular caffeine / no regular exercise: Q8 and Q9 have "I don't drink caffeine" and "I don't exercise regularly" options. These produce neutral alignment scores rather than zero.
- Varies widely: Q8 and Q9 have "Varies widely" options. These yield reduced alignment (40-45) because variable timing is itself suboptimal.
- No Profile data: Optimizer falls back to Q1 self-selected chronotype for schedule generation. Biology-behavior gap is not computed; user is encouraged to take the Profile for full analysis.
- Hard wake-time conflict: If Q10 (must-wake time) conflicts severely with the user's chronotype, the recommended bedtime may feel implausibly early. This is correct behavior — the algorithm solves for chronotype alignment within constraints, not for everyone-should-sleep-10-PM-to-6-AM.
Limitations
The Optimizer inherits limitations common to all self-report behavioral sleep assessments, plus several v1.0-specific limitations.
Self-report limitations:
- Recall bias for typical bed/wake times; people overestimate sleep duration and underestimate latency.
- "Typical" answer assumes consistent pattern; users with high variability give noisy answers.
- Self-reported caffeine and exercise timing simplify what is often a varied pattern.
Implementation-specific limitations of v1.0:
- SRI proxy is self-report only; actigraphy validation is pending.
- Light timing is not measured (cited as future direction with wearable integration).
- Schedule recommendations not validated in RCT.
- Cross-cultural validity of self-report items untested.
- The Optimizer is designed for typical sleep schedules; rotating shift workers, polyphasic sleepers, and those with sleep disorders require clinical guidance.
What this Optimizer is NOT:
- Not a clinical diagnostic instrument for sleep disorders.
- Not a substitute for polysomnography or actigraphy.
- Not validated in RCT for effectiveness; recommendations are evidence-grounded but not proven superior.
- Not appropriate for users with suspected DSPD, ASPD, Non-24, narcolepsy, sleep apnea, RLS, or Shift Work Disorder — these require clinical evaluation.
Independent review
The Optimizer v1.0 instrument design, scoring algorithm, schedule generation logic, and validation framework were reviewed by:
- Abiot Y. Derbie, PhD — Postdoctoral research fellow in neurodevelopmental neuroimaging. Reviewed MSFsc derivation correctness, SJL formula, SRI proxy disclosure framing, and schedule generation logic.
- Eskezeia Y. Dessie, PhD — Researcher in behavioral and brain sciences. Reviewed item wording, edge-case handling, prescription alignment scoring, and clinical safety framing.
Neither reviewer is a clinical sleep medicine specialist. Users with suspected sleep disorders should consult a physician board-certified in sleep medicine.
Version log
| Version | Date | Notes |
|---|---|---|
| v1.0 | 2026-05-13 | Initial release. 12 LBL-original items. MSFsc-based behavioral chronotype (Roenneberg 2003 open scientific method, not MCTQ items). Social jetlag classification (Arab 2024 thresholds). SRI proxy with explicit disclosure (Phillips 2017 + Windred 2023 target). Schedule generation with chronotype-shifted peak window. 5-axis prescription alignment radar. Tier 3 prescription tiles. Biology-behavior gap analysis when paired with LBL Chronotype Profile via localStorage. Simplified 24-hour clock visualization (sleep window + caffeine marker; other prescriptions in tile grid). Replaces previous Sleep-Cognition Optimizer which used 7-item rMEQ chronotype assessment and 90-minute sleep cycle framework. |
Next scheduled review: November 13, 2026. Unscheduled review triggers: publication of new MSFsc or SRI validation studies; updates to Arab 2024 or Windred 2023 thresholds; methodology errors identified via corrections; user-reported edge cases.
Methodology FAQ
How is behavioral chronotype computed?
Using the MSFsc methodology (Roenneberg 2003). MSFsc is the midpoint of sleep on free days, corrected for sleep debt accumulated during the work week. We compute it from items Q2-Q5 (workday and free-day sleep onset and wake times) and map to a 0-100 morningness score.
Why not use the published MCTQ items?
The MSFsc methodology is published open science. The specific MCTQ item wording and response format are copyrighted. We use the published methodology with LBL-original item wording (Q2-Q5) to avoid copyright issues while delivering the scientifically validated calculation.
How is social jetlag classified?
Five bands (Minimal / Mild / Moderate / High / Severe) at 30/60/90/120 minute thresholds. The 60-min Moderate threshold is the most evidence-supported per Arab 2024 meta-analysis (n=231,648).
How is the SRI proxy computed?
Starting at 100, subtract: up to 40 pts for social jetlag, up to 20 pts for workday vs. free-day duration variance, up to 12 pts for sleep continuity. Target threshold 87+ per Windred 2023. Explicitly disclosed as a proxy, not actigraphy.
How is the biology-behavior gap computed?
When LBL Chronotype Profile data exists in localStorage: gap = |biology_chronotype - behavioral_chronotype|. Classifications at <10 / 10-19 / 20-34 / 35+. Direction is reported (behavior more evening vs. more morning than biology).
What does the radar measure?
Five dimensions: Timing (= SRI proxy), Caffeine alignment, Exercise alignment, Wind-down (from Q6 latency), Cognitive demand alignment. Each 0-100. The polygon shape shows where biggest leverage exists for sleep improvement.
What is the validation status?
Level 1 (construct validity via formula correspondence) and Level 2 (synthetic-profile testing) complete. Level 3 (convergent validity vs. lab actigraphy + MCTQ) planned for v2.0. Level 4 (RCT of schedule effectiveness) is future direction.
Why no light timing recommendations?
Light is the strongest circadian zeitgeber but precise prescription requires lux levels, wavelength, and current circadian phase data that self-report cannot capture. v1.0 acknowledges importance without specific recommendations. Future versions may add this with wearable integration.
How is this different from the previous Sleep-Cognition Optimizer?
v1.0 (May 2026) is a full rebuild. Previous version used the 7-item Adan & Almirall 1991 reduced MEQ for chronotype (which has copyright concerns) and was framed around 90-minute sleep cycles (which is real biology but not directly actionable from self-report). The new version uses behavioral metrics that ARE actionable: MSFsc, SJL, SRI, biology-behavior gap, and concrete prescriptions.
Last reviewed
This methodology page was last reviewed on May 13, 2026. Next scheduled review: November 13, 2026.
How to cite this methodology
LifeByLogic. (2026). LBL Sleep-Cognition Optimizer — Methodology & Validation. Technical companion to the LBL Sleep-Cognition Optimizer, a behavioral sleep assessment and personalized schedule prescription tool grounded in 2019-2025 chronobiology research. Retrieved from https://lifebylogic.com/brain-lab/sleep-cognition-optimizer/methodology/
This methodology is educational and is not medical, psychological, financial, or professional advice. The concepts and research described here are intended to support informed personal reflection, not to diagnose or treat any condition or to recommend specific decisions. People with concerns that affect their health, finances, careers, or relationships should consult a qualified professional. See our editorial policy and disclaimer for the broader framework.
A short glossary.
The terms used above, defined in plain language. Each links to a fuller explanation in the LifeByLogic glossary.