Over the last two years, I've built a lot of things.
Developer tools. CLIs. SaaS products. Automation tools.
Most of them followed roughly the same pattern:
I found a problem.
I started building.
I saw more things that could be improved.
I added them.
The project became bigger.
I polished the architecture.
I added another feature.
And somewhere along the way, I forgot the most important question:
Does anyone actually want this?
The uncomfortable answer for several of my projects was: I didn't know.
I had spent months answering engineering questions before answering the product question.
So I'm trying something different with my latest open-source project.
It's called Recall.
I built it because I kept seeing coding agents repeat the same repository exploration across sessions — reading package files, finding entry points, exploring folders and rediscovering conventions.
Recall generates persistent repository context locally and deterministically, so that context can be reused across Claude Code, Codex, Cursor or any agent that can read Markdown.
No AI API is required.
I released v0.2.0.
And now I'm stopping.
Not abandoning it.
Stopping feature development.
My engineering brain already has a list:
MCP integration
editor plugins
semantic analysis
more languages
team features
better repository intelligence
I'm not building any of them yet.
For the next 30 days, the product roadmap is basically empty.
Instead, I want to answer a few boring but much more important questions:
Will developers actually install it?
Does it reduce repository exploration on real tasks?
Does someone who uses it once choose to use it again?
I'm measuring things like time to first correct edit, exploration time, tool calls and repeat usage.
If the answer is no, adding another six months of features won't rescue the idea.
And if the answer is yes, I'll know what deserves investment based on actual usage rather than my imagination.
This is surprisingly uncomfortable as an engineer.
Building another feature feels productive.
Waiting for evidence doesn't.
But after spending too much time building products before validating whether anybody cared, I think this is the discipline I was missing.
Recall is here:
https://github.com/sabahattink/Recall
You can try it with:
npx recall-context@latest init
I'm especially interested in hearing from other technical founders:
How do you decide when to stop building and force yourself into validation mode?
And if you've killed a technically good product because usage never appeared, I'd be interested in that story too.
The freeze is the easy half. The harder problem with "no telemetry, just talk to the first users" is that it cannot separate two very different answers: the premise is wrong, or they never got far enough to have an opinion about the premise.
I hit this constantly on my own product. I'm the founder of Lisar Connect, a VPN service, and our deliberate scope cut was not shipping an app of our own at all — you import a connection profile into a standard client. That removed a large amount of engineering, and it moved the entire first-run experience into documentation. The first useful signal was never what people thought of the idea. It was which documented step they stopped at.
For Recall I would write the first run down as an ordered list before day one: installed, ran it in a repo they actually work in, agent consumed the output, completed one real task with it. Then for each of your first users, record the last step they completed. That is a line in your notes, not telemetry.
It turns the 30 days into two separate results instead of one blurry one. A "no" that arrives after step four is a real answer about demand. A "no" that arrives at step one or two is an answer about packaging, and it is worth fixing before the remaining days start counting it as evidence.
That’s a much cleaner way to separate onboarding failure from product failure.
I was treating “didn’t use it again” as one bucket, but you’re right — someone who never got past install hasn’t really tested the premise at all.
I’m stealing the ordered first-run idea. No telemetry, just recording the last step each of the first users actually reached.
And I like the constraint it creates: fix friction if they’re dying before the real task, but don’t confuse that with an excuse to add features.
I really needed to read this today.Most freelancers lose money in the gap between managing a project and actually invoicing for it. I'm building a single workspace to close that gap, and it is so easy to fall into the trap of over-polishing before anyone has even tried it. Launching at v0.2.0 sounds terrifying, but it's clearly the right move. Thanks for the reality check!
That “just one more thing before I launch” loop is dangerous 😅
v0.2.0 still feels uncomfortable to me, which is probably a good sign. Ship it before you polish the uncertainty away.
Good luck with the workspace — would be curious to see it when it’s live.
I actually did a couple of days ago! It was definitely scary to finally push the button, but I'm glad I didn't wait. I'm still working on the BIG updates, but getting it out there early was absolutely the right move.
It’s currently in beta, and I’d genuinely love your feedback. I'm looking for early founding members to help shape the direction and build something that actually serves the community. Let me know what you think: https://themysapp.com
The freeze gets much easier to hold if you write the exit condition down now - something like "if fewer than X repos run init a second time in 30 days, I stop" - otherwise the temptation is to reinterpret flat usage as "it just needs MCP integration". For something distributed by npx, repeat usage is the metric I'd trust most: the first run is curiosity, the second run is the only real signal. One practical trick for the engineering itch: park the roadmap list somewhere visible, like GitHub issues with a "post-validation" label, so shelving those features feels like deferring them rather than losing them.
Yeah, I’m increasingly convinced the second run matters more than the first. First run can just be curiosity.
The tricky part is Recall has no telemetry, so I can’t actually see repeat npx usage per repo. For the first users I’m going to track that manually instead.
I also like the post-validation bucket idea. It gives me somewhere to put the “just add MCP” thoughts without pretending they need to be built now 😄
Manual tracking is probably the right call for the first handful anyway, since a note like "came back on day 4, different repo" tells you more than any counter would. If you ever do build telemetry, the version I'd trust is a session count per repo, opt in, nothing about the code itself, and only once you already know from talking to people what that number means. The post-validation bucket has a nice side effect too: when someone finally asks for MCP, you can see whether it was on the list before or after real usage.
That's actually worth testing.
I'd still separate it from user validation though. I can benchmark Recall against a clean session and learn whether it reduces rediscovery, but I can also accidentally design a test that favors my own tool.
So I think I need both: a controlled A/B like you described, and real users choosing to use Recall again without me asking.
If both point in the same direction, that's a much stronger signal.
The good part is that the thing that you are building can be self-validated. Take Recall and fire up on different opensource projects that have issues pending. Pick a issue run two sessions, on two different branch/worktree - one with Recall and one without. For cleaner you can use Virtualbox or install Recall locally than globally and then run two sessions.
Build a session evals - to compare toolcalls and token usage. To validate if Recall makes the coding agents to use the context given by it, you can fire up third session to put that session as judge to evaluate who did the task more effectively.
Run this on combination of problems on the same repo or different repo. I think it will streamline your validation for v2.
This is a really good idea. I’d been thinking mostly about external user validation, but this gives me a way to test the technical claim separately.
Same repo, same issue, clean worktrees, same agent/model — one with Recall and one without. Then compare time, tool calls, tokens and whether the task was actually completed correctly.
I wouldn’t use it as a replacement for real users, but it could tell me whether Recall actually improves agent performance before I start interpreting retention.
I’m going to try this. Thanks.
Happy to assist anytime :)
The discipline of stopping at v0.2.0 to measure instead of imagining what’s needed next is the harder skill, and most engineers (me included) avoid it because building feels like progress and waiting doesn’t.
To your first question: for me it wasn’t a deliberate decision, it was forced — shipped CheCeno, kept building for months, and only stopped adding features when I ran out of obvious things to fix. In hindsight I should’ve forced the stop much earlier, right after the first working version, and spent that time figuring out if the core premise held up instead of polishing it.
To your second: not killed, but should have — I kept a positioning assumption alive for months that a five-minute conversation with a real user would’ve killed on day one. Nobody around me, including the AI I was building with, ever asked “does this actually need to exist as its own app.” It answered every technical question well. It never once asked the one that mattered.
Curious what “time to first correct edit” looks like so far, even directionally — is it close to what you hoped, or still too early to tell?
I don't have a reliable number for that yet, and I don't want to invent one from downloads or my own usage.
That's actually one of the things I want to observe with the first real users: does Recall get the agent to a correct first edit faster, or does it just produce context that looks useful?
The second one is easy to build. The first one is what would make the product worth keeping.
That distinction — “produces context that looks useful” vs. “actually gets to a correct first edit faster” — is the whole game, and it’s brutally easy to convince yourself you’ve built the second one when you’ve only built the first.
I fell into that exact trap with positioning, not code: CheCeno “looked” solved because every technical piece worked. Nobody, including the AI helping me build it, ever asked whether it actually moved the needle on the thing that mattered.
Good instinct not inventing a number from downloads. Curious how you’ll tell the difference in practice — repeat usage without prompting, or something more direct like time-to-edit deltas per session?
For now, directly with the first users. I don't want to add telemetry just to make the validation easier.
I'll ask them to try Recall on a repo they actually work in, then compare a couple of real sessions with and without it.
It's not going to give me a beautiful analytics dashboard, but with the first 10 users I'd rather have messy evidence from real workflows than precise numbers from artificial ones.
The lesson of stopping at v0.2 instead of spending months building every possible feature is probably one of the hardest ones to learn as a founder. Getting something in front of users early gives you information that weeks of building just can't.
It's tempting to keep polishing because building feels productive, but user feedback is usually where you find out what actually matters.
Exactly. That’s the habit I’m trying to break.
The dangerous part is that polishing genuinely feels like progress — especially when you’re an engineer and there’s always something obvious to improve.
With Recall I’m deliberately leaving a list of things unfinished until actual usage tells me which of them matter.
I’m curious: when you validate an early product, what’s the strongest signal for you — people trying it once, coming back to use it again, or actually paying?
I can really relate to this. Building the product is exciting, but getting people to actually discover and try it feels much harder. I'm learning that talking to users early is just as important as building.
The 30-day freeze becomes much stronger with precommitted evidence thresholds. Track install, successful initialization, first correct edit, repeat use on a second repository, and the number of qualified developers who actually saw the project. If reach is too low, the test did not run; if people install but never return, the value loop failed. Those are very different diagnoses.
Stopping at v0.2.0 is a massive superpower. Most builders spend years polishing a dashboard that nobody will ever log into.
Regarding finding your first users rapidly for this loop: the secret is to treat your distribution with the same iterative mindset as your code.
Instead of waiting for a big launch day, run tiny distribution experiments. Find 3 niche threads where people are actively struggling with the problem you solve. Offer a manual workaround in the comments. If they respond well, send them a DM with your v0.2.0 link.
This gives you a tight feedback loop with real users before you build anything else.
I got so frustrated watching builders fall into the multi-year development trap that I'm building Octoloops. It helps founders match their product stage to practical, zero-budget distribution channels so they don't have to guess.
What does your v0.2.0 product do? Let's brainstorm where those first 5 users are hiding.
Building really does give you a false sense of progress. It's like getting on a treadmill and say you're going to walk to the store.
I've run into the same problem with my own projects. There's always something you can work on, so it's easy to confuse having work to do with having a reason to do it.
What I like about your 30-day pause is that you're forcing yourself to sit with the uncertainty instead of immediately responding to it with another feature.
What's your plan if the evidence is mixed. Say a handful of developers use Recall more than once and clearly get value from it, but overall adoption stays low. Would that be enough evidence to keep investing in the product, or would you start questioning distribution before going back to the roadmap?
The hardest part is treating validation as a feature freeze instead of a marketing phase. I like using one falsifiable behavior metric before reopening the roadmap, for example: if 10 fresh installs do not produce at least 3 repeat uses inside a week, the next work is not features, it is either onboarding, positioning, or killing the idea.
It also helps to write down what evidence would make you stop. Otherwise every quiet launch turns into "maybe it just needs one more integration," which is exactly how the engineering loop wins again.
I have killed two this year, and the embarrassing detail is that both were finished and working. One was a Mac app I deleted the same day I discovered the incumbent was freeware — nobody pays a one-time price to compete with free, and a two-hour look at the competitor's pricing page before writing code would have told me that. The second one I built the same way and killed the same way, which taught me the real lesson: knowing the rule is not the same as following it when you are excited about an idea.
So my answer to "when do you force validation mode": before building, not after. Now I check what the incumbents actually charge today, verified on their sites, before I write a line. If the incumbent is free, there is no paid business there, full stop, no matter how much better my version would be.
And I can confirm your repeat-usage instinct from the other side: the one app of mine that survived now gets its entire roadmap from returning users. The last release had nine changes, all nine from user reports. When usage is real, you stop guessing what to build — the roadmap writes itself.
I've built 2 with 0 customers as well... On to the third... Maybe I am a masochist. My heart tells me it only takes 1!
The empty roadmap is useful, but I would add one more constraint: define what each result means before the 30 days begin.
For example, low installs may mean the distribution or positioning failed, while many first runs with no second use points more directly at weak recurring value. If those outcomes remain in one bucket, it becomes easy to interpret any disappointing result as “we just need more reach” or “we just need one more feature.”
I would track a short evidence chain: saw the problem, installed Recall, used it on a real repository, let an agent consume the context, returned for another task. Then decide in advance which broken link permits a product change and which one should make you reconsider the premise.
Stopping development creates space to learn. Predefining the decision rules makes it harder for engineering optimism to rewrite the lesson afterward.
The "30-day empty roadmap" is the constraint that forces clarity. Most founders ship features to feel productive because it delays the uncomfortable feedback: will anyone care? You're right that repeat usage is the real signal - initial adoption could just be curiosity, but someone returning to use it again means they solved a real problem. The fact that you're measuring time-to-first-edit and exploration time suggests you're building a feedback instrument, not just shipping code. That discipline of weaponizing your own skepticism about feature value is rare. Rooting for the 30-day experiment.
Stopping at v0.2.0 takes real discipline, especially when the engineering brain just wants to keep shipping. Tracking time-to-second-use manually is a brilliant move—unprompted repeat usage is the only metric that never lies. Rooting for the 30-day experiment!
I agree that stopping at v0.2.0 and allowing usage to determine future releases is a good idea. ~
When you start adding features, you start avoiding the harder question. What more can this do?“Is anyone actually coming back?” is much easier to answer.”.
I've noticed that repeat use is a much stronger signal than initial interest. A person's decision to try something once could mean curiosity. Returning typically suggests that it resolved an issue.
The most important part of this 30-page planning guide is probably the empty 30-day roadmap at the end. It provides enough room to see what users actually take out of the product instead of guessing what people will want next.
Yep, that empty roadmap is intentional.
I’ve spent enough time filling roadmaps with things I could build. This time I want the next item to come from something a real user actually did — or couldn’t do.
And I agree on repeat use. A first try can be curiosity. Coming back is much harder to fake.
The v0.2.0 mindset is honestly underrated. Shipping something smaller, getting real users to interact with it, and learning from that feedback is often more valuable than spending another year building features nobody asked for.
The biggest lesson here is probably: build less, validate earlier, and let users decide what deserves to exist.
Exactly. Building was the comfortable part. Letting users decide what deserves to be built next is the part I’m trying to learn now.
I relate to this so much. It feels like I’m reading a summary of several years of my own life: years that didn’t end all that long ago.
The turning point for me? Yet another technically brilliant product. But this time, when I finally put it in front of users (my first real round of customer interviews) the answer was basically:
“It’s good, but I don’t need it.”
That’s when I finally understood that my solution wasn’t the most important thing. The problem itself wasn’t either.
What ultimately matters is the intensity of the user’s pain.
And it has to be strong enough, because strangely enough, some users have simply learned to live with their pain.
Since then, I’ve adopted three rules:
I’m still an engineer, so building is always more comfortable than validating. But at least now I try to build more useful things.
“It’s good, but I don’t need it” is exactly the answer I’m trying to find out early this time.
The repo rediscovery problem is real, but that doesn’t mean it hurts enough for developers to change their workflow.
I like your third rule too. If Recall doesn’t earn adoption but I still find it useful myself, maintenance/dogfooding is a much more honest outcome than forcing it into becoming a business.
Thanks for sharing this. The distinction between a real problem and a painful enough problem is an important one.
This is a fantastic shift in mindset! Recall actually sounds like a highly practical tool—reducing that repetitive context-gathering phase for coding agents is a real pain point. Forcing yourself to sit on an empty roadmap for 30 days just to watch the analytics (like time to first correct edit and repeat usage) takes serious discipline. Thanks for sharing this raw and honest experience.
Thanks, appreciate it! The hardest part is definitely not touching the roadmap 😄
Now I just need the real usage data to tell me whether Recall deserves a v0.3.0.
Two years is a long runway to learn that lesson — respect for naming it plainly instead of spinning it. What’s different about how you’re deciding “this is done” at v0.2.0 versus what kept you building past the point of validation before?
Before, “done” meant I couldn’t think of anything else worth building. Which basically meant never.
This time done means the current version is enough to test the assumption. I already have plenty of ideas for v0.3.0 — I’m just not allowed to use them as an excuse to avoid finding users.
The next version has to be earned by what people actually do with v0.2.0, not by what I feel like building next.
“Earned by what people actually do, not what I feel like building next” is a great rule to hold yourself to — most people say that and then break it the first time the data is inconclusive. Good luck with v0.3.0, whenever it’s actually earned
ca compte vraiment
It really does. Took me way too long to learn it 😄
Stopping early at v0.2.0 is a huge mindset upgrade. What do you usually do with your old codebases? Leave them on GitHub or try to pass them on? I built an AI valuation tool at Digimarket to help founders quickly check if their abandoned side-projects have market value.
Mostly I leave them on GitHub. I used to think every technically solid project deserved another attempt, but I'm less convinced of that now.
Some codebases are probably better treated as assets than products though. The valuation angle is interesting — what signals are you using to decide whether an abandoned project actually has market value?
Stopping at v0.2.0 may be harder than building v0.3.0. While building DictaFlow, I've found that the useful roadmap ideas usually come from real failures in someone's workflow, not from my feature list. Your three questions are good, but I'd add one more: when someone stops using Recall, can you identify the exact moment it stopped earning its place? That answer will probably tell you more than another month of install counts.
That's a better question than just “did they come back?”
A user dropping Recall tells me something. Knowing where it stopped being useful tells me what actually failed.
I'm going to add that to the validation interviews. Not as another metric to optimize, just one question: what happened in the session where you decided you didn't need Recall anymore?
That's probably more useful than watching the download counter go up.
"Building another feature feels productive. Waiting for evidence doesn't." — this is the exact tension I didn't have words for until I'd burned six months on things nobody validated.
The question I ended up using to force myself into validation mode: can I get 3 people to use this in the next 7 days without me explaining it? Not install it, not create an account — actually use it for a real task. If the answer is no, the product has a clarity or distribution problem that more features won't fix. If yes, I know the entry point works and I can find the next blocker.
The thing that helped kill the feature list in my head: reframe those engineering ideas as downstream problems. MCP integration and editor plugins are real — but they only matter if someone hits a wall using v0.2.0 and specifically asks for that. Build the list from friction evidence, not from your engineering brain's imagination. Right now you have zero user friction reports. That's the experiment, not a reason to add features.
What does success look like for you at the end of the 30 days? What number moves and you say it works?
That's pretty close to how I'm defining it now.
For the first 7 days, I like your bar: 3 people using Recall on a real repo without me walking them through it. If I can't get that, I probably have a distribution or clarity problem before I have a product problem.
For the 30 days, I'm looking for 10+ real users and, more importantly, repeat usage. I want to see people choose Recall again in a later coding session without me asking them to.
Then I want to compare whether it actually gets them to the first correct edit faster, not just whether they say the generated context looks useful.
If people try it once and don't come back, v0.3.0 doesn't automatically happen. I need to understand why first.
That's the part I'm trying not to negotiate with myself later.
the pattern you named, answering engineering questions for months before answering the product question, is THE trap, and naming it out loud is most of the fix. one gentle pushback though: stopping at v0.2.0 is a rule about scope, but scope wasnt really your problem, evidence was. a hard version cap just makes you fail faster if youre still not testing demand, youll ship ten tiny things nobody wanted instead of one big thing nobody wanted. the rule that actually would have saved those two years isnt "stop at v0.2.0", its "i dont get to build feature N+1 until someone actually uses feature N". tie every increment to a real person doing a real thing, not to a version number. the other trick that breaks the build-first reflex for engineers: force a yes BEFORE you write code, a pre-order, a paid pilot, a waitlist that actually converts, someone saying take my money. if you cant get a yes on the promise, the product wont create one. whats the v0.2.0 youre building now, and has anyone told you theyd pay for it yet?
Fair pushback. The version number isn't the evidence — it's just the constraint I needed to stop myself from building.
Recall is the v0.2.0. It's an open-source CLI that generates reusable repo context for coding agents.
I haven't tested willingness to pay, and honestly I'm not trying to yet. The question I'm trying to answer first is simpler: will developers use it on a real repo, then choose to use it again in a later coding session without me prompting them?
If that doesn't happen, I don't think adding pricing would tell me much.
I do like your N+1 rule though: no next feature without evidence from the current one. That's probably a better long-term rule than any version cap.
Your 30 day pause is right, but I'd swap the time box for an evidence box. At Henson Venture Partners we gate deals at $1,000 MRR or 100 customers because a number forces honesty in a way a deadline doesn't. Pick your equivalent, say 50 developers who use Recall a second time, and let hitting or missing that number make the roadmap decision for you.
I like the evidence box framing more than the calendar itself.
I’m not sure 50 second-use developers is the right number for Recall yet though. At this stage, missing 50 could just mean I failed at distribution, not that the product failed.
I’m leaning toward a smaller denominator first: get 10–20 real developers through a successful first use, then look at how many come back unprompted and how long that second use takes.
If I can’t even get enough people through the first-use gate, that’s a different failure than getting them there and nobody coming back.
One experimental-design issue I’d watch with the “with Recall / without Recall” comparison is learning leakage between sessions.
If someone explores a repository without Recall first, both the developer and the agent workflow have effectively learned something about the repo before the Recall run. Reverse the order and Recall may accidentally give the baseline the same advantage.
For the first 10 testers, I’d try to make the comparison closer to a paired cold-start test:
use two comparable tasks or repository snapshots, reset the agent context between runs, and randomize which condition goes first.
I’d also define “correct first edit” mechanically where possible — passing tests or explicit acceptance criteria — rather than relying only on whether the developer felt the edit was correct.
One additional metric might be especially interesting:
break-even session.
Recall has an upfront cost to generate and maintain repository context. If it saves two minutes per task but costs five minutes initially, the important question may be whether the cumulative workflow becomes faster on session 2, 3, or 10.
That would let you answer something stronger than “Recall makes an individual task faster”:
“After N real coding sessions, maintaining repository context pays for itself.”
Have you thought about controlling for the learning effect when the same developer tests both conditions?
Yeah, the learning leakage is real. Using the same repo/task twice would make the comparison pretty questionable.
I like the paired cold-start idea — comparable tasks, fresh agent context, randomized order, and tests/acceptance criteria deciding whether the first edit was actually correct.
The break-even session is interesting too. I hadn't framed it that way. If Recall only pays for itself after 10 sessions, that's a very different product than if it pays back by session 2.
For now I’m trying not to turn the 30-day validation into a research project 😄 but this feels like the right shape for a small benchmark alongside the real-user test.
That sounds like the right balance.
I definitely wouldn’t turn the 30-day validation into a controlled study — the real-user behavior still matters more.
A small benchmark alongside it should be enough to catch obvious learning leakage and give you a rough break-even signal without slowing the product test down.
If Recall pays back quickly in both the benchmark and actual repeated use, that’s probably the strongest signal you could ask for at this stage.
Good luck with the 30-day run.
From 3 months of dogfooding my own devtool (amami.dev — AI-native analytics), the most honest signal I found isn't repeat usage per se, it's time-to-second-use. A second invocation days later, unprompted, means it earned a place in the workflow; no second use usually means the install-to-useful gap, not a dead premise. Freezing features for 30 days is right — just split "never got running" from "ran once, didn't stick".
That's a useful distinction. I was grouping both of those as “no repeat usage”, but they probably mean very different things.
“Never got running” points to onboarding or setup friction. “Ran once, didn't come back” is much closer to a product signal.
I like time-to-second-use as the metric. Going to add that to what I'm tracking manually during these 30 days.
Curious — what did the time-to-second-use distribution look like for amami once it started sticking?
:))
The repo context problem is real watching agents reexplore the same folder structure every session is exactly the kind of waste that's easy to shrug off until you actually measure it.
To your question: the thing that's worked for me isn't deciding to stop in the moment that's basically impossible once you're deep in engineering flow, the next feature always feels like the one that matters. What's worked is writing down what 'done' means before starting, so there's something to check against later instead of relying on willpower mid-project. You basically did that with v0.2.0, just retroactively, by writing this post and drawing the line now. Curious if you'll set the next checkpoint explicitly before the 30 days start, or figure it out again as you go."
Yeah, I think the checkpoint needs to be explicit now, otherwise I’ll just move the goalposts in 30 days.
I’m settling on 10 real users as the minimum. Then the question is simple: did they actually use Recall on a real repo, and did any of them choose to use it again?
If I can’t even get 10 real users, that’s a distribution problem — not evidence that the product works or doesn’t.
This is a great reminder that building more features can sometimes be a way of avoiding the harder product question: “Does anyone actually need this?” I really like the 30-day pause on feature development and focusing on real usage instead. Curious to see what the usage data reveals about Recall.
Exactly. Building more is the comfortable part because it feels like progress.
Now I have to do the uncomfortable part and see what people actually do with it 😄
I’ll share the numbers after the 30 days, even if they’re terrible.
Let me leave another response because this is a really good topic. I also believe the issue here is complete market saturation when it comes to applications. On Google Play and the Apple App Store, there are millions of apps. I think a new strategy is what it takes. Look at Google now with SEO; to me, that is dead on arrival now that Google has AI Mode. Everyone today is getting their questions answered right from AI and not redirected to a static page. Also, when it comes to apps, the tech industry is shifting away from standalone apps to more AI Agents. Musk even stated that in the very near future there will be no Mobile Operating systems, just an AI agent running on your phone. The mindset needs to shift; the playing field rules are being reestablished. I have to ask myself: how do I take NexusDocs.ai which was just a proof of concept to see how powerful AI really is. To an AI agent that would allow people to use it without even needing to be reminded? How do you bring this automation?
I think the interesting part is that last question.
I’m not convinced every product needs to become an agent, but I do think “will the user remember to open my app?” is becoming a much more dangerous dependency.
For NexusDocs, I’d probably ask: what event happens right before someone needs it? If you can identify that trigger, maybe the product doesn’t need to become a full autonomous agent — it just needs to show up at the right moment.
I’m trying to apply the same thinking to Recall. MCP or deeper agent integration sounds obvious, but I don’t want to build it just because the market is moving toward agents. First I need evidence that people want Recall in their workflow at all.
Trigger before interface, maybe.
That's a really useful way to frame it.
I agree that not every product needs to become an autonomous agent. The harder problem is, "Will the user remember to open my app?" For something like TermsGuard, the real moment of need typically occurs right before someone accepts terms, signs a contract, or installs an app. If the product isn't present at that critical moment, even an excellent analysis tool can be forgotten.
Therefore, I've been focusing less on creating an "autonomous agent for its own sake" and more on "showing up at the decision point." While MCP is an interesting approach, pursue it only if it genuinely reduces friction for users who already want that workflow. Building it just because the market is discussing agents would be misguided.
A good rule of thumb is to trigger before the interface. For NexusDocs, this means clarifying when users feel the need for our service and then deciding whether the solution is a better reminder, a simpler entry point, or something connected to an agent later on.
I'm curious about how you're identifying those triggers for Recall, particularly how you differentiate between "theoretically interesting" and "something that would actually change people's workflows."
This is an issue we all face. You come up with more than just a good idea, but a need. That addresses a serious issue. An app that has true meaning, and in the end, it's so hard to sell it or even get users to try it and leave a comment or a review. I'm in the same situation. I created an app as a proof of concept. Could AI truly build this thing from the ground up and help with marketing it? NexusDocs.ai started as a proof of concept for using AI as a think partner. The first product is TermsGuard — more consumer / small-business focused. It summarizes contracts, terms of service, and privacy policies in plain English, flags privacy and legal risks, and lets you ask follow-up questions and export your responses to a PDF. A real need to give people peace of mind because no one ever reads the Terms and Conditions, NDAs, or most contracts; we just click I accept and move on, not knowing what we just signed. I understand your frustration; I believe everyone here does. In the end, you can offer a free product and still have difficulty getting people to try it or buy into it.
Yeah, I’m starting to think building the product is becoming the cheap part.
Getting someone to stop what they’re doing, try something new, and care enough to come back is much harder.
TermsGuard is actually a good example because the problem is obvious — almost nobody reads what they accept. The interesting question is whether that pain is strong enough at the moment of signing to make someone change their behavior.
That’s basically the question I’m trying to answer with Recall too. Not “is this useful?” but “is it useful enough that you’ll actually change your workflow for it?”
I think that distinction is where a lot of us get stuck.
Yeah — that distinction is the hard part.
“Is this useful?” is relatively easy to answer. “Is it useful enough that someone changes their workflow?” is a much higher bar.
With TermsGuard, the problem is obvious: almost nobody reads what they accept. But the pain is brief. People feel it for a few seconds at the checkbox, then they move on. So the question isn’t whether plain-English analysis helps — it’s whether that moment is uncomfortable enough for someone to pause and try a new step.
I’ve been thinking the same thing: building is getting cheaper; changing behavior is not. A lot of products fail not because they’re bad, but because the old workflow is “good enough” in the moment.
Curious how you’re measuring that for Recall — early signs that people would actually change behavior, vs just agreeing the idea makes sense.
The pivot to stopping at v0.2.0 is a vital constraint. Many of us fall into the trap of 'architectural perfectionism' because it feels productive to polish code, even when the underlying demand hasn't been validated yet. By forcing yourself to stop early, you shift your metric of success from 'code completeness' to 'feedback density'. If you struggle with the urge to keep building, try setting a hard deadline for the first 10 user interviews. If you haven't secured those conversations before the v0.2.0 milestone, you don't write another line of production code. It keeps the focus on the problem space rather than the solution.
I like the 10 interviews rule. That's concrete enough that I can't hide behind download numbers or GitHub stars.
v0.2.0 stays frozen. Finding those first real users is the job now.
The mechanism that finally worked for me: write the verdict rule before the window opens, not during it. A date, a number, and the three branches (continue / iterate one lever / kill) on paper before launch. Stopping stops being a daily willpower question — you pre-decided it once, and the discomfort compresses into the single moment of writing the rule instead of thirty days of re-litigating it with yourself.
One addition to your measurement list, learned from a post-mortem elsewhere on this site: pre-commit a denominator too. "Does someone who uses it once use it again" can only be answered if enough people use it once — decide now what N installs makes the test valid. Otherwise the honest day-30 verdict might be "the test didn't run" rather than yes or no, and those need different responses: thin reach means fix distribution and re-run; real reach with no retention is the actual no.
I'm mid-window on exactly this discipline right now (paid product, pre-registered thresholds, day 4 of 7) and can confirm the itch you describe: every quiet day, "build another feature" whispers that it's the productive choice. The pre-registration is the only thing I've found that keeps the quiet days from quietly redefining the test.
This is a really useful distinction. I hadn't separated “the test failed” from “the test never really ran.”
I already froze the product for 30 days, but I haven't defined the minimum number of real users needed to make the result meaningful.
I'm going to define that now rather than deciding it on day 30. Thanks — this actually changes how I'm thinking about the experiment.
I completely relate to this. As a developer, it's so easy to fall into the trap of over-engineering the architecture and over-polishing the UI before validating the market. For my current project, I intentionally went with a bare-bones, terminal-style dashboard with high information density. No empty space, no fancy animations—just the raw historical data needed to expose fake e-commerce discounts. Stopping at a functional MVP is a superpower if it means you get user feedback faster. Keep shipping!
Yep, that’s exactly the trap I’m trying to avoid this time. Building is the comfortable part — stopping and waiting for real feedback is much harder 😄
ohh this seems quite cool mate. Best of Luck. Also tell me if you've figured out a way to rapidly find your first users for that loop.
Thanks mate! Still figuring that one out 😄 Finding the first real users is probably harder than building the thing. If I crack it, I’ll definitely share what worked.
But, how would you measure in the first place unless you know something using it and letting you know something can be made better?
Exactly — that’s the constraint.
I can’t measure repeat usage from anonymous npm downloads if Recall has no telemetry and the user never talks to me.
So for this first validation phase, I’m not treating every download as part of the experiment. I’m recruiting a small group of users who explicitly agree to test Recall on real coding tasks and report what happened.
That gives me a smaller dataset, but one I can actually trust.
Public downloads are acquisition. The validation cohort is measurement.
If I can’t even find 10 developers willing to use it and report back, that’s useful evidence by itself.
The harder question comes later: if it passes that stage, how do I measure retention in a local-first CLI without violating the reason people may trust it in the first place?
I don’t have a good answer to that yet.
I guess, it would also be a good idea to try out creating content using Recall on real world coding tasks. This might get you the first 10 developers, once they see how it works. Did you try this direction?
How are you currently measuring activation and repeat usage for Recall?
Right now, imperfectly — and that’s a gap in the validation setup.
Recall itself has no usage telemetry, so npm downloads can’t tell me activation or retention. I don’t want to quietly add tracking just to make the metrics easier, especially for a tool positioned as local-first.
For this validation period I’m treating:
Activation as an external user successfully running Recall on a real repository and actually using the generated context in a coding-agent task.
Repeat usage as that same user choosing to use Recall again in a later coding session without me prompting them to.
I’m tracking those through a small cohort of external testers and session-level validation records, rather than inferring them from downloads or stars.
npm downloads, GitHub traffic/stars, and article engagement are acquisition signals only — not activation.
The weakness is obvious: this doesn’t scale and it relies partly on self-reporting. But for the first 10–30 users I’d rather have high-confidence manual evidence than add product telemetry before I know the product deserves it.
If Recall gets past this validation stage, privacy-preserving measurement is something I’ll have to solve properly.
Curious how you’d approach that for a local-first CLI without turning telemetry into part of the trust problem.
That makes sense. I’d avoid adding traditional telemetry too if “local-first” is part of the trust proposition.
One approach could be a privacy-preserving validation layer that only records anonymous product events/aggregates (e.g. activation completed, context used, repeat session), without sending repository contents, prompts, or code.
If you’re interested, I’d be happy to discuss how I’d structure it. Where’s the best place to reach you?
Yeah, that's roughly the direction I'd consider if Recall gets far enough to need it. The hard part for me is making “no telemetry” the default and keeping any measurement explicitly opt-in.
I'm curious how you'd structure the anonymous event model without introducing a persistent user/device identifier. That's the part I haven't found a clean answer to yet.
Did you find a solution?
Yeah, I think there’s a clean way to approach that without introducing a persistent identifier.
I have an approach for the anonymous event model that keeps measurement opt-in and avoids sending any repo contents, prompts, or code. I’d be happy to help you put together a lightweight prototype and see how it works with the first users.
If you’re interested, I can walk you through how I’d structure it.
Stopping at v0.2.0 only helps if you've also decided what would make you continue. Otherwise the rule just relocates the failure — two years of overbuilding one thing becomes several years of abandoning things at v0.2.0, and both look like discipline from the inside.
The version number isn't the signal. What's the observation that would tell you to keep going?
That’s a fair criticism — and it’s exactly why I set the continuation criteria before launching.
v0.2.0 isn’t the success condition. It’s just where I stopped adding variables.
The observation I’m looking for is this:
Across at least 30 real external coding sessions, Recall should reduce median time-to-first-correct-edit by at least 25% versus the native agent workflow, without materially hurting correctness, and reduce tool calls or context usage by at least 15%.
I also want to see repeat behavior: at least 30% of users coming back for 3+ sessions within 30 days.
If I can’t get at least 5 external users to use it repeatedly, or the measured time improvement stays below 10%, I archive it.
So the rule isn’t “stop at v0.2.0.”
It’s:
freeze the implementation, define the evidence before seeing the results, then let the evidence decide whether v0.3.0 deserves to exist.
Your point about serial abandonment is important, though. A freeze without a precommitted continuation condition can absolutely become another way to avoid making the hard decision.
Fair enough — you had the harder half already, and I read the version number as the rule when it was just the freeze point.
The criterion I'd look at hardest is the 30 sessions. Median time-to-first-correct-edit across 30 sessions is a reasonable measure, but the sessions won't be independent — a handful of your five users will supply most of them, and someone who has learned the tool's quirks gets faster at it regardless of whether the tool is good. The improvement you measure at session 25 is partly the tool and partly them.
The repeat-behavior criterion catches some of that, but it points the same direction: both of your signals get stronger as a user acclimates, so they'll agree with each other even if the tool isn't the cause.
Do you have first-session numbers separated out? A median that holds up on someone's first three sessions is a much harder thing to hit than one averaged over thirty.
Also, I'm on X as @ark_y_k if you're there — easier than tracking each other through IH threads.
What's missing from the discipline question: for people who don't write code themselves, the cost that normally forces a stop, running out of hours or hitting your own skill ceiling, doesn't exist the same way. I direct Claude to build Alisio, and a new feature can go from idea to shipped in an afternoon. That makes the 30-day freeze harder to hold, not easier, because nothing about the process signals "this is expensive, be careful." The gate I ended up needing wasn't time-based, it was a rule: no new feature ships until I can name the specific decision a real user made wrong without it. Not "would be nice", not "competitors have it", a decision. Most weeks nothing clears that bar, which is uncomfortable when building feels so cheap and fast. I don't have usage data yet to know if it's working. I only know it stopped me from shipping things I couldn't defend.
This is probably the strongest challenge to the 30-day rule I’ve heard so far.
You’re right: when implementation becomes cheap, cost stops being a useful constraint. And for someone who can direct coding agents all day, “I can build this by tonight” is almost the worst possible justification for building it.
Your decision rule is much stronger:
What specific decision did a real user make wrong because this feature didn’t exist?
I like that because it changes the burden of proof. The default becomes “don’t build it,” and the feature has to earn its way into the product through observed behavior rather than possibility.
I’m going to keep the 30-day freeze for Recall because I need a clean validation period, but I think the more important question is what happens on day 31.
A time-based freeze ends.
A decision-based gate doesn’t.
I may adopt exactly that rule after the validation period: no feature gets built unless I can connect it to an observed user failure, repeated friction, or measurable outcome.
And your last sentence is important too. You don’t need usage data yet to prove the rule improves the product. At minimum, you’ve already proven that it prevents features you can’t defend.
I’d be interested to hear more about Alisio and how you’re documenting those rejected feature ideas rather than losing them.
The hardest part is probably resisting the urge to interpret silence as a reason to build more. Giving yourself 30 days where usage is the only thing that can change the roadmap seems like a pretty good forcing function.
That's exactly the part I'm trying to force myself to do differently this time.
My default response to silence has always been “the product needs one more feature.”
With Recall, I've frozen feature development at v0.2.0. For the next 30 days, usage is the only thing allowed to change the roadmap.
I'm especially interested in one signal: not whether someone stars it, but whether they use it again on a second coding session.
If that doesn't happen, I think the answer is pretty clear.
Have you ever actually killed one of your own products after a validation period like this?
That makes sense. I’d be interested in continuing the conversation by email if you’re open to it. What’s the best email to reach you on?
Absolutely. Happy to continue the conversation.
I’m particularly interested in getting an outside perspective on the validation approach and, if Recall is relevant to your workflow, hearing what happens when you actually try it on a real repository.
I’ll reach out privately so we don’t have to post email addresses here.
Sounds good — you can reach me at hello@beryxa.com. I’ll keep an eye out.