Building Cardano transactions manually is painful. You have to worry about UTxO selection, fee calculation, min ADA, script sizes, redeemer indices...
Mesh Transaction Builder handles ALL of this automatically. Just describe what you want, call `.complete()`, done.