Sugar Alcohol Turns Into Fructose in the Liver. Our Diary Doesn't Have a Field for It
A Science Signaling study out of Washington University found sorbitol, the 'sugar-free' sweetener in half the sugar-free candy aisle, converts into liver-damaging fructose when gut bacteria can't keep up. Mr BITE's nutrient model has no sugar-alcohol field anywhere, on any food source, for any user.
Sorbitol is the sweetener in most of the “sugar-free” gum and candy in your grocery store, and for decades the pitch has been simple: it’s a sugar alcohol, your body doesn’t process it the way it processes sugar, so it barely counts. A study published September 3rd in Science Signaling, out of Gary Patti’s lab at Washington University in St. Louis, says that pitch is only true some of the time, and the times it isn’t true are the times that matter.
The mechanism the researchers describe, working in zebrafish, is this: dietary glucose gets converted into sorbitol by intestinal cells as a normal step, and under ordinary conditions gut bacteria degrade that sorbitol before it ever reaches the liver. When those bacteria are depleted or overwhelmed, though, the sorbitol doesn’t get broken down in the gut. It travels to the liver instead, where it gets converted into fructose 1-phosphate, the same molecule regular fructose becomes once it’s metabolized there, which then drives up glycolytic flux and, per the same body of research from Patti’s lab, hepatic fat and glycogen content. Patti’s own description of the relationship is blunt: sorbitol is “one transformation away from fructose.” Fructose itself is already an established driver of steatotic liver disease, a condition that now affects roughly 30% of adults worldwide, which is exactly the outcome sorbitol was supposed to be a safer substitute for.
I want to be precise about what this study is and isn’t. It’s zebrafish, not people, and the pathway the researchers describe only fires when gut bacteria that would normally clear sorbitol are missing or overrun, not for everyone who chews a piece of sugar-free gum. Antibiotics, GI illness, a gut microbiome that’s already under strain from a low-fiber diet: any of those could plausibly put someone in the condition this pathway needs to activate. Nobody has shown yet how common that is in humans, and this study doesn’t claim to. What it does establish is that “sugar alcohol” was never a synonym for “metabolically inert,” and that the gap between those two ideas depends on exactly the kind of gut health most people never think to check.
So I went and checked what our own diary does with that number, and the honest answer is: nothing, because there’s no number. Every food source Mr BITE resolves, whether it comes from a barcode scan against Open Food Facts, a photo scan, a manual entry, or a recipe import, collapses down to the same six fields: calories, protein, carbs, fats, and optionally fiber and sugar. That’s the entire schema. There has never been a sugar-alcohol field, a polyol field, anything. Our barcode lookup doesn’t even restrict which fields it asks Open Food Facts for on that endpoint, it pulls the whole product payload back, and our mapper still only ever reads five or six numbers out of it before throwing the rest away. If a sugar-free candy bar’s label carries 12 grams of sorbitol, that number was in the response we already fetched, and our own code never looked at it.
It gets one more mention in the codebase, and it’s almost worse than not appearing at all: biteIntakeAnswers.ts, the parser behind our onboarding allergy question, matches “sorbitol” as a keyword and will file it under a user’s intolerances if they type it in free text during setup. So a user can tell Mr BITE they react to sorbitol, and the app will dutifully write that down. It just can’t do anything with it afterward, because nothing downstream of that answer ever checks a food’s sorbitol content against it, for the simple reason that no food in our system has a sorbitol content to check. We ask the question and then have no way to act on the answer.
I don’t think the fix here is small, and I’m not going to write a paragraph pretending it is. USDA’s branded-food data and Open Food Facts both carry sugar-alcohol figures inconsistently, depending on whether a manufacturer bothered to report them, the same coverage problem we’ve hit with every micronutrient we’ve gone looking for in past issues. A photo scan will never produce this number at all; there’s no such thing as visually estimating sorbitol content from a picture of gum. And even with the data in hand, doing something useful with it, flagging a product, warning a user who’s already told us they’re sensitive, means building a comparison this app has never had to build before. What I can tell you, the same way I could tell you the last time we went looking for a field that wasn’t there, is exactly how far “we already have the data” gets you when nobody wrote the six lines of code to read it.
BITE of the Week: The Backend Changed Underneath Everyone, Nobody’s Build Number Moved Yet

Version status is unchanged since last issue: 1.12.1, iOS build 108 and Android versionCode 139, is what’s built and queued, still not confirmed live on either store per the release scripts. No version-bump commit landed this week, so everything below is merged to main and not yet in a numbered release.
What did land, starting the day Issue 19 published, was the biggest week of backend work this series has covered. First, a real look at why Bite goes quiet on people: the first ad cohort had a 38% day-1 return and a flat 0% day-2 return, and the root causes were embarrassingly fixable once someone traced them. An intent-tiering bug classed every single-select onboarding answer as “low” engagement, so 19 of 20 day-one check-ins got silently downgraded to a chat message nobody was pushed. A rollout flag meant to gate a feature at 0% was being ignored by the server, so it ran at 100% anyway. The model was vetoing two-thirds of early nudges as “similar message already sent.” Everyday logging nudges didn’t start until day 14. And 24 of 54 users who’d never granted AI consent got no coaching of any kind, not even the template-only messages that don’t need it. The fix moved logging nudges from day 14 to day 1, added a morning recap that pulls yesterday’s real numbers (“Yesterday: 1,640 kcal and 92g protein. What’s for breakfast?”) and an evening reminder for anyone with an empty day, stopped the intent classifier from defaulting people into “low,” made the rollout flag actually mean zero, tightened the interruptive-message budget from 12 hours to 8 so both the morning and evening pushes can land, and lifted the free AI-logging allowance to 200 for a new user’s first 14 days after the heaviest loggers started hitting the old cap by day 4.
Second, and considerably larger: Bite is most of the way through moving off Clerk and onto Supabase Auth natively, four phases across two days. Phase 0 added the mapping column and hardened the edge-function auth check so a token from either identity provider could be told apart. Phase 1 rewrote every Postgres policy that checked auth.uid() directly, 48 policies across 17 tables, to trust either identity through one shared helper, and dropped a base-schema trigger that had been quietly writing a phantom profile row on every new signup. Phase 2 built the actual migration tool, a ledger-backed script that provisions or reuses an auth user per profile, verifies its own preconditions against live state before each write, and can be rolled back from the ledger if anything goes wrong; the dry run sorted 213 profiles as ready and flagged 32 as blocked, and the two founders made the actual calls on the edge cases by hand rather than letting the script guess. Phase 3 rebuilt AuthContext to run on Supabase Auth for real: native Sign in with Apple and Google, a browser-OAuth fallback for anyone running Expo Go (where the native Google module can’t run at all), and Facebook sign-in retired outright. The three commits since have been the debugging tax that kind of rebuild always carries: a fix for a fresh photo scan needing expo-av to load lazily so Expo Go doesn’t crash on boot, a fix for the OAuth callback occasionally arriving twice, once to the waiting browser session and once as a deep link, which used to throw a bogus “code verifier empty” error even though the sign-in had already succeeded.
Riding along in the same window: the whole project moved to Expo SDK 57, React Native 0.86 and React 19.2, with the native Android project regenerated from scratch via prebuild and every hand-written piece (Health Connect permissions, the share-to-Bite intent filters, immersive mode) restored by hand afterward. None of it is user-visible yet. All of it is what the next build number, whenever it gets cut, is going to be carrying.
Three Quick Bites

-
Researchers from Xi’an Jiaotong-Liverpool University, Stanford, Shanghai Jiao Tong University and the Chinese Academy of Sciences found that plasmalogens, compounds abundant in sea squirts and known to decline steadily with age, reversed several markers of brain aging in older mice, improving memory and learning, strengthening connections between brain cells, and reducing inflammation over a two-month daily-dosing study, reported September 4th. Plasmalogen levels are already known to run lower in people with Alzheimer’s and Parkinson’s, which is what makes this a real, testable lead rather than a supplement-aisle talking point, but it’s aged female mice on two months of dosing, not a human trial. SciTechDaily
-
A new global analysis reported September 6th projects cancer cases will climb 67%, to roughly 34 million a year, by 2050, driven mostly by population growth and aging, with the researchers estimating more than 40% of cancer deaths worldwide are tied to modifiable risk factors including poor diet, tobacco, alcohol and excess weight. The 67% is a population-math projection, not a claim that cancer is getting more dangerous person for person, but the 40%-modifiable figure is the part worth sitting with: it’s the same list of levers a food diary already exists to pull on. ScienceDaily
-
The FDA’s TEMPO pilot, reported September 3rd, has accepted four digital-health companies, including Cadence Solutions and Limbic, to bring generative-AI-driven care tools to patients under regulatory discretion rather than full premarket authorization, with one accepted product delivering 20-minute voice-AI therapy sessions under clinician oversight. The agency has said plainly it doesn’t yet have formal guidance for devices where generative AI is making care decisions, and is using this pilot to build that guidance from real-world use rather than write it in advance, which is a fairly candid admission for a regulator to make about a category Bite’s own chat coaching sits adjacent to. STAT
Tool of the Week: CSPI Chemical Cuisine

Since this issue is about a sweetener most labels treat as a footnote, this week’s pick is the free database that treats it as the main event. The Center for Science in the Public Interest’s Chemical Cuisine rates food additives, sweeteners included, from safe to avoid, with a plain-language writeup for each one: sorbitol’s own entry covers exactly the laxative-effect caveat most sugar-free packaging buries in fine print, and every other sugar alcohol, erythritol, xylitol, maltitol, mannitol, isomalt, hydrogenated starch hydrolysate, gets the same treatment. No account, no paywall, just a straight answer to “what is this ingredient actually doing.” CSPI Chemical Cuisine. Free, no signup required.
Thanks for reading. If you’d rather your coach ask what’s actually in your “sugar-free” gum, Mr BITE is free on iOS and Android.
Michael, building Mr BITE