Hi everyone! I’ve been working on an open-source research project over the last few weeks called bot-roulette. The goal of the project is to build a library that simulates a realistic persona using an LLM, paired with a web UI to test it out in a "Chatroulette"-like environment from the bot's perspective. As we all know, building realistic personas is a challenging task for several reasons. To address some of these issues, I built a pipeline that constructs a complex personality starting from just a few base traits: Life Interview: Based on the initial traits, the persona is interviewed by another agent following a semi-structured protocol modeled after the American Voices Project (AVP). The output enriches the original persona definition. Simulated Social Interaction: The persona then interacts with another agent in a simulated "Chatroulette" environment. The tone and behavior exhibited during this interaction are used to refine its profile further. Ready for Deployment: Once these steps are complete, the persona is fully constructed. At inference time (as well as during the build phase), the persona is instructed to follow a State → Thoughts → Reply chain-of-thought pattern. Before generating a message, it outputs three tagged sections: State: The persona's current mood (e.g., still sleepy, this didn't move me much). Thoughts: A raw, first-person inner monologue in its native language. Reply: The actual message sent. By forcing the model to write down its thoughts first, the final reply becomes significantly more realistic and much less "assistant-like." Additionally, after every turn, a secondary model acts as a gatekeeper. Rather than rewriting the text, it checks for five specific slips: Assistant Leak, Identity Break, Fact Contradiction, Knowledge Overreach, and Thought-Language Mismatch. If the output fails any check, the turn is rejected and regenerated. Alternatively, instead of generating a persona purely from base traits, you can also build one from a real CV (just make sure you have the person's explicit permission first!). You can try out the project as a library, through a simple CLI, or via the web interface for generating and interacting with bots. The Web UI supports OpenRouter and OpenAI-compatible endpoints (so it works with local models), though I’ve mostly tested it using flagship models via OpenRouter. The primary requirement is that the model must be multimodal, as the same model is used for CV data extraction (treating the CV as a series of images). Repo: https://github.com/bot-roulette/bot-rouletteI’m releasing this as an open/inspectable research tool, and I’d love to get feedback from the community. Let me know what you think! Disclaimer Obviously, there’s still plenty of work to be done! Currently, when you start chatting with a bot, it generates an initial context based on your local system time to make the scenario feel realistic (e.g., the bot being aware of the time of day). However, there’s no real progression of time yet—the bot only exists within the context of the active chat, meaning nothing happens to it between conversations. There are still so many mechanics like this that could be added!   submitted by   /u/Temporary-Baby9057 [link]   [comments]