Product & AI Engineer. I build production-grade systems, not just wrappers. Bridging full-stack (Next.js, FastAPI, Postgres) with applied AI and autonomous work
The rule I'd steal from this:
Facts that change belong in your database, not in the conversation.
Chat history is for tone and context. State is for truth.
A chat agent with one big "memory" gets confused fast.
Orbit splits memory into 3 tiers, and each one answers a different question.
Here's the split and why it works 🧵
Why not just stuff everything into the context?
• Old chat contradicts current state
• Long prompts cost more and get slower
• The model starts trusting stale facts over fresh ones
Each tier has one job, so it's easy to see what the model saw.
my friends live in 4 different countries.
so I built us a house 🏠
make your character, send a code, and hang out like you're actually there. dance, swim, play Mafia, Sketch & Guess and more.
free, no download 👇
If you validate LLM tool calls with Pydantic, don't just reject the bad ones.
Send the validation error back to the model as the next message: which field failed and why.
Most of the time the second attempt is correct. Cap it at one or two retries, then fail loudly.
Building AI products for Nigerian users taught me this:
Nobody wants to download your app.
But everyone has WhatsApp open all day.
If your users live in chat, your product should too. The interface people never close beats the one they forget to open.