Paul Jean François Bernardoni (born 18 April 1997) is a French professional footballer who plays as a goalkeeper for Albanian Kategoria Superiore club Teuta.

He began his career with local teams AS Lieusaint and Linas-Montlhéry, before moving to Ligue 2 side Troyes at age 16. After climbing his way through the club's U19 and reserve teams, his first season in the Ligue 1 saw him win the starting spot for Troyes, before moving on to Bordeaux. After his move to the Girondins was made permanent, Bernardoni spent four years waiting to reclaim his first team place, meanwhile playing with Bordeaux's reserves and going out loan to Clermont and Nîmes. Following three full seasons at the professional level, he was signed by Angers, who broke their club transfer record with €7.5 million. In 2022, Bernardoni joined Saint-Étienne on a six-month loan.

Bernardoni has represented France at the youth levels, from under-17 to under-21, as well as the Olympic under-23 level. He has won the 2016 UEFA European Under-19 Championship with the under-19s, beating Italy 4–0 in the final.

Early life Bernardoni was born in Évry, in the Essonne department, near Paris.

Club career Early career Bernardoni started playing football at the nearby club of AS Lieusaint at the age of 8, where he stayed for 6 years, before moving up to Linas-Montlhéry.

Troyes 2013–14 season After 2 years at Linas-Montlhéry, Bernardoni finally left the Île-de-France and moved to Troyes, where he quickly made his way to the starting line-up of the club's U19 team. His performances also earned him a spot in the reserve team, thus he ended up playing in both the Championnat National U19 and the Championnat de France Amateur 2. Bernardoni's performances also earned him a call-up for U17 national team. His debut in France's fifth division came, following his performance at the European U-17 elite round, on 5 April 2014, against Pontarlier for the league's 21st matchday; the game ended 1-1. Bernardoni's first clean sheet for the team came in the next game, against Schiltigheim, and he played for the remaining 4 games of the season, with Troyes' reserves finishing 2nd, earning promotion to the Championnat de France Amateur. The U19 team finished 8th in their respective league. In July he signed his first 3-year professional contract, until the end of the 2016–17 season, with coach Jean-Marc Furlan citing his status as an international.

2014–15 season Bernardoni had earned the starting spot under the goalposts for the newly promoted reserves, as he played 21 games in France's fourth division. The 2014–15 season opened on 16 August against Moulins, which Troyes' reserves won 1–0, earning Bernardoni his first clean sheet of the season; he would go on to keep his goal clean a total of 4 times for the reserves. Bernardoni would temporarily lose his position to first team players Matthieu Dreyer and Franck Grandel, before taking their spot on the bench on 29 November, as Troyes faced Angers, behind starting man Denis Petrić, who kept the net clean, as Troyes went on to win 3–0. Bernardoni was given the number 40 at Troyes, starting with this call-up.

Following his first taste of Ligue 2 action, Bernardoni returned to the number 1 spot on the reserves' team, standing out among a middling side. A second game on the first team's bench against Gazélec Ajaccio prepared him for his first team and professional debut on 6 March 2015, against Clermont. Troyes won the match 2–0, earning Bernardoni his first clean sheet at a professional level, as well as a call-up on France's national under-18 football team. By the end of the season, though both the U19 side and the reserve team placed a mediocre 10th in their respective leagues, Bernardoni had left his mark as the main side came in first, earning promotion to Ligue 1, and his contract was extended by 2 years, to the end of the 2018–19 season.

2015–16 season Bernardoni played the opener of Troyes' return to the top flight, due to main man Denis Petrić suffering from a strained thigh muscle, as the team drew Gazélec Ajaccio 0–0 on 8 August. Once again, Bernardoni had debuted with a clean sheet; one of only 3 to be recorded by Troyes during the season. Petrić was back for the next game, against Nice, and Bernardoni returned to the bench, even playing 3 games with the reserves during the following period.

Following a terrible start, ESTAC stood at 4 points after 10 games, with 4 draws and 6 losses, some with heavy scorelines. This incentivised coach Jean-Marc Furlan to shake-up the team by switching the starting line-up around, and Bernardoni returned to the number 1 spot. Starting with the game against Bordeaux, he would start all subsequent games up to the end of January. During this period, Bernardoni played his first Coupe de la Ligue game, against Lille on 28 October, which Troyes lost 2–1, being thus knocked out. Bernardoni's presence on the bench of a Ligue 1 team did, however, help him get called up to the U-19 national team.

Coach Furlan's changes didn't prove enough, however, and Troyes remained at the bottom of the table. His replacement with Claude Robin and later Mohammed Bradja also couldn't save the team, and the January transfer season seemed to be Bernardoni's way off the sinking ship. They heavy defeats kept coming, with the team conceding 4 goals in 4 separate matches and their only victory was on game 22, on 31 January 2016, 3–1 at Lille. This was to be Bernardoni's penultimate game at Troyes, as following next week's 1–0 loss to Nantes, he joined Bordeaux on loan, where he was given the number 1 shirt.

Bordeaux

Initial loan After Cédric Carrasso, who had been Bordeaux's starting goalkeeper for 7 years straight, suffered an ACL rupture near the end of the Winter transfer window, the Girondins rushed to find a replacement, overlooking second-choice Jérôme Prior. The club chose Bernardoni, who had stood out among last-place Troyes' team, and signed him on loan until the end of the season. Bernardoni played his first game for Bordeaux on February 3, just 3 days after signing his contract, as the team suffered a 3–0 loss to Lyon. In fact, heavy losses followed Bernardoni to his new club, as he picked up the ball from the back of the net 4 times each in 4 more separate matches.

As Bordeaux stagnated in the middle of the season, coach Willy Sagnol was eventually sacked, and replaced by former long-time Bordeaux goalkeeper Ulrich Ramé. Ramé immediately reinstated Prior, who had been distanced from the team following an argument with team captain Lamine Sané, after a heavy defeat by Lille at the Coupe de France round of 16. In fact, Prior was given the starting spot, and Bernardoni finished the season on the bench.

Bordeaux's performances improved as the season came to a close, and the club finished 11th in the Ligue 1. Bernardoni's main club, Troyes, finished at the bottom of the table and were relegated back to Ligue 2, whilst their reserves were also relegated to Championnat de France Amateur, finishing 14th. This led to Bordeaux activating Bernardoni's buying option and a 5-year contract to the end of the 2020–21 season, his transfer costing the club €2.5 million.

2016–17 season Carrasso's recovery and the arrival of Jocelyn Gourvennec's as head coach resulted in Bernardoni being relegated to Bordeaux's third-in-line goalkeeper, and in fact he played no matches for the first team during the entire season. Instead, he spent most of the season with the club's reserves, who had just been relegated to Championnat de France Amateur 2, after many years in the fourth division. He played the reserves' opening game against Les Herbiers's reserves on 20 August and kept his first clean sheet of the season on 17 September against Bressuire. He eventually returned to the first team's bench as Carrasso would suffer a hamstring injury on 22 October, against Nancy, and Prior would take his place in the starting 11. Bernardoni stayed with the first team up until Carrasso's return in January, before returning to the reserves and helping them achieve a respectable 4th place, having played a total of 11 games out of 26. Meanwhile, the first team returned to good performances after a mediocre season and placed 6th, qualifying for the Europa League third qualifying round, reaching also the Coupe de la Ligue semi-finals and the Coupe de France quarter-finals.

Loan to Clermont Benoît Costil's arrival at Bordeaux signalled Bernardoni's further sidelining, and despite Carrasso's contract expiring in September (he would later join Turkish side Galatasaray), Bernardoni sought after a club where he would be the starting goalkeeper. This he found in Ligue 2 side Clermont, whom he joined on a 1-year loan, taking the number 40 shirt.

Bernardoni's season at Clermont turned out to be the most crucial season of his career at the time. The Lanciers were looking for a replacement, after their starting goalkeeper, Marc-Aurèle Caillard, had left the club for Guingamp, and manager Corinne Diacre chose Bernardoni to play that role. His debut at his new club came on 28 July, against Paris FC, a 0–0 draw, continuing Bernardoni's streak of clean sheets on debuts. Even after her departure and the arrival of Pascal Gastien, he was irreplaceable between the goalposts, as he led the club to a mere breath away from the promotion play-offs, missing out by just 2 points, as Clermont finished 6th. This was Bernardoni's first full season at a club, as he played all 38 games of the season, keeping an impressive 14 clean sheets – his best performance to date, earning him the Ligue 2 Goalkeeper of the Year.

Loan to Nîmes Prior's departure from Bordeaux seemed to open up a spot behind Costil, yet despite Bernardoni's performance in the previous season, manager Gus Poyet preferred the homegrown Gaëtan Poussin. Bernardoni searched for a new club, this time landing a 1-year loan with Ligue 1 side Nîmes, a step up from Clermont.

As Nîmes were a freshly-promoted team to the Ligue 1, manager Bernard Blaquart jumped on the opportunity to sign Bernardoni on loan, sidelining the previous season's starting man, Baptiste Valette. His clean debut streak finally ended, as his first game with the Crocodiles on 11 August against Angers ended 4–3 to Nîmes. In fact, his first clean sheet wouldn't come until the 7th game, against Guingamp on 26 September, a goalless draw; he would go on to register 9 more. This season also included Bernardoni's first Coupe de France game, as Nîmes lost 3–0 to Lyon Duchère on 5 January 2019, at the Round of 64. Nîmes placed 9th at the end of the season, 5 places above Bordeaux. Bernardoni had successfully built upon his performance at Clermont, and Bordeaux extended his contract by a further 2 years, to the end of the 2022–23 season.

In the time Bernardoni spent on loan, Costil's position at Bordeaux had been cemented, and he had been given the captain's armband. Thus Bernardoni would have to fight Poussin for a spot on the bench. Seeking to build yet further on his 2 full seasons, and despite his new contract, Bernardoni decided to re-join Nîmes, this time on a 2-year loan, where his starting position was guaranteed.