Skip to content
Andrew Voirol
WorkLogAboutContact
HomeWorkLog

AboutContact

✦ Just one prompt away from figuring it all out.

Work → Google I/O Concierge
ThreadActive

Google I/O Concierge

A polished, local-first mobile companion app for Google I/O 2026 — rescued from a raw AI Studio export to a clean GitHub showcase.

Started Aug 2, 2026·Latest Aug 3, 2026·2 entries

Built a Google I/O companion app concept in AI Studio — a mobile-first PWA with session schedules, a Gemma "On-Device" chat, offline support, and push notifications. AI Studio produced a genuinely beautiful UI: spring physics, gradient branding, Motion transitions, the whole production. Then the recon revealed it was all theater — the Gemini SDK was a dead dependency, the chat was a setTimeout, and every "smart" feature was faked.

The rescue pass was the real work. Replaced broken screenshots (desktop captures with IDE chrome) with clean Playwright headless captures at iPhone 14 viewport. Rebuilt a GIF that had 38 different frame sizes into 52 consistent frames. Created a missing favicon, rewrote the README, killed dead dependencies, and fixed Next.js 15 and Tailwind v4 issues. From raw AI Studio export to clean GitHub repo in a single weekend.

Latest Update

38 frame sizes in one GIF — fixing the screenshot disaster

Mon, Aug 3, 2026

Timeline

Ran the recon on a Google I/O companion app I built in AI Studio and found out it's gorgeous theater. The design is genuinely good — purple gradients, spring physics on the bottom sheet, Motion transitions between views, offline banners, a Gemma "On-Device" chat interface with quick-reply pills. It feels like a native conference app. Then I looked at the source: 1,125 lines in a single page.tsx. The @google/genai SDK is in package.json but zero lines of source code import it. The chat? setTimeout with a hardcoded response. The "syncing..." indicator on session notes? Another setTimeout. The countdown timer counts down to nothing. Every single "smart" feature is a setTimeout wearing a nice outfit. But the design instincts — the color system, the animation choreography, the mobile-first feel — that's the real asset. AI Studio gave me a portfolio-grade UI mockup. It just forgot to mention it wasn't real.

AI StudioReactPWA
Permalink →

Opened the repo on GitHub and the demo GIF looked like it was having a seizure. 38 different frame dimensions ranging from 1×1 to 800×414 — the GIF encoder was spitting out delta-compressed patches as individual frames. The hero screenshot was worse: a 2880×1490 desktop capture with my IDE chrome bleeding into the frame. Not exactly portfolio material. The fix was Playwright headless at iPhone 14 viewport (390×844 @2x), capturing the production build. Three clean screenshots — dashboard, session detail, Gemma chat — plus 52 consistent frames assembled into a 272KB GIF. Had to fight __dirname resolution twice when the capture script ran from the wrong scope. Also created an SVG favicon (the manifest referenced favicon.ico but no file existed), rewrote the README to lead with the demo GIF, killed the dead @google/genai dependency, moved autoprefixer out of production deps, and fixed the Next.js 15 themeColor viewport warning. Two commits, 14 files changed, zero Dependabot alerts.

AI StudioPlaywright
Permalink →

Andrew Voirol

Builder, hacker, shipper. Currently leaving localhost.

Navigate

WorkBuilder’s LogAboutContactRSS Feed

Connect

X / TwitterGitHubLinkedIn

© 2026 Andrew Voirol·Back to top ↑
✦Just one prompt away from figuring it all out.