Inspiration

We have plenty of author friends who often struggle with deciding exactly how their characters may respond to certain situations or plots. Given the nature of the incident.io prompt, we thought this was a great match between the two, given the ever-evolving brain of an author dedicated to their plot.

What it does

Our application stays up-to-date with stories as they're written, creating in-depth and personalised profiles for main and side characters within the story. Their personalities, motives, and relationships are monitored and develop as the story does. We've even added the ability to talk to your characters as if they were alive! This is done through a ChatBot interface, where an AI uses all gathered information to respond to you as if they were living your plot.

How we built it

For our AI-system, we used OpenAI's models with LangChain in Python to tie them together. We used sqlite as our back-end for persistent data, whilst our front-end took the form of an easy-to-use and friendly Flutter web-interface. Initially, our build involved Google Docs' API and would use this for real-time profile generation. Unfortunately, due to the limitations of the API (incredibly slow response times), we had to abandon this in favour of local documents instead.

Challenges we ran into

AI hallucinations, as ever, were a big problem for us. Not only would it assume future knowledge of character's feats and lives (we used Harry Potter as test-data), it would lie and fabricate experiences whilst being spoken to in our chat window. We eventually got around this (we think) through temperature control and strict prompt engineering.

Accomplishments that we're proud of

It works! (Mostly) And it looks pretty good! This was our first Hackathon and we've had a great time overall.

What we learned

The good OpenAI models are definitely out of Hackathon budget. And also pretty slow. Meanwhile, the cheaper ones are terrible. Not sure what was learned here.

What's next for CharacterCompass

AI Agents as the authors.

Built With

Share this project:

Updates