Inspiration
I was watching a client panic about a post that had gone live two hours earlier. They had spent three days on it — five caption drafts, the right hashtag set, two rounds of design feedback. The post was bombing. Comments were confused or annoyed. By the time they pulled it, the follower count had already moved.
What got me was not the failure. It was that nobody had thought to ask the obvious question before posting: how will our actual audience receive this? Not "will millennials like this?" in the abstract — but will our specific followers, the 24-year-olds who follow us for sustainability content and immediately spot anything that feels like greenwashing, stop scrolling or not?
Every analytics tool I looked at is built to explain what already happened. There was nothing that answered the question before you posted. So I built it.
What it does
Social Resonance is a pre-publication simulation platform for marketing agencies and brand managers.
You set up your brand once — tone of voice, what it stands for, what it never says. Then you build audience personas describing your actual followers: their age, their values, what content makes them engage, what makes them unfollow. Each persona gets an audience size estimate so simulations produce weighted population-level numbers, not just one fictional person's opinion.
When you have a post ready, you paste the caption, upload the creative, and pick the platform. The app pulls current trending formats for that platform, then simulates how each persona segment reacts. You get a Resonance Score, a sentiment split, estimated engagement rates, and a realistic sample comment from each persona in their own voice. If the score is below 70, red flags appear pointing to the specific element causing the problem.
You can request three AI-generated rewrites, each with a projected score, and re-simulate whichever one you want. The whole cycle runs in under three minutes.
After you publish externally, you log your actual engagement. The system compares prediction to reality for every post and tracks accuracy over time. After enough posts, patterns emerge — which content types the model reads accurately, which persona segments it consistently underestimates.
How we built it
Everything was built on MeDo.
The simulation engine runs on the LLM plugin. Each simulation call passes the brand context, the selected personas with their population weights, and live platform trend data from the Web Search plugin — which runs a fresh search before every simulation. The response is a structured JSON object the app parses into the visual results panel.
The OCR plugin handles creative uploads. When a user drags in an image mockup, OCR reads any text in the creative and adds it to the simulation context automatically. The AI reacts to the full post, not just the caption.
Stripe handles Pro plan billing. MeDo's native backend stores agencies, brands, personas, simulations, and post history across sessions.
The simulation system prompt was the hardest design problem. MeDo's multi-turn chat was genuinely useful here — I could iterate on it in real time, test a version, see what broke, and fix it without touching any code.
Challenges we ran into
Early simulation versions gave all personas a positive reaction with slightly different wording. Every persona was basically enthusiastic. Getting the model to produce genuinely different reactions — where Zoe's sustainability values actually cause her to reject a post that Linda finds warm and familiar — required being very explicit in the system prompt about how each persona's stated hates should drive their response, not just their surface demographics.
The population weighting was also tricky. If Zoe is 60% of your audience and Marcus is 40%, the aggregate like rate should not average their individual rates equally. It needs to reflect the actual composition. Getting consistent weighted output from the LLM took a few prompt iterations to stabilise.
There was also a gap in the OCR-to-simulation pipeline where extracted image text was not being passed through to the LLM call. The simulation was only reading the caption. That took a round of prompt debugging to find and fix.
Accomplishments that we're proud of
The prediction vs reality tracker is the thing I keep coming back to. Most tools give you a score. Social Resonance asks you to return after you post and log what actually happened. Over time it shows where the simulations are accurate and where they miss. That feedback loop is what separates it from a one-off testing tool — the platform gets more useful the longer an agency uses it.
The persona population weighting is also something I have not seen in any affordable product in this space. It makes the output feel like real market research numbers rather than a gut check dressed up with percentages.
What we learned
Audience psychology is more granular than most marketing advice acknowledges. The difference between a post that works for a Gen Z sustainability audience and one that alienates them is often a single phrase — one implicit message that contradicts what they care about. Building and running simulations made that specificity obvious in a way that general content advice never did.
I also learned to respect the simulation system prompt as a design artifact. It is not boilerplate. Every word in it shapes the quality of the output. The prompt that produces genuinely differentiated persona reactions took more iteration than any UI element in the project.
What's next for Social Resonance
The accuracy tracker needs a larger sample to produce reliable patterns. I want to add industry benchmarks so new accounts have a reference point before they have built up their own history.
Platform-specific persona templates are also on the list — pre-built audience types based on publicly available research for Instagram, TikTok, and LinkedIn — so agencies can get started without building every persona from scratch.
The simulation engine is solid enough to expose as an API. That is where I want to take it after the hackathon: letting agencies plug it into their existing content workflows rather than coming to a separate tool.
Built With
- backend
- database
- ernie-llm-(baidu-ai-studio)
- medo
- medo-ocr-plugin
- medo-web-search-plugin
- native
- stripe
Log in or sign up for Devpost to join the conversation.