NOTE: This spoiler was submitted by Jeremy

The film starts in a nightclub where friends Jerry (Adam Brody), Paul (Sam Richardson), and Jim (Ray Nicholson) are having drinks. They notice a young woman, Cassandra “Cassie” Thomas (Carey Mulligan), appearing too drunk to pick herself up. Paul and Jim make misogynistic comments toward her, but Jerry goes to approach her and try to get her home. Jerry brings her back to his apartment where he starts to kiss her. When Cassie says she needs to lie down, Jerry brings her to bed and starts trying to take her panties off. Cassie then drops the drunk act to sit upright and look Jerry dead in the eyes to ask him what he’s doing. Jerry looks terrified.

Cassie walks home the next morning with red stains on her clothes…but it’s just the jelly dripping from the doughnut she is eating. A trio of construction workers then start catcalling her, but she bothers them when she just stares at them blankly.

Cassie is almost 30 and still lives with her parents Stanley (Clancy Brown) and Susan (Jennifer Coolidge). She also works a dead-end job at a coffee shop with her only friend Gail (Laverne Cox) where she behaves with apathy toward customers. A former med school classmate, Ryan Cooper (Bo Burnham), now a pediatrician, enters the shop and recognizes Cassie. After some banter, Cassie spits in Ryan’s coffee, but he still drinks it anyway and asks to take her out. She gives him a fake phone number.

Later, Cassie is picked up by another sleazy guy named Neil (Christopher Mintz-Plasse), who is trying to pitch her his sexist novel idea while trying to get Cassie to do cocaine. When Cassie says she wants to go home, Neil tries to get her to go to bed with him. She then reveals her sobriety to Neil and immediately freaks him out. Cassie gets closer to him as she calls him out for trying to take advantage of a seemingly drunk girl, and she leaves his apartment after nearly making him soil himself.

Stanley and Susan give Cassie a pink briefcase as a gift for her birthday, though only after she had a rotten reaction over receiving a gift. She takes it as an obvious hint that they want her to move out, as Stanley and Susan have frequently expressed concerns over Cassie’s lack of ambitions.

Ryan returns to the coffee shop after realizing Cassie gave him a fake number, and she finally relents and decides to go out with him. Although Ryan appears nice enough, Cassie doesn’t let him get too close to her. She eventually apologizes and continues to date him. While hanging out at the coffee shop, Ryan mentions an old colleague, Alexander “Al” Monroe (Chris Lowell), who is getting married. The thought of it disturbs Cassie to her core, because when she was in med school, her childhood best friend Nina Fisher was raped by Al during a frat party while she was too drunk to stand. Although Cassie and Nina reported it to many people, nobody believed them and gave Al the benefit of the doubt, which led to Nina’s suicide and Cassie dropping out of school.

Cassie looks on social media to find many old peers congratulating Al on his engagement. Among them is a woman named Madison McPhee (Alison Brie). Cassie contacts Madison and arranges a lunch date with her. Cassie gets Madison very drunk before bringing up the case against Al with Nina. Madison acts aloof about it, stating that it was a long time ago and that someone with a reputation for always being very drunk was bound to end up in a situation like that. When Cassie sees that Madison is too drunk to know what’s going on, she leaves after paying and is then seen speaking to another man while looking at Madison.

Cassie later goes to a high school where she picks up a young girl named Amber (Francisca Estevez) by pretending that she is going to a diner to work for a popular boy band. Afterward, Cassie goes to see Dean Elizabeth Walker (Connie Britton) at her former med school. Cassie brings up how she and Nina reported Nina’s assault to Walker, but she had taken Al’s side in the ordeal and seems to not even remember Nina. Cassie then tells Walker that she picked up Amber and brought her to the same room where Nina was raped and left her with several older boys. Walker becomes terrified and tries to call Amber’s phone, only to see that Cassie has it. After Walker admits she was wrong in not believing Nina, Cassie admits that she only left Amber at the diner where she is still waiting for the boy band, and she tells Walker where she can find her.

Cassie’s next target is a former lawyer, Jordan Greene (Alfred Molina). Like the rest of the names in Cassie’s list, he was complicit in letting Al get off scot-free for what he did to Nina because he essentially forced her to drop the case. However, Greene knows he was wrong and is extremely remorseful for what happened with Nina. He cries next to Cassie, who forgives him. When she leaves, she speaks to an apparent hitman and tells him he is no longer needed.

Cassie pays a visit to Nina’s mother (Molly Shannon), where they reminisce about Nina, but Mrs. Fisher thinks Cassie’s obsession with the ordeal is unhealthy and that she needs to move on.

Cassie attempts another drunk-baiting trick, this time with Paul. As they are leaving together, Ryan is entering the same club and sees Cassie. She tries to explain herself to Ryan, but he is uninterested in what she has to say. When she finds him later, she tries to explain herself, and he ends up forgiving her, and they kiss.

Madison sits on Cassie’s front porch waiting for her after days of calling and leaving messages because she was worried something happened with the guy that Cassie had spoken to. Cassie admits that nothing happened and that the man only took her to bed, but he didn’t touch her otherwise. Madison is relieved, but then she speaks to Cassie privately and admits that she was wrong for not believing Nina, and she reveals that a video of Al raping her had circulated, which she kept on an old phone. Madison gives Cassie the phone and orders her never to contact her again. Although a bit reluctant, Cassie watches the video. Apart from her horror at seeing Nina raped, she is most mortified when she sees that Ryan was there watching the event unfold.

Cassie goes to Ryan’s job to confront him about the video and him being there. She threatens to send it to everybody in his contacts, including the parents of his patients unless he tells her where Al is holding his bachelor party. Ryan becomes scared at the implications of what Cassie is planning to do, but he gives her the address. She also warns him not to let any of the guys know she is coming.

On the night of the bachelor party, Cassie dresses as a stripper and goes to the cabin where the party is being held. After getting the other guys drunk and drugged, Cassie takes Al up to the bedroom after telling him that’s the only way she’ll get paid. She handcuffs him to the bedpost before bringing up what he did to Nina. Al uses standard excuses (“We were kids”, “Everyone was drunk”, etc) to defend his actions, but Cassie doesn’t want to hear it. She grabs a scalpel and attempts to carve Nina’s name into Al’s stomach, but he overpowers her and smothers Cassie to death with a pillow.

The next morning, Al’s friend Joe (Max Greenfield), comes upstairs to find Al crying with Cassie’s body next to him. Joe resolves to help Al get rid of the body so that the other guys will not know what happened. They take Cassie and bury her under a pile of logs that they then set on fire.

Days later, Cassie’s parents file a missing persons report. The lead detective visits Ryan’s office since he knows they were romantically involved. After he learns Cassie disappeared, Ryan tries to save his skin by suggesting she may have done something to herself that he was unaware of.

It is the day of Al’s wedding. After the ceremony, we see Greene receiving an envelope from Cassie, along with a message in the event of her disappearance. Suddenly, Ryan and everyone else at the party receives the video of Al raping Nina. Ryan receives pre-written texts from Cassie saying “You didn’t think this was the end, did you? It is now. Enjoy the wedding!” Police arrive, and after surveying the area, they find Cassie’s remains, which contains the Nina half of her friendship heart necklace (Gail was given the Cassie half). Al is arrested in front of the whole crowd while Joe sneaks away. Ryan continues reading the messages, which end with “Love, Cassie and Nina. ;)”

Brought to you by

Cassie Thomas was once an aspiring med student whose life went down after her best friend Nina Fisher was raped, and after nobody believed their accusations, Nina committed suicide. In the present day, Cassie pretends to be drunk at nightclubs and tricks lecherous men into taking her home before she doles out her own form of punishment.

Cassie starts to date a former colleague, Ryan Cooper, who mentions that Nina's rapist, Al Monroe, is getting married. Cassie gets in touch with several people who were complicit in letting Al get away with his crime. First she targets Madison McPhee, another former colleague who didn't believe Nina, by getting her drunk and making her believe that a strange man took advantage of her. Cassie also goes after Dean Elizabeth Walker, who did not expel Al because she gave him the benefit of the doubt, by making her think that she brought her teenage daughter to a dorm full of drunk college boys (she didn't). Her last target is the lawyer, Jordan Greene, who forced Nina to drop her case, but because he is remorseful for what he's done, Cassie forgives him.

Madison confronts Cassie after she fails to answer her calls and messages, but Cassie admits the man did nothing but take her to bed. Madison admits she was wrong in not believing Nina, and she gives Cassie a phone containing a video proving Al raped Nina, but to Cassie's horror, Ryan was there too as a witness. When she threatens to send the video to everyone in his contacts, he gives her the address to Al's bachelor party, where she plans to exact her ultimate revenge.

At the bachelor party, Cassie dresses as a stripper to get inside. After drugging Al's friends, she reveals herself to him and plans to carve Nina's name into his stomach, but Al overpowers Cassie and smothers her to death. His friend Joe helps him get rid of the body.

On the day of Al's wedding, Cassie's plan comes full circle since she had prepared for her death and had the video sent to multiple people, including Greene to provide the police with evidence. The police find Cassie's remains and arrest Al for her murder in front of the whole crowd. Ryan also receives pre-written texts from Cassie to let him know that she and Nina finally got their justice.