
Database-Connected AI Chatbot
I built a conversational assistant in five deliberate stages, each one adding a single capability so the reason for it was obvious: a Streamlit chat interface, a first OpenAI call, conversation memory, tool calling, and finally a connection to a live database.
Memory was the smallest change with the largest effect. Passing the running message history back with every request turns a stateless endpoint into something that follows a thread, and it costs a few lines. Building it in that order made clear which product behaviours are genuinely hard and which just look hard from the outside.
Tool calling is where the assistant stopped guessing. I registered a weather function against a live API and a student profiles function reading from PostgreSQL, then let the model choose between them. The interesting case is the chained one: asked about the weather where someone lives, it calls the database for that person's city first, then calls weather with the answer, deciding the order itself rather than following a script I wrote.
The last stage was the system prompt, which sets how the assistant speaks without touching a single line of logic. Same tools, same memory, completely different product feel. It runs on Streamlit with a Python backend and deploys to Fly automatically on every commit.

Ullas skipped presentations and built real AI products.
Ullas D.P was part of the June 2026 cohort at Curious PM, alongside 20 other talented participants.
