Back to projects
Full Stack2025 - present

Dialog

No-code chatbot builder that lets organizations design conversational flows once and deploy them across WhatsApp, SMS, and other messaging channels.

Dialog

About the project

Dialog is a platform for building and running conversational flows across messaging channels. Organizations design their chatbot logic visually, and Dialog handles delivery to WhatsApp, SMS, and other platforms without any platform-specific code.

The core model is a dialog tree: a versioned graph of cards, each representing a step in the conversation. Cards can hold text, options, questions, logic conditions, or media. Branching is driven by user input and configurable conditions evaluated in sequence. The tree versioning system works like git, with draft and published states, so flows can be iterated safely without affecting live conversations.

The backend is built on Rails 8 with Hotwire, keeping the entire stack inside a single coherent system. Real-time features use ActionCable with Solid Cable, and background processing runs through Solid Queue, both backed by PostgreSQL. An adapter pattern abstracts the messaging platforms, so adding a new channel does not touch the core routing logic.

Challenges

Conversation state is surprisingly hard to manage correctly. A session must track which card the user is on, what fields have been collected, and what external data has been fetched, all while handling retries, timeouts, and out-of-order messages from the messaging platforms.

WhatsApp webhook delivery is not guaranteed to be ordered or deduplicated. The adapter layer includes a deduplication cache and idempotent message handlers so that retries from Meta do not result in duplicate responses reaching the user.

Learnings

Building a product that non-technical users actually operate changes how you think about the domain model. The visual flow editor and the versioning system both exist because operators need confidence that a change will not break a live conversation mid-session.

Solid Queue and Solid Cable proved that Rails can handle real-time, async-heavy workloads without reaching for external services like Sidekiq or Pusher. That simplicity compounds over time.

Gallery

Technologies

Ruby on Rails 8HotwirePostgreSQLSolid QueueWhatsApp APIKamalTailwind CSS

Year

2025 - present

View Live Site