{"id":39,"date":"2026-01-02T19:23:38","date_gmt":"2026-01-02T18:23:38","guid":{"rendered":"https:\/\/stefan.boeck.name\/en\/?p=39"},"modified":"2026-01-02T19:23:38","modified_gmt":"2026-01-02T18:23:38","slug":"perfmatters-from-idea-to-launch","status":"publish","type":"post","link":"https:\/\/stefan.boeck.name\/en\/2026\/01\/02\/perfmatters-from-idea-to-launch\/","title":{"rendered":"PerfMatters: From Idea to Launch"},"content":{"rendered":"<p><em>\ud83c\udde9\ud83c\uddea <a href=\"\/de\/perfmatters-von-der-idee-zum-launch\/\">Auf Deutsch lesen<\/a><\/em><\/p>\n<p>The trigger was a blog post by Stoyan Stefanov: <a href=\"https:\/\/calendar.perfplanet.com\/2025\/aislow\/\">AISlow<\/a>. His idea: feed Lighthouse data through an ML model and explain it with GPT in plain language.<\/p>\n<p>I wanted to try this.<\/p>\n<p>The result is <strong>PerfMatters<\/strong> \u2013 a tool that analyzes web performance, predicts the SpeedIndex, and explains in plain language what makes a page slow.<\/p>\n<p>The stack:<\/p>\n<ul>\n<li>LightGBM for prediction (R\u00b2 = 0.90)<\/li>\n<li>SHAP for feature importance<\/li>\n<li>GPT-4o-mini for the summary<\/li>\n<li>Laravel + FastAPI<\/li>\n<\/ul>\n<p>Stoyan tested it right away and found a few edge cases \u2013 now fixed. Thanks for that!<\/p>\n<p>\u2192 <a href=\"https:\/\/perfmatters.org\">perfmatters.org<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udde9\ud83c\uddea Auf Deutsch lesen The trigger was a blog post by Stoyan Stefanov: AISlow. His idea: feed Lighthouse data through an ML model and explain it with GPT in plain language. I wanted to try this. The result is PerfMatters \u2013 a tool that analyzes web performance, predicts the SpeedIndex, and explains in plain language &hellip; <a href=\"https:\/\/stefan.boeck.name\/en\/2026\/01\/02\/perfmatters-from-idea-to-launch\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">PerfMatters: From Idea to Launch<\/span><\/a><\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-39","post","type-post","status-publish","format-standard","hentry","category-perfmatters"],"_links":{"self":[{"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/posts\/39","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":2,"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/posts\/39\/revisions"}],"predecessor-version":[{"id":41,"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/posts\/39\/revisions\/41"}],"wp:attachment":[{"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/media?parent=39"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/categories?post=39"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stefan.boeck.name\/en\/wp-json\/wp\/v2\/tags?post=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}