They generate. We assemble.
A generated app is bounded by what one model can write inside one context window. An assembled app is bounded by the best software that already exists, plus the quality of the joins. Where proven code exists, proven code wins, and the gap widens every year the open-source estate grows.
They are good at layouts and CRUD and break on multi-step business logic — shipping wrong arithmetic.