Léo Barcet · Portfolio 2026Ho Chi Minh City · Remote · UTC+7 · FR

LéoBarcet

I spent fifteen years making theater. Today I run a casting agency in Ho Chi Minh City and build its software by directing AI coding agents.

    Available now · remote or Ho Chi Minh City · contract or part-time
    01

    A casting platform I designed, directed and shipped alone

    RoleFounder, product owner, architect
    TeamMe, directing AI coding agents
    PeriodMay 2026 to today

    Result: 200+ actors sourced, about 30 selected for the roster, 13 placed on The Wandering Earth 3 for 95 shoot days. All of it runs on a platform I built alone, secure and reachable from mainland China.

    Duyên home page: 'Talent & Casting Asia, the eye of a working actor and director', with two entry points, one for actors and one for productions
    Home page, launch version. Actors submit a portfolio, productions start a brief.

    Why it exists

    On The Wandering Earth 3 I coordinated the foreign cast of a Chinese production with messaging apps, email and spreadsheets.

    After that shoot I started an agency to do this work properly, and built the tool it runs on.

    What I built

    One roster shared by three kinds of users. Actors apply and keep their portfolio current. The agency evaluates, admits and presents them. Productions open a private casting room, compare a shortlist, and book.

    Every actor gets a branded PDF résumé, rebuilt each time their credits change.

    One pipeline, from a self-tape to a paid actor

    It isn't a website with a form. It's the whole chain of a casting agency, with each side working in its own space.

    Actors

    1. Apply and upload photos, showreels and self-tapes.
    2. Files are compressed, renamed and reorganized automatically, so a production anywhere in the world downloads a clean, structured package fast.
    3. Their old résumé is parsed and rebuilt as an agency-branded PDF.
    4. A personal space with tools of their own: a profile link worth sharing, quick comp cards.

    Agency

    1. Searches the whole roster in seconds.
    2. Evaluates, admits, and guides actors in their development.
    3. Builds a selection for each casting and sends it to the production.
    4. Stays the filter between both sides: nothing reaches an actor before we validate it.

    Productions

    1. Receive the selection in a private casting room, with only agency-branded résumés.
    2. Keep or pass on each actor.
    3. Book the ones they keep and sign contracts on the platform.
    4. Follow every actor from shortlist to set. Payments are next.
    Production casting room: counts of shortlisted, to review and passed actors, filters by age, nationality and language, a grid of actor portraits, and Download all.
    The production side: the casting room, still in development. Productions filter, shortlist or pass, and download everything in one click. Decisions reach the agency live.
    Admin roster, called La planche: search, status filters, category and sort, export, and a contact-sheet grid of actor portraits.
    The agency side: the roster as a contact sheet, searchable and filterable.
    Admin talent record: identity, measurements, agency management, categories and consent status. Demo profile.
    An actor's record: identity, measurements, private agency notes, and consent tracked per actor.

    All platform screens show demo data.

    Why it is hard

    Three sides, one truth

    Actors, the agency and productions each see a different slice of the same records. Who can see what, and when, is the product. An actor must never learn a production's decision before the agency validates it, and a production's name is revealed only with its consent.

    A market behind the firewall

    Productions work from mainland China, where Supabase is blocked and most hosting platforms have no presence. Cloudflare's edge in front of a server in Singapore, chosen over a cheaper German one for latency to Vietnam.

    Heavy media

    Showreels and self-tapes are large video files. Resumable uploads straight to storage, a video encoding pipeline, short-lived signed links.

    Personal data

    Contact details, ethnicity, body measurements, photos, private agency notes. A leak would end the agency. Security was the one area where I never traded speed for anything.

    Security, non-negotiable

    I wrote security rules the AI is not allowed to bend, then had the code reviewed in several passes, and again after each new feature. Fifteen of the decision records are security reviews and hardening.

    • The server is invisible. Its address is hidden behind Cloudflare, and it only accepts connections that prove they come from our own domain.
    • Sensitive fields are encrypted at rest. Agency notes and evaluations never leave the admin side. The file a production downloads is a strict whitelist, with no contact details.
    • One login for everyone, one generic error. Nobody can test whether an account exists. Short-lived sessions, rotated on every use, and a brute-force lockout that visitors can't get around by faking their address.
    • Backups are encrypted before they leave the server, with a key kept apart from the storage they protect.
    • Bot protection on public forms, dependency vulnerabilities triaged, and build tools pinned to exact versions.

    An AI agent writes fast and sounds sure of itself. Most of my job was catching where it was confidently wrong.

    How I work with AI agents

    Developer surveys in 2026 agree on the new bottleneck: AI writes code faster than anyone can check it. Code that looks right, invented facts, lost context, runaway cost. Here is the system I built for each.

    Verification

    After one "make this page responsive" task shipped and I still found seven defects on my phone, one at a time, I wrote a verification rulebook every session must follow before saying "done". Five ways "I verified it" is false, with a guard for each. Enumerate everything the page can render and diff it against what was tested. A gap you declared is not a gap you covered. Green checks prove nothing broke, never that it's good. When you can say why a bug happened, search for its siblings. Suspect the test when it contradicts the code. I also found 883 tests that nothing ran before production, and had them wired in; then a go-live audit caught 3 blockers every automated check had missed.

    Invented facts

    Left alone, an agent fills gaps with plausible fiction: past clients that don't exist, reassuring numbers, stock photos presented as our actors, profile links that point to someone else. Rule: nothing goes public that I can't prove. Copy lives in documents I own, and a mockup can't add a claim. Search-engine data carries no link I haven't supplied myself. Placeholder photos now fail the build.

    Memory

    An agent starts every session from zero. So the project remembers for it. A briefing file holds the live rules and points to the reasoning. Close to 190 decision records hold the why. A progress log is updated after every task, and a written rule says a settled decision is never re-debated, only formally revised. A separate file lists "commands an agent would guess wrong".

    Several agents at once

    I run parallel sessions, each on its own copy of the code. One deployed a stale copy and silently erased another's fix. Now every session checks its drift against the shared branch when it starts, and the deploy script refuses anything that isn't the latest version.

    Models and cost

    Inside the product, the résumé import calls Claude. I use the smallest model, Haiku, because it's reorganizing text, not perceiving images, and send extracted text, never the raw PDF, which would cost far more. About 1.5 to 2.3 cents per import, capped at 10 an hour per visitor. Every answer is re-validated against a strict schema, and if the AI fails, the import still works. I priced an AI layer for the code map too, and dropped it.

    Architecture: I learned it, then chose

    I didn't take the first stack offered. I had the AI teach me the main architecture options and their trade-offs, read all of it, and made the call myself. I pushed every proposal on why, how, how fast, under which conditions and for how many users. Real load is under ten people at once, so a single server with the video encoder beat pricier managed services. Productions sit behind the Chinese firewall, so anything blocked there was out, whatever its reputation. And I overrule when the first proposal is wrong: a "you're shortlisted" message left visible after a production passed, a résumé parser that turned my own 28 credits into 50, a brief form that stored nothing.

    It can't see what the user sees

    On my iPhone, in the Arc browser, the bottom of the home page was hidden under the browser's floating bar. No test caught it, and the AI can't open Arc. It went three rounds guessing the bar's height and changing which elements to show or hide. Each time I tested on the phone and pushed back: one version was too cluttered, another deleted the scroll cue I wanted kept. The fix came when I restated the problem: I didn't want fewer elements, I wanted the cue to sit exactly on the edge of the bar. That turned it into one number to set. We read it off my screenshot, and on the fourth round I signed it off on the device.

    Its tools lie too

    The code map every session read at startup was 54% third-party noise. The build watchdog watched the wrong process and was 0.9 points from killing a healthy build. Before I trust a tool, I have it measured.

    From my verification rulebook (excerpt, as written for the agents)

    Written after a "make this page fully responsive" task shipped and still needed five more rounds, because I found seven defects on my phone one at a time. Not one was misdiagnosed. The failure was entirely in finding them.

    1. Verify the artifact you ship, over its whole surface. Enumerate it, don't assume it.
    2. A declared gap is not a covered gap. "Can't test X" means build a way, or say unverified.
    3. Green checks prove no breakage, never quality. Always look at the finished result the way its user will meet it.
    4. When you can name why a bug happened, use that sentence as a search across the module. Fix the category, then go find its other members.
    5. Suspect the fixture when a measurement contradicts the code. A checker that can pass while broken is worse than none.

    Next.js · React · Hono · PostgreSQL · Drizzle · Cloudflare Workers, R2, WAF · FFmpeg · Claude Code · Claude API (Haiku) · n8n · Python · Apify · GitHub Actions

    02

    Money and contracts, tooled

    RoleDesigner and builder
    Born onThe Wandering Earth 3
    ToolsActor payment tracker, multilingual e-signature

    Result: at any moment I know, for each actor on each production, what was worked, what was paid, by whom, in which currency, and what is still owed.

    The problem

    On a Chinese shoot, money moves through three parties and three currencies: the production pays the agency in yuan, the agency pays actors in dollars or dong, with day rates, standby rates, overtime and commissions in between. On The Wandering Earth 3 I tracked every working day and overtime hour by hand. A single mistake means an actor paid wrong, or a production billed wrong.

    What I built

    A payment tracker. Contracts with their roles and rates, actors assigned to them, days and overtime logged, then an overview in any currency: money in, money out, what the production still owes, what the agency still owes.

    A contract signing tool. Western e-signature services don't work reliably behind the firewall, so I built my own: multilingual, reachable from China, no third-party platform.

    Tracker: roles and rates on a contract, then each assigned actor with shoot days, overtime, amounts due, paid and owed, and status. Names and amounts blurred.
    A contract: roles, then every actor with days, overtime, what's due, paid and owed. Real data, blurred.
    Tracker overview: money in, money out, outstanding, net cash position. Amounts blurred.
    Agency overview, in any currency.
    02

    Le soleil n'est pas une boule

    RoleConcept, direction, dramaturgy, producer
    Team12 to 13 people, all volunteers
    Period5 years, 2017 to 2022
    CompanyLes Lions sous la Lune

    Result: a 1h45 show built and staged by 12+ unpaid people over five years, ~€8,000 raised, nine residencies, a full set built by hand.

    Theater stage in magenta light, luminous cubes scattered around two actors and a guitarist
    On stage, January 2020. Every cube is lit from inside, wireless, on battery, cued from the lighting desk.
    Poster: glowing cube outlines above small figures in a red and blue frame
    Poster.

    The question

    A play about free will, written collectively with the actors. Our research in philosophy and neuroscience led to a paradox: our societies treat self-control as a fact, while neuroscience suggests we have very little of it.

    That became a hard problem for justice. If so much of what we do is determined, how responsible is a man who commits rape?

    The answer we staged

    We found that we are always telling ourselves a story. When we are not the hero of it, we watch other people's lives as if we were at the theater. That is why people don't step in when violence happens in front of them: it doesn't feel like their role.

    So the audience is given total freedom from the first minute, and a rape is staged, crudely. Will anyone intervene? Then the play stops for a debate. Being a spectator is already being an actor in what you see.

    From a cardboard model to the stage

    Scale model: white paper cubes and wooden frames with small cut-out figures under purple light
    Scale model, 2018. Testing how the cubes read under each color.
    Scale model under red and orange light, three figures between cubes
    Scale model. Inspired by James Turrell and Olafur Eliasson.
    Wide shot of the stage in blue, cubes glowing magenta, a guitarist and actors
    The real thing, full run-through at Université Paris 8, January 2020.
    12+volunteers held for 5 years
    ~€8kraised for sets and light
    9residencies
    2h15 → 1h45cut before the final version

    What went wrong, and what I did

    Leading 12 volunteers for five years

    Nobody on the team was paid, so the only thing holding it together was the project itself: a clear organization, and an ambition big enough that people wanted to see it through. Keeping that alive for five years was my job. It also meant hard calls. Early on I sometimes gave the wrong task to the wrong person, and let my own pressure spill onto the team. I learned to recast roles when something wasn't working, to part ways when I had to, and to restart the work instead of forcing it. The show reached the stage.

    Building the set with no workshop

    The cubes came from my set designers, and my stage manager Axel found how to run them: wireless, battery-powered, controlled in DMX. Then came the real problems. Where to build dozens of cubes up to 1 m wide, what to build them from, where to paint them and let them dry, where to buy and receive the batteries, how to fix them into the wood.

    LEDs that wouldn't stay on

    The hardest problem: the LED strips along the cube edges never held for long. We had to glue them back again and again, show after show.

    Funding it

    Around €8,000 from university and student funds (FSDIE at Paris 3 and Paris 8, CROUS, Maison des initiatives étudiantes) plus crowdfunding. Every line of the budget went into sets, light and costumes. Nine residencies, from Clos Sauvage and the Monfort to the Centquatre, were given in kind.

    Covid

    We were about to perform for a large number of theater professionals, after excellent feedback. Covid cancelled it. I brought the show back once afterwards.

    Knowing when to stop

    2h15 was too long, so I cut it to 1h45. I plan to stage it again.

    03

    The Wandering Earth 3: getting foreign actors to set, and paid

    RoleForeign cast coordinator, also cast
    ProductionChinese sci-fi feature, dir. Frant Gwo
    PeriodFeb to Apr 2026, Qingdao

    Result: the foreign cast of a major Chinese feature contracted, flown in and paid across three currencies, with no legal entity behind me yet.

    Paying across currencies

    The money came from China in yuan. The actors needed dollars or Vietnamese dong. And I had no legal entity yet to act as a partner. I found intermediaries who could receive the money in one currency and pay it out in another. That took weeks of research and calls: one contact leading to the next, until the chain worked.

    Contracts

    Building contracts that worked for a Chinese production and for foreign actors, in several languages. Western e-signature tools don't work reliably behind the firewall, so I built my own signing tool: multilingual, reachable from China, and not dependent on a third-party platform.

    Getting people there

    Making sure flight tickets were actually issued and received, for actors flying in from several countries. I built a process for each step.

    Actors who don't show up

    Some actors committed, then didn't come. I had to replace them at the last minute and agree on a solution with the production.

    Duyên grew out of this shoot.

    04

    Training adults for a national certification

    RoleInstructional designer, lead trainer, cohort referent
    ClientsSocial Builder, WebForce3, Alphalia, m2i, Othis
    Period2021 to today

    Result: cohorts of adults certified by the French state, 4.7/5 learner satisfaction, 100% would recommend.

    The job

    France's national Digital Advisors program trains people from very different backgrounds to help citizens with digital tools, and certifies them with a state diploma (REMN, level 5). I designed modules and led cohorts of 16 to 25 adults, mostly remote, sometimes as the referent trainer coordinating a team of six.

    Modules I wrote and taught: IT basics, support postures, media education, digital identity, oral and written communication. Courses up to 315 hours.

    How I teach

    I come from theater, so I build training like a rehearsal: people learn by doing, in front of others, with feedback right away. I prepare learners for the exam early and repeat the key points often. I once asked a learner if I had been too demanding. He said the regular reminders were exactly what got him through.

    I also co-designed "Pouvoir +", a course on agency for job seekers, structured as a play in two acts, and wrote its trainer's guide.

    700+hours delivered
    250+advisors trained
    4.7/5learner satisfaction, 2025
    315 hlongest course led
    06

    Bulle: producing a show across three countries on almost nothing

    RoleWriter, director, performer, producer
    Team1 actor, 1 or 2 musicians, 1 stage manager
    WhereParis, Tunisia, Ho Chi Minh City
    PartnersInstitut français de Tunisie, Institut français du Vietnam

    Result: 8 performances in 3 countries, close to 1,000 spectators, entirely self-funded, press coverage in 8 Vietnamese outlets.

    Léo on one knee reaching upward, a đàn tranh player behind him on a dark stage
    Ho Chi Minh City, 2025, with đàn tranh player Nguyễn Ngọc Hằng.
    Hand-painted blue poster: Bulle ou l'errance des monts-vermeils, written, performed and directed by Léo Barcet, 45 minutes
    Poster.

    The project

    A 45-minute poetic solo about solitude, with live music. I wrote it, directed it and perform it. It was designed to travel light: one actor, one or two musicians, one stage manager. At French rates it costs about €1,000 a night, which is what lets it tour.

    What producing it took

    Invited to Tunisia with financial support from the Institut français de Tunisie. In Ho Chi Minh City, I recast the music with a Vietnamese đàn tranh player, staged it at Dancenter, secured a communication partnership with the Institut français du Vietnam, ran four performances in French and English, and got the show covered by eight outlets, from Việt Nam News to Tuổi Trẻ.

    Étienne Ranaivoson, Consul of France in Ho Chi Minh City, after the show.
    Vũ Phi Anh, Institut français du Vietnam.
    Léo kneeling, looking up, hand raised, the musician playing behind
    In performance.

    Việt Nam NewsThe Saigon TimesTuổi Trẻ NewsLe Courrier du VietnamSài Gòn Giải PhóngNgười Đô ThịO VietnamVietnam.vn

    07

    How I run a project

    06

    What others say

    As a trainer

    Learner satisfaction survey, 2025

    4.7/5overall rating
    9.3/10relevance of the course
    100%would recommend me as a trainer
    100%rated the course relevant
    "A very competent trainer, committed and devoted to his learners, with a captivating way of speaking. He used diplomacy and listening to keep everyone involved, and brought all of us to the point of being able to pass the certification. An excellent trainer I hope to meet again."
    Laurent Fromentin, former learner, La Poste · learner survey 2025 (translated)
    "Very invested in his mission. Always listening and ready to motivate his cohort. Léo leaves no one behind and makes sure everyone takes part."
    Christèle Vasseur, former learner · learner survey 2025 (translated)
    "I passed the CCP1. Thank you for your availability and your listening. In a later training I realised that not all digital advisors, including some who had been in post much longer, had received such a high-quality training."
    Béatrice L., former learner, now digital advisor at La Poste · 2025 (translated)
    "Thank you for the training, and for helping me get my first diploma. You always listened, and your advice and motivation kept me focused, even when it was hard. Most of the group I'm still in touch with passed their CCP1, me too."
    Maureen F., former learner · 2025 (translated)
    "I got both certifications, I'm so happy. I listened to your advice."
    Sandrine D., former learner, City of Savigny-le-Temple · 2025 (translated)
    "Thank you so much for everything you brought me during the training, and for always being available to answer my questions."
    Laurent C., digital advisor, City of Gien · 2026 (translated)
    "Thank you for orchestrating the trainers' introduction at the very start of the session, with real time given to the subject. I hadn't had this launch step with the cohort lead in the two previous groups, and it makes a difference."
    Jenny Augias, fellow trainer, national Digital Advisors program · 2021 (translated)

    On stage

    "I noticed Léo Barcet's professionalism and determination. A lively character, promising for the strength of his proposals and the rigor and will with which he carries them out."
    Pascal Rambert, playwright and director, former head of T2G Théâtre de Gennevilliers · recommendation letter, 2018 (translated)
    "I saw the professionalism and rigor of Léo Barcet and his deep commitment to the performing arts. A dynamic, cultured and inventive young man, energetic and determined."
    Pierre Katuszewski, Université Bordeaux Montaigne · recommendation letter, 2018 (translated)
    "I have seen countless plays in my life, but this performance is one of the most transcendent, distinctly and inherently human I have ever had the privilege of witnessing."
    Matthew Alan Ward · on Bulle, Ho Chi Minh City, 2025
    "A rare moment in Saigon. A sensitive dialogue between theater and traditional Vietnamese music. Events like this deserve to be supported and shared as widely as possible."
    Jaime Peypoch, Secretary General, Français du monde-ADFE · on Bulle, 2025 (translated)
    "An amazing and unique performance, full of beautiful poetry and deeply touching moments. It truly reminded me to look deep inside my heart and mind."
    Tra My Nguyen · on Bulle, 2025
    "A strong, deep and poetic show. I hope you can support it, it deserves it."
    Sara Sismondi, theater teacher, Ho Chi Minh City · recommending Bulle to a school in Hanoi, 2025 (translated)
    "A psychological bomb that questions many of the foundations of our society."
    Thomas Haguet · on Le soleil n'est pas une boule (translated)
    "Let yourself be surprised by this very poetic and original show." · "What a beautiful show. Very moving, and the music sublime."
    Juliette Carrasco, Beata Ufniarz · on Bulle, 2025 (translated)

    Contact

    leobarcet.pro@gmail.com

    French (native) · English and Spanish (C1/C2) · Vietnamese (B1)

    M.A. Université Paris 8 · B.A. Sorbonne Nouvelle · Cours Florent · LinkedIn