Top
Best
New

Posted by jnord 2 days ago

AI agents are starting to eat SaaS(martinalderson.com)
399 points | 379 commentspage 8
scotty79 2 days ago|
Let me give you an example of my workflow from tonight:

1. I had two text documents containing plain text to compare. One with minor edits (done by AI).

2. I wanted to see what AI changed in my text.

3. I tried the usual diff tools. They diffed line by line and result was terrible. I searched google for "text comparison tool but not line-based"

4. As second search result it found me https://www.diffchecker.com/ (It's a SaaS, right?)

5. Initially it did equally bad job but I noticed it had a switch "Real-time diff" which did exactly what I wanted.

6. I got curious what is this algorithm. So I asked Gemini with "Deep Research" mode: "The website https://www.diffchecker.com/ uses a diff algorithm they call real-time diff. It works really good for reformatted and corrected text documents. I'd like to know what is this algorithm and if there's any other software, preferably open-source that uses it."

7. As a first suggestion it listed diff-match-patch from Google. It had Python package.

8. I started Antigravity in a new folder, ran uv init. Then I prompted the following:

"Write a commandline tool that uses https://github.com/google/diff-match-patch/wiki/Language:-Py... to generate diff of two files and presents it as side by side comparison in generated html file."

[...]

"I installed the missing dependance for you. Please continue." - I noticed it doesn't use uv for installing dependencies so I interrupted and did it myself.

[...]

"This project uses uv. To run python code use

uv run python test_diff.py" - I noticed it still doesn't use uv for running the code so its testing fails.

[...]

"Semantic cleanup is important, please use it." - Things started to show up but it looked like linear diff. I noticed it had a call to semantic cleanup method commented out so I thought it might help if I push it in that direction.

[...]

"also display the complete, raw diff object below the table" - the display of the diff still didn't seem good so I got curious if it's the problem with the diffing code or the display code

[...]

"I don't see the contents of the object, just text {diffs}" - it made a silly mistake by outputting template variable instead of actual object.

[...]

"While comparing larger files 1.txt and 2.txt I notice that the diff is not very granular. Text changed just slightly but the diff looks like deleting nearly all the lines of the document, and inserting completely fresh ones. Can you force diff library to be more granular?

You seem to be doing the right thing https://github.com/google/diff-match-patch/wiki/Line-or-Word... but the outcome is not good.

Maybe there's some better matching algoritm in the library?" - it seemed that while on small tests that Antigravity made itself it worked decently but on the texts that I actually wanted to compare was still terrible although I've seen glimpses of hope because some spots were diffed more granularly. I inspected the code and it seemed to be doing character level diffing as per diff-match-patch example. While it processed this prompt I was searching for solution myself by clicking around diff-match-patch repo and demos. I found a potential solution by adjusting cleanup, but it actually solved the problem by itself by ditching the character level diffing (which I'm not sure I would have come up with at this point). Diffed object looked great but as I compared the result to https://www.diffchecker.com/ output it seemed that they did one minor thing about formatting better.

[...]

"Could you use rowspan so that rows on one side that are equivalent to multiple rows on the other side would have same height as the rows on the other side they are equivalent to?" - I felt very clumsily trying to phrase it and I wasn't sure if Antigravity will understand. But it did and executed perfectly.

I didn't have to revert a single prompt and interrupted just two times at the beginning.

After a while I added watch functionality with a single prompt:

"I'd like to add a -w (--watch) flag that will cause the program to keep running and monitor source files to diff and update the output diff file whenever they change."

[...]

So I basically went from having two very similar text files and knowing very little about diffing to knowing a bit more and having my own local tool that let's me compare texts in satisfying manner, with beautiful highlighting and formatting, that I can extend or modify however I like, that mirrors interesting part of the functionality of the best tool I found online. And all of that in the time span shorter than it took me to write this comment (at least the coding part was, I followed few wrong paths during my search for a bit).

My experience tells me that even if I could replicate what I did today (keeping motivated is an issue for me), it would most likely be multi-day project full of frustration and hunting small errors and venturing into wrong paths. Python isn't even my strongest language. Instead it was a pleasant and fun evening with occasional jaw drops and feeling so blessed that I live in SciFi times I read about as a kid (and adult).

giancarlostoro 2 days ago||
You could have also ran diff on both files and gotten a reasonable diff.
scotty79 2 days ago||
I ran kompare, kdiff3, meld, git diff --no-index (--patience, --word-diff, --histogram) and it was all useless.
austinjp 2 days ago||
> 3. I tried the usual diff tools. They diffed line by line and result was terrible.

Um. I don't want to be That Guy (shouting at clouds, or at kids to get off my lawn or whatever) but ... what "usual diff" tools did you use? Because comparing two text files with minor edits is exactly what diff-related tools have excelled at for decades.

There is word-level diff, for example. Was that not good enough? Or delta [0] perhaps?

[0] https://github.com/dandavison/delta

scotty79 2 days ago||
kompare, kdiff3, meld, git diff --no-index (--patience, --word-diff, --histogram)

All weren't remotely close to what I wanted.

On first glance delta is also doing completely standard thing. But I can't rule out that there are some flags to coerce it to do the thing I wanted. But searching for tools and flag combinations is not that fun and success is not guaranteed. Also I found a (SaaS) tool and a flag there that did exactly what I wanted. Just decided to make my own local tool afterwards for better control. With an agent.

> Because comparing two text files with minor edits is exactly what diff-related tools have excelled at for decades.

True. And I ended up using this excellent Google diff-match-patch library for diffing. AI didn't write me a diffing algorithm. Just everything around it to make a convenient tool for me. Most tools are for source code and treat end lines as a very strong structural feature of compared texts. I needed something that doesn't care about end lines all that much and can show me which characters changed between one line of one file and five lines it was split into in the second file.

zenethian 2 days ago||
Another big long AI-generated article. Sheesh. Bonus points for replacing the emdashes with regular hyphens to try to cover it up.
yellow_lead 2 days ago||
Another post with no data, but plenty of personal vibes.

> The signals I'm seeing

Here are the signals:

> If I want an internal dashboard...

> If I need to re-encode videos...

> This is even more pronounced for less pure software development tasks. For example, I've had Gemini 3 produce really high quality UI/UX mockups and wireframes

> people really questioning renewal quotes from larger "enterprise" SaaS companies

Who are "people"?

ares623 2 days ago||
Vibes can move billions of dollars from someone else's retirement money
samdoesnothing 2 days ago||
> For example, I've had Gemini 3 produce really high quality UI/UX mockups and wireframes

Is the author a competent UX designer who can actually judge the quality of the UX and mockups?

> I write about web development, AI tooling, performance optimization, and building better software. I also teach workshops on AI development for engineering teams. I've worked on dozens of enterprise software projects and enjoy the intersection between commercial success and pragmatic technical excellence.

Nope.

rester324 2 days ago||
> Agents don't leave

How wrong the author is about that! IMO As soon as the bubble bursts, which is already evident and imminent, these agents will raise their subscription fees to ridiculous amounts. And when that happens, entire organizations will abandon them and return to good ol' human engineering

theshrike79 2 days ago||
But local agents will still keep working. Of course they're not as poweful as an acre of industrially cooled compute power, but still a massive improvement over "Intellisense" and code snippets.

You're 100% right though, you shouldn't build your business on top of an AI service and not have a plan what to do _when_ it either goes away or just prices itself out. It's a massive bubble where money is just moving in a circle.

lelanthran 2 days ago||
> IMO As soon as the bubble bursts, which is already evident and imminent, these agents will raise their subscription fees to ridiculous amounts. And when that happens, entire organizations will abandon them and return to good ol' human engineering

It's worse than you state; a primary premise of the current AI expansion and investment, continuously repeated, is that computational resources are increasing for the same price-point.

So tell me, when we have these hardware gains in 5 years, why the fuck would I pay for fractionally better output on a cloud subscription when I could run on-prem GPUs for a fraction of what the actual subscription would be, giving me 24x7 agents working with no limit?

Current highly-invested AI providers are token providers - they are sitting at the bottom of the value-chain. They are trying to climb the value-chain, but the real value is in the models, and since all models have mostly converged on the same performance, running your own gives a very tiny drop in value.

Their problem is that, even at $200/m, it is not feasible to offer 24x7 access to the models - that max subscription has tiny limits: on that subscription you most definitely are not enabling even a single agent to run f/time.

You might get 3 hours per day, maybe. Best case, you get half a working day (4 hours), for five days. So double the subscription, and you're still looking at only a single simply agent that you can run f/time for $400/m.

For collaborating agents, you'll have, what, 4 - 5 diving into a large task in parallel? That's maybe $1600/m - $2000/m to solve tasks. You still have to pay the (increasingly incompetent) human operator to manage them.

That sort of workflow is what is being sold as the vision, and yet that will only be economically viable if you're self-hosting your own model.

ares623 1 day ago||
The way things are going personal computing will be a thing of the past. It started with GPUs being too expensive but now it’s RAM and eventually SSDs.

We’ll need AI not because it is actually better but because future generations won’t have personal computing hardware to start learning when they are 7.

pojzon 1 day ago||
Yes when I need to convert music in one way or another I dont pay 0.1$ to do it and be over with it.

I run Cloude Code to build that SaaS for me locally over the span of few weeks, to get the same value.

This article makes no sense.

insane_dreamer 1 day ago||
> most SaaS products contain many features that many customers don't need or use. A lot of the complexity in SaaS product engineering is managing that - which evaporates overnight when you have only one customer (your organisation).

This is the key point. Sure, you don't have the chops to be able to replicate the SaaS product locally with Claude/Gemini, but you don't have to, because you're no trying to make a product that can handle N+1 workflows.

dboreham 1 day ago||
Present day AI is a box that has these properties: a human has to create its inputs; a human has to verify its outputs; a human has to create the next input based on the last output. Extremely useful for sure, but this is not the kind of box you can use to scale a service delivered directly to end users who can't perform the activities labeled "human" in the sentence above.
jaredcwhite 1 day ago||
Checked out as soon as I saw the word "moat".

Classic tell this is tech bro-ese.

syngrog66 1 day ago|
I stopped reading after too many references to tasks solvable by a 1-line invocation of a CLI tool like ffmpeg or pandoc.
More comments...