Skip to content
Daniel Ferreira

This portfolio

AI executes. What it does not do is know whether the result is right.

Context

A self-initiated study case: this very site. Built in Next.js with Claude Code, from the first commit to the text of every case. Unlike the other studies, the raw material was recorded as it happened, session by session, rather than reconstructed from memory afterwards. The project is still going.

Role
Product Designer
Period
Six weeks, ongoing
Outcome
A site live on its own domain, every decision recorded on the day it was made
A bento-style grid on a dark blue background, holding eight real pieces of this site in its dark theme: the cat that became the mark, the LED marquee with him walking on top of it and the pause button lit at its end, the language menu open in Portuguese, English and Spanish, a case card carrying the design system, AI and restricted badges, the music player, the two-level reading switch with the minutes beside each label, the São Paulo clock, and the rule of the record: record while it happens, do not reconstruct it later.

A site live on its own domain, designed and built by me and an AI, from the first commit to the text of every case. No decision was reconstructed afterwards: each one was recorded on the day it happened.

I started out assuming the new skill would be writing good prompts. It was not.

Eight good-looking images, rejected by one measurement

I wanted the cat in the mark to walk across the screen. I asked the AI for the poses, and they came out beautiful.

Then I measured. In a real walk the paw sweeps 35% to 45% of the body per stride. Across the eight generated images, paw travel sat between 5% and 16%. At the size the cat actually appears on the site, that difference is three pixels: they were eight copies of the same image.

Nothing about them looked wrong, and that is the point. What separated "pretty" from "works" was writing the acceptance criterion as a number before ordering the material.

The checker found nothing, and eight criteria were failing

I ran the site through an automated accessibility checker. Zero violations on the Home page. The audit done by hand, the same day, found sixteen problems.

Everything that actually shuts someone out sat outside what a scan measures. The reading area of the case would not scroll with the keyboard. The focus outline had disappeared from the cards, and it was written correctly in the component: what wiped it was a dark-theme rule, in another file, days earlier, with nobody noticing. Later, going through the 55 A and AA criteria of WCAG 2.2 one by one, eight were still failing, and the checker kept returning zero on all of them.

The fixes came with a rule of my own: good accessibility without killing the personality of the site. The line on the LED marquee was painted dot by dot, and became real text with the same drawing, measured against the published version before it went in. The marquee got a pause control, inside the panel itself.

A green tool is not a pass. Scrolling, seeing where the focus is, getting out of an open dialog: that only shows up by using the site.

Three things no AI decided for me

Choosing the problem. Which cases go in, what each one has to prove, what stays out.

Seeing what is wrong on screen. A case title cut mid-word. A cover that did not talk to its neighbour. A claim about parking that only held for the example photo. None of it breaks the build.

Answering what is in no file anywhere. One of the cases looked like work done for a real company, and no reading of the material would settle it: only I knew the brief had come from a bootcamp. That answer became the spine of the whole case.

Two versions of the same Home card compared. In the top one the title is cut as "Square Registe…" with the period taking the rest of the line. In the bottom one the period became a smaller line above and the title appears in full.A defect no test catches: the period never gave up space and swallowed the case name. On one of the measured screens, one pixel was left for the title.

The part that decides did not get smaller

One work case is written and lives behind the password door; the second one is not. And this one covers a project that is still happening, so the record stays open.

What can already be said: execution really did get faster. The part that decides whether the result is any good is still mine, and it did not get smaller. It got more visible.