The novel opens with an unnamed narrator speaking from solitary confinement, reflecting on how marriage begins with love but deteriorates as each partner sees the other clearly. The story then unfolds through alternating perspectives and timelines, weaving a present-day murder investigation together with events leading up to the killing. Interspersed throughout are grand jury transcripts and confidential memos from a cybersecurity firm investigating a data breach at an elite Brooklyn private school, gradually revealing hidden connections among the characters.
Lizzie Kitsakis, a former federal fraud prosecutor now working as a senior associate at the Manhattan law firm Young & Crane, receives a collect call from Rikers Island. The caller is Zach Grayson, a law school classmate she has not spoken to in over a decade. Zach tells Lizzie he found his wife, Amanda, dead at the bottom of the stairs in their Park Slope brownstone. When police arrived, he accidentally elbowed an officer and was arrested for assault. Convinced he will be charged with murder, he begs Lizzie to represent him. She reluctantly agrees to visit him at Rikers, planning only to find him a referral.
Through Amanda's chapters, set in the days before her death, the novel reveals her isolated life. Amanda grew up in poverty in St. Colomb Falls, a small upstate New York town. Her mother died when she was 11, and she dropped out of high school to work as a housekeeper at a roadside motel. Zach appeared when she was 17 and swept her away to California. Now in Park Slope, Amanda runs the Hope First Initiative, a scholarship foundation Zach established, with her friend Sarah Novak as assistant director, while her young son, Case, is away at sleepaway camp. Her closest friendships are with Sarah and Maude Lagueux, who hosts an annual party called the Sleepaway Soiree at which consenting adults sometimes engage in sexual activity. Amanda also maintains a bond with Carolyn, her best friend from childhood, who she says lives in Manhattan.
Amanda is terrified. She has been receiving anonymous phone calls featuring heavy breathing she believes belongs to her father, who sexually abused her as a child. She thinks he is following her through Park Slope. She confides in Carolyn but cannot tell Zach, who once coldly shut her down when she tried to discuss her past. When she visits the local precinct seeking a restraining order, she is told she lacks sufficient evidence.
Lizzie's own life is in crisis. Her husband, Sam, a writer whose career collapsed due to alcohol addiction, caused a drunk driving accident that left them $200,000 in debt. Lizzie took the firm job to pay it off and omitted the debt from her financial disclosure form. She also hides a deeper secret: Her father is not dead, as she has always claimed, but is imprisoned at Elmira Correctional Facility for killing the con man who defrauded her family.
At Young & Crane, Lizzie's supervising partner, Paul Hastings, the former chief of the Southern District's Violent and Organized Crime Unit, surprises her by eagerly agreeing to supervise Zach's case. At a habeas corpus hearing, prosecutor Wendy Wallace, Paul's first ex-wife, announces a first-degree murder indictment citing Zach's fingerprints on the golf club used to kill Amanda, evidence of an alleged affair, and Zach's refusal to account for his whereabouts. The judge denies bail.
Lizzie's investigation uncovers disturbing layers. Amanda's journals, hidden under her bed, document years of abuse. Millie Faber, a former police sergeant turned private investigator and Lizzie's late mother's closest friend, arranges forensic analysis revealing an unidentified fingerprint in Amanda's blood on the stairs and on the golf club bag, proving someone besides Zach was present. Millie also reveals she has terminal cancer. The foundation's accountant discloses that Zach is broke; he chose Lizzie because he could not afford anyone else.
Zach then drops his mask. A Rikers guard reveals that Zach's injuries are self-inflicted. Confronted, Zach admits he manipulated Lizzie from the start, having researched her vulnerabilities after spotting her at a farmer's market. He threatens to expose her fraudulent financial disclosure if she withdraws, trapping her.
A trip to St. Colomb Falls overturns Lizzie's understanding of Amanda's stalker. Xavier Lynch, Amanda's uncle, explains that Amanda's father, William, died 12 years earlier. Amanda killed him with a straight razor after finding him attacking Carolyn in a bathroom; Carolyn was already dead. Amanda, a juvenile, was not prosecuted. Yet she wrote about both her father and Carolyn as if they were alive, describing recent visits and phone calls in her journals. Lizzie concludes Amanda had delusional disorder, maintaining false beliefs while functioning normally in daily life.
A devastating detail then surfaces in the investigation file: Amanda's personal effects include one silver earring identical to one Lizzie found in Sam's messenger bag. The party occurred on a Thursday, the night Sam usually plays basketball. His game was canceled, and he spent the evening drinking at a bar with no alibi for the hours when Amanda was killed. Sam admits he has a fragmentary memory of sitting on a bench near Amanda's street and shows Lizzie a brown streak on his sneaker that could be blood.
The breakthrough comes when Sarah mentions that Maude knew about the murder weapon the morning after Amanda died, before police had interviewed her. Maude confesses she was inside the house that night. At the party, she had pieced together that Zach was behind the data breach at Brooklyn Country Day, the school Case attends. That breach led hackers to blackmail Maude's teenage daughter, Sophia, into performing sexual acts on camera. Enraged, Maude went to Zach's house using a spare key and was hiding in his office closet when Amanda came home. Maude heard screaming and a struggle on the stairs. By the time she reached Amanda, a large man in dark clothes, a ski mask, and red sneakers was fleeing. The figure was much taller than Zach. Maude attempted CPR but panicked and fled without calling 911.
Lizzie identifies the killer through converging evidence. A secretary at Young & Crane mentions that Kerry Tanner, Sarah Novak's husband, was fired by Paul for stalking female employees. A florist confirms Kerry bought the anonymous flowers left at Amanda's door. Sarah unknowingly supplies the final detail: Kerry wears red high-top sneakers.
Kerry's signed confession reveals he developed an obsessive attachment to Amanda. On the night of the party, he drank heavily after his basketball game was canceled, went to the Sleepaway Soiree, and saw Amanda go upstairs with another man. Enraged, he sent her threatening texts to scare her home, then entered her house wearing a ski mask, claiming he intended to frighten her so he could later appear as her rescuer. Amanda fought him on the stairs; he shoved her, and she fell, hitting her head repeatedly on the metal railing. Fleeing, he found her earring hooked on his sleeve and planted it in Sam's pocket as Sam lay passed out on a nearby bench, also smearing blood on Sam's shoe.
With Kerry arrested, Zach is released, but Lizzie has a final move. She draws out Zach's boastful admission that he engineered the Brooklyn Country Day data breach to develop a cybersecurity app, hiring hackers who exploited Sophia. Because the malware remains active, the crime is ongoing, and his confession falls under the crime-fraud exception to attorney-client privilege. Lizzie has already contacted federal investigators.
Lizzie confesses her financial disclosure lie to Paul, who tells her to have it amended. Millie confronts Lizzie about hiding that her father is alive and imprisoned, urging her to face the truth. Sam waits outside Lizzie's office with a duffel bag, preparing to enter 90 days of residential rehabilitation paid for by his mother. He asks if getting sober will save their marriage. Lizzie kisses him and answers: "I hope so" (387).