We did it! Prelint hit #1 on Product Hunt this week - thank you for every upvote, comment and DM Now let me return the favour:
I honestly didn't imagine a launch where we'd have a customer registering every couple minutes - or that I'd spend part of it exchanging comments with one of the world's most popular YouTubers. Wild week.
I replied to every comment on our launch - solo builders, CTOs, investors all interested in the same problem from different angles. Here is how it started in February:
Prelint exists because of one code change. An agent ignored our event-driven architecture and implemented a feature completely bypassing it. The code was technically correct, passed all tests. And nobody made that decision - it was just quietly baked into our product.
That's product drift. It's almost never one big bad call - it's micro-decisions nobody notices for 6 weeks. A change in permissions, a "simplified" billing edge case, a dependency nobody approved. Usually it's good code, wrong product.
So here's my launch offer - not a discount - it's my time.
If you're rolling out coding agents and agentic workflows at your company right now, comment or e-mail me at wojtek(at)prelint.com. I'll share the exact agentic workflows and tooling we use internally to manage 50 production changes a day as a small team and I'll honestly tell you which parts you can solve in-house before you need a tool like ours. These conversations were the best part of the launch and I want more of them :)
Also - if you want to see what your agents have been deciding on your behalf, connect a repo at prelint.com Code PH100 gets you 100$ in free review credits this month - it's full speed AI, but with lane assist.
When Prelint flags a conflict, can you jump straight to the exact source and version behind that decision? That would make it easier to tell a real conflict from stale context.
Prelint
Thanks for the question Flavio!
Kind of. We do a bit more heavy lifting than only quoting, but generally yes. When you have a long decision tree (eg documents in multiple languages, in tables, combined with a high verbosity call) we do some paraphrasing in squashing in non-critical areas. We also have a supersession and expansion model where some decisions expand on others without duplicating their content, so sometimes it's a small graph rather than one specific source.
@wojtekszkutnik when it paraphrases part of that decision graph, how do you stop the paraphrase from becoming the new source of truth instead of the original evidence?
Congrats on the launch! I feel like the opposite is often the case where the ADR/docs etc are out of date and stale. How do you trust the materials it is basing the drift detection on?
Prelint
Thanks Haritha! We don't and we often flag these. It's always a dial - we don't want to be noisy and a lot of these improvements should happen in the context of other changes rather than trigger an alarmy straight away. In these cases, when the agent uses the CLI it understands the decisions are superseded even if technically they are still in the docs.
These cases are then visible both in the CLI and the interface.
the "decision ledger vs check code against docs" framing is what actually clicks for me. i keep a section in my own CLAUDE.md that's a manual, extremely low-tech version of this, not architecture notes, just "already tried this, here's why it didn't work" so the agent doesn't quietly rebuild the same mistake three months later. what i can't do by hand is catch the drift in real time instead of noticing the pattern repeating after the fact.
question on an existing repo: does the ledger backfill decisions from git history, or does it only start learning from the point you connect it?
Prelint
Thanks Raffay! It analizes the HEAD but not the git history at the moment - I have no data how helpful that would be yet so I don't want to make any assumptions - it's on the list of experiments we'll try at some point possibly.
Do try splitting your decision docs into ADR files with dedicated IDs for decisions - there's two benefits to this: agents and Prelint love quoting specific identifiers and it makes them greppable if you don't use a tool like Prelint - sometimes agents need to retrieve something quickly and if you have hundreds of ADRs including titles in filenames it's a more efficient lookup. Occasionally Prelint will do that too so even then it helps.
@wojtekszkutnik the greppable-IDs point makes sense, hadn't thought about that angle since i've just been writing prose paragraphs, not files with actual identifiers. going to try splitting mine out. good luck with the launch
Congratulations. Does Prelint suggest the closest approved design pattern when it detects a violation?
Prelint
Thanks for the question Kumar! It doesn't suggest a specific line-by-line code solution (we think your agents are pretty good at that) but it does quote a specific ADR or decision that typically includes the right way to do it in case of design patterns.
We were using similar thing in my project but built in-house, that's actually super valuable
Prelint
Yes! I had someone ask why is it not a Claude Code skill last week, and the honest answer is - it is, for the first 10% of the job it works super well.
I love that companies now build parts of the tooling in-house, we actually advise some enterprise partners on it too. I think it's validation not competition 😊 I cheer for everyone struggling with the same problem and when it escalates we're always there to provide a best-in-class solution based on all of our experience.
Also - if your company is still looking at these kinds of processes - feel free to message or DM me, I'll happily advise on in-house processes too and share our agentic workflows and if Prelint can be of help at any future time - even better.
Congrats on the launch guys! What kind of integrations do you guys have?
Prelint
Thanks Paulina! We add more integrations every week. You can assume we integrate with all major product management tools like the Atlassian suite, Notion, GitHub Issues, Linear as well as meeting recorders like Read.ai etc. We have a lot of expansion work going towards Slack as well (here the biggest problem is noise so we're working on eg attaching Slack threads to specific decisions).
The biggest limitation is that for now we plan to stay GitHub-native for source control until someone gives us a good reason to expand.
Congratulations on your launch! quick minute question: couldn't someone give instructions to the AI coding agent to check specification document or product design document before shipping code?
Prelint
Thanks, Richard! They could and should and it does a great job at detecting the first 20% issues.
Our core strength is that in the background of a simple "reviewer" we store a decision ledger that understands not only "what is written in the docs" (this you can compare using a Claude skill) but helps companies organize colliding specifications and decisions, understand how they supercede and override each other and which require human attention. We also understand the authority of the person making the decision (and whether it's a human or an AI).
As a starting point we are quite good at squashing and deduplicating decisions out of the box to address messy documentation, but we also have CLI tools that allow users to iterate on the ground truth that Prelint stores, understand which docs clearly contradict each other and just need addressing.
The problem is also that most teams now create design docs on the fly - so the issue is often not "does the code follow the docs?" but "does anyone know what the AI is actually building?" - and this is a problem that both small and big teams have. In larger orgs it's often a bigger mess because there's less transparency and product and business people get completely lost.
@wojtekszkutnik Thanks for the quick response. I completely agree that because AI can do it faster and easier most teams don't sit and take time to plan the design and requirements carefully. AI is a tool and will do what it thinks you want to accomplish. So I totally get it now. Well done solving an emerging problem for coding.