Vision
For a while now, I’ve wanted to demonstrate a chat interaction integrated with a traditional LiveView application, “Chat with an App”. I’ve been envisioning an application that brings chat and traditional web app LiveView components together in a seamless manner. The user interacts in a chat interface and depending upon the discussion, the application interjects forms, visual feedback, graphs, etc. The concept is to pull LiveView components into the chat discussion where UI elements are more efficient at capturing information or presenting feedback.
I’ve used a few applications that interject UI elements in a fairly static manner. Slack has a JIRA integration that takes a link to a JIRA page and copies information into the slack chat history. Web email applications will take a URL and create a snippet of the page in the email message. However, the integration is often static at the time of the URL link entry. The user doesn’t enter any additional JIRA web app information in the chat communication channel.
For an Elixir application that adds a chat interface, there is the ability to work with LiveView components in the chat communication channel. Let’s imagine a customer service app that pulls in the UI form that is directly related to the user’s discussion. There is no need to return to the main application to change the information that is causing the user’s challenge. The above example is a little contrived and probably someone is already trying to implement this capability.
The problem is what kind of web application would create a “compelling” story for a technical blog.
Boat/Dingy Design Application
I have a hobby of capturing/creating designs of small boats and dinghys using an application called Carson Hulls. It is an old Windows shareware application that can primitively capturing the 3D shape of a boat. The application is old enough that it doesn’t work easily on a modern Windows OS.
After completing a design using Hulls, you save your design and export DXF formatted computer aided design files. The DXF files capture the plyword cutouts used to assemble the plywod into a boat shape. Pulling the DXF files into a general CAD program, the user can mark dimensions that can be used for laying out the pieces on a physical plywood board and hand sawing the pieces.
Let’s take a look at the user interface. The editing interface consists 2D projection views of the 3D boat in a half hull configuration. Half hull models have historically been used to help visualize a boat or ship design before building the real watercraft.
Example of Half Hull Model
Side projection of a boat design called Mouse by Gavin Atkin
Gavin wrote the book Ultrasimple Boatbuilding] The design for the boat can be found at Duckworks
Top projection
Bow projection
Data entry is a cumbersome 3 stage modal field.
For my experiments, the primary design feedback is the displacement overlay on the projections. This image shows the static water line on a 200 pound displacement. I can check whether the boat will draw too much water to be used in
a small creek or pond.
Design Impact from Build Materials
In boat design, there is no perfect boat. There are design trade-offs on the, cost, expected use, sea conditions, safety risks, cargo and boat weight, strength of materials, etc. These complicated design constraints are all outside of the scope of a simple design tool. One of the fundamental design assumptions of this type of design, is the assumption of a planar building material. Plywood is the most common build material for this type of design program. It’s not required, but the simple tool interactions match to some of the characteristics of plywood. Please note, the user must understand that cross laminated plywood resists twisting. Plywood can twist some, but it doesn’t bend in 2 different directions easily.
However, the tool can be used to roughly design a skin on frame or foam boat as alternative build materials. Skin on frame designs emphasize the frame position and frame shape because modern synthetic skin material is not directionally stable. Foam is easy to carve or shape to follow arbitrary twisting. Another building material is strip-built. Small 1 to 2 inch planks are tightly placed next to each other. The strip-built approach is time consuming but can produce beautiful, graceful boats.
Boat Design Chat
Most computer aided design tools are domain agnostic. They provide individual generic drafting tools. The user makes the choice on which edit tool to use when. However, a chat interface offers the opportunity to design higher level tools that meet specific domain needs. The conversation can support an expressive, but still limited, description of higher level design choices without requiring a special icon or simple tool name.
Examples of special tools that I would like in a boat design application are
- Express movement of a point as relative to interaction state history. I.e. move point up a little bit, or a little more than last time.
- When requested, move a 3D point in one direction and one or two other points are automatically moved with the point
- Add/remove a new curved line between two curved lines
- Don’t require mouse interactions to edit a point position
- Cut a design vertically into two individual designs
- Agentic-like behavior to modify a curved line to reach a water-line height goal
Explore language model technology with a small problem
My goal of this exercise is to explore technology tradeoffs that are found in larger language model problems without a huge investment in time and effort. The emphasis on small language models on a small problem will let us run experiments on language model system design, development and deployment. Also, this particular approach is different from the sea of retrieval augmented generation examples and huge problems people are trying to solve using language models.
Agentic system is the buzzword approach for 2025 language model system development. I recently listened to a podcast where Dan Jeffries was emphasizing a three layer approach for agentic system design.
- Big brain - long term planning, cascade of steps
- Little brain - tactical planning
- Tool brain - appendages or tools that provide fine motor control
To my point of view, I think of chatting with a boat design tool as providing the “tool brain” system level. Real agentic behavior is beyond the scope of this boat design effort because it is a niche application for a very small community of users, i.e. not profitable. However, we can probably experiment with an agentic framework in a small way to learn about trade-offs with building agentic systems.
Most of all, the goal isn’t to create a full prototype application for boat design. The goal is to focus on understanding risks and design decisions that could be key to a successful language model project. Think of this series of blog posts as a technology risk focused prototype effort where your management understands that a functioning prototype is not the end goal.
- What can we learn?
- What can we demonstrate?
- How could our results guide a follow-on project that better meets a business objective?