Shadow-Proxy
Inspiration
Shadow-Proxy started as a weird blend of psychology nerd stuff and cat parent vibes. The idea was to take this whole “digital twin” thing and make it less about pretending to be perfect online, and more about figuring out the parts of yourself you never talk about. I named it after Carl Jung’s “shadow self” concept, and also after my cat, Shadow, who is a lot less mysterious than the human psyche but just as unpredictable.
In a world where everyone’s busy polishing their public image, I wanted to build something that digs into the messy, subconscious stuff. Basically: what if your AI avatar reflected not just the person you act like online, but the whole package, including the stuff you hide from yourself? This is supposed to be a tool for real self-discovery, not just another “rate my selfie” app.
What It Does
Shadow-Proxy is a web app that builds an emotionally expressive AI avatar from a single photo. But it’s not just a chatbot. This thing evolves. It gets to know your quirks, your contradictions, and even asks your friends to call you out on your own blind spots.
- Emotional Avatar Generation: You upload one photo. The AI uses it to make a whole set of emotional faces.
- Persona Synthesis: Connect your social media. The Proxy analyzes your posts, figures out your style, and builds a personality prompt that’s more accurate than your LinkedIn.
- Shadow Analysis: The AI plays Jungian analyst, looking for contradictions and weird patterns to guess what’s hiding in your “shadow self.”
- Dynamic Interaction: The Proxy changes its mood and responses based on your conversations, and it actually remembers what you’ve said before.
- Social Feedback Loop: Share your Proxy and it’ll ask your friends the questions you’re too awkward to ask, then integrate that feedback into its personality.
How I Built It
Shadow-Proxy is a serverless app, so I never have to deal with some sweaty server in a closet. Everything is modern and held together by the magic of cloud services.
- Frontend: React, TypeScript, Vite, and Tailwind CSS. It’s fast, looks good, and doesn’t break (most of the time).
- Backend: Netlify Functions running JavaScript modules. No server drama.
- Database & Storage: Firebase for user data, avatar jobs, and hosting all the weird photos people upload.
- AI & Machine Learning: All the AI magic runs through OpenAI’s latest models (gpt-4o and gpt-4o-mini).
- Asynchronous Jobs: For slow stuff like persona synthesis and avatar generation, I built a background queue with Firestore. Netlify runs a job every minute to keep things moving without freezing the UI.
Challenges
No project worth doing comes without pain. Here’s what almost made me rage-quit:
- Serverless Timeouts: Netlify does not mess around with their 10-second limit. Had to break up big jobs into async tasks with a queue.
- State Synchronization: After avatar jobs finished, the UI would forget to update. Found out I needed a real-time Firestore listener. Next up: implement
onSnapshotand finally fix it for good. - Clunky Onboarding: Users could spam “Generate” and make duplicate proxies. Fixed by disabling the button and forcing them to name their Proxy before moving on.
- API Response Parsing: OpenAI loves to return JSON inside markdown code blocks for some reason. Had to write logic to clean up their responses and actually get the data I needed.
Accomplishments
Some stuff I’m actually proud of:
- Embracing the Shadow: Decided not to make just another “digital twin.” Went all-in on the Jungian shadow idea, which gave this project an actual point.
- Social Feedback Loop: Came up with a way for the Proxy to gather honest feedback from your friends. This makes the Proxy smarter and lets you see how others really perceive you.
- Asynchronous Architecture: Got the backend to do heavy lifting in the background so the app never feels slow or clunky. Pulling that off in a hackathon is a minor miracle.
What I Learned
This was one big learning curve. Here’s what stuck:
- User Experience Is Everything: Doesn’t matter how smart your backend is if the user doesn’t see instant feedback.
- Prompt Engineering Makes the Magic: The real power of AI apps is in how you ask the models to act. Getting detailed with prompts (“Act like a Jungian analyst”) led to way deeper, more interesting results.
- Be Pragmatic: Sometimes, you have to cut features or fudge things for the demo. Disabled some complex logic in the API to make sure the presentation worked. Good enough for now.
What’s Next
Not stopping here. Here’s what’s coming up:
- Multi-Proxi Chat: Allow for multiple proxies to talk to eachother.
- Custom Contexts: Set up scenarios to serve as the backdrop for conversations between 1 or multiple proxies.
- Real-Time Sync: Adding onSnapshot listeners so the UI is always up to date.
- Full Social Shadow: Let proxies gather and blend anonymous feedback from friends.
- Emotional Nuance: Keep tuning the prompts so the Proxy acts less like a bot and more like an emotionally complicated human.
Built With
- firebase
- javascript
- netlify
- openai
- react
- typescript
Log in or sign up for Devpost to join the conversation.