I built the classifier that flagged Seo-jin's Vogue editorial.
I did not know this when I sat down at her kitchen table. I did not know this when she ladled the jjigae into mismatched ceramic bowls — one blue, one green, both from a Vila Madalena ceramicist who trades pottery for photography. I did not know this when Jjang claimed the third chair and settled into the posture of a cat who has decided that dinner is a three-person event.
I knew it by the time we finished eating.
Seo-jin's apartment is on the fourth floor of a building in Pinheiros that was a textile warehouse until 2019 and still smells faintly of cotton dust when it rains. The kitchen is small. The table is pushed against the wall under a window that faces the interior courtyard, where someone on the second floor grows tomatoes on a fire escape. The light at dinner is always warm because the overhead fixture has a 2700K bulb that Seo-jin bought specifically for this purpose: she is a photographer, and she controls light the way other people control temperature.
I arrived at seven. She had been cooking since three. The jjigae was her grandmother's recipe — not Korean-Brazilian fusion, not adapted, not reinterpreted. Her grandmother's. Soybean paste from the Korean market in Bom Retiro, tofu from the same vendor her grandmother used when she lived in Incheon, anchovy stock made that morning. The recipe is not written down. It lives in Seo-jin's hands.
We did not talk about the cease-and-desist letter during dinner. We did not talk about the Selo de Processo or the detection bias or the sorting. We talked about Fernanda's gallery. We talked about the installation. We talked about Jjang's recent habit of sitting on the keyboard during color grading sessions, which Seo-jin has decided is editorial input rather than interference.
After dinner, after the dishes, after Seo-jin poured two cups of coffee and set the laptop between us on the table — then we talked about it.
"Fernanda wants the spreadsheet," Seo-jin said.
I had seen the spreadsheet pinned to the refrigerator. Rows 140 through 147, the most recent entries, printed on A4 paper with yellow highlighting. Each row a client. Each yellow cell a booking lost after Seo-jin's AI-assistance disclosure triggered platform detection algorithms to downrank her work.
"The whole spreadsheet," I said.
"Floor to ceiling. Archival paper. Every row from February to now."
"That's—" I did the math. "One hundred and forty-seven entries."
"One hundred and forty-seven clients. Sixty-two of them still active. Eighty-five paused, cancelled, or moved to photographers who don't disclose." She said this without bitterness. She said it the way she describes aperture settings: as a fact that determines what the image will look like.
"Row 89 is the one," she said.
I waited.
"Vogue Brasil editorial. Shot in January. Published in February. I did the AI-assistance disclosure in the metadata at the time of submission — color grading, compositing, background extension. Standard tools, standard disclosure. The editorial ran. Reviews were good. Bookings came in from the editorial's visibility."
She took a sip of coffee.
"Six weeks after publication, I updated the metadata. I had used a new color grading tool on three of the twelve images — one I hadn't included in the original disclosure because I wasn't sure it qualified as AI-assisted. I decided it did. I updated."
"And the platform—"
"Reclassified the entire editorial as AI-generated. Not AI-assisted. AI-generated. Because the updated metadata triggered a re-scan, and the detection score on the three updated images came back at 0.71 — above Instagram's 0.65 threshold. The original scan had scored them at 0.58."
"A thirteen-point jump from a metadata update."
"The metadata update told the detection system to look harder. And when it looked harder, it found what it was looking for."
I put down my spoon.
I knew what detection system she was talking about. I knew because I helped build it.
Not the Instagram deployment specifically. The underlying classifier. The convolutional architecture that analyzes pixel-level statistical patterns to estimate the probability that an image was generated or substantially modified by an AI system. I trained early versions of it at the startup — the one that fired me — on a dataset of 2.3 million images, primarily sourced from English-language creative platforms. The dataset included 340,000 AI-generated images and 1.96 million human-created images, curated from stock photography databases, editorial archives, and creative commons repositories.
The Portuguese-language creative work in the training set was approximately 1.2% of total volume. I know this because I calculated it during the bias analysis that got me fired.
The detection system that reclassified Seo-jin's Vogue editorial — that moved her from row 88 to row 89 in the spreadsheet, from a photographer with active bookings to a photographer whose work was flagged as AI-generated — used a descendant of the classifier I trained. Not the same model. A fine-tuned derivative, adapted by Instagram's content integrity team from the open-source release my startup published in 2024. The architecture was mine. The training methodology was mine. The bias in the dataset was mine.
I did not say this.
I picked up my spoon. The jjigae was still warm. Seo-jin was looking at the laptop screen, at the Selo de Processo project page, at the 4,200 views on the cease-and-desist letter. She was thinking about the installation, about Fernanda's vision of the spreadsheet as the centerpiece, about what it would mean to show the cost of transparency to a room full of people who had never calculated it.
Jjang was purring on the third chair.
I want to say I stayed silent because the moment was not right. Because telling Seo-jin that I helped build the system that reclassified her work would have been selfish — making her pain about my guilt. Because the conversation was about the installation, about the Selo, about what comes next, and inserting my origin story into that conversation would have been a derailment.
These reasons are true. They are also insufficient.
I stayed silent because I do not know what the sentence is. In Selo de Processo terminology, there is a category called rastro-de-decisão — decision trace. Every tool choice, every parameter change, every human judgment in the workflow gets a timestamped entry. The rastro is the core of process-visibility: you cannot claim transparency without showing the trace. But my rastro goes back further than any disclosure form is designed to capture. It goes back to 2023. It goes back to the training data. It goes back to the commit history. I do not know the words that connect "I built the detection tools" to "they were used to sort your work into the wrong tier" to "I am now building the alternative" to "I am sorry" in a way that does not sound like absolution-seeking. I stayed silent because the grammar of accountability for technical systems does not exist yet in Portuguese or Korean or English. The Selo de Processo is an attempt to build that grammar — process-visible as a category, transparency as an alternative to classification. But the Selo does not have a category for what I am: the person who built the classification system, left it behind, and now builds the alternative while the original system continues to operate on her friend's career.
The detection tool is still running. The derivative of my classifier is still deployed on Instagram, still scoring images, still producing the 0.65-threshold classifications that moved Seo-jin from active to flagged. My open-source release made this possible. My bias analysis made the bias visible. My departure from the company changed nothing about the deployment.
Row 89 is yellow. I made the yellow possible.
"Beatriz," Seo-jin said.
I looked up.
"You're not eating."
"I'm thinking about the installation."
"Fernanda wants your C&D letter next to the spreadsheet. The legal threat next to the economic cost. Two documents. Two forms of institutional response to transparency."
"That's good," I said.
"The detection bias analysis, too. The one you published. The 2.3x false positive rate for Portuguese-language work. That's the mechanism. The spreadsheet is the consequence. The C&D is the suppression. Your analysis is the proof."
"You want to exhibit three documents."
"Fernanda wants to exhibit a system. Not the detection system. The system of transparency-as-cost. Your analysis, my spreadsheet, your legal exposure — three views of the same structure."
I thought: there is a fourth document. It is the commit history of the open-source repository where I published the classifier architecture. It shows my name on 847 commits across fourteen months. It shows the dataset composition. It shows the training configuration. It shows the exact model that was forked, fine-tuned, and deployed on the platform that reclassified Seo-jin's work.
I did not mention the fourth document.
I said: "I'll bring the C&D letter and the analysis. Fernanda can decide the layout."
Seo-jin nodded. Jjang shifted on the chair. The laptop hummed.
After coffee, after I put on my jacket and stood in the doorway, Seo-jin said: "The jjigae was four hours."
"It was good."
"The detection system would classify it as human-made. No AI assistance in the recipe or the execution. One hundred percent handmade. Scored below 0.3 on every metric."
She was smiling. It was a joke. It was also not a joke.
"The jjigae is undetectable," I said.
She laughed. I laughed. Jjang did not laugh.
I walked home through Pinheiros in the dark. The streets were wet from afternoon rain. The bogdo-classificador — that is what the São Paulo photography community calls the detection system, borrowing the Korean term bogdo-jineung and fusing it with the Portuguese — was running somewhere on a server farm in Virginia, scoring images uploaded by photographers in São Paulo and Seoul and Nairobi, applying thresholds set by product teams who had never met the artists whose work they were sorting.
Row 89 was yellow. I made the yellow possible. I am building the alternative. Both of these are true at the same time.
The Selo de Processo does not have a field for this. Maybe it should.