On a flight from New York to Los Angeles, the twelve-year-old Ryan Walker (Brendon Ryan Barrett) sits next to a girl named Jennifer (Raquel Beaudene), who has just had her first period, and they chat about their parents' divorces and end up arguing. Four years later at Harding High School, Jennifer (Claire Forlani) is named homecoming queen while Ryan (Freddie Prinze Jr.) has an accident while in uniform as the team's mascot. When they talk afterwards, Jennifer realizes that he is the same guy from the flight and asks him out for coffee, but they argue and Ryan declines.
Even later, Ryan is a freshman at Berkeley, has a new roommate, the girl-crazy non-stop liar Hunter (Jason Biggs), and is trying to maintain a long-distance relationship with his high school sweetheart (Alyson Hannigan). They soon break up. It turns out Jennifer also goes to Berkeley. She is living with her boyfriend, but then he breaks up with her in a song and she ends up moving in with her friend Amy (Amanda Detmer), who talks about her therapist a lot. Ryan and Jennifer share their break-up stories, but end up arguing again.
A year later, Ryan has a new girlfriend, who turns out to be Amy. When Ryan comes to pick her up one day it is Jennifer who is waiting to break up with him on Amy's behalf. When Ryan tries to persuade Amy that they are right for each other he has an accident with some icy balm, and instead he ends up spending the day with Jennifer. He tells her he is going off relationships because they are too uncertain and unplannable, unlike the Golden Gate bridge they are looking at. She, on the other hand, has no life plan and prefers the unpredictable.
As school starts after the summer, Jennifer meets Ryan at registration and tells him about her summer fling, which brings her to tears because she pushed the guy away even though she really liked him. Later they spend a day together in San Francisco and go dancing at night, and another night Jennifer has Ryan bail her out of a bad date. When Amy asks Jennifer if she's in love with Ryan, Jennifer refuses, and Ryan does the same when Hunter asks him. When Jennifer asks him if he sees her as a substitute for a girlfriend, he starts dating another girl, Megan (Heather Donahue). When Jennifer herself has man trouble she becomes disillusioned with love and gives a big speech to Ryan and the rest of the cafe they're in - but they end up kissing and sleeping together. The next day things are weird between them, and they decide that it was a mistake. Ryan, however, shies away from Jennifer for weeks until she is about to leave Berkeley for Italy. When they finally meet they argue, and Ryan tells Jennifer that he thinks they were meant to be together, even though he had never planned for it to happen and that he is hurt that Jennifer didn't feel the same way.
A few days later Jennifer is leaving for the airport on a bus. Amy and Hunter, who is now going by his real name Steve, meet at the bus stop and hit it off. When the bus is in the middle of the Golden Gate bridge, Jennifer makes a decision, forces the driver to stop and goes back to Berkeley where she finds Amy with Hunter, who tells her Ryan has already left for LA. On the airplane, Ryan is awaiting departure when Jennifer boards the plane and announces her love for him. They argue, but she persuades him, and they kiss as the plane takes off.