I Built a Photorealistic AI Virtual Try-On App Entirely on a $150 Phone (And How We Pivoted When It Failed) Two young developers, ages 12 and 13, built and launched ACA, a privacy-first virtual try-on app, entirely on a $150 Android phone using Termux. After 54 tests and 13 alternative approaches to in-browser 2D garment warping failed, they pivoted to a split-inference architecture that offloads generation to a Hugging Face GPU queue via @gradio/client over WebSockets, producing photorealistic fabric folds and lighting. The app is live with authentication and database persistence, and the team says it does not train on or harvest users' facial data. Most people think you need a MacBook, cloud credits, and a team of engineers to build a generative AI product. My co-founder Akhouri 13 and I 12 just proved that wrong. We built and launched ACA , a privacy-first virtual try-on app, entirely using a $150 Android phone, Termux, and pure stubbornness. But we almost didn't make it. Here is the story of our pivot. We started by trying to run Virtual Try-On VTON entirely in the browser. We used MoveNet TensorFlow.js to extract skeletal keypoints and Barycentric Triangle Warping to stretch a 2D garment image over the user's body. It was a disaster. Akhouri ran 54 systematic tests and 13 alternative approaches . Every single one failed. The fabric didn't bend, the shadows didn't match, and it looked like a paper cutout floating in the air. My co-founder sent me a message: "ACA is hard or impossible in this case. All paths are impossible." I refused to give up. 86.6% of people don't use virtual try-on because they don't trust companies with their photos. We had to solve this. I tried to build a local Trusted Execution Environment in Termux. What followed was a week of pure technical hell: No matching distribution found trying to install MediaPipe. Cannot find module 'glob' , breaking npm entirely. We realized trying to force a massive diffusion model onto a POCO C55 was like fitting a V8 engine into a bicycle. So, we pivoted to a Split Inference Architecture : @gradio/client to bypass CORS and join the Hugging Face GPU queue via WebSockets . I fixed the image extraction logic. I uploaded a photo and a clean polo shirt. I hit generate. The progress bar said: In Queue... waiting for GPU... I waited 60 seconds. Then, the log flashed: βœ” AI Generation Complete The canvas rendered. The AI had generated fabric folds, shadows, and perfect lighting matching the background. Not a sticker. Not a warp. Photorealistic. We literally screamed. We did it. Here is the exact output from that session: 1. The Garment Input 2. The Original User Photo 3. The ACA Generated Output A Note on Privacy: You'll notice the faces in our test images are blurred. This isn't a bug; it's a feature. ACA is built on a strict privacy-first philosophy. We don't harvest biometric data, and we don't train our models on our users' faces. Even when testing our own app with family, we protect their identities. When you use ACA, your face belongs to you, not our servers. We are live at https://aca-vto.netlify.app/ https://aca-vto.netlify.app/ . Is it perfect? No. But it works. It’s a fully functional SaaS product with authentication, database persistence, and generative AI, built with zero budget and deployed entirely from a mobile phone. To anyone who says you need expensive hardware to build AI: you don't. You need a terminal, and the stubbornness to keep going when the code says "impossible." We are just getting started. πŸ―πŸš€ Shoutout to the HYNAWEB engineering team: Akhouri Anmol Kumar, CTO