The characters in the body-swapping comedy Good Fortune are separated into haves and have-nots, a society-threatening contrast that also applies to the movie itself. What Good Fortune has is a sincerely felt story that channels the spirit of It’s a Wonderful Life and Trading Places to deliver a sympathetic look at gig workers exploited by the tech bros and corporate vampires who profit from their labor. What the film does not have is a particularly sharp or clean script.
Instead, Aziz Ansari — who wrote the screenplay and who also directs and stars — piles on the jokes, the social messaging and the plot convolutions without blending them into a snappy, smooth-running whole. Because its heart is genuinely in the right place and its cast, highlighted by a very funny Keanu Reeves, has such relaxed chemistry, one is obliged to give Good Fortune the benefit of every possible doubt. But the film is ultimately too gentle in its commentary and too clunky in its storytelling to inspire us to rally around its well-timed, if tepidly delivered, message.

- Release Date
-
October 17, 2025
- Runtime
-
98 Minutes
You can’t fault Ansari, making his feature directing debut here, for lacking ideas. At the starting gate, he establishes a promisingly clever, zeitgeist-y premise: He plays Arj, a wannabe documentary editor scraping together a marginal living by driving his car into the ground for a food-delivery service and toiling away at a hardware store where he’s too insecure to ask out Elena (Keke Palmer), a co-worker lobbying to unionize its employees. He also picks up random pocket-money gigs on a TaskRabbit-style app, which is how he meets Jeff (Seth Rogen, stretching his acting abilities not one bit), an uber-wealthy venture capitalist who hires Arj to clean out his garage. They hit it off so well that Jeff makes Arj his assistant, allowing him to get a taste of the good life. But when Arj uses Jeff’s credit card to pay for dinner with Elena, he’s fired and is once again reduced to living in his car, which eventually gets towed for unpaid parking tickets. Little does Arj know that his lowly existence is being monitored by Gabriel (Reeves), a “budget guardian angel” who sees Arj’s plight as a way to earn a bigger set of wings.
The irony is not lost that three Hollywood gazillionaires are poised to tell an audience of struggling wage slaves to buck up and stay positive. But the real miracle here is that neither Ansari, Reeves nor Rogen come off as condescending or patronizing. This is especially true of Reeves, who gives an extremely likable and easygoing Bill & Ted-style performance. At the beginning, Gabriel’s angelic duties are limited to preventing humans from texting while driving. But his desire for a more meaningful purpose runs afoul of Martha (Sandra Oh), the head of Angel Management, who tells him, “To save a lost soul, you first have to find a lost soul.” So Gabriel reveals himself to Arj, and in an effort to prove to him that Jeff’s life of extreme wealth “is not all it’s cracked up to be,” he has the two mortals switches lives for one week. The problem is that Arj loves Jeff’s luxurious life— what with the hilltop mansion, the six-figure watch collection, and the disco floor — and has no interest in switching back.
Although Arj is the character meant to personify the audience’s dreams and experiences, Gabriel is by far the more interesting character. Reading his lines as if he simultaneously cares deeply and couldn’t care less, Reeves is a constant delight. He gets his biggest laughs after Martha makes Gabriel mortal as punishment for meddling too much into Arj’s life. Ascending from atop the Griffith Observatory into the bowels of nocturnal Los Angeles (shot with a realistic eye on urban decay by DP Adam Newport-Berra), the newly-human Gabriel finds work cleaning dishes and lamenting, “I used to be a celestial being, and now I’m a chainsmoker.” His earthly challenge is to find a way to get Arj, Jeff and Elena’s lives back on track, so Martha will make him an angel again.
Ansari, who won an Emmy — shared with Lena Waithe — for his writing work on Netflix’s Master of None, gives his three major characters a definable arc, as everyone is forced to see how the other half lives, whether they like it or not (at one point, Jeff works for the same food delivery service as Arj, and is replaced by a robot). But the movie is too sweet-natured to deliver any real commentary on social inequity, and too naive in its solution to give the audience even a glimmer of hope. These larger, mundane points are mostly conveyed by Ansari, whose sitcom acting style makes him a suboptimal excavator of the film’s weightier themes. Even the normally charming Palmer (Nope, Hustlers) is reduced to a one-dimensional mouthpiece for union advocacy as the dream girl who makes Arj want to give up his luxe life. Indeed, Ansari’s script is rough around the edges in even its basic construction; Gabriel’s powers are a bit fluid and story-contingent, for one, and Ansari struggles to convince us that Arj would want to return to his regular life.
There’s an old saying that “comedy is truth told faster,” and Good Fortune cannot live up to this maxim. The movie plods along with a dawdling and choppy energy courtesy of editor Daniel Haworth, while the laughs it generates at the expense of economic injustice are too laid back to make an impression. When Arj says, “the American Dream is dead,” it’s played for a chuckle even though, for many Americans, it’s a statement of fact. Nothing here is ever disrespectful to those on the economic lower rungs, and one can only be grateful for the hilarious sight of Keanu Reeves pretending to eat a hamburger for the first time. But Good Fortune doesn’t offer comedic succor or insight into America’s sad and sorry economic plight; it merely reminds us of it.
Good Fortune, distributed by Lionsgate, opens in theaters October 17.