In the early hours of June 22, 2024, a man in a blood-soaked tuxedo walks into a Rio de Janeiro police station to confess. The novel rewinds to trace the events that brought him there.
Dante, the first-person narrator, is a young gay man from Pingo d'Água, a small town in the Brazilian state of Paraná. In 2018, he moves to Rio de Janeiro with three childhood friends: Miguel, a medical student; Hugo, a talented but arrogant aspiring chef trained in Paris; and Piglet (real name Jorge Luiz Leitão), an obese and reclusive young man who eventually drops out of college to spend his days running internet scams and eating junk food. They share a Copacabana apartment and an old Ford Focus they nickname Bukowski. One evening in March 2023, Dante tells them the "seagull meat riddle," in which a man eats seagull at a restaurant, realizes he was once fed his dead wife's flesh disguised as seagull, and kills himself. The riddle comes to define everything that follows.
Piglet's mother, Madam Adélia, ran Pingo d'Água's brothel, which burned down in 2007, killing 63 women. Piglet survived because he was sleeping at Dante's house. A local evangelist declared the fire divine retribution, and the town became a religious tourism center. Piglet clung to religion and built an imaginary world in which his mother was still alive, writing her letters as though she waited for him back home.
By late 2022, all four friends are struggling financially. For Piglet's birthday, Dante hires Cora, a blunt sex worker who goes by "Cora the Poet" and grew up working at her father's cattle slaughterhouse in Goiás. Cora and Piglet begin an ongoing relationship. Crisis arrives in early 2023 when Dante discovers Piglet has been stealing their rent money for six months to pay Cora, leaving them 26,000 reals in debt. Hugo proposes hosting a paid dinner through SecretDinner.co. While creating the listing, Piglet pranks the site by advertising human flesh at 3,000 reals per person. Before the post is removed, 10 people sign up and pay 30,000 reals. After a tense vote, three to one with Miguel dissenting, the group decides to follow through.
They steal a cadaver from the hospital where Miguel works. Cora arrives unexpectedly, finds them with the corpse, and offers her slaughterhouse expertise, requesting a yellow McCulloch chainsaw to butcher the body. When the freezer malfunctions overnight and spoils the meat, Hugo leaves alone and returns with a fresh corpse, a homeless Black man. After the dinner, Dante discovers Bukowski's dented, bloodied fender and realizes Hugo killed the man with the car.
The first dinner, held on April 21, 2023, brings 10 wealthy guests. When a couple refuses to eat, an aging aristocrat named Umberto Marcondes de Machado pulls a gun. Dante stages a plate swap, but Umberto later reveals the switch never happened; the couple ate human flesh unknowingly. Umberto, a disgraced film producer from an old-money family, pursues a partnership.
After getting a police investigation quashed and engineering Dante's firing from his bookstore job, Umberto presents his proposal: He will supply bodies through his family's crematorium chain in exchange for 50 percent. He provides a luxury villa in the Jardim Botânico neighborhood, funding, and a new car. Miguel, desperate to fund his mother's cancer treatment, reluctantly agrees.
The operation scales rapidly. Dante hosts under the alias "Sidney," Hugo cooks, Cora handles butchery, and Piglet manages digital security. Dante creates a fraudulent ebook publisher called Seagull Press to launder money, and his drug use escalates. Cora persuades Dante to taste the meat; he finds it delicious and realizes it tastes identical to the "pork tenderloin" Umberto once served at his home, meaning Umberto secretly fed them human flesh.
Trouble mounts when a guest posts an Instagram photo referencing the dinners. Umberto reveals "Vladimir," a mysterious silent partner who takes 80 percent of Umberto's share. The post is removed, and the guest vanishes. On Dante's birthday, he encounters Arthur, a gaunt man distributing flyers for his missing fiancée, Ruth. Dante recognizes Ruth: She was served at the previous night's dinner. Umberto admits Ruth was killed on Vladimir's orders, then takes Dante to a highway patrol station where corrupt officers murder travelers and to a remote industrial slaughterhouse where kidnapped people are caged, fattened, and butchered. The operation spans multiple cities and includes organ harvesting.
Dante returns home to learn Miguel has been shot dead in an apparent robbery. Umberto confirms Vladimir ordered the killing because Miguel was gathering evidence, including photographs of the villa and a voice recording of Dante, to take to the police. Meanwhile, Piglet's hacker contacts find no digital trace of Vladimir, leading Piglet to theorize Umberto invented the persona.
Dante cultivates a friendship with Arthur, hoping to learn what Ruth's journalism uncovered. Umberto inserts himself into the relationship, inviting Arthur to lunch and serving them "pork tenderloin" that Dante knows is human flesh. Events accelerate when Umberto's men kidnap Piglet, shooting him in the leg. Hugo arrives alongside Umberto and announces he has sided with Umberto, saying he had to make a choice. Umberto declares Piglet will be served as "crispy suckling pig" at the next dinner and gives Dante an ultimatum: Kill Arthur by Friday or die. Cora, devastated, leaves.
Arthur reveals he has identified Umberto as Vladimir through a photograph in Ruth's email. He admits he has known about Dante's involvement and proposes poisoning the hundredth dinner with a lethal combination of carbamate and warfarin. On the night of the dinner, Arthur hides in the guesthouse. Dante lures Hugo upstairs on a pretext while Arthur sneaks into the kitchen and poisons the gravy. Hugo discovers Arthur; the two fight, and Arthur stabs Hugo to death. They hide the body, and Dante proceeds as host. The poisoned gravy is served, and the guests hemorrhage, convulse, and die one by one. Arthur emerges with Cora's yellow chainsaw and kills the remaining guests, saving Umberto for last and dismembering him. Arthur then asks whether the "pork tenderloin" at Umberto's lunch was truly human flesh. Dante kneels and offers his life, but Arthur says Dante's punishment is to live, then slits his own throat with the chainsaw.
Dante walks out in his blood-soaked tuxedo and enters the nearest police station, connecting to the prologue. He is convicted and sentenced to 30 years.
In the epilogue, narrating from prison, Dante receives a visit from a transformed Cora, who reveals the final twist: Vladimir never existed. Piglet was the true mastermind. He created the "Vladimir" persona to control Umberto remotely, with Cora playing "Virginia," Vladimir's supposed secretary, on phone calls. The freezer malfunction was deliberate; Cora unplugged it to deepen the group's commitment. Piglet is alive. He and Cora have used their earnings to reopen an adult entertainment complex on the site of his mother's destroyed brothel and continue running secret dinner operations across multiple locations. She warns Dante not to expose them, hands him a business card, and walks away.