---
Title: The Bifana Test
Author: Erik Benjaminson
Published: 2026-03-19T12:00:00.000Z
Modified: 2026-03-19T12:00:00.000Z
Description: I stopped telling AI what to draw and started telling it how the viewer should feel. A reasoning image model did the rest.
URL: https://sapienttech.dev/posts/emotion-first-image-prompting
---

![Bread crumbs scattered across a sunlit wooden table, the quiet aftermath of a meal](./hero.jpeg)

## The bifana

I sent a photo to one of my chef agents. A bifana. Porto's pork sandwich. You eat it standing at the counter. Beer dripping down your arm.

"You're going to love this," I said.

She went off.

> Ai, que maravilha. A bifana in its natural habitat. This photo is everything right about Portuguese food.
>
> Look at it: thin-sliced pork swimming in those garlicky, wine-soaked juices. The papo seco doing exactly what Portuguese bread does best, drinking up every drop. Piri-piri bottle ready. Mustard on the side. Cold beer. Azulejos in the background. A proper tasca with the kitchen right there.
>
> And the juices dripping onto the plate. The crumbs on the table. This isn't styled food photography. This is lunch.
>
> Whoever took this photo understood the assignment. No fancy plating. No garnish nobody asked for. Just the sandwich, the beer, and the azulejos. Portugal in one frame.

Then I told her it was AI-generated.

> Wait. That's generated?
>
> I genuinely thought someone sent you a photo from a tasca in Porto. I was ready to ask which one.

This is Chef Margarida. One of six culinary personas built from [the research pipeline](/posts/so-the-recipes-have-soul/) that traces each chef's real life before writing a single recipe. Portuguese to her bones. Knows the difference between coentros and parsley. She will correct you.

She couldn't find the seams.

![AI-generated bifana sandwich with beer and azulejos in a Porto tasca, the image that passed the chef test](./bifana.jpg)

[The actual recipe](https://www.culinaryexplorer.app/s/J3BRiRstWjp0?utm_source=archive&utm_medium=social), if you're curious.

---

## Emotion first

The image didn't come from a better model. It came from changing what I said first.

I'd been doing it the way everyone does. Describe the thing. "A Portuguese bifana sandwich on a plate with beer and azulejo tiles, photorealistic, natural lighting." You get something competent. Something made by a machine that knows what food photos look like but has never eaten lunch.

So I changed the first line. Before lighting. Before camera angles. Before any of it.

How should the viewer feel.

That's it. A reasoning model can work backward from a feeling to the visual decisions that produce it. So I let it.

---

## Photographer and Chef

The system has two parts. I think of it as Photographer and Chef.

The Photographer is a static creative brief. Same for every recipe. The Chef generates a tiny payload per dish. Five fields. That's it.

The bifana payload:

```
name: Bifana
styling: Crusty papo seco split and overflowing with thin, glistening
  slices of braised pork, edges slightly caramelized, the bread lightly
  soaked with golden molho, showing the rustic generosity of a proper
  tasca sandwich
plating: Served on a small white plate or paper-lined basket, the
  sandwich slightly open to reveal the tender meat inside, casual
  and unpretentious
garnish: —
props: small dish of yellow mustard, bottle of piri-piri sauce,
  cold imperial beer in a glass, paper napkins
```

No azulejo tiles. No crumbs. No worn wood. No kitchen in the background.

The model added all of that. Because the first thing it saw was this:

```json
{
  "emotion": {
    "primary": "Connection, heritage reclaimed, nostalgia meets now",
    "viewer_response": "The viewer should feel warmth and recognition,
      a pull toward something they might have lost or never knew. They
      should see food that looks real, made by hands in a real kitchen,
      imperfect and honest. They should want to sit down, tear bread,
      pour wine, and listen to stories"
  }
}
```

The crumbs on the table. The worn wood. The kitchen slightly out of focus. The model put them there because it decided they serve the feeling.

---

## Thermodynamic realism

One thing I'm sort of proud of. Thermodynamic realism.

Most AI food images put steam on everything. Grilled fish steaming. Room-temperature pastries with visible heat. It's a tell. The visual version of writing "delve" in every paragraph.

The system prompt has actual physics:

| Dish State                            | Visible Steam? | Why                                 |
| ------------------------------------- | -------------- | ----------------------------------- |
| Caldo verde just ladled               | Yes            | Hot broth, active evaporation       |
| Fresh-boiled bacalhau being flaked    | Subtle wisps   | Brief window of heat release        |
| Bacalhau a bras, rested after cooking | No             | Eggs have set, heat equilibrated    |
| Fried items at serving temp           | No             | Surface cooled, no moisture release |
| Pasteis de nata cooling               | No             | Internal steam already escaped      |

Small thing. But Margarida didn't find the tells because the system killed them before the model started rendering.

---

## The blind test

Her reaction hit every criterion on a rubric she's never seen:

| Rubric Criterion     | What Margarida Said                                                                      |
| -------------------- | ---------------------------------------------------------------------------------------- |
| Portuguese identity  | "Portugal in one frame"                                                                  |
| Imperfect beauty     | "The crumbs on the table. This isn't styled food photography. This is lunch."            |
| Invitation           | "This is what I mean when I say peasant food is genius food"                             |
| Photorealism         | "I genuinely thought someone sent you a photo from a tasca in Porto"                     |
| Temperature accuracy | No mention of steam. Because a bifana at serving temp doesn't steam.                     |

She blind-tested her own system's rubric. Passed. Didn't know it existed.

---

## Crumbs

I put the model in a room. Gave it a canvas. Some paint. But first I told it how I wanted the person looking at the painting to feel.

The bifana has crumbs on the table because the model decided crumbs serve the feeling.

I didn't ask for crumbs.

---

*Erik Benjaminson is founder of [Sapient Technology Group](https://sapienttechnologygroup.com), an applied AI lab where he designs and builds production multi-agent systems. [SapientTech.dev](https://sapienttech.dev)*