# life. scored. — full reference (llms-full.txt) > A transparency tool that exposes how real-world systems (credit bureaus, actuarial tables, lenders, audit studies) already turn a person into a number. This is the complete rulebook and the exact math behind lifescored.com. Homepage: https://lifescored.com · Rulebook JSON: https://lifescored.com/rules.json · MCP: com.lifescored/mcp · Concise index: https://lifescored.com/llms.txt **Privacy.** Compute scores on your OWN side. This contains only the rules — no personal inputs are ever sent to lifescored.com, by the website or by the MCP/API. The whole point falls apart the moment the thing scoring you has something to sell you. ## How scoring works life. scored. rebuilds the scores that real systems already run on you — credit bureaus, actuarial life tables, lenders, audit-study research — in the open. How scoring works: - Every rule is a pure function from your inputs to a position (0..1, where 1.0 = full marks), with declared bounds and an editorial weight. - points = round(clamp(position, bounds) × weight). The composite is the sum over enabled rules. The breakdown is the point; the composite is the least useful number. - Weights are stated as multiples of the income baseline (1.0× = weight 10) and are tunable — every one shows its own justification. - Rules are split into "your starting point" (luck of where/to whom you were born) and "your moves" (what you influence). Two principles govern every rule: - Constrained-subtractive: a rule may score negative only where the cited system itself subtracts (FICO delinquency, license points, underwater net worth, eviction), and never more than it can add unless the system does exactly that. - Uncapped wealth: income and net worth grow as the square root of your multiple of the median, with no upper limit, matching how wealth actually distributes. Deliberately left out: - Protected characteristics (race, religion, etc.) and identity/"otherness": real, and they absolutely change how others score you, but we won't hand anyone a number that docks them for who they are — that's the machinery this exists to expose. They stay an unscored asterisk. - Pure luck (a recession at graduation, illness, timing): real but unmeasurable honestly, so also an unscored asterisk. Privacy: inputs never leave the user's device. The website computes client-side; this MCP/API serves only the rules and never receives answers. No tracking, no accounts, no data sales, no affiliate links. ## Engine - points = round(clamp(position, bounds[0], bounds[1]) × weight) - Composite: sum of points over enabled rules (core pack always on; other packs opt-in) - Baseline weight: 10 (1.0×). weight is editorial and tunable; shown as a multiple of the 10 income baseline (1.0×). weightMultiple = weight / 10. - Position contract: position is a normalized fact where 1.0 = full marks. It may exceed 1 or go negative; clamp it to the rule’s declared bounds before weighting. Two rules (income, networth) are uncapped above (bounds upper = null). **Tiers** - `starting_point` — Your starting point: mostly out of your hands — luck of where and to whom you were born - `your_moves` — Your moves: things you've actually influenced — where motivation lives **Domains** - `origin` — Origin: where and to whom you were born - `health` — Health / actuarial: how a life insurer prices you - `finance` — Finance / credit: how lenders and bureaus score you - `education` — Education / work: how the labor market values you - `social` — Social: connection, record, and footprint - `civic` — Civic / legal: how institutional ledgers read you **Packs** - `core` — Core (on by default): The default set — concrete, cited, and surveillance-free. - `foundations` — Foundations (opt-in): The floor you were handed — water, power, food, peace. You were born ahead of most of human history. - `underwriting` — Underwriting (opt-in): How a life insurer prices you. (Coming soon.) - `speculative` — Speculative (opt-in): Flagged guesses — real signals, but no clean per-person dataset. ### Constants (formulas for numeric-input rules) **income** - medianHouseholdIncome: 80610 - avgHouseholdSize: 2.5 - equivMedianIncome: 50982 - householdSize: householdSize = 1 + (partnered ? 1 : 0) + children - equivalence: adjustedIncome = income / sqrt(householdSize) (OECD square-root scale) - position: let a = adjustedIncome; if a <= equivMedianIncome: a / (2 × equivMedianIncome); else: 0.5 + (sqrt(a / equivMedianIncome) − 1) **netWorth** - value: netWorth = assets − debt - medianByAge: (see rules.json for the full table) - medianNote: linearly interpolate the median between [age, value] anchors; clamp at the ends - position: let m = medianForAge(age); if netWorth < m: max(-0.5, (netWorth − m) / (2 × m)); else: sqrt(netWorth / m) − 1 **dti** - benchmark: 0.43 - position: (0.43 − debt/income) / 0.43, clamped to [-1, 1]; income 0 with debt > 0 ⇒ worst **creditScore** - position: clamp((score − 580) / (760 − 580), 0, 1) — subprime floor 580, best-rate plateau 760 **lifeTable** - position: ((sex === 'f' ? 81 : 76) − age) / 60 **exercise** - position: exerciseMins / 150 **sleep** - position: 7–9 h ⇒ 1; 6–10 h ⇒ 0.6; otherwise ⇒ 0.2 **emergencyFund** - position: emergencyMonths / 3 **parenthood** - position: min(1, 0.5 + 0.18 × children) **driving** - position: 1 − 0.4 × drivingIncidents ## Inputs (ask the user only for what you don’t already know; missing falls back to default) - `country` (enum: af, ar, au, at, bd, be, br, ca, cl, cn, co, cz, dk, eg, ee, et, fi, fr, de, gh, gr, hu, in, id, ie, il, it, jp, kz, ke, lv, my, mx, ma, nl, nz, ng, no, pk, ph, pl, pt, ro, ru, sa, sg, za, kr, es, se, ch, th, tr, ug, ua, ae, gb, us, vn, other-high, other-um, other-lm, other-low) — default `"us"` — Where you live now — sets a baseline from its World Bank income tier. Not listed? Pick the matching income tier under “Other.” - `familySupport` (ordinal: 0, 1, 2) — default `1` — Money you could fall back on in a crisis — a parent who'd cover a month's rent, a loan you wouldn't have to beg for. Not your income; the cushion behind it. - `parentsDegree` (boolean: true, false) — default `false` — Whether a parent holds a college degree — first-generation students face measurably steeper odds. - `neighborhood` (ordinal: 0, 1, 2) — default `1` — The opportunity level of the area you grew up in — the census-tract effect on adult income. - `age` (number 16–100) — default `27` — Your age — an insurer reads it straight off the life table; younger means more runway. - `sex` (enum: f, m) — default `"m"` — Used only for the actuarial life-table baseline; women outlive men by about five years on average. - `smoker` (enum: never, former, current) — default `"never"` — Any nicotine — cigarettes, vaping, cigars, or chew. Insurers price the whole class off a cotinine test. - `exerciseMins` (number 0–2000) — default `90` — Minutes of moderate exercise per week; the guideline is 150. - `alcohol` (enum: none, moderate, heavy) — default `"moderate"` — Your typical alcohol use — heavy drinking is among the leading preventable causes of death. - `sleepHours` (number 3–12) — default `7` — Hours of sleep per night; 7 to 9 is the guideline band. - `insured` (boolean: true, false) — default `true` — Whether you have health insurance — being uninsured is a leading path to catastrophic debt. - `bmiBand` (enum: under, normal, over, obese) — default `"normal"` — Your BMI band — included because underwriters price it, not because it's a good measure of a person. - `income` (number 0–10000000000) — default `46000` — Your household's total annual income before tax — combine you and your partner. We compare it to the median household, sized for how many people it supports. - `assets` (number 0–1000000000000000) — default `6000` — Everything your household owns — savings, home, car, investments, combined. We subtract your debt to get net worth, and net worth is what gets scored. - `debt` (number 0–100000000) — default `0` — Your household's total debt. It does double duty: subtracted from assets to get net worth, and scored on its own as a ratio to your household income (not a raw dollar amount). - `creditScore` (number 300–850) — default `720` — Your credit score (FICO or VantageScore, 300–850) — most banks and credit-card apps show it free. It rolls up payment history, utilization, credit age and more into the one number lenders actually pull. - `emergencyMonths` (number 0–60) — default `1` — Months of expenses your savings could cover; the 3-month line is the resilience test. - `homeowner` (boolean: true, false) — default `false` — Whether you own your home — the main US wealth-building escalator. - `education` (enum: none, hs, some, bachelor, graduate) — default `"hs"` — Highest level of school you've completed. - `employment` (enum: employed, self, unemployed, student, retired) — default `"employed"` — Your current work status — employed, self-employed, student, retired, or unemployed. - `outlook` (enum: declining, stable, growing) — default `"stable"` — Whether your field is projected to grow or shrink over the next decade. - `housing` (enum: unhoused, insecure, stable) — default `"stable"` — How stable your housing is — stable, insecure, or unhoused. - `socialConnection` (ordinal: 0, 1, 2) — default `1` — How often you see people you're close to — isolation rivals smoking in the mortality data. - `partnered` (boolean: true, false) — default `false` — Whether you have a spouse or partner — partnered people show better longevity and pooled finances, though selection is at play. Also counts toward your household size for the income rule. - `children` (number 0–12) — default `0` — How many children (or dependents) you have. Two effects, both shown: it sizes your household income (the same income stretches less far across more people), and it earns a small, cited credit for the lower old-age mortality the data links to parenthood. We don't judge family size — we show the cost and the benefit. - `volunteers` (boolean: true, false) — default `false` — Whether you volunteer in your community regularly. - `drivingIncidents` (number 0–10) — default `0` — At-fault accidents and moving violations in the last 3 years — priced by every auto insurer. - `digitalFootprint` (ordinal: 0, 1, 2) — default `1` — How your public online presence reads to an employer or landlord screening you. - `banking` (enum: unbanked, underbanked, banked) — default `"banked"` — Whether you have a bank account; without one, basic transactions carry check-cashing fees. - `criminalRecord` (boolean: true, false) — default `false` — Whether you have a criminal record — it roughly halves employer callbacks in audit studies. - `voterRegistered` (boolean: true, false) — default `true` — Whether you are registered to vote — it appears in civic data used by campaigns and some screens. - `wash` (enum: none, basic, safe) — default `"safe"` — Whether your home has safe drinking water and sanitation — 2.2 billion people don't. - `infrastructure` (enum: neither, electricity, both) — default `"both"` — Whether you have reliable electricity and internet access. - `foodSecurity` (enum: insecure, marginal, secure) — default `"secure"` — Whether you can reliably afford enough food. - `stability` (enum: conflict, fragile, stable) — default `"stable"` — Whether you live outside active conflict and under functioning rule of law. ## The complete rulebook (35 rules) ### Origin — where and to whom you were born #### Country of residence (`country`) - starting_point · weight 24 (2.4× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: Residence sets a baseline from its World Bank income tier. High-income country → high base; low-income or conflict-affected → low base. - Position by `country`: af=0.15, ar=0.45, au=0.82, at=0.82, bd=0.28, be=0.82, br=0.45, ca=0.82, cl=0.82, cn=0.45, co=0.45, cz=0.82, dk=0.82, eg=0.28, ee=0.82, et=0.15, fi=0.82, fr=0.82, de=0.82, gh=0.28, gr=0.82, hu=0.82, in=0.28, id=0.45, ie=0.82, il=0.82, it=0.82, jp=0.82, kz=0.45, ke=0.28, lv=0.82, my=0.45, mx=0.45, ma=0.28, nl=0.82, nz=0.82, ng=0.28, no=0.82, pk=0.28, ph=0.28, pl=0.82, pt=0.82, ro=0.82, ru=0.82, sa=0.82, sg=0.82, za=0.45, kr=0.82, es=0.82, se=0.82, ch=0.82, th=0.45, tr=0.45, ug=0.15, ua=0.45, ae=0.82, gb=0.82, us=0.82, vn=0.28, other-high=0.82, other-um=0.45, other-lm=0.28, other-low=0.15 - Source: World Bank — country income classifications — Economies grouped high / upper-middle / lower-middle / low income by GNI per capita; used here as the baseline tier. (https://datahelpdesk.worldbank.org/knowledgebase/articles/906519) - Weight rationale: The largest single predictor of lifetime outcomes is where you live — World Bank income tiers span a ~60× range in GNI per capita, dwarfing every behavioral lever in this book. 2.4× the baseline is, if anything, conservative. #### Generational support (`generational`) - starting_point · weight 16 (1.6× baseline) · SPECULATIVE · not controllable · pack `core` - Bounds: [0, 1] - Logic: A family financial floor raises your position. No clean public dataset maps this to an individual, so the weight is a flagged guess, not a measurement. - Position by `familySupport`: 0=0, 1=0.4, 2=0.9 - Source: Opportunity Insights (Chetty et al.) — intergenerational mobility — Documents how parental resources shape adult outcomes — real at population scale, but NOT directly operationalizable into a personal number. Hence speculative. (https://opportunityinsights.org/) - Weight rationale: Chetty's mobility work shows parental resources rival education's effect on adult outcomes — but because no dataset maps it to an individual, this flagged guess is weighted at 1.6×, below country, above everything behavioral. #### Parental education (`parental-education`) - starting_point · weight 8 (0.8× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: Children of degree-holding parents are far likelier to earn degrees themselves and start with more navigational capital. You didn't choose this. - Position by `parentsDegree`: true=1, false=0.3 - Source: NCES — First-Generation Students — College enrollment and completion rates are substantially higher for students whose parents hold bachelor's degrees than for first-generation students. (https://nces.ed.gov/pubs2018/2018421.pdf) - Weight rationale: First-generation status roughly halves college-completion odds (NCES), but part of its effect routes through the education rule — weighted down to 0.8× to avoid double-counting. #### Passport strength (`passport`) - starting_point · weight 6 (0.6× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: Your passport determines visa-free access to work, study, and flee. Derived from your country of residence in this model. - Position by `country`: af=0.2, ar=1, au=1, at=1, bd=0.2, be=1, br=1, ca=1, cl=1, cn=0.6, co=0.6, cz=1, dk=1, eg=0.2, ee=1, et=0.2, fi=1, fr=1, de=1, gh=0.2, gr=1, hu=1, in=0.2, id=0.6, ie=1, il=1, it=1, jp=1, kz=0.6, ke=0.2, lv=1, my=0.6, mx=1, ma=0.2, nl=1, nz=1, ng=0.2, no=1, pk=0.2, ph=0.2, pl=1, pt=1, ro=1, ru=0.6, sa=0.6, sg=1, za=0.6, kr=1, es=1, se=1, ch=1, th=0.6, tr=0.6, ug=0.2, ua=1, ae=1, gb=1, us=1, vn=0.2, other-high=1, other-um=0.6, other-lm=0.2, other-low=0.2 - Source: Henley Passport Index — Ranks passports by visa-free destination count; the gap between the strongest and weakest passports exceeds 160 destinations. (https://www.henleyglobal.com/passport-index) - Weight rationale: Binding only at borders and mostly latent day-to-day — 0.6× despite the huge Henley spread, because the option value is rarely exercised. #### Neighborhood opportunity (`neighborhood`) - starting_point · weight 8 (0.8× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: The census tract you grew up in measurably shifts adult income. Self-assessed band here (low / average / high opportunity area). - Position by `neighborhood`: 0=0.1, 1=0.5, 2=1 - Source: Opportunity Atlas (Chetty, Friedman, Hendren) — Children who grow up in high-upward-mobility tracts earn substantially more as adults, holding parental income constant. (https://www.opportunityatlas.org/) - Weight rationale: Opportunity Atlas tract effects are causal but smaller than country-level differences — 0.8×, tied with parental education. #### Clean water & sanitation (`water-sanitation`) - starting_point · weight 14 (1.4× baseline) · SOURCED · not controllable · pack `foundations` - Bounds: [0, 1] - Logic: Clean water and sanitation is the gateway condition for health and human capital. 2.2 billion people lack safely managed drinking water; lacking it is among the strongest predictors of preventable disease burden and stunted development. - Position by `wash`: none=0, basic=0.6, safe=1 - Source: WHO/UNICEF Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (JMP) — 2.2 billion people lack safely managed drinking water; 3.6 billion lack safely managed sanitation (JMP 2023). The difference between unsafe and safely managed water maps directly onto infant mortality and disease burden. (https://washdata.org/) - Weight rationale: Safe water is the single most fundamental infrastructure condition — it enables every other human-capital outcome. At 1.4× the income baseline (weight 14), it sits just below country/residence in the starting-point tier. The 2.2B statistic (JMP) makes the global stakes concrete. #### Electricity & internet (`utilities`) - starting_point · weight 12 (1.2× baseline) · SOURCED · not controllable · pack `foundations` - Bounds: [0, 1] - Logic: Reliable electricity and internet access enable education, economic participation, and communication. ~675 million people lack electricity; ~2.6 billion lack meaningful internet access. - Position by `infrastructure`: neither=0, electricity=0.5, both=1 - Source: ITU Facts and Figures / IEA SDG7 Tracking — ITU estimates ~2.6 billion people remain offline (2023); IEA SDG7 tracking shows ~675 million without electricity. Both are prerequisites for participation in the modern economy. (https://www.itu.int/en/ITU-D/Statistics/Pages/facts/default.aspx) - Weight rationale: Electricity + internet access together unlock education, telehealth, remote work, and banking — each of which routes into this rulebook. At 1.2× (weight 12), it sits just below clean water and alongside food security. Electricity alone (without internet) is scored at 0.5 because connectivity doubles the impact. #### Food security (`food-security`) - starting_point · weight 12 (1.2× baseline) · SOURCED · not controllable · pack `foundations` - Bounds: [-0.2, 1] - Logic: Food insecurity impairs cognitive development, immune function, and labor productivity. FAO documents that chronic undernourishment actively destroys human capital — justifying a negative floor. ~733 million people face hunger globally. - Position by `foodSecurity`: insecure=-0.2, marginal=0.5, secure=1 - Source: FAO — The State of Food Security and Nutrition in the World (SOFI) — FAO SOFI 2023: ~733 million people face hunger; food insecurity is causally linked to stunting, wasting, and reduced lifetime earnings. Negative human-capital effects are well-documented at both individual and population levels. (https://www.fao.org/publications/sofi) - Weight rationale: Famine and chronic hunger actively destroy human capital (FAO SOFI), qualifying for a negative floor under the constrained-subtractive principle. Weight 12 (1.2×) equals utilities; food security and connectivity are co-equal prerequisites below clean water and peace. #### Peace & rule of law (`peace-rule-of-law`) - starting_point · weight 14 (1.4× baseline) · SOURCED · not controllable · pack `foundations` - Bounds: [-0.3, 1] - Logic: Active armed conflict destroys human capital, displaces populations, and collapses institutions. Fragile states impair property rights and contract enforcement. The World Bank WGI documents that governance quality strongly predicts long-run development outcomes. - Position by `stability`: conflict=-0.3, fragile=0.5, stable=1 - Source: World Bank Worldwide Governance Indicators (WGI) — WGI tracks rule of law, political stability, and absence of violence across ~215 economies. Political stability and rule of law are among the strongest predictors of long-run income and human development. (https://www.worldbank.org/en/publication/worldwide-governance-indicators) - Weight rationale: Active conflict is the most destructive starting condition catalogued here — it negates every other investment. Negative floor of −0.3 (the deepest in the rulebook) is justified by UCDP/WGI documentation of conflict destroying human capital. Weight 14 (1.4×) matches clean water as a co-equal gateway condition. ### Health / actuarial — how a life insurer prices you #### Age & sex vs. the life table (`life-table`) - starting_point · weight 10 (1× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: Insurers price you off remaining life expectancy: younger means more runway, and women outlive men by ~5 years on average. Pure actuarial position — no virtue involved. - Position: numeric input — formula in `constants`. - Source: Social Security Administration — Actuarial Life Table — Period life tables give remaining life expectancy by exact age and sex; US female life expectancy at birth runs ~5 years above male. (https://www.ssa.gov/oact/STATS/table4c6.html) - Weight rationale: Actuarial position is priced exactly as legibly as income by the insurance industry — weighted equal to the baseline at 1.0×. #### Nicotine use (`smoking`) - your_moves · weight 10 (1× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Insurers price a tobacco/nicotine class off a cotinine test, not just cigarettes: vaping, cigars, chew, and patches all count. Never-users score full; former recover most of it; current score zero here. - Position by `smoker`: never=1, former=0.6, current=0 - Source: CDC — Tobacco-Related Mortality — Cigarette smoking reduces life expectancy by at least 10 years; quitting before 40 recovers nearly all of it. (https://archive.cdc.gov/www_cdc_gov/tobacco/data_statistics/fact_sheets/health_effects/tobacco_related_mortality/index.htm) - Weight rationale: A ~10-year life-expectancy swing (CDC) — the single largest behavioral mortality factor, weighted equal to the baseline at 1.0×. #### Physical activity (`exercise`) - your_moves · weight 8 (0.8× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Scored against the 150-minutes-per-week guideline; saturates there — this model gives no extra credit for marathon volume. - Position: numeric input — formula in `constants`. - Source: WHO — Physical Activity Guidelines — Adults should do 150–300 minutes of moderate aerobic activity weekly; meeting it is associated with 20–30% reduced all-cause mortality. (https://www.who.int/news-room/fact-sheets/detail/physical-activity) - Weight rationale: Meeting the WHO guideline associates with 20–30% lower all-cause mortality — large, but smaller than smoking's swing, so 0.8×. #### Alcohol use (`alcohol`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Heavy drinking carries large measured mortality and financial costs; moderate use a smaller penalty; none scores full. - Position by `alcohol`: none=1, moderate=0.7, heavy=0 - Source: NIAAA — Alcohol Facts and Statistics — Excessive alcohol use is a leading preventable cause of death in the US, responsible for roughly 178,000 deaths per year. (https://www.niaaa.nih.gov/alcohols-effects-health/alcohol-topics/alcohol-facts-and-statistics) - Weight rationale: Heavy use is a leading preventable cause of death, but the population-level swing is smaller than smoking or inactivity — 0.6×. #### Sleep duration (`sleep`) - your_moves · weight 3 (0.3× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: 7–9 hours scores full; 6 or 10 hours partial; outside that, the short-sleep mortality association bites. - Position: numeric input — formula in `constants`. - Source: CDC / AASM — How Much Sleep Do I Need? — Adults need 7 or more hours per night; short sleep is associated with obesity, diabetes, and cardiovascular disease. (https://www.cdc.gov/sleep/about/index.html) - Weight rationale: Demoted to 0.3×: no life insurer prices sleep duration, and the 7–9h association is heavily confounded with everything else on this page (exercise, alcohol, BMI). Kept as a small controllable nudge, not a load-bearing rule. #### Health insurance coverage (`insurance`) - your_moves · weight 8 (0.8× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Being uninsured is both a health risk and the most common path to catastrophic financial shock. Controllable only to the degree coverage is affordable where you live — flagged in the description. - Position by `insured`: true=1, false=0 - Source: KFF — Key Facts about the Uninsured Population — Uninsured adults are far more likely to delay or forgo care and to carry medical debt; medical debt is a leading driver of US bankruptcy. (https://www.kff.org/uninsured/issue-brief/key-facts-about-the-uninsured-population/) - Weight rationale: Coverage removes an uncapped financial tail risk (medical debt is a leading bankruptcy driver) — 0.8×. #### BMI band (`bmi`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Insurers still price by BMI band, so it appears here — scored as they score it, not as an endorsement of the measure. - Position by `bmiBand`: under=0.5, normal=1, over=0.6, obese=0.2 - Source: CDC — About Adult BMI — BMI bands (under 18.5 / 18.5–24.9 / 25–29.9 / 30+) correlate with metabolic-disease risk at population scale; CDC notes it is a screening tool, not a diagnostic. (https://www.cdc.gov/bmi/about/index.html) - Weight rationale: Underwriters genuinely price it, but the measure itself is blunt (see caveat) — weighted at 0.6× accordingly. - Caveat: BMI is a blunt population statistic: it misclassifies muscular builds and ignores fat distribution. It is included because underwriters use it, not because it is good. ### Finance / credit — how lenders and bureaus score you #### Net-worth position (`networth`) - your_moves · weight 16 (1.6× baseline) · SOURCED · not controllable · pack `core` - Bounds: [-0.5, ∞] - Logic: Net worth against the median for your age band. Below the median: a linear drag, floored at half this weight. Above it, points grow as the square root of your wealth multiple — quadruple your money to double your points — uncapped, because the real world does not cap the advantage of money. - Position: numeric input — formula in `constants`. - Source: Federal Reserve — Survey of Consumer Finances (2022) — Median net worth runs ~$39k for households under 35, rising to ~$410k for 65–74 — comparing a 27-year-old to a 60-year-old is meaningless. (https://www.federalreserve.gov/econres/scfindex.htm) - Weight rationale: Stock beats flow: wealth absorbs shocks income cannot, and SCF gaps between wealth deciles exceed income gaps — 1.6× the baseline, uncapped above because the world does not cap it. #### Debt load (DTI, not raw $) (`dti`) - your_moves · weight 14 (1.4× baseline) · SOURCED · controllable · pack `core` - Bounds: [-1, 1] - Logic: Debt scored as leverage against income, benchmarked to the lending world's ~43% affordability line. Zero debt scores best; the same asset bought on a loan drags here. - Position: numeric input — formula in `constants`. - Source: CFPB — Ability-to-Repay / Qualified Mortgage rule — The long-standing affordability benchmark caps total debt-to-income at 43%. Lenders judge the ratio, not the sticker price of what you bought. (https://www.consumerfinance.gov/about-us/blog/qualified-mortgages-what-are-they-and-what-do-they-mean-for-you/) - Weight rationale: The lending world's primary gate (the CFPB 43% line) — 1.4×. The only symmetric rule in the book: the cited system punishes exactly as hard as it rewards. #### Credit score (`credit-score`) - your_moves · weight 14 (1.4× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: The number lenders actually pull — the single most legible 'life score' there is. Scored against what a score band costs you in the real world: below ~580 you're subprime (denied, or charged the most), and the best rates plateau around 760, so points saturate there. This one rule stands in for payment history and utilization (its two biggest factors) plus credit age, mix, and inquiries. - Position: numeric input — formula in `constants`. - Source: myFICO — Loan Savings Calculator — On a 30-year mortgage, a borrower in the 760+ band pays roughly $87,000 less interest than one in the 620–639 band — the score directly sets the price of credit, and access to it. (https://www.myfico.com/credit-education/calculators/loan-savings-calculator) - Weight rationale: A major legible gate — it sets the price of a mortgage, a car, a deposit, sometimes a job. Weighted 1.4×, and it consolidates what were two separate FICO-component rules (payment history + utilization). - Caveat: Credit scoring penalizes thin files — the young, immigrants, and the credit-invisible — and measures debt behavior, not character or capability. It is on here because it gates housing, loans, and deposits, not because it is fair. #### Emergency fund (`emergency-fund`) - your_moves · weight 10 (1× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Months of expenses covered by liquid savings, scored against the standard 3-month test. Saturates at 3 — this measures shock absorption, not hoarding. - Position: numeric input — formula in `constants`. - Source: Federal Reserve — Survey of Household Economics and Decisionmaking (SHED) — A large share of US adults could not cover three months of expenses with savings; many could not cover a $400 emergency in cash. (https://www.federalreserve.gov/consumerscommunities/shed.htm) - Weight rationale: The Fed's own resilience test: the 3-month line is what separates a setback from a spiral — 1.0×. #### Income vs. median (household) (`income`) - your_moves · weight 10 (1× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, ∞] - Logic: Household income, sized to the people it supports by the OECD square-root scale, against the median US household. Half marks at the size-adjusted median; above it, points grow as the square root of your multiple, uncapped — see the net-worth rule for why. More dependents on the same income lower the per-person figure — exactly how the poverty thresholds and lenders treat a household, not a verdict on having a family. - Position: numeric input — formula in `constants`. - Source: US Census Bureau — Income in the United States (median household income) — Median US household income runs about $80,600 (2023) at an average household size near 2.5; comparing households of different sizes requires an equivalence adjustment. (https://www.census.gov/library/publications/2024/demo/p60-282.html) - Weight rationale: THE BASELINE (1.0×). Income is the dimension every other system prices most legibly; every other weight in this book is a stated deviation from this one. Sized to the household so a paycheck stretched across more people counts for less — the way the poverty line already does. #### Homeownership (`homeownership`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Owning is the dominant US wealth-building vehicle — and gatekept by everything above. Renters get partial credit; this measures system position, not virtue. - Position by `homeowner`: true=1, false=0.3 - Source: Federal Reserve SCF — homeowner vs. renter net worth — Median homeowner net worth (~$400k) is roughly 40× median renter net worth (~$10k) in the 2022 SCF. (https://www.federalreserve.gov/econres/scfindex.htm) - Weight rationale: The wealth effect is already counted in net worth; this 0.6× prices only the access premium to the main US wealth escalator. #### Banked status (`banked`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: No bank account means check-cashing fees, money orders, and no credit-building rail — a measured tax on being poor. Underbanked (account, but relying on payday/check-cashing services) pays part of it. - Position by `banking`: unbanked=0, underbanked=0.5, banked=1 - Source: FDIC — National Survey of Unbanked and Underbanked Households — Millions of US households lack any bank account; unbanked households pay fees for basic transactions that banked households get free, and cannot build credit history from ordinary payments. (https://www.fdic.gov/household-survey) - Weight rationale: The FDIC's measured poverty premium — fees where wealth earns interest — at 0.6× the baseline, kept low because its dollar magnitude is small even though its direction is vicious. ### Education / work — how the labor market values you #### Education ladder (`education`) - your_moves · weight 12 (1.2× baseline) · SOURCED · controllable · pack `core` - Bounds: [-0.2, 1] - Logic: The labor market prices each rung: no diploma is actively penalized (unemployment runs roughly twice the bachelor's-holder rate), each step up narrows the gap, and the graduate premium over a bachelor's is field-dependent — so this rule caps at the bachelor's rung. 'Controllable' only if the time and tuition were affordable to you. - Position by `education`: none=-0.2, hs=0.4, some=0.6, bachelor=1, graduate=1 - Source: BLS — Education pays — Median earnings rise and unemployment falls with every rung of attainment; workers without a high-school diploma face roughly double the unemployment rate of bachelor's holders. (https://www.bls.gov/careeroutlook/2025/data-on-display/education-pays.htm) - Weight rationale: A ~60% earnings premium compounding over a working life — 1.2× the baseline. The negative floor exists because the market genuinely penalizes no-diploma, not merely fails to reward it. #### Employment status (`employment`) - your_moves · weight 8 (0.8× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Employed or self-employed scores full; students and retirees partial (different life phase, not failure); unemployed zero — which is how every lender reads it. - Position by `employment`: employed=1, self=1, unemployed=0, student=0.6, retired=0.7 - Source: BLS — Labor Force Statistics (CPS) — Unemployment correlates with sharp income loss and scarring effects on future earnings, especially for long spells. (https://www.bls.gov/cps/) - Weight rationale: The income flow is already counted by the baseline rule; this 0.8× prices the status gate every lender and landlord reads first. #### Occupation outlook (`outlook`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Whether your field is projected to grow or shrink — BLS publishes ten-year projections for every occupation. Self-assessed band here. - Position by `outlook`: declining=0.2, stable=0.6, growing=1 - Source: BLS — Occupational Outlook Handbook — Projects employment change by occupation over a 10-year window; growth varies from double-digit increases to steep declines. (https://www.bls.gov/ooh/) - Weight rationale: Ten-year BLS projections are directional, not destiny — 0.6×. ### Social — connection, record, and footprint #### Social connection (`connection`) - your_moves · weight 10 (1× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Regular contact with people you are close to. The mortality effect of isolation rivals smoking in meta-analysis — the most underpriced rule in this book. - Position by `socialConnection`: 0=0.1, 1=0.5, 2=1 - Source: Holt-Lunstad et al. — Social Relationships and Mortality Risk (meta-analysis) — Stronger social relationships associated with ~50% increased odds of survival — an effect comparable to quitting smoking. (https://journals.plos.org/plosmedicine/article?id=10.1371/journal.pmed.1000316) - Weight rationale: Holt-Lunstad's ~50% survival effect rivals smoking cessation — weighted equal to the baseline and to smoking at 1.0×, the most underpriced rule in the book. #### Partnership status (`partnership`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Married/partnered people show better longevity and household finances in the data — partly pooling, partly selection. - Position by `partnered`: true=1, false=0.5 - Source: Harvard Health / NIH — marriage and longevity research — Married adults show lower mortality and cardiovascular risk in large cohorts, with effect sizes that shrink after controlling for selection. (https://www.health.harvard.edu/staying-healthy/marriage-and-mens-health) - Weight rationale: The longevity association is real but heavily selection-confounded (see caveat) — discounted to 0.6×. - Caveat: Selection effects are real: healthier, wealthier people marry more. The data cannot fully separate cause from sorting, and single is not a deficit — this scores the system, not you. #### Children (`parenthood`) - your_moves · weight 6 (0.6× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0.5, 1] - Logic: Parents show modestly lower mortality in old age — a Swedish registry cohort of ~1.4M people tracked from 60 found roughly a 2-year (men) / 1.5-year (women) life-expectancy edge that widens with age, consistent with adult children providing late-life support. Scored as a mild positive that saturates by two or three kids; childless sits at a neutral half, not a deficit. The financial cost of children is counted separately, in the income rule. - Position: numeric input — formula in `constants`. - Source: Modig et al. — Payback time? Influence of having children on mortality in old age (J Epidemiol Community Health, 2017) — Tracking ~1.4 million Swedes from age 60, parents had lower old-age mortality than the childless — about a 2-year (men) / 1.5-year (women) life-expectancy gap at 60 that widened with age, consistent with late-life support from adult children. (https://pmc.ncbi.nlm.nih.gov/articles/PMC5484032/) - Weight rationale: The old-age-mortality association is real but small and selection-confounded (see caveat) — 0.6×, matched to partnership, the other family-ties rule. - Caveat: Heavy selection: healthier, more stable people are likelier to both have children and to live longer, and the day-to-day wellbeing research is mixed. Childlessness is not a deficit — this scores a measured association, not a verdict on your family. #### Volunteering / community (`volunteering`) - your_moves · weight 4 (0.4× baseline) · SOURCED · controllable · pack `core` - Bounds: [0, 1] - Logic: Regular volunteering correlates with health and well-being outcomes — and is the closest thing to a real-world "social karma" ledger. - Position by `volunteers`: true=1, false=0.4 - Source: AmeriCorps — Health Benefits of Volunteering — Volunteers report better health and lower depression; older volunteers show reduced mortality in longitudinal studies. (https://www.americorps.gov/about/our-impact/volunteering-civic-life) - Weight rationale: The smallest sourced effect in the book — 0.4×, the floor for sourced rules. #### Driving record (`driving`) - your_moves · weight 6 (0.6× baseline) · SOURCED · controllable · pack `core` - Bounds: [-0.2, 1] - Logic: At-fault accidents and moving violations in the last 3 years, scored the way an auto insurer rates you. Clean record full; each incident bites. - Position: numeric input — formula in `constants`. - Source: Insurance Information Institute — What determines the price of an auto insurance policy? — Driving record is a primary rating factor; accidents and violations raise premiums for 3–5 years. (https://www.iii.org/article/what-determines-price-my-auto-insurance-policy) - Weight rationale: Insurer-priced with a 3–5 year decay — 0.6×. Mildly subtractive because license points literally subtract. #### Digital footprint (`digital`) - your_moves · weight 4 (0.4× baseline) · SPECULATIVE · controllable · pack `speculative` - Bounds: [0, 1] - Logic: Employers and landlords screen public profiles, but no public dataset quantifies the effect on outcomes — so the weight is a flagged guess. - Position by `digitalFootprint`: 0=0.2, 1=0.6, 2=1 - Source: CareerBuilder — social media screening survey (2018) — Majorities of employers report screening candidates online and rejecting some on what they find — survey evidence, not an outcome dataset. Hence speculative. (https://www.prnewswire.com/news-releases/more-than-half-of-employers-have-found-content-on-social-media-that-caused-them-not-to-hire-a-candidate-according-to-recent-careerbuilder-survey-300694437.html) - Weight rationale: Survey evidence only, no outcome dataset — speculative, so pinned to the 0.4× floor. #### Housing stability (`housing-stability`) - your_moves · weight 12 (1.2× baseline) · SOURCED · not controllable · pack `core` - Bounds: [-0.5, 1] - Logic: Where you sleep is the gateway condition for everything else scored here. Stable housing scores full; doubled-up or eviction-threatened partial; unhoused subtracts — because the systems above (credit, employment, health) all actively punish it. - Position by `housing`: unhoused=-0.5, insecure=0.3, stable=1 - Source: Eviction Lab (Desmond et al.) — Eviction causes job loss, depression, and long-run instability — Milwaukee cohort studies show eviction precedes, not merely follows, deepened poverty. (https://evictionlab.org/) - Weight rationale: Eviction sits upstream of job loss, credit destruction, and health collapse — weighted with education at 1.2×. The negative floor qualifies under the subtractive principle: every cited system actively punishes housing loss. - Caveat: Marked not-controllable deliberately: eviction research shows housing loss precedes and causes the poverty that follows it — people rarely choose their way into or out of it. Its place in the 'your moves' tier reflects where existing systems file it, not fault. ### Civic / legal — how institutional ledgers read you #### Criminal record (`criminal-record`) - your_moves · weight 8 (0.8× baseline) · SOURCED · not controllable · pack `core` - Bounds: [0, 1] - Logic: A record roughly halves employer callbacks in audit studies. Scored as the labor market scores it — which is exactly the kind of opaque penalty this app exists to expose. - Position by `criminalRecord`: true=0, false=1 - Source: Pager — The Mark of a Criminal Record (audit study) — Matched-pair audits found a criminal record cut employer callbacks by ~50%, with effects compounding across race. (https://www.journals.uchicago.edu/doi/10.1086/374403) - Weight rationale: The callback-halving effect is enormous, but the measure is binary and inherits enforcement bias (see caveat) — held to 0.8× rather than weighted like the gate it really is. - Caveat: Enforcement and conviction rates are themselves racially and economically skewed, so this rule inherits that bias from the system it measures. Shown because the penalty is real, not because it is just. #### Voter registration (`voting`) - your_moves · weight 4 (0.4× baseline) · SPECULATIVE · controllable · pack `speculative` - Bounds: [0, 1] - Logic: Registered voters appear in civic data used by campaigns, jury pools, and some tenant screens; the personal-outcome effect is unquantified — flagged guess. - Position by `voterRegistered`: true=1, false=0.4 - Source: US Census — Voting and Registration tables — Registration rates are tracked demographically, but no public dataset ties individual registration to life outcomes. Hence speculative. (https://www.census.gov/topics/public-sector/voting.html) - Weight rationale: No outcome dataset ties registration to personal results — speculative, 0.4× floor. ## Contributing & feedback Weights are editorial and the rules are arguable — that is the design. If a weight looks wrong, a source is stale, or a rule is missing, propose it. Improvements from many users are aggregated in the open. Open a GitHub issue with the rule id, what you would change (weight, source, bounds, or a new rule), and a public citation if you have one. - Issues: https://github.com/royashbrook/lifescored/issues - Contributing guide: https://github.com/royashbrook/lifescored/blob/main/CONTRIBUTING.md