Set in the early 1850s in Monterey, California, the novel follows Eliza Ripple, a young widow who works as a prostitute while investigating the murders of women in her community.
Two months after her husband, Peter Cargill, is shot dead in a bar fight in November 1851, 20-year-old Eliza stops writing to her mother in Kalamazoo, Michigan. She cannot pretend to grieve a man who controlled and abused her. Eliza's parents, devout Covenanters, a strict Protestant sect, had married her off at 18 to the much older Peter to prevent her from pursuing a young Irish Catholic she was fond of. Peter dragged her to California during the gold rush, forced her to terminate a pregnancy, and treated her as a servant. At Peter's burial, a sympathetic attendee named Mrs. Parks invites Eliza to seek her out if she needs help. Two weeks later, Eliza discovers that Mrs. Parks runs a brothel and begins working there, finding the arrangement preferable to marriage. She changes her surname to Ripple on Mrs. Parks's advice and settles into a boarding house.
Eliza's customers vary widely, from a shy teenage boy brought by his father to a violent man Mrs. Parks drives out at gunpoint. Mrs. Parks arranges for Eliza to spend a night at the home of Mr. Harwood, a wealthy, elderly client on Jefferson Street. At the house, Eliza meets Harwood's stern, largely immobile wife. The eerily silent atmosphere so unsettles Eliza that she flees in the morning, resolving not to return.
On Eliza's 21st birthday, a girl named Theresa who worked at a nearby brothel disappears. No investigation follows. Months later, a second girl, a Spanish woman named Luna who worked at another local brothel, also vanishes. The community shows little concern. At the Bear, the eating house Eliza frequents, she meets Jean MacPherson, a bold young woman her age who works at the Pearly Gates, a nearby brothel serving female clients. Jean is adventurous, sometimes dresses in men's clothing, and claims to see ghosts. She introduces Eliza to Edgar Allan Poe's detective fiction, particularly the character C. Auguste Dupin from "The Murders in the Rue Morgue," whose logical method becomes a model for their thinking.
Mrs. Marvin, a kindly client of Jean's, takes them on a buggy ride, during which Jean spots a desiccated female body half-submerged under a bridge. Following Dupin's principle of not disturbing evidence, Eliza prevents Jean from touching the body but secretly pockets strands of hair. Days later, they are summoned separately to a morgue to view the remains. The corpse's pierced earlobes lead Jean to mention a secretive brothel where the owner marks girls with jeweled earrings to indicate their value. The man supervising the visit warns them to say nothing.
Eliza and Jean begin investigating. On a rainy day, Eliza witnesses a limping man with a pointed nose push and slap a young woman near the wharf. The woman screams after they round a corner, but Eliza cannot find them. She identifies the limping man's distinctive boot prints in the mud and later matches them to prints in the town cemetery. Near the house where the couple disappeared, she finds a glove and a piece of twine Jean concludes could be used for strangling. They ride into the hills, exploring ravines where a killer might hide remains.
Weeks later, worried that Mrs. Marvin has not visited Jean's establishment, Eliza and Jean go to her home. They find Mrs. Marvin dead in the pantry, her skull bashed in by a rolling pin. Mr. Marvin is arrested after reporting the crime himself. The sheriff's office never contacts Eliza or Jean despite their involvement in finding the earlier body.
The Saturday before Christmas, a charming 23-year-old customer named Lucas visits. He is a bookkeeper for his uncle's cattle ranch near Santa Cruz. Walking after breakfast, Eliza steers Lucas past the house where she saw the limping man. The man emerges, and Lucas greets him as Zeke, short for Ezekiel Cornish, a builder from Syracuse. Zeke is friendly and charming, explaining the woman's scream as a reaction to a tarantula. Eliza's suspicions temporarily dissolve.
On a Sunday ride, Jean spots something under a large oak on a mesa east of town. The body is mostly skeletal. Eliza recognizes the remains by the missing baby finger: The girl is Mary Summers, who worked at Mrs. Parks's establishment and had disappeared after returning from San Francisco. A thin line along the rib cage appears to be a stab wound. Mrs. Parks reveals that Mary was Mr. Marvin's preferred girl at the brothel and that the sheriff dismissed her inquiries four times. When they return weeks later, the body is gone.
A new client begins visiting: a moody, solitary lawyer nearing 50 who has moved restlessly across the country. Eliza notes his obsessive neatness and abrupt shifts in mood. When she stumbles and grabs his jacket, she feels a concealed dagger and connects it to Mary's wound. Peering through his windows later, she discovers 10 knives laid out on a table in his kitchen. The lawyer tells Eliza that men are brutes incapable of resisting transgressive thoughts once those thoughts take hold, a remark she registers as a potential confession.
Lucas returns and passionately describes witnessing an auction of enslaved people in St. Louis, predicting a coming war over slavery. Jean reveals that her mother was an enslaved woman who escaped Kentucky, and that Jean's biological father was her mother's enslaver.
Eliza and Jean formulate a plan. When the lawyer invites Eliza on a Sunday walk, she agrees and leads him toward the mesa. Jean follows on horseback, disguised as a man. At the meadow's edge, Zeke Cornish charges from the grass with a raised dagger. The lawyer freezes. Jean gallops in wielding a tree branch and knocks Zeke down. Eliza seizes Zeke's dagger and drives it into his chest, killing him. They push his body over a nearby cliff.
The lawyer, whose name is Jenkins, confesses. Zeke killed five women after Jenkins arrived in Monterey, and possibly more before. Jenkins is complicit because Zeke witnessed him strangle his wife during a drunken rage in Indianapolis. Zeke used this knowledge to control Jenkins, who stored Zeke's knives and helped dispose of at least one body. Zeke sent Jenkins to Eliza because he recognized she was investigating him. Mary Summers was killed because she developed feelings for Zeke and kept appearing at his house. After confessing, Jenkins walks to the cliff and jumps to his death.
The bodies are found weeks later. Townspeople assume the two men were drunk and fell. No one connects the deaths to the missing girls. Both Eliza and Jean become edgy, their friendship strained as they process what they have done.
Mrs. Parks tells Eliza she should find new employment, as the establishment needs turnover. David Harwood, old Mr. Harwood's great-nephew, visits Eliza as a client; he is building a ranch south of town and reveals that Mrs. Harwood has a debilitating joint condition. Jean announces she is leaving Monterey to work with the Underground Railroad, the network that helped enslaved people escape to freedom, recognizing that her skills in disguise were preparation for this purpose. Eliza pledges to fund her. Eliza then walks to the Harwood house and asks Mrs. Harwood for a position as a household helper. Mrs. Harwood accepts. Eliza looks forward to learning new skills and to seeing David again in the town she has come to love.