The workflow decision
For browser download workflows, the useful comparison is whether Notte or Tilion can meet the following outcome: The application receives the complete expected file, verifies its content marker and associates it with the originating account and job.
A successful click does not establish that the download completed or that the file survives session cleanup. Browser profile persistence does not imply persistent downloaded files.
A proposed acceptance case
A signed-in job requests a report from a website and transfers the completed file to application storage. A download beginning is not the delivery outcome.
This is an evaluation design, not a claim that this workflow has been executed successfully on every provider.
| Part of the test | Required observation |
|---|---|
| Controlled input | A controlled report with a known filename, expected content marker and application-owned destination. |
| Pass condition | The application receives the complete expected file, verifies its content marker and associates it with the originating account and job. |
| Negative case | Close the browser before a deliberately delayed download completes. The job must detect the missing or partial artifact instead of reporting a delivered report. |
| Evidence to retain | Website report ID, file byte count, content verification and destination object reference. |
Documented mechanisms, side by side
These labels describe product mechanisms. The linked source and the acceptance case determine whether a mechanism meets this workflow's requirement.
| Requirement | Notte | Tilion |
|---|---|---|
| Code execution | Python Functions | Not established |
| Scheduled execution | Native | Not established |
| Recordings / replay | Documented | Not established |
Sources: docs.notte.cc [1] ↗docs.notte.cc [2] ↗tilion.com [3] ↗
Where the code runs
Notte: Functions deploy Python code with a run() entry point. Invoke them over HTTP or with an SDK, inspect run history, and roll back code by redeploying an earlier version as the latest version.
Tilion: Public documentation reviewed for this comparison does not establish a deployable Function or app-action contract. Confirm where your automation code runs and how invocation, versioning and logs work before choosing the execution path.
Sources: docs.notte.cc [1] ↗tilion.com [2] ↗
Deployment ownership
Notte: Use a remote browser from your existing process or deploy the browser automation as a Notte Function. These choices put lifecycle, scheduling and monitoring responsibilities in different places.
Tilion: The public access path currently points to a waitlist and contact. A production integration needs an agreed API contract, service access and ownership of the browser lifecycle.
Sources: docs.notte.cc [1] ↗tilion.com [2] ↗
Pricing model
Notte: The public usage rates are $0.01 per browser-hour, $0.05 per Function-hour and $10 per GB of managed proxy traffic. Paid plans return their price as usage credits. Price the relevant meters and plan eligibility for the workload.
Tilion: Arena provides an estimated usage rate for its test. The reviewed public homepage does not establish a self-serve production plan, allowances or overage terms. Obtain those terms before quoting a monthly bill.
Sources: notte.cc [1] ↗tilion.com [2] ↗
What should change the choice?
Notte belongs on the shortlist when saved account state and an executable browser workflow simplify the report job. Confirm the chosen file-transfer API and storage boundary in the current docs before moving the delivery step.
Tilion: The reviewed Tilion homepage offers a waitlist and contact route. Arena's tested integration is useful evidence about a run, but a purchasing or migration decision still needs a documented access, state and execution contract; those unknowns must remain visible beside Notte's public docs.
A working download-to-storage pipeline is a reason to retain the current provider until an equivalent artifact path is demonstrated. Neither a replay nor a successful page navigation proves that a file arrived.
Sources: docs.notte.cc [1] ↗docs.notte.cc [2] ↗notte.cc [3] ↗tilion.com [4] ↗
The cost boundary
Use the same attempted work and eligible account capacity in both estimates. The browser-hour rate does not include every proxy, execution or identity meter, and the cost of an incomplete job is still part of the workflow budget.
The workload evidence should include: Website report ID, file byte count, content verification and destination object reference.
Sources: notte.cc [1] ↗tilion.com [2] ↗
Make a bounded pilot
Check download completion, file type, byte count and application access before stopping the session; verify retained results afterward.
Use the same authorized account, input and final-state check in each configuration. Treat a missing product contract as an open question; do not turn an undocumented capability into an unsupported claim or a successful test result.
- Separate website report generation from provider file retrieval in the current code.
- Keep the destination and content check unchanged while replacing the retrieval path.
- Test delayed and interrupted downloads before switching scheduled report delivery.