How I Redesigned My Portfolio with Google Gemini (and Where the AI Actually Let Me Down)

Published: (February 28, 2026 at 07:36 PM EST)
4 min read
Source: Dev.to

Source: Dev.to

Background

A few months ago I entered DEV’s New Year, New You Portfolio Challenge and decided to rebuild my portfolio from scratch. The brief: use Google AI tools, deploy to Cloud Run, and make it yours.

The result is a “Brutalist/Industrial” portfolio (original submission post). The aesthetic intentionally rejects the clean, white‑space‑heavy look that most developer portfolios default to. It features exposed grids, heavy typography with the SCHABO typeface, cursor‑reactive background cells, and a mathematically generated DNA helix that assembles and deconstructs as you scroll. The site runs on Astro with React islands, GSAP for animations, and OGL (a lightweight WebGL library) for a metaballs footer effect.

You can see the live portfolio at .

Gemini Integration

Pitch Generator

  • Paste any job description.
  • The tool pulls from a structured knowledge base of my work and generates a tailored pitch explaining why I’m a fit.
  • It’s not a boilerplate cover letter; it produces a specific, conversational pitch.

Interactive Assistant

  • A terminal‑style interface that answers questions about my stack and recommends relevant projects based on what the visitor is looking for.
  • Uses Retrieval‑Augmented Generation (RAG) with my portfolio data as the knowledge base, served through Google Genkit with Zod‑validated flows and server‑side rendering via Astro’s Node adapter.

Both features run on Gemini 2.5 Flash, demonstrating that AI in a portfolio can be a useful tool rather than a generic chatbot.

Development Workflow

I used Google Antigravity as my primary AI coding pair throughout the build, and Nano Banana Pro to generate and iterate on imagery that matches the industrial art direction.

  • Refactoring: Antigravity transformed the original Codegrid template (raw HTML/CSS/JS with a sci‑fi theme) into Astro and React components.
  • DNA helix: It helped write the sine‑wave math for the helix animation.
  • Performance: Caught regressions in the WebGL loop.

When given clear, bounded problems—e.g., “make this GSAP ScrollTrigger reversible on scroll‑up”—the model produced workable code on the first or second attempt.

Design Challenges

The biggest surprise was how little the AI could help with actual creative direction. I had a clear concept (industrial/brutalist, raw, engineering‑first), but the suggestions it offered were technically fine yet aesthetically inert:

  • Gradient proposals suited for SaaS landing pages.
  • “Safe” color palettes.
  • Generic layout ideas that could come from any template.

The AI wasn’t wrong; it simply lacked an understanding of the visual language I was aiming for. I ended up making all design decisions myself and using the AI only to execute those decisions.

Lessons Learned

  • Know what to hand off – Bounded, well‑specified engineering problems are ideal for AI assistance.
  • Hold onto open‑ended creative decisions – Taste and visual direction still require human judgment.

The Pitch Generator’s early outputs were accurate but read like templated copy (“Ore is a skilled full‑stack engineer with experience in X, Y, and Z…”). After refining the system prompt and knowledge‑base schema, the results began to sound more like how I’d pitch myself in conversation.

The Genkit integration proved smooth: type‑safe flows with Zod schemas made it straightforward to build production‑ready AI features, and server‑side rendering through Astro’s Node adapter kept API keys secure without awkward workarounds.

Prompt Precision

Gemini rewards precision. Vague prompts yield vague results. Providing detailed instructions about tone, structure, and emphasis dramatically improved output quality. However, this precision assumes you already know what “good” looks like, meaning the model can’t replace taste—only execute once the taste is defined.

Future Plans

  • Pitch Generator – Add a follow‑up mode so visitors can ask for emphasis on particular aspects of my background, turning it into a back‑and‑forth tool rather than a one‑shot output.
  • Interactive Assistant – Move the static JSON knowledge base to a proper database, allowing updates without redeploying.
  • Project Search – Replace keyword matching with embeddings, enabling users to describe what they’re trying to build and receive relevant portfolio projects.
  • Continue iterating on AI‑assisted features while keeping the industrial aesthetic that I designed myself.
0 views
Back to Blog

Related posts

Read more »

Google Gemini Writing Challenge

What I Built - Where Gemini fit in - Used Gemini’s multimodal capabilities to let users upload screenshots of notes, diagrams, or code snippets. - Gemini gener...