Inspiration

I've been a content creator for years, with hundreds of blog posts under my belt. I also write a weekly newsletter that highlights community contributions like blogs and videos. I see too many blog posts these days that are clearly written by AI, are void of any human personality, and sometimes - simply wrong. I want to help bring personality back to content, so I made Betterer (yes, that name is intentionally cheeky) to do just that.

What it does

This is honestly a full-blown multi-tenant SaaS app that uses an agentic workflow to pass your blog posts through several layers of analysis to help you sound more like you, NOT like an LLM, and spouting out facts like a champ. After you write your content, you submit it for review, and 30-40 seconds later, you have a detailed and comprehensive analysis that offers suggestions on how to improve.

How we built it

I built this on a serverless architecture using API Gateway, Lambda, DynamoDB, EventBridge, and Step Functions. Agents use the Bedrock Converse API with AgentCore memory and tools I built and made available via the Dispatcher pattern (not using AgentCore Gateway). All agents are powered via either the Nova Lite or Nova Pro FMs. Step Functions is used to coordinate the workflow across all 5 agents in a determinstic way. I used Kiro as my IDE to help built boilerplate CRUD endpoints and the entire front end. The frontend is built using React with Vite

Challenges we ran into

When I started the project, AgentCore hadn't gone GA yet. So I had to create a custom resource to deploy my memory resource and update an SSM parameter with the memory ARN so I could reference it in my agents. Beyond that, the front end gave me some grief. I went through MANY iterations to make it feel polished and smooth. Sometimes combating complexity added by Kiro is the hardest part about using it.

Accomplishments that we're proud of

Honestly, the fact that I was able to make this fully functional app in a little over a month during my spare time is astonishing to me. Agentic IDEs really are force multipliers and I'm here for it. I'm also proud of the concept of my project. I want to help enable people who want to create but don't know how. I feel like if I can help bring the personality back into content, I've won. Lastly, I think it's really cool what I've done with AgentCore long term memory. I've made it so the more you use Betterer, the more in tune it gets with your tone and style - it uses that information to provide you with more accurate suggestions if you start not sounding like yourself.

What we learned

I learned so much about AgentCore! Even though I didn't use all the services provided, I still really enjoyed learning about them and figuring out where I could potentially add them in the future. I am a big fan of how memory works and how it async turns conversations into long term memories. I also learned a lot about cursor placement in long form content. I originally thought i could just have start and end indexes for replacement text for suggestions, but I was way off. It's a lot about anchoring and before and after context. Pretty cool stuff.

What's next for Betterer

I'd like to extend this with "voice options." Instead of focusing only on you, I'd like to build profiles for people so they could mimic others. I do ghostwriting on occasion and having something that could help me ghostwrite for other people would save me tons of time.

More content

If you want to learn more, I wrote a full description blog post in the Readme of the GitHub repo (attached below)

Built With

Share this project:

Updates