Set in Regency-era England, the novel follows two Gothic novelists whose professional rivalry gives way to romance against the backdrop of a crumbling, reputedly haunted manor.
Lady Georgiana Cleeve, daughter of the late Earl of Alverthorpe, publishes Gothic novels under the pen name Geneva Desrosiers. Her books are the sole income for herself and her mother, Edith, the dowager countess. Seven years earlier, Georgiana revealed her secret career to stop her father from destroying Belvoir's, a circulating library owned by her friend Selina, the Duchess of Stanhope. The scandal cost Georgiana her social standing and severed her from her brothers, Ambrose and Percy, whom she cut off to protect their reputations.
Over four years, an anonymous rival publishing under the name Lady Darling has produced novels with near-identical titles, protagonist names, and subject matter. Georgiana stakes out Belvoir's back alley before dawn with her friend Iris Duggleby, an antiquities scholar, and recognizes the cloaked figure collecting Lady Darling's mail as Catriona (Cat) Rose Lacey, whose father was the Cleeve family butler. Georgiana had been infatuated with Cat as a teenager. Cat, who guards her pen name to protect her younger brother Jem's budding legal career, is furious at being unmasked. She insists she has not read Georgiana's recent books and that any similarities are coincidental.
Cat lives in a small London apartment with fifteen-year-old Jem, who is apprenticed as a clerk to the solicitor Martin Yorke, and their cousin Pauline Tuttle. Cat works at a pie shop by day and writes by night, driven by a deep fear of poverty rooted in the family's difficult years after being expelled from the Cleeve estate. On Yorke's advice, she transfers her publishing contracts to Jean Laventille, Georgiana's publisher, for better financial terms. Yorke also mentions that Renwick House, a famously eerie manor near the Cleeve family seat in Wiltshire, is open to visitors and offers to arrange a research trip.
The women keep crossing paths. When Cat travels to a haunted churchyard in Essex for research, she finds Georgiana there in disguise. They argue in the rain, but a charged moment passes between them before Georgiana flees, calling the encounter a mistake. Both then arrive independently at Renwick House, a spectacular Gothic ruin with crumbling walls and shattered windows. Cat proposes a compromise: They can share the house and compare manuscripts to ensure their books diverge. Georgiana reluctantly agrees.
Their coexistence shifts toward connection. Georgiana's small dog, Sir Francis Bacon, repeatedly draws them together. When Bacon chases a bat into a narrow passageway, Georgiana crawls in after him and becomes stuck; Cat rescues them both, and the aftermath leaves Georgiana's shoulder exposed in a moment of mutual physical awareness. Bacon later leads Georgiana to a hidden rose garden blooming impossibly in December, where she discovers a brass plaque reading "Sarah Sophia Penhollow, 1724–1751." When Georgiana brings Cat to the garden, Cat brushes plaster dust from Georgiana's cheek, and Georgiana catches her wrist. They stand frozen, inches apart, before Georgiana retreats.
Cat finds a diary belonging to Luna Renwick, the original owner's daughter, connecting Sarah Sophia Penhollow to Luna and the garden. That night, Cat kisses Georgiana in the moonlit library. Georgiana kisses back hungrily before pulling away and fleeing.
The next morning, the servants have vanished and every exterior door has been barred from outside. Escaping through the rose garden, they discover a collapsed timber with a man's body beneath it. Georgiana recognizes him as Rogers, a former porter fired from Belvoir's. Cat retrieves coded papers from his jacket while Georgiana distracts the magistrate with a feigned swoon.
A snowstorm strands them at an inn. Cat confronts Georgiana, demanding to know why she keeps kissing her and pulling away. Georgiana confesses she has wanted Cat since she was fifteen and promises not to retreat again. They become lovers.
On the journey to London, Cat reveals her family was expelled from Woodcote Hall because the old earl caught Walter Lacey in a romantic relationship with the Cleeve brothers' tutor. She also explains that Jem is not her biological brother: Walter married Jem's mother, Patience, to protect her when she was already pregnant, and Patience died in childbirth. Cat credits her father's unconditional love for giving her the courage to live authentically.
At Belvoir's, Selina reveals that both women share the same solicitor, Yorke. The discovery explains many of their novels' coincidences: Yorke's interests and even his dog's name had unconsciously influenced both writers. Georgiana suspects Yorke of orchestrating their simultaneous visit to Renwick, while Cat defends him.
Cat introduces Georgiana to her family over dinner. When Jem asks about his biological father, mentioning overheard conversations about a duke's inheritance, Georgiana notes that the Duke of Fawkes has an estate near Woodcote Hall. That night, Georgiana reveals she chose her pen name, meaning "among the roses," at sixteen as a tribute to Catriona Rose Lacey.
The next morning, Cat suggests deeper domestic intimacy, and Georgiana panics. Having overheard Pauline warn Cat not to let Georgiana break her heart, she retreats behind formality and leaves. At home, she confesses to Edith that she is in love with a woman and afraid. Edith accepts this calmly and tells Georgiana it is not in her nature to give up. Georgiana summons Cat to Belvoir's, confesses she does not know how to love without fear but wants to try, and Cat forgives her.
Days later, Jem vanishes. Yorke arrives with proof that Jem is the natural son of the late sixth Duke of Fawkes, who left Renwick House to his illegitimate child. Yorke's notes about the case were stolen by his other clerk, Elias Beckett, and Jem followed Beckett to Wiltshire after catching him taking the papers.
Cat and Georgiana race to the Fawkes estate but are turned away. Georgiana makes the decision she has dreaded: She takes Cat to Woodcote Hall to ask Ambrose for help. There, she reunites with Percy and then Ambrose, who embraces her warmly. Edith is already there, having traveled independently to reconcile with her sons.
The group rushes to Renwick, where they find Jem barricaded in a room, safe but shaken. Beckett, jealous of Jem and desperate for a treasure supposedly hidden in the house, had twice sent Rogers to search Renwick, explaining the barred doors and the dead man. Bacon has trapped Beckett behind one of the manor's latticed doors. Oliver, the seventh Duke of Fawkes, confirms Jem's parentage and tells him Renwick House is his by right of inheritance.
Georgiana brings Cat the translations of the coded papers, completed by Iris: They are love letters from Luna Renwick to her beloved Sally, Sarah Sophia Penhollow. Luna built the rose garden as a memorial and hid jewels there after Sally's death. Georgiana apologizes for everything her father cost the Lacey family. Cat refuses to let a dead man's cruelty define their future, and they declare their love in the garden.
In the epilogue, Cat and Georgiana live at Renwick House as caretakers while Jem returns to London to finish his clerkship, planning to open a law practice in Devizes. Ambrose and his wife, Noor, welcome a baby, and Edith moves permanently to Wiltshire. Eight months later, Cat discovers Luna's jewels set into the terrace tiles beneath a bench in the rose garden, visible only at a certain angle of sunlight. A final note from Yorke confirms he sent both women to Renwick at the same time on purpose.