When someone says "I built an automation," they could mean three very different things:
- A 50-line throwaway script.
- A reusable tool with a UI.
- A fully autonomous system.
Each serves a purpose. But most people stop at scripts when they should be building tools.
Example: My Document AI Starter is intentionally designed as a tool, not a script. Here is why that matters.
One-Off Scripts
A script is code you write once to solve an immediate problem.
Characteristics:
- No UI, just hardcoded paths.
- No error handling (it just crashes if something goes wrong).
- No documentation.
- You run it, it works, you delete it.
When to use:
- Ad-hoc data cleanup.
- One-time migrations.
- Quick experiments.
Example:
# Quick script to rename 50 files
import os
for i, file in enumerate(os.listdir("./data")):
os.rename(f"./data/{file}", f"./data/file_{i}.pdf")This works once. But if you need to reuse it next month, you'll forget how it works.
Reusable Tools
A tool is a script that evolved. It has:
- Configuration (via CLI arguments or config files).
- Error handling (it tells you what went wrong).
- Documentation (a README or help message).
When to use:
- Tasks you'll repeat monthly or quarterly.
- Tasks someone else might need to run.
- Tasks that need to work on different environments (dev, staging, prod).
Example: The Document AI Starter is a tool. It has:
- A
config.yamlfile for customization. - CLI flags for batch vs. single-file processing.
- Error logging for debugging.
This means it can be reused on different projects without rewriting the code.
Maintainable Systems
A system is a tool that runs on its own.
Characteristics:
- Fully automated (triggered by events, not humans).
- Monitoring and alerting (you know when it fails).
- Version-controlled infrastructure (Terraform, Kubernetes, etc.).
When to use:
- Daily/hourly tasks.
- Mission-critical workflows.
- Tasks that need to scale horizontally.
Example: A system version of Document AI Starter would:
- Watch a folder for new PDFs (using a Cloud Function trigger).
- Process them automatically.
- Send alerts if processing fails.
Why Most People Stop Too Early
Building a tool takes 3x the effort of a script. Building a system takes 10x the effort.
But here's the ROI: A tool can be reused 100 times. A system can run forever.
If you know you're solving a recurring problem, skip the script phase and go straight to building a tool.



