{"id":1434,"date":"2026-07-02T21:18:54","date_gmt":"2026-07-02T10:18:54","guid":{"rendered":"https:\/\/paulyeatman.net.au\/?p=1434"},"modified":"2026-07-19T20:39:01","modified_gmt":"2026-07-19T09:39:01","slug":"quality-os-v0-4-1-self-hosted-quality-management-for-regulated-manufacturing","status":"publish","type":"post","link":"https:\/\/paulyeatman.net.au\/index.php\/2026\/07\/02\/quality-os-v0-4-1-self-hosted-quality-management-for-regulated-manufacturing\/","title":{"rendered":"Quality OS v0.4.1 | Self-hosted Quality Management for regulated manufacturing."},"content":{"rendered":"<p>Over the last several months I&#8217;ve been developing a personal project called Quality OS where I have been building the Quality Management System I have always wanted.<\/p>\n<p>It started as a way to explore better document control and change management for regulated manufacturing environments. Since then it has grown into a self-hosted Quality Management platform designed around practical quality system workflows rather than generic document storage.<\/p>\n<p>Current capabilities include:<!--more--><\/p>\n<ul>\n<li>Controlled document lifecycle<\/li>\n<li>Integrated change control and RFC workflow<\/li>\n<li>Deterministic document comparison<\/li>\n<li>Structured comparison of references, responsibilities and CCPs<\/li>\n<li>AI-assisted review summaries using a locally hosted LLM (Ollama)<\/li>\n<li>Review queue and document history<\/li>\n<li>Local processing with no cloud dependency<\/li>\n<\/ul>\n<p>One of the design goals has been ensuring that AI assists reviewers rather than replacing them. Document comparisons are generated deterministically first, with AI producing a review summary from verified changes, maintaining traceability throughout the review process.<\/p>\n<p>There is still plenty to build, including a side-by-side review cockpit, electronic approvals and additional QMS modules, but it&#8217;s been rewarding to see the platform evolve from an idea into something I use every week.<\/p>\n<div id=\"attachment_1442\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1442\" class=\"size-medium wp-image-1442\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-300x144.png\" alt=\"Quality System Dashboard v0.4x\" width=\"300\" height=\"144\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-300x144.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-1024x491.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-768x368.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-1536x736.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_Dashboard1.png 1917w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1442\" class=\"wp-caption-text\">Quality System Dashboard v0.4x<\/p><\/div>\n<div id=\"attachment_1441\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1441\" class=\"size-medium wp-image-1441\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-300x142.png\" alt=\"Quality System Core Features Snippet v0.4x\" width=\"300\" height=\"142\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-300x142.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-1024x486.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-768x364.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-1536x729.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_coresnippet7.png 1868w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1441\" class=\"wp-caption-text\">Quality System Core Features Snippet v0.4x<\/p><\/div>\n<div id=\"attachment_1445\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1445\" class=\"size-medium wp-image-1445\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-300x147.png\" alt=\"Quality System Roadmap Snippet v0.4x\" width=\"300\" height=\"147\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-300x147.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-1024x500.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-768x375.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-1536x750.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_roadmap8.png 1865w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1445\" class=\"wp-caption-text\">Quality System Roadmap Snippet v0.4x<\/p><\/div>\n<p>&nbsp;<\/p>\n<div id=\"attachment_1440\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1440\" class=\"size-medium wp-image-1440\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-300x147.png\" alt=\"Quality System Change Control Screen v0.4x\" width=\"300\" height=\"147\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-300x147.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-1024x501.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-768x375.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-1536x751.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_changecontrol2.png 1870w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1440\" class=\"wp-caption-text\">Quality System Change Control Screen v0.4x<\/p><\/div>\n<div id=\"attachment_1443\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1443\" class=\"size-medium wp-image-1443\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-300x146.png\" alt=\"Quality System Review Summary Screen v0.4x\" width=\"300\" height=\"146\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-300x146.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-1024x498.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-768x373.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-1536x747.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_revewsummary4.png 1882w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1443\" class=\"wp-caption-text\">Quality System Review Summary Screen v0.4x<\/p><\/div>\n<div id=\"attachment_1439\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1439\" class=\"size-medium wp-image-1439\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-300x134.png\" alt=\"Quality System AI Settings Screen v0.4x\" width=\"300\" height=\"134\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-300x134.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-1024x456.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-768x342.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-1536x684.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIsettings6.png 1887w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1439\" class=\"wp-caption-text\">Quality System AI Settings Screen v0.4x<\/p><\/div>\n<div id=\"attachment_1438\" style=\"width: 310px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1438\" class=\"size-medium wp-image-1438\" src=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-300x146.png\" alt=\"Quality System Deterministic AI Screen v0.4x\" width=\"300\" height=\"146\" srcset=\"https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-300x146.png 300w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-1024x499.png 1024w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-768x374.png 768w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-1536x748.png 1536w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5-2x1.png 2w, https:\/\/paulyeatman.net.au\/wp-content\/uploads\/2026\/07\/QS_AIdetrrministic5.png 1876w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-1438\" class=\"wp-caption-text\">Quality System Deterministic AI Screen v0.4x<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Over the last several months I&#8217;ve been developing a personal project called Quality OS where I have been building the Quality Management System I have always wanted. It started as a way to explore better document control and change management for regulated manufacturing environments. Since then it has grown into a self-hosted Quality Management platform [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,82],"tags":[83,81,34,29,78,77],"class_list":["post-1434","post","type-post","status-publish","format-standard","hentry","category-documentation","category-qms-development","tag-ai-development","tag-automation","tag-change-controlmanagement","tag-documentation","tag-process-improvement","tag-quality-management"],"_links":{"self":[{"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/posts\/1434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/comments?post=1434"}],"version-history":[{"count":10,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/posts\/1434\/revisions"}],"predecessor-version":[{"id":1454,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/posts\/1434\/revisions\/1454"}],"wp:attachment":[{"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/media?parent=1434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/categories?post=1434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paulyeatman.net.au\/index.php\/wp-json\/wp\/v2\/tags?post=1434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}