After following his thorough morning exercise routine, Kyle goes to school and gives a speech as candidate for president of the Green Committee. He tells everyone in the crowd that they’re ugly and they must “embrace the suck”. Everyone cheers for him as he points out they’ll vote for him not because he cares for the environment, but because he’s handsome, rich, and popular, not to mention his father is a famous news-anchor.
The treasurer candidate Lindy watches him with curiosity, but in the crowd Kendra is disgusted and storms out of the room. Afterward in the corridors, Kyle discovers all his campaign posters have been vandalized. Kendra doesn’t hide the fact she did it and starts insulting Kyle, who immediately insults her back.
After a brief argument, Kyle turns on Lindy, who doesn’t fall for Kyle’s bait and simply shakes his hand. Later at home, Kyle’s father Rob can’t stop talking about people’s appearances and how looking good is the key to success. Kyle is frustrated because his father barely pays any attention to him.
He sends him a message and that almost gets him, but Rob walks away when he gets another call. The maid Zola tries to get a conversation going and mentions her family who still is back in her home country, but Kyle is dismissive and calls it a “sob story”. The next day Kyle wins the election and gets a message from a friend saying Kendra is mad about it.
When he sees her pass by, he pretends to be friendly and invites her to his celebration party. That night at the party, Kyle’s girlfriend gets mad at him because he got her the wrong flower. Since she walks away, Kyle puts the rose in his jacket pocket and chats with Lindy, who is working there as a waitress to save money for a trip to Machu Picchu.
They talk for a while and Lindy convinces Kyle to take a picture together for the school newspaper. Kyle gives Lindy the white rose, and she explains this flower means “I’m worthy of you”. After the picture is taken, Kyle notices Kendra has arrived and starts insulting her in front of everyone for thinking he really wanted her there.
Kendra explains she only came to give him a second chance and he blew it, so she wants him to “embrace the suck”. As she stares at him with lots of intensity, he starts feeling dizzy and walks away. Kyle tries to distract himself on the dance floor, but he still isn’t feeling well and keeps sensing Kendra’s intense eyes.
He runs out of the building and sees a man with tattoos on his face before a bus passes by promoting Rob’s show. A lady nearby appears to have Kendra’s face and a car almost runs over Kyle when he crosses the street. Regardless of how sick he feels, Kyle manages to make it home and rushes to the balcony for fresh air.
Suddenly Kendra appears behind him, revealing she’s a real witch. She grabs Kyle’s arm and a tattoo of a tree appears on it as she curses him, saying Kyle has a year to find someone to love him. Flowers appear on the tree while Kendra explains that after the year is up and the flowers bloom again, if he hasn’t received words of love he’ll get stuck like this forever.
When she steps aside, Kyle sees his reflection in the window and is devastated to discover he’s become a monster. There are scars, tattoos, and metal on his face, also his eyebrows are now the words “embrace” and “suck”. As Kendra disappears, Kyle takes off his shirt and notices the rest of his body is in the same condition.
A few hours later, Rob arrives and discovers Kyle is sitting in the dark. Rob is confused and turns on the lights at the same time Kyle accidentally breaks a mirror trying to stop him. Horrified, Rob takes Kyle to the best doctor in the city, who explains Kyle is perfectly healthy and yet his skin won’t change no matter what they do.
Rob keeps begging for a solution like a face transplant, saying “they” would risk everything. Realizing his father is only thinking about himself, Kyle runs back to the car in anger. The next day Rob takes Kyle to live in a private house outside the city and even hugs him.
Then Rob leaves for work and never comes back, so Kyle has to deal with the fact his only companion is now Zola. His friends at school were told he went to rehab, but as weeks pass they wonder if it was true and even theorize he’s actually in jail. Kyle tries to keep himself busy with exercise and the internet, but he’s hit hard by depression and his father constantly canceling on him.
As the weather changes, so does his tree tattoo to match the season. One day a blind man named Will arrives at the house. It turns out he’s a tutor sent by Rob so Kyle won’t fall behind in his education.
When Kyle tries insults and sass, Will just throws the same back without hesitation. Kyle also goes on a rant about his dad hiring a blind guy but Will doesn’t let it bother him. That night, Kyle watches Rob's show, still feeling hurt.
He asks Zola about her kids and is jealous of how much she loves them. Then Kyle calls his dad and leaves a message in his voicemail to cancel their meetings, saying it’s time to stop pretending. To deal with his emotional pain, Kyle goes on a ride on his bike.
After breaking the speed limit for hours, he comes across a costume party and decides to crash it since they think he’s wearing a costume too. He’s surprised to find Kendra there and begs her to end the curse, but she refuses and loses him in the crowd. Kyle continues to look around and discovers his girlfriend is now dating his best friend.
She even admits she’s glad Kyle is gone because she always felt she had to be mean to keep him entertained. A furious Kyle kicks some decorations and Lindy shows up asking him to be more careful. She also notices Kyle’s girlfriend with her new guy and shows disapproval.
Unaware of whom she’s talking to, she mentions how she respected Kyle for calling things as he saw them even if he was mean about it and calls him a “shot of life”. The following day Kyle wakes up and is impressed to find Will playing darts. Since Kyle still doesn't want classes, instead they exchange high school stories and Will tells him how he kept on dating after he became blind.
Inspired by this, Kyle checks social media and finds the picture he took with Lindy months ago, realizing he can’t stop thinking about her. He goes to the city and stands outside Lindy’s house to watch her at the window for a while. Sometime later Kyle notices Will still makes sure to dress well and points out looks are important even for a blind guy.
However Will explains it’s not about how others see him, it’s about how he looks at himself. Then Kyle checks his own social media, realizing it’s mostly narcissistic pictures of himself. His profile information is also nasty insults that show no actual personality.
Disgusted by his own attitude, Kyle deletes his account and writes “I am no more” as the reason. For the next few days, Kyle continues to visit the city to watch Lindy from afar and smiles every time he sees her be kind to strangers. Soon Will and Zola ask him about his escapades and when they hear he’s seeing a girl, they think Kyle is making progress.
They celebrate by playing golf on the roof. One night Kyle watches Lindy leave her house in a hurry because she can’t find her dad. He follows her and finds her in an alley, where two armed dealers are asking her addict dad for the money he owes him as they threaten to hurt her.
Kyle jumps over the fence and pushes a dealer away, causing Lindy’s dad to hide. The other dealer throws Lindy down the stairs before disappearing as well. Then Kyle picks up an unconscious Lindy and leaves her inside her building.
Suddenly he hears a shot and runs back to the alley, where he discovers Lindy’s dad shot one of the dealers and the other is running away while promising to kill Lindy for revenge. Kyle quickly disarms the father and takes a picture of his face, asking him to let him protect Lindy in exchange for not telling the police anything. The next day Lindy arrives at Kyle’s private home and she’s clearly angry with her dad for ruining her life like this.
She demands to see the house owner, but Kyle doesn’t dare to come out and Zola has orders to refer to him as “Hunter” instead of his real name. When he checks social media, he notices Lindy's status says “in hell”. In the evening Kyle puts on a mask and tries to bring Lindy food, but she doesn’t open the door and refuses to talk to him.
Kyle doesn’t give up and keeps leaving expensive gifts for her like fancy bags and jewelry, but Lindy isn’t impressed. The next time Kyle sends Zola to buy an expensive gift, Zola points out he’s just getting the things he used to get for his previous girlfriend. Instead of trying to buy Lindy’s love, he should be taking interest in who she really is.
Later Kyle approaches her room and hears her talk to a friend on a phone, complaining about all the things she misses in her life. Suddenly she sees him and calls him a creep for sneaking around wearing a mask. She demands to know why she’s there, so Kyle explains her dad loves her so much that he was desperate to protect her.
Lindy calms down and accepts Kyle’s juice offering. Afterward Kyle starts trying harder. He writes all his feelings on a letter and takes a closer look at her social media, learning she loves roses.
This makes him decide to build a greenhouse on the roof. It takes him weeks of hard work and he has to be careful to avoid being seen by Lindy, who is finally leaving her room and befriending Will. As Christmas approaches, Kyle’s tattoo tree lights up with decorations.
One night Lindy surprises him while he’s watching TV and Kyle keeps his face hidden in his hood while they chat. They really hit it off and make lots of jokes about the show they’re watching. When Kyle invites Lindy to join him in his classes, Lindy gladly agrees.
This inspires Kyle to finally reveal himself and to his shock, Lindy isn’t disgusted or scared. She only says she’s seen worse. The next morning an excited Kyle runs to wake Will up and tells him he’s finally accepting his tutoring, but Will must make it look like they’ve been doing this for a while.
He also asks him to make him look smart, which Will finds impossible. Next Will asks Zola for ideas to impress girls and Zola tells him to show his true self. That day Kyle finally brings Lindy to the greenhouse, which is full of roses in all colors.
He also printed a poem to impress her but she already knew it, which ruins his plans to sound smart. Soon the classes begin and everyday the teens get to read wonderful poems full of love to each other, growing closer with each word. Winter passes quickly and when spring starts, Kyle sees the first flower appearing on his tattoo.
He goes to the city to find Kendra and asks her for more time. When she refuses, he explains he does care about people now and instead of time with Lindy, he asks for Will to get his sight back and Zola to get her family, saying they deserve it for being stuck with him. Kendra agrees to do it only if he’s successful with his own goal.
That night Kyle checks on Lindy and finds her looking at their old picture in social media. Lindy says Kyle’s just a jerk from school but also points out “Hunter” reminds her of him. She thinks Kyle had been hiding something good under his bad attitude and even admits she had a crush on him.
Getting his hopes up, Kyle takes Lindy to the city and they sneak inside the zoo. There Kyle shares the story of how his father told him his mother left them, and little Kyle hid in this spot to watch a documentary. It was about a mother elephant that returned to the place where she left her babies' bones a year later, and Kyle can’t imagine what that love feels like.
Lindy can’t imagine it either and holds his hand. Afterward they watch the sunset on the roof and Lindy falls asleep on Kyle’s lap. He tells her he loves her and takes her to her room, where he sees a message on her computer asking about the Machu Picchu trip.
Apparently Lindy had been planning to run away with a friend soon. The next day Kyle asks Zola and Will if he should let Lindy go. The flowers on his arm show he only has a few days left, so the duo tells him to try one last big romantic gesture.
Using his dad’s limo, Kyle takes Lindy to the family’s lake house. During the trip Lindy gets a message saying her dad has been arrested so it’s safe for her to go home, but she simply deletes it. When they make it to the house, Lindy explains her mother is dead and taking care of her addict father has been hell, that’s why she planned the trip to get away.
But this past few months living with Kyle have been the break she needed all along. Then they go for a walk holding hands and Kyle throws his letter at her. Lindy falls as she catches it and Kyle helps her land gently, putting them in a compromising position.
They’re about to share a kiss only to be interrupted by Lindy’s phone. The call brings bad news: her father is at the hospital because he OD’d. Kyle immediately takes her to the train station and before leaving, Lindy tells him he’s a good friend.
During the train ride, Lindy reads the letter and finds a love confession. Later after checking on her dad, she keeps leaving messages on Kyle’s voicemail, but he refuses to talk to her. He thinks she only sees him as a friend and she’ll be angry about the letter.
When Lindy starts calling Will and Zola too, they convince Kyle to stop being a coward. Moments later Kyle goes to the school, where everyone judges his strange face. He apologizes to Lindy and explains he doesn’t feel ugly around her, so Lindy points out he isn’t before finally kissing him.
The last flower appears on his arm and he tells her to go on the trip because she deserves it. On her way out, Lindy says she loves him. Kyle starts walking home while feeling Kendra’s eyes on him again.
At that moment he freezes and looks at his reflection to discover he’s back to normal. Now his arm only has one rose instead of the whole tree. Suddenly Lindy comes out because she doesn’t want to leave without “Hunter” after all, but she doesn’t recognize him.
Kyle follows her and when Lindy tries to call “Hunter”, Kyle’s phone rings. They say they can finally imagine “that love” and share another kiss. At the same time, Zola receives green cards for her family and Will can see again.
Meanwhile at the news station, Rob receives a new intern, unaware it’s Kendra ready to teach him a lesson too. A few days later Kyle and Lindy are enjoying their vacation on Macchu Pichu.