<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Kelven Galvão — Writing</title><description>Senior mobile engineer with 7+ years building Flutter applications for global consumer products across e-commerce, fintech, mobility and food delivery.</description><link>https://kelvengalvao.com</link><language>en</language><item><title>An agent that returns a tested PR, not a diff</title><link>https://kelvengalvao.com/blog/an-agent-that-returns-a-tested-pr</link><guid isPermaLink="true">https://kelvengalvao.com/blog/an-agent-that-returns-a-tested-pr</guid><description>Designing an agent graph where the scheduler is deterministic Dart, the models reason inside nodes, and nothing ships until a validator has driven the app and produced evidence.</description><pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate><category>ai-agents</category><category>architecture</category><category>testing</category><category>dart</category></item><item><title>Face recognition that never leaves the device</title><link>https://kelvengalvao.com/blog/face-recognition-that-never-leaves-the-device</link><guid isPermaLink="true">https://kelvengalvao.com/blog/face-recognition-that-never-leaves-the-device</guid><description>Building photo check-in for a martial arts app: why the model runs in the browser, why the biometric template is never stored on a server, and why two brothers in the same gi drove the hardest design decision.</description><pubDate>Sun, 20 Sep 2026 00:00:00 GMT</pubDate><category>face-recognition</category><category>privacy</category><category>typescript</category></item><item><title>Four caches between a product photo and the screen</title><link>https://kelvengalvao.com/blog/four-caches-between-a-photo-and-the-screen</link><guid isPermaLink="true">https://kelvengalvao.com/blog/four-caches-between-a-photo-and-the-screen</guid><description>How a commerce app keeps image memory bounded: resize at the CDN, cap the decode, size the caches in pages rather than megabytes, and keep a remote kill switch.</description><pubDate>Sat, 19 Sep 2026 00:00:00 GMT</pubDate><category>flutter</category><category>performance</category><category>memory</category></item><item><title>Cutting Flutter CI from 21 minutes to 7</title><link>https://kelvengalvao.com/blog/flutter-ci-21-minutes-to-7</link><guid isPermaLink="true">https://kelvengalvao.com/blog/flutter-ci-21-minutes-to-7</guid><description>A test suite that booted 304 engines, caches that were invisible to the runs that needed them, and a staging pipeline compiling the same Dart twice.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate><category>flutter</category><category>ci</category><category>performance</category></item></channel></rss>