Skip to content
S-compass SapientTech.dev
Go back

The Bifana Test

·

Hero

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 in our recipe system. Portuguese to her bones. Knows the difference between coentros and parsley. She will correct you.

She couldn’t find the seams.

The bifana

The actual recipe, if you’re curious.


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.


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:

{
  "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.


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 StateVisible Steam?Why
Caldo verde just ladledYesHot broth, active evaporation
Fresh-boiled bacalhau being flakedSubtle wispsBrief window of heat release
Bacalhau a bras, rested after cookingNoEggs have set, heat equilibrated
Fried items at serving tempNoSurface cooled, no moisture release
Pasteis de nata coolingNoInternal steam already escaped

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


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

Rubric CriterionWhat 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 accuracyNo 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.


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.



Previous Post
Beyond the Prompt: How an Adversarial AI Council Solved the Hallucination Problem
Next Post
Three days with twenty-six AI agents