Log & Learn: The Making of Vellbi.com
This blog post is a summary of some thoughts about a little project I worked on for about a week: A little web app for biohackers / those into quantified self to journal, track and collect all your data in one place, and use AI to actually make sense of it, to talk to, and get personal reminders via email or WhatsApp. So the plan. I ended up building (and then abandoning) www.vellbi.com (like “wellbeing”).
(Note: This was kickstarted a few months ago when I was hit with various health issues that I am still dealing with e.g. my vitamin D levels were so multiple standard deviations below norm. So I highly recommend to my fellow nerds to schedule in some time outside to tank some sun here and there.)

The App
After you create and account or log in, you could immediately start tracking et cetera. I had at some point added Stripe but deleted it again.

Journaling & Tracking
I’ve been using the journal in this app for about three weeks until I moved back to my old system as I abandoned this project. But honestly, I liked this. I never really thought about journaling apps. But implementing this features, having a calendar and the ability to skip through my logs day by day was quite fun and much better than my experience in Obsidian.md which I use for most things.
It was interesting to work on the text editor since it needed to synchronize with the database of course so I came up with some simple heuristics to check for when to save and read from the database and when to simply cache the data locally as otherwise your writing would constantly be interrupted by outdated text overwriting the new entry you were just editing and so on.
I came up with the slogan “Log & Learn”. The value proposition of the finalized app would have been that the user will have a much greater ability to actually turn all that information into action that will improve their life rather than just hoarding data. But I never got there. Instead, we are left with this ugly and overwhelming screen where, on the left, you can journal during the day, and on the right, you can log in some basic daily metrics about yourself like your mood.

The visualization here needed much improvement. I am not going into depth here but this would have needed a total rework.

Like I said before, I liked the calendar though. It was quite practical and fun to browser through my own logs quickly.

History & Statistics
Similarly, it was really fun to have a timeline overview of my own metrics. In the learn tab, you’ll see your data analyzed and can chat with ChatGPT. The chat was very basic and didn’t connect yet with the database in production. I worked on various methods using DSPy and other tools to inform the AI and build an avatar of the user so that the AI could help with keeping up good habits etc. and have meaningful conversations based on all the logged data. Interesting exploration but overly complicated.
More interesting and useful was the the GitHub-like activity history and the stats below.

The stats below showed bar charts and you could select one to two metrics to show simultaneously. If that is done, a second graph would show up which would display how exactly that data relates and how strong the correlation is! Neat! Though not particularly useful in my eyes without much much more data and, importantly, error bars. Something which I rigorously track in my own sheets but hadn’t implemented in Vellbi. Like I said before, the tracker needed an overhaul.

AI Chat
The chat felt very much out of place in this app. For good reasons. I think this is a general issue with a lot of products at the moment who are trying to integrate AI / LLMs into their tools but don’t know exactly how. I think, for most companies and products the solution is probably that it should be invisible and simply work in the backend. A chat UI certainly wasn’t a good idea here.
The original idea was always also to just have it implemented as a bot for WhatsApp and email! I still may return to this idea.

Privacy & Security
Now, with all that, as you can imagine, the first feedback I got from my first users was regarding security. Just wanting to verify if there was any interest from the community, I had put up two posts on Reddit presenting my app. People quickly asked what I am using with the data and how I am protecting it so I had to add a footer to my website with terms of use and explaining the privacy.

This also prompted me to add end-to-end encryption for every user which meant that I wasn’t able to read people’s diaries anymore when I checked the Supabase database. Funnily enough, other users had trouble logging in with Google OAuth. This is an old issue I forgot about and I believe it is due to the need for exactly these items to be in place. Once I added them, there didn’t seem to be any more issues with logging in and signing up using Google.
Of course, users would also need control over their data and profile as well as their password so I added the ability for them to change their password, to export all the data, and delete their profile.
Tech Stack
Aside from Google OAuth, I used Supabase for the database which I managed with a Python backend hosted on Railway and the frontend on Vercel. All of the CSS was written manually and I used Figma to design more complex components while simpler components I just added directly in code. For the overall layout I often made wireframes in Excalidraw. Temporarily, I used Stripe for payments as mentioned before. For the AI, I simply used the OpenAI API. And everything was synced using GitHub so that pushing to GitHub would automatically refresh the app in development.
Lessons Learned
Having written all of this now, Vellbi is now offline.
Quickly Find Unknowns
The general issue with creating something with a lot of unknowns is that you don’t know all the constraints and false assumptions you made. In this case, my assumption was that tracking apps would have open APIs to share data but due to privacy concerns most of the interesting tracking data is in fact locked up locally on your devices like your phones rather than being accessible online. This meant that I would have needed to write mobile apps. And since I actually hate using my phone and try to avoid it, that made me hate the idea of working on a mobile app which I would have had to pivot to also because it is simply more useful from a UX perspective.
It is important to work on the whatever helps you validate or disprove your core ideas as quickly as possible. While I only worked on this on evenings and my weekend for about seven days, I still think I could have found out about this issue much sooner. But I was worrying too much about UX on the web and trying to conceptualize which features would actually be the most important. Eventually, this lead me to realize that data aggregation and journaling / texting with the AI was the most important and that manually tracking and tracking GUIs and data visualization were actually a horrible ideas.
I didn’t quite know what the app I wanted needed. And I wasted time building features and an app that wasn’t actually needed or valuable. This is embarrassing to admit but this happens. It’s difficult to know beforehand. You just need to build, test, and iterate quickly until you either win or, like in this case, realize the uncovered path ahead is not worth pursuing.
Data Is Locked In Locally
Tracking things manually is tedious and so is analyzing it. That’s why aggregating tracking data from other sources is so essential. So, yeah, if I should come back to this idea, I’ll just start with this aspect, then see if I can build a chatbot around the data which can analyze it and talk to the user to help out.
Tracking & Statistic GUIs Are Bad
One fundamental issue of software 2.0 has been that with all your tracking data, it is pretty impossible to have one nice graphical user interface to visualize and analyze it all without being overwhelming. And customization in order to add new things to track and study is something only the super-nerds would ever care for. But they probably obsess over that so much, too, that they’d rather write some Python scripts themselves!
With software 3.0 (as Andrej Karpathy recently coined it) there now might be an opportunity to let AI generate custom overview and graphics and reports. This is something I was thinking of. You could either create a simple set of web components for the AI to control and customize for the user or, simpler, have it generate graphics with simple tools and send them to the user via messaging systems like WhatsApp where they would be talking daily anyway.
But as things stand, trying to come up with some cool, universal GUI to visualize all your data is a pretty terrible idea since it is simply too complicated and inflexible to implement while being overwhelming to the user.
Conclusion
All in all, this was an incredibly valuable experience that taught me a thing or two about how the internet works and how to quickly build and deploy a web app that people can actually use! APIs are everywhere and you better make sure your servers are on the same continent if you don’t want two second delays between requests. It’s amazing how quickly you can deploy something. It is much more difficult to actually figure out what to build and deploy.