{
  "id": 19024104,
  "title": "I parse blood test PDFs on the phone, and the parser has no AI in it",
  "url": "https://urgent.news/2026/11/08/i-parse-blood-test-pdfs-on-the-phone-and-the-parser-has-no-ai-in-it",
  "topic": "ai",
  "section": "AI",
  "published": "2026-11-08T21:35:13.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/kodsgnn/i-parse-blood-test-pdfs-on-the-phone-and-the-parser-has-no-ai-in-it-29me"
  },
  "original_language": "en",
  "account": "The author, a product designer, has created an iPhone app called Soma that can parse lab reports on the phone without using AI. They collected 113 lab reports from five labs in Ukraine, Poland, and Turkey, where they encountered varying spelling, units, and languages like Turkish and Cyrillic. To ensure consistent results, Soma generates tables instead of copying data and uses Python for prototyping before converting to Dart for Flutter development. The app's code is tested against the Python parser's output row by row, with a fuzzing mechanism created to generate fake reports for testing.\n\nHowever, the parser is intentionally simple and boring, as using an LLM to generate JSON might lead to invented reference ranges or inaccurate numbers. The author emphasizes that a wrong number in your health chart can look identical to a correct one. They also built synthetic report sets in various languages to address multilingual challenges and discovered the significance of understanding specific symbols like Turkish i and Cyrillic С in lab reports.\n\nThe author then introduces an LLM named Gemma for answering user queries about their blood test results. While Gemma achieves better accuracy than a standalone LLM, it struggles with novel questions, and the author is working on improving its performance.",
  "summary": "I have 113 lab reports. Five labs, three countries: Ukraine, Poland, Turkey. Same ferritin, three spellings, two units, one of them in Turkish. For years my \"system\" was a spreadsheet and a folder called analizy_final_2 . I wanted one chart per marker. I also didn't want to upload my blood to anyone to get that chart. So I built Soma, an iPhone app that reads the reports on the device. Full…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}