I decided to write this post to reflect my time building Lente. It was an immensely fruitful journey. Hope some of the stories here make it little bit easier for anyone who is embarking their journey to be a builder.
1. Motivations
Getting motivated was probably the easiest step. I simply wanted to be a builder; I wanted to create something new. My goal wasn’t to create a company or become an entrepreneur. I just wanted to build something with my own hands. And I realized that staying with my then current company wasn’t really helping that. Of course, I had a deep fear of failure (and still do). But I had even greater fear of regret that would haunt me in the future. Once I made that mental shift, it was quite easy to make the jump.
But to be 100% frank, it wasn’t like I *only* wanted to build by myself. If there were great companies, and there were lot, I was willing to work for them. As you’ve guessed, they didn’t work out. So once I’ve realized that I’ve exhausted all my want-to-go companies, the jump became even easier. I think that was around late 2019 / early 2020.
2. Ideation
When I left my previous company around Sep 2020, I’d already spent considerable time thinking about what I wanted to build. Heavily relying on PG’s teachings, I was looking for
a) something small that I can build entirely by myself (though I quickly realized that I was standing on the shoulder of giants called open source) and
b) something that I acutely needed.
In other words, something that I would be the first user.
I had many fleeting ideas like embedding local stories or history lessons on top of Google maps, and I didn’t give a second thought to most. But one project I did seriously consider was, inspired by Franz, building an aggregated analytic layer on top of messengers. I thought that our daily conversations–which is a trove of insights–were siloed and not being properly utilized. For instance, let’s say I talked about Tesla with friend A (we’ll call him Jin) in Whatsapp on May 1, 2021. We talk for a bit and then we digress to other conversations and keep going like how every asynchronous conversation look like. Then on May 7, 2021, Jin brings up Tesla again on some other point. Most likely, I can no longer remember my train of thoughts on May 1st and never make the connection between the May 1st and 7th conversation about Tesla. Wouldn’t it be great if we can index all these scattered conversations on a topic right inside your messenger? Think of Roam Research but with your conversations.
Okay, I’m getting excited and digressing, so I will keep it short. Imagine if we can do such indexing across all your conversations and devices! Connecting the dots (from your own conversations and thoughts) would be so much easier and your own insights would be generated endlessly and almost too easily.
For obvious reasons of privacy and magnitude of the project (I called it Project Steve), I shelved the project, and shortly after landed on what eventually became Lente.
3. Landing on Lente
At the time (2019 – 2020), I was reading a lot both outside and at work; I was one of the founding team of a crypto venture studio, and in hindsight, we were generally lost as to what to do; We were not techies (I was the closest) and it wasn’t like we were crypto natives (what we now affectionately call degenerates). Our positioning at the time was being at the intersection of traditional finance and crypto. To find a way out, I relied on reading, which was one of my strengths.
Like everybody else, I read across devices (phone, table, laptop, and paper). On digital devices, I primarily read on Chrome browser. I had known Chrome’s limitation for a long time–its inability to natively support highlights, note taking, tagging, and classifying, especially on the phone. Until that time, probably because I wasn’t reading that much on the phone, it never seemed too big of a problem. But now that I was working reading a lot on the road and was trying to synthesize the learning, I realized that reading on Chrome just wasn’t conducive to critical thinking, let alone capturing core insights through interactive behaviors like highlighting. So I had to go back and forth between whatever note taking app that I was interested at the time and constantly move in and out of different apps just to capture what I was reading a little bit better. My pain-points were getting bigger. There were some other options like Pocket and Instapaper, but both had glaring shortfalls like lack of tagging (Instapaper) and limited highlight support (Pocket)
On another note, as I was reading more, as arrogant as it may sound to some, I began to become tired — not physically, but mentally. Because I felt like I was reading ephemeral materials that regurgitate old ideas or superficial changes. It was like reading about this stock went up one day, it went down the other day, and repeat. I wanted to read something that was fundamental that’s not rehashed and something that’s entirely unique. In short, I wanted to read the “classics” if there were any on the Internet. At the time, lots of bloggers had already compiled their own canons / reading lists. I couldn’t understand why these canons were so freaking hard to find. I had to search “best articles on [insert topic X]” and still couldn’t find anything. I was tired of reading instant, superficial reports, and wanted something deeper. We all know the canons of Western philosophy, literature. Why don’t we have it for Internet? Starting with World Wide Web in 1994, millions of people have been writing on Internet – there must be good contents out there and it should be easy to find. I was determined to discover Internet’s classics and make them easier to find. The problem was personal enough and big enough! But at the same time approachable and attackable.
So those two were my core ideas of Lente
1. Make mobile reading interactive and effective by supporting highlighting, note taking, and tagging
2. Discover and curate the Internet’s classic
Even now as I’m writing, both 1 and 2 seem doable at the same time. But I know that I had to be laser-focused on 1 or 2. 1 was definitely easier and could have paved a way to 2. But going directly to 2 wasn’t so intuitive and obvious at the same time (and still is). Until the several versions at the end, I never could let go of 2. And lot of adjustments / pivots were made just to try to incorporate speck of 2 as part of 1 as a differentiator.
In hindsight, unless I had an ingenious way of doing 2, I had to nail down 1 first. The boring and basic feature of making reading contents interactive, seamless, and smooth as you expect it to be. And then I had to scale to some royal group of users. And based on data and some clever shortcuts, I would have been able to move 2.
4. Learning to code
To be fair, I did study Computer Science at college. But my school’s program was designed to make earning a degree in any concentration fairly easy, only 10 courses including intro courses for CS, and not to mention that you were also able to get credits for other department courses like those in math. So in reality I actually only took 7 computer courses (I counted 😄). So in all fairness, I think my coding skills were somewhere between beginner and intermediate.
Funnily, when I was studying CS, I had really hard time understanding basic concepts like what client and server side meant and how asynchronous and synchronous functions should be handled. And for the latter, it still trips me up once in a while and I have to scurry down to StackOverflow only to find re-read older posts.
But I did periodically brush up my coding skills. In early 2020, I built an arbitrage trading bot in Python, trying to take advantage of price differences in BTC futures over Binance and Bitmax. And then as I was slowly brewing up ideas about what to built I learned a React course in Udemy (April), and soon after I learned React Native (July), which is a more specialized React for mobile cross platform development. I chose React because it seemed most scalable and I was already sort of familiar with Javascript.

Surprisingly that was it. With just those two courses, I just dove in and started building. Starting sometime July 2020, I started building after work, and I began to spend more and more time to a point where I sometimes found myself debugging during regular work hours as well. So I finally pulled the trigger and quit late September. By September, before I quit, I already had a very rudimentary working version that looked like below.
5. MVP
You will notice that within 2 months, I had built a working version that can showcase my idea. Considering that I had no real fullstack experience, and was working on a full-time job, that was pretty fast. But such is the current speed of development. Genius coders building websites or apps on a single day, which are so casually depicted in movies, may even be an understatement. Why?
Because the rising tide of open source has lifted all developers, regardless of their skill level, to become “super coders” (from an older generation of programmer’s point of view). In other words, some developer (who is generally much better than me) has already built the functionality that I want and, even better, has built it in a generalizable way that can scale. And they have even decided to share it for free for you to use. Finally there are millions of those developers out there who create and share their works. So actually it’s very very likely that whatever you are trying to build, except very very specialized components, or at least parts of it, already exist.
Uploading a photo within your app? ✅
Wnat a calendar within your app? ✅
You want a navigation footer and drawer in your app? ✅
For all of the above features, you can find myriads of ready-made libraries that you can simply download and use by adding a few liners to your codebase. It’ not only Stripe that’s simplifying payment and Twillio for communication, literally every part of development is being simplified and abstracted. Then your job as a developer and a solo-entrepreneur actually boils down to stitching these numerous libraries and optimizing them to fit your needs.
In my case, for React Native, Expo offered amazingly simple environment that I used to initially familiarize myself with the development. For extracting texts, I used Mozila’s Readability library; tooltips, Brazilian web development house’s library; cleaning the text, ApostropheCMS’ library; re-rendering the html into a mobile native view, Meliorence’s library. My job was to make sure that I found the right library and understand how it worked, stitching it together to my codebase and optimizing locally if needed. As a result, I would say that building an MVP, especially a software based one, has never been easier, and is constantly getting easier.
So that’s why I was able to have something within 2 months. But that was it. It took additional 3 months till Dec 5, 2020, 3:38 AM, to have a presentable version that I could personally put up. So getting it to 70% of MVP was very easy, but filling the rest 30% was very difficult. And I was never able to fill that last 10%. Funny thing is it wasn’t like I was married to having all the featuers that I initally wanted. I constantly shed them. And that’s why I could even meet the Dec 5th timeline. PG repeatedly emphasized ship earlier, but then I realized why that maxim even became a maxim, because it’s really hard to practice it. It’s really hard to let it go. And you constantly feel like if you do a little bit more, everything will be magically solved and will be a perfect product. But of course, in reality, it usually only gets messier.

P.S. I used Google Firebase as the database and Google Cloud Functions as the backend. My app was very client heavy, and only had few necessary functions in the backend.
6. Interviews
During the ideation process and landing on Lente, I really never interviewed anyone. I just roughly knew that there were a bit of people unsatisfied with both Pocket and Instapaper, OGs of Read-it-Later apps. When I did start interviewing people around me – mostly family and friends – I quickly realized that how “unproblematic” my pain-point was. (Of course, I had already built the MVP by then). Most people were somewhere between, “Oh do you do that? (in answer to whether you take any notes or highlights while reading on phones) I mean I just skim through and that’s about it” and “Phone is only for chill reads, and not only that, it’s also not conducive to deep reading”. In short, no one had my problem and my pain-point wasn’t universal enough, contrary to what I naively assumed. I probably interviewed good 40 – 50 people. In the end, I only followed through with a handful of people that seemed to be interested at all with the progress.
Through the process, I first learned that you need to interview relevant group of people, not just anyone, and you need to strategically try to find out where your user group is concentrated. For instance, Matter, which is another Read it Later app that I’m currently using, managed to deduce that Progress Studies slack group had lots of people reading intensely, so they posted their Beta invite link there. Because there isn’t any group of Lente users out there, you must find another group / community / sub-reddit / cyberspace where your potential core user group may reside in high concentration.
Secondly, your job as an interviewer is to extract a common problem that you can solve by carefully listening to the interviewee’s behavior and intentions, rather than getting half-baked affirmations by asking leading questions. Examples include, “do you take notes?”, “don’t you like the fact that you can now highlight your contents on your phone?”, “what would you do if you have this feature ~”. No book better explains these ideas than The Mom Test. I think this short book is one of the must read books for founders-to-be.
Thirdly, I went through several phases about how I thought about my product. Initially, I was exclusively focused on “making what I want”. Then through interviews, I learned that I need to make something that’s in an intersection of what I want to make and what people want. As PG said, we need to “make something people want”. Ultimately, I realized that I need to make what people want, but wrap it with my own vision.
Last but not least, because my product’s value position wasn’t clear or not as good as it was supposed to be, my interview also wasn’t laser focused enough. I kept jumping around different value positions and pain points and whenever I got some support for any of it, I tried to productize and squeeze it. In the end, I had many mediocre features that didn’t provide strong value proposition. Having been technically challenged to improve the quality of certain features (like extracting and cleaning the text), I increasingly resorted to design to differentiate Lente. In hindsight, it was a weird choice because my design senses were never great.
7. Design Iterations
My problem wasn’t that I was iterating through different designs with the same functionality, but that I was constantly adding new features and pages and taking out old ones at the same time. And while I was adding new designs, I also couldn’t help but to experiment with existing designs as well. I was obsessed with it for a while and would compulsively refresh or re-build just to see how a button’s color has changed.



If anyone’s curious, you can see parts of different iterations of my design here
8. Small Pivots
Let’s go back to the two initial goals I had.
1. Make mobile reading interactive and effective by supporting highlighting, note taking, and tagging
2. Discover and curate the Internet’s classic
I really wanted to merge the two, but I quickly realized that doing 2 was quite hard unless I had an ingenious, scalable technical solution. But I was determined to make it work and find some workaround. To kickstart, I went around scraping various sources like “150 Great Articles & Essays to Read Online”, Longform, Longreads, and various curated sources from influential bloggers. Then I counted number of nominations each article received to rank them. This obviously favored the recent contents where more people have covered it. For older contents, selection process became more arbitrary and personal. I began to either pick contents that were written by my favorite bloggers (ex: Tim Urban) or contents that I personally enjoyed. After I had about ~ 200 of these contents, I re-arranged them by topics and their published years. That was my first set of “classics”.




Bottom: Each collection opened up like a Spotify playlist (Bit obvious from the design)
Feedbacks I received were discouraging. To be more precise, it seemed like people didn’t even really bother to open this page. After several attempts to re-vamp this page with different designs, growing self-conscious about curated contents and not having found any scalable solution, I decided to shelf the idea. But I kept the idea of “collections”, which in the future, was to be shareable as a repository of user-curated contents similar to a user-generated music playlist.
Now having mostly got rid of (2), the App became much clearer and familiar. So I needed some edge to differentiate. First, I forked an open source Chrome extension and build a version for Lente to support Web highlights and notes. Then, I synced all of the annotations to Lente and created a separate page where you can easily track all your actions. Here my ultimate vision was to port all your highlights and notes to a bi-directional network so that they will create a giant network of thoughts. (This is another topic, but it made so much more sense to plug your reads than your writes to bi-directional networks, because usually the former’s quantity outweighs the latter by far). In the end, that became the final version of Lente.

8. Distribution
Now that I’d built my app. I needed to find a way to distribute it and make myself heard. I didn’t have social media following, so here are non-exhaustive list of what I tried
- Participating in Pioneer (made to about top 60)
- Posting in Hacker News & Reddit & Startup School
- Launching in Product Hunt (Got meager 18 likes despite attempts to muster lots of friends)
- Leaving comments on bloggers who wrote about Read it Later
- Posting Google Ads
In hindsight, I should have been more aggressive in social media. I should have reached out more proactively to tweets that complained how bad Pocket or Instapaper was or that asked for Read-it-Later app recommendations. But to be honest, at the same time, I always had the gnawing feeling that my app wasn’t good enough. And in extension, I was scared that people would think I was not good enough as well. I was scared of being exposed. Through the experience, I wasn’t entirely able to break out of that mindset, but I think I did leave sufficient crack for me to break out fully next time.
As of late December 2021, Lente has been downloaded 83 times.

9. Deciding to let it go

Since my first release in December 2020, I released 41 more versions that improved a bit by bit till next late March. As you can imagine, the growth didn’t materialize and numbers didn’t really improve. I had worked for 7 months without pay and spent all my savings as well (and I was already relying on my girlfriend for rent). I also didn’t have any co-founder. Finally when I saw Matter that was better executed and was gaining traction, I knew that it was time to move on. I built Lente’s Android version until late April and that sealed my time with development.
I wasn’t too sad when I decided to stop working on Lente. Actually I was happy that I was able to make it this far from nothing. Though it wasn’t satisfying, I had finally built something from scratch and taken a first step in being founder. I am already planning to build a next product (this time Web based one), and I’m excited!
11. Other unmentioned learnings
- Focus on a small problem and go deep.
- It’s very important to have a co-founding team
- Surprisingly, Lente was downloaded the most in Portugal (~70%). With global platforms, you can reach anyone
- Distribution is just as important as, or even more than building
P.S. Here’s what my app looked like (Figma) and a video demo. App itself is now defunct.
Leave a comment