In 1983, as the Macintosh team worked toward launch, Steve Jobs pushed his team, saying, “Real artists ship.”
They had spent years polishing. Now he wanted them to realize that a product nobody can use doesn’t matter, however good it looks in your mind. If you don’t ship, it doesn’t exist.
That phrase has lived in my mind, constantly nagging me this past year. For long stretches of that time, I wasn’t shipping anything at all. The ghost of Steve Jobs was egging me on.
I finally launched something in March, the Alpha of TribeROI. It was a chat interface for community managers. You loaded your community data, asked questions, and an AI-driven chat spat out answers.
The feedback was brutal. People asked how it was different from ChatGPT, what they were supposed to ask, and why all they saw was a spinning hourglass. Some got answers that were flat out wrong. One tester said the app used foul language, which turned out to be the streaming engine dying halfway through the word “analysis.”
The bigger problem was one the testers never saw. The tool let AI do the measurement. When it couldn’t connect community activity to a business result, it just made up numbers. For a product whose whole purpose is proving the value of community, that is bad.
By April I was ready to give up. Maybe I bit off too big of a problem to solve. Maybe I had no idea how to ship a worthy product.
Then a chance conversation at SushiTech in Tokyo changed my mind. I had built a small tool on top of Luma to organize my event data, and I showed a demo to a community leader there. When I saw their eyes widen, I knew there was something worth rebuilding.
This week I launched version 3.0 of TribeROI, the product I wanted back when I was in Developer Relations at AWS, struggling with the question every community team eventually gets: what did the community contribute to the business?
But what it took to pivot from a useless chat box to a full-fledged enterprise-grade analytics tool in the four months since the first mockup is not something I expected. I finally understood what Steve Jobs was taking about.
Rebuilding, fast
The Beta started as a simple mockup at the end of May to extend the Luma demo. It was a single screen of charts built with Next.js on a monolithic architecture deployed over Supabase and Vercel. It had no live feeds, and utilized a simple CSV uploader to ingest data.
The new version of the app deployed on GCP went live on July 1 and was nothing like Alpha. It is built on deterministic math. The result is that the same data always gives the same numbers. It pulls in data across events, content and connections, weights them, and tells you how healthy a community is. AI only explains what the math has already uncovered.
New releases came in quick succession. Version 2.5 landed July 30 with teams, live connectors to Luma, Discourse, GitHub and DEV.to, and the Explain feature, which lets you ask AI to dive deeper into any metric. Version 2.6 followed two weeks later and made it possible for someone to set everything up self-serve. Along the way, I open-sourced Baraza, an analytics tool for Luma events, and shipped Clean Slate, a Chrome extension to clean up LinkedIn feeds.
By late August though, I realized I was far from done. The Beta was good at telling you whether your community was healthy, but it could not answer the big question that started this journey: what is the community worth?
More patches were not going to solve this. So on August 21, I forked the codebase and started v3, with attribution from community activity to business outcomes as the goal.
And 47 days and 286 pull requests after the fork, version 3.0 is live!
How one person ships that much
I am a solo founder. I have no engineering team and I do not outsource anything.
My co-founder is a CTO skill I created to manage AI agents. These agents read the codebase, write the code, run the tests, and open pull requests. My job is to design features, decide what gets built, review what comes back, and merge it. Some nights while I sleep, an agent works for hours through a list of issues I’ve logged. Then I wake up to a stack of pull requests to read.
I could not have rebuilt this product alone at this pace even a year ago. What’s ironic is that AI was the reason the Alpha failed. I pointed it at the wrong problem. Once AI agents got better at generating code, they allowed me to recover from my first mistake so quickly.
But speed leads to other problems. Agents produce more code than one person can possibly read, and that is where bugs hide. Earlier this summer, I had a day where twelve huge defects surfaced, and every one had passed my testing harness. At another point I had 1,200 passing tests and the live app still had dozens of bugs that I found just by live walking the app.
This changed how I built and managed my engineering process. If I absolutely need the agent to do something, I create a rule in code as an automated check that fails when the rule is broken. An AI reviewer reads every change for security problems before it can merge, and a serious finding blocks it. All formulas that the metrics are built on are parity locked, changing one needs my direct authorization. And before anything ships, an agent walks every screen of the live app and takes screenshots, which I then review and inspect live in the app.
I often say that 99% of vibe-coded apps are shit. I still believe it. What separates a weekend demo or personal work project from a product people and companies can trust is engineering rigor: the checks, reviews, and a person who cares enough to monitor AI. I may not ship as fast as vibe-coders running loops they do not understand, but what my process ships is true art.
What shipped in v3
Just as important as the development process is the care, experience, and taste that are poured into functionality that benefits users. Here are the most impactful new feature:
Community Contribution – See what your community is worth to the business.
Business Objectives – See which parts of the business your community helps most, from support to sales to hiring.
Bridges – See the evidence that what happens in your community leads to real business results.
Multi-Model Attribution – See how much your community helped win each deal or renewal.
Identity Resolution – See each member as one person, even when they use a different name on every platform.
Bot & Staff Detection – Keep bots and your own team out of your member numbers.
Data Connectors – Added Slack, Discord, YouTube, Pipedrive, Substack, and Meetup to existing connections Luma, Discourse, GitHub and DEV.to.
You can try it here: https://trib.co/triberoi-beta3
There is plenty more on the roadmap. There are more connectors to business systems and more ways to measure. What shapes the product more than anything else though are design partners and users that need TribeROI to solve their community measurement gaps today.
OK, so what’s next?
The hard part of a startup is not the building, though I don’t think I have ever tapped as much of my brain as I have these past four months. The real slog is getting customers, so that will be most on my mind the next few months.
That is why I am looking for design partners. If your company has a community that is over a year old, has a few thousand members, and runs both online content and IRL events, I would love to work with you. You can use TribeROI on your own community data, and your feedback would shape what ships next.
If that sounds like you, try the app at https://trib.co/triberoi-beta3 and message me here so we can set up a time to talk.
And if you are building with AI yourself, let me know what you have shipped!
Mark




