Booth Beam - Month 4
Table of Contents
One-Line Summary #
I simplified the product and narrowed its audience, but lost momentum before completing plan enforcement.
New here?
Hi, I’m Aleksandar. I’m a software developer and founder of small, indie tech businesses. I’m currently working on a microSaaS called Booth Beam.
Every month, I publish a retrospective like this one to share how things are going with my project and my professional life overall.
Highlights #
June was mostly about reducing complexity. I restructured how playlists work, simplified the Channel interface, narrowed the product positioning to a single audience, and introduced the foundations for paid plans.
- Made playlists global so they can be reused across all channels.
- Simplified Channel navigation and made the Broadcast action more accessible.
- Repositioned Booth Beam exclusively for conference and trade-show booth teams.
- Defined the Starter, Basic, and Advanced paid plans and published the pricing page.
- Added plan information, manual plan assignment, and frontend screen-limit handling.
- Released the Channel and Playlist restructuring to production without issues.
Goals Grades #
At the start of each month, I declare what I’d like to accomplish. Here’s how I did against those goals:
Refactor the frontend UX to reduce confusion and improve overall usability.
- Result: Completed the Channel and Playlist restructuring and released it to production.
- Grade: A
Previously, every playlist belonged to a specific Channel. Once a playlist was created, it could only be used inside that Channel.
Several testers expected to reuse the same playlist across multiple Channels. When they opened another Channel and could not find a playlist they had already created, the product felt inconsistent and confusing.
Playlists are now global and can be used by every Channel in a workspace. Existing playlists were migrated automatically and became global.
The application still supports private Channel playlists internally. These playlists can only be used by the Channel they belong to, but the option to create them is currently hidden from the interface. For now, users only work with global playlists.
The Channel interface was also simplified. Navigation to playlist editing was previously unclear, and the Broadcast button was not prominent enough. The Broadcast action has now been moved to the top-right section of the page, where it is easier to find and access.
The backend had already been designed with global playlists in mind, so most of the work was on the frontend. The changes were released to production without any problems.
The main benefit is straightforward: users no longer need to wonder where an existing playlist went or why it cannot be used in another Channel.
Implement clear separation and functionality for different plan types within the app.
- Result: Defined the plans, published pricing, added plan management, and implemented screen limits on the frontend. Backend enforcement remains unfinished.
- Grade: B
I defined three paid plans: Starter, Basic, and Advanced. The primary difference between them is currently the number of screens included in each plan.
I also published a new pricing page with per-event and annual options.
Inside the application, users can now see their current plan. In the admin section, I can manually assign or change a workspace’s plan and its expiration date.
The frontend also checks the screen limit. When users reach the number of screens included in their plan, they see a message explaining that they have reached their limit.
However, this is not complete plan enforcement yet.
The limitation is currently handled only on the frontend. The backend still needs to validate every restricted action independently. Without that validation, the plan system cannot be considered fully implemented.
Plan expiration is also incomplete. The application stores the expiration date and displays the current status, but expired plans do not yet lose their capabilities or automatically return to the Free plan.
Users also cannot purchase a plan directly. Plans must still be assigned manually, and payment requires integration with a Merchant of Record.
The structure is in place, but the part that makes plans operational as a business system is still missing.
Booth Beam #
Metrics #
| April 2026 | May 2026 | |
|---|---|---|
| Website visitors | 83 | 30 |
| Delivered stories | 3 | 4 |
Current product state #
Playlists are no longer tied to one Channel #
The previous playlist model made sense from a technical perspective, but it did not match how testers expected the product to behave.
Users saw playlists as reusable collections of content. They did not see them as content owned by one specific Channel.
That difference between the domain model and the user’s mental model created unnecessary friction. Making playlists global brings the product closer to the way people naturally expect to organize and reuse their content.
Private Channel playlists remain supported because they may still be useful for specific cases. However, exposing both options now would introduce another decision that most users do not need to make.
The simpler approach is to present only global playlists until there is a clear use case for bringing private playlists back into the interface.
One product, one audience #
The Booth Beam website previously tried to address several audiences:
- Conference and trade-show teams
- Companies with screens in their lobbies
- Small IT businesses displaying dashboards on office screens
- Other small digital-signage use cases
At this stage, I cannot properly develop, explain, and market the product for several different verticals at the same time. Each audience has different problems, expectations, language, and reasons for buying.
I needed to choose one.
Booth Beam is now positioned specifically for booth teams attending conferences and trade shows.
I rewrote the landing-page copy and removed references to offices, lobbies, dashboards, and other general digital-signage use cases. The new primary message is:
Turn Any TV into a Trade Show Booth Screen
Control booth screen content remotely — run raffles, show agendas, display QR codes, collect leads, and more. No cables, no hassle. Just a browser and full control from your laptop or phone.
I consider this the final positioning direction for now, but that does not mean it has been validated.
The new copy has only recently been published. I still need to test whether booth teams understand the message, recognize the problem, and see enough value in the product to use or pay for it.
Pricing exists, but purchasing does not #
The pricing page now gives Booth Beam a clearer commercial structure, but publishing prices is not the same as having a working sales system.
Users cannot purchase a plan directly. There is no Merchant of Record integration, plans must be assigned manually, and backend restrictions are not finished.
There are also no paying users yet.
The work completed this month establishes the foundation for monetization. The next step is making the entire process functional—from purchasing and activation to expiration and backend capability enforcement.
What Didn’t Go As Planned #
Plan implementation stalled before completion #
-
What happened: Plan implementation took longer than expected, and backend enforcement was not completed.
-
Why: I had problems maintaining focus and gradually lost motivation to continue working on the feature.
-
Category: Focus and estimation
By the end of the month, I was struggling to finish the plan functionality. Instead of continuing to force progress without momentum, I changed what I was working on.
That helped me avoid getting completely stuck, but it also left an important feature only partially completed.
The frontend now communicates the plan limits, but the backend does not enforce them. This means the feature appears closer to completion than it actually is.
Wrap up #
What got done? #
- Made playlists reusable across all Channels.
- Automatically migrated existing playlists to the global model.
- Simplified Channel navigation and moved the Broadcast button to a more accessible position.
- Released the Channel and Playlist restructuring to production.
- Narrowed Booth Beam’s positioning to conference and trade-show booth teams.
- Defined the Starter, Basic, and Advanced paid plans.
- Published the Booth Beam pricing page.
- Added manual plan assignment and plan-status information.
- Added frontend handling for screen limits.
Goals for next month #
My main goal for July is to get back in the saddle.
Before adding another large system, I need to redefine my personal goals for Booth Beam and decide what the product actually needs me to prioritize next.
For July, the goals are:
- Reassess my goals for Booth Beam and define a smaller, more focused set of priorities.
- Establish a clearer order for product, business, and validation work.
- Add new content blocks that booth teams can include in their playlists.
The immediate objective is not to create the largest possible roadmap. It is to restore momentum and make sure I am working on the right things.