I built BeyondAI Chat so people can have ongoing conversations with AI models. A user sends a message and sees the answer appear as it is generated. Chats are saved to their account, so they can return to them later. Their subscription determines which models they can use.
IResults / Impact
I delivered a working chat product with saved conversations and model access tied to each account. Users can return to a chat later and choose from the models available on their plan. The app checks access and usage limits on the server before sending a request to OpenAI.
IIProblem
I wanted the experience to work as an ongoing conversation rather than a series of isolated prompts. The app needed to show answers as they arrived and preserve the conversation afterward. It also needed to apply subscription rules whenever someone chose a model or sent a message.
IIIWhat I Owned
I built the chat interface and the backend that sends requests to OpenAI. Responses stream into the conversation while they are generated. I built the saved chat history so users can pick up where they left off.
I also built the account and subscription flows around the chat. Users confirm their email when they sign up, and Stripe handles checkout. The backend uses their subscription to decide which models they can access. I deployed the Dockerized services to Railway.
The chat also supports alternate versions of a conversation. A user can edit an earlier message or regenerate an answer without losing the previous version.
IVArchitecture
When a user sends a message, the backend checks their account and whether they can use the selected model. If the request is allowed, it calls OpenAI and streams the response to the app. The answer is saved with the conversation so it is still there when the user returns.
Chats and messages are stored in PostgreSQL. Messages retain the links needed to show an alternate version when someone edits a prompt or asks for another answer.
VHard Parts / Tradeoffs
Streaming gives users feedback while an answer is being generated, but the response also has to become part of the saved chat. I built the flow so the answer appears on screen as it arrives and remains in the conversation afterward.
VIWhat I Would Improve Next
I would make remaining usage easier to see inside the chat.