My experimentation with Claude Cowork

Weekend tryst with Claude Cowork โ€” a very positive experience and surprisingly productive.
This article shares my hands-on experiment using Claude Cowork to build an end-to-end automated workflow for daily wind measurement data: extracting emailed CSV files, consolidating the data, monitoring for anomalies, and presenting the results on a dashboard. The most interesting takeaway was how quickly a recurring manual process could be turned into reusable skills, Python scripts, and a scheduled workflow.
Got a lot accomplished in just a few hours โ€” definitely worth experimenting with.

๐—˜๐˜…๐—ฒ๐—ฐ๐˜‚๐˜๐—ถ๐˜ƒ๐—ฒ ๐—ฆ๐˜‚๐—บ๐—บ๐—ฎ๐—ฟ๐˜†

This was a very positive experience, and it feels like a genuine paradigm shift for automating routine work โ€” not just running a task once, but writing the scripts, chaining them into a workflow, and presenting the results, all from a plain-language description of what I wanted. In about four hours, starting from nothing, I had a working application: an email-driven data pipeline with monitoring and a dashboard. All of it was built in the desktop version of Claude Cowork โ€” I described each step of the work, and Claude wrote the corresponding skill and the Python script behind it. Cowork then executes those tasks in its own cloud container, so there was no runtime environment to set up, configure, or maintain on my end โ€” no Python install, no dependencies, no server to keep running.

It's also strikingly cheap next to the alternative of hiring someone to build the same thing. Running the pipeline daily costs on the order of a few dollars a year in token-equivalent terms โ€” effectively a rounding error inside a subscription that's already flat-rate. Hiring a freelance developer to write and test the equivalent scripts would run roughly $900โ€“$1,700 up front, plus several hundred to a couple thousand dollars a year in ongoing maintenance every time the data format or requirements change. Cowork collapsed both the build cost and the run cost to nearly nothing, and folded the maintenance cost into "describe the change and ask again."

๐—ช๐—ต๐—ฎ๐˜ ๐—–๐—ผ๐˜„๐—ผ๐—ฟ๐—ธ ๐—”๐˜‚๐˜๐—ผ๐—บ๐—ฎ๐˜๐—ฒ๐˜€

Claude Cowork extends Claude from a single-conversation assistant into something closer to a background operator for knowledge work: you describe an outcome, step away, and come back to finished work. Sessions run on Anthropic's cloud servers, so a task keeps running after the laptop is closed, and progress is reachable from desktop, web, or mobile.

I get wind measurement data from a LIDAR every day. Each day's file contains 144 rows โ€” one row per 10-minute interval โ€” with average wind speed, wind direction, and several other weather parameters for that interval. The data arrives by email as a zipped CSV, and the point of this experiment was to stop pulling it down and merging it by hand every day. The pipeline I built does four tasks that are repeated daily:

โ€ข Connect to an email inbox and find a message from a specific sender carrying a zip attachment with a CSV file.

โ€ข Download the attachment file; unzip the file and extract the CSV file.

โ€ข Append the contents of the CSV into a consolidated file that holds all data collected to date.

โ€ข Monitor the data by running predefined checks on the new data; log any anomalies.

Figure 1: Workflow
๐—™๐—ถ๐—ด๐˜‚๐—ฟ๐—ฒ ๐Ÿญ. The daily pipeline: a zipped CSV arrives by email, gets unzipped and extracted, then its rows are appended to the consolidated file and checked for anomalies

๐—ง๐˜‚๐—ฟ๐—ป๐—ถ๐—ป๐—ด ๐—ฎ ๐—ง๐—ฎ๐˜€๐—ธ ๐—ถ๐—ป๐˜๐—ผ ๐—ฎ ๐—ฆ๐—ธ๐—ถ๐—น๐—น

A Cowork skill is a packaged set of instructions in plain English โ€” a short file plus, optionally, bundled scripts and reference material. Skills use a three-level structure: a short name and description so Claude knows when to reach for the skill; the full instructions, which load only once the skill is triggered; and any bundled scripts or reference docs, which load only if the instructions actually call for them. This means having hundreds of skills installed costs almost nothing until one of them is actually used.

๐—›๐—ผ๐˜„ ๐—ฎ ๐—ฆ๐—ธ๐—ถ๐—น๐—น ๐—”๐—ฐ๐˜๐˜‚๐—ฎ๐—น๐—น๐˜† ๐—š๐—ฒ๐˜๐˜€ ๐—–๐—ฟ๐—ฒ๐—ฎ๐˜๐—ฒ๐—ฑ

In practice, creating a skill was conversational, not a form to fill out. I described the task I wanted automated โ€” in plain language, the way I'd describe it to a person โ€” and asked Cowork to turn it into a skill. Claude then wrote the instructions and, where the task needed one, the Python script behind it. An example: unzip the email attachment, check that it's a CSV, count the lines, and compute the average of a column.

The one instruction that mattered most, and that I had to state explicitly rather than assume: tell Claude to save any script it writes and reuse it on future runs. Left unsaid, Claude will happily solve the task well the first time and then re-derive the code from scratch the next time it runs โ€” which works, but burns tokens re-writing logic that already exists and didn't need to change. Asking for the script to be saved and referenced from the skill (rather than regenerated) is what makes a skill cheap to run repeatedly instead of just cheap to run once.

For the email-to-consolidated-file pipeline, I split the work into three separate skills rather than one monolithic one:

โ€ข Email extraction โ€” connect to the inbox, find the qualifying message, download and unzip the attachment.

โ€ข Consolidation โ€” read the extracted CSV, compare it against the consolidated file, and append only the new rows.

โ€ข Monitoring โ€” scan the newly appended rows for known problem patterns and log anything worth flagging.

Figure 2: List of skills
๐—™๐—ถ๐—ด๐˜‚๐—ฟ๐—ฒ ๐Ÿฎ. Each skill pairs a set of instructions with a Python script that does the actual work; the three skills run in a fixed order.

Keeping these separate meant each one could be tested and fixed independently, and it made the eventual scheduled workflow easier to reason about โ€” a sequence of named steps rather than one large opaque prompt. I didn't hand-write any of these files, either: the instructions and the Python scripts they reference were themselves generated by Cowork. Iterating on the pipeline meant asking Claude to revise those files, not editing raw code by hand.

๐—ฆ๐—ฐ๐—ฟ๐—ถ๐—ฝ๐˜๐˜€ ๐—œ๐—ป๐˜€๐˜๐—ฒ๐—ฎ๐—ฑ ๐—ผ๐—ณ ๐—ฅ๐—ฒ-๐—ฅ๐—ฒ๐—ฎ๐˜€๐—ผ๐—ป๐—ถ๐—ป๐—ด ๐—˜๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ง๐—ถ๐—บ๐—ฒ

The instinctive way to build this with an LLM is to hand it the task in plain language every single run: "check the inbox, find the zip, unzip it, read the CSV, append what's new." That works, but it means Claude re-derives the same logic on every single invocation. That's slower, it's less predictable, and it burns tokens on repeated reasoning that doesn't need to happen twice.

Figure 3: Scripts in cowork
๐—™๐—ถ๐—ด๐˜‚๐—ฟ๐—ฒ ๐Ÿฏ. Without a script, the LLM re-derives the task logic on every run. With a script written once, every run executes the same deterministic steps.

Instead, for each skill, I asked Claude to write a Python script that does the actual work, and treated the LLM's job as writing and maintaining that script rather than performing the task itself each time. Once the script existed, a run consisted of Claude executing it and reading back the output โ€” a much smaller, more deterministic unit of work than reasoning through the whole task fresh. A script executes the same way every time, and only its output โ€” not its code โ€” has to enter the conversation. The LLM is still doing something valuable โ€” writing the script, fixing it when the input format shifts, deciding what counts as an anomaly โ€” but it's doing that work once, up front, instead of re-solving it on every run.

๐—ฆ๐—ฐ๐—ต๐—ฒ๐—ฑ๐˜‚๐—น๐—ถ๐—ป๐—ด ๐˜๐—ต๐—ฒ ๐—ช๐—ต๐—ผ๐—น๐—ฒ ๐—ช๐—ผ๐—ฟ๐—ธ๐—ณ๐—น๐—ผ๐˜„

With three skills built, the next step was chaining them into a single sequence and running that sequence on a schedule instead of triggering it by hand. Cowork's scheduled tasks save a prompt and a cadence, then execute that prompt automatically โ€” daily, weekly, hourly, or on a custom schedule โ€” without needing the computer to be on, since the run happens remotely.

Figure 4: workflow
๐—™๐—ถ๐—ด๐˜‚๐—ฟ๐—ฒ ๐Ÿฐ. A single scheduled trigger runs the three skills in order โ€” extraction, then consolidation, then monitoring โ€” and the dashboard reflects the result.

A few practical points from setting this up:

โ€ข Each scheduled run is independent โ€” it starts fresh, so any state the workflow needs has to live in a file the scripts check, not in conversation memory.

โ€ข Ordering matters: consolidation depends on extraction having already unzipped the latest file, and monitoring depends on consolidation having already appended the new rows.

โ€ข Scheduled runs can be reviewed after the fact โ€” each run's history stays available, which makes it easy to tell a run that quietly failed to find a new email from one that ran and found nothing new by design.

โ€ข A real friction point: unattended access to the laptop. This pipeline's data lives in a local, connected folder, not purely in the cloud, so a scheduled run that touches it needs access to the laptop the folder lives on. Claude will ask for that access โ€” sometimes at the level of full device/folder permission โ€” the same way it would if a person were sitting there approving each step. On a schedule, there's no one sitting there to click "approve."

๐—ช๐—ฎ๐˜๐—ฐ๐—ต๐—ถ๐—ป๐—ด ๐˜๐—ต๐—ฒ ๐——๐—ฎ๐˜๐—ฎ: ๐—” ๐——๐—ฎ๐˜€๐—ต๐—ฏ๐—ผ๐—ฎ๐—ฟ๐—ฑ

Appending rows and logging findings is only useful if there's an easy way to see the state of the data without opening the raw file. I built a lightweight dashboard on top of the consolidated data and the monitoring log โ€” a simple view showing the latest ingestion date, row counts over time, and any flagged issues surfaced at the top rather than buried in a log file. Its job is to answer three questions at a glance: did the pipeline run recently, did it add data, and did monitoring flag anything. Anything more elaborate is a nice-to-have layered on once the basic pipeline is trusted to run unattended.

๐—ช๐—ต๐—ฎ๐˜ ๐—ง๐—ต๐—ถ๐˜€ ๐—–๐—ผ๐˜€๐˜๐˜€ ๐˜๐—ผ ๐—ฅ๐˜‚๐—ป

Cowork itself is billed as a flat monthly subscription, not metered per token. What follows is an estimate โ€” translating the pipeline's actual token usage into what it would cost at Anthropic's published API rates โ€” to give the automation a concrete dollar scale.

A full daily run chains three skills and several tool calls, but because the scripts do the actual data handling, the CSV's contents mostly never enter the model's context โ€” only short summaries like "12 new rows appended" do. After trimming the skills down to lean, targeted instructions, a full daily run comes in under 10,000 tokens. At Claude Sonnet's published pricing ($2 per million input tokens, $10 per million output tokens), that's roughly $6โ€“12 a year in token-equivalent value. Since this is mostly fixed-step execution rather than open-ended reasoning, it's also a reasonable candidate for Claude Haiku, priced at roughly half of Sonnet โ€” bringing it down to roughly $3โ€“6 a year.

Cowork itself ships inside the standard subscription plans โ€” Claude Pro (roughly $200โ€“240/year) or Max (over $1,200/year) โ€” flat, regardless of how many scheduled tasks run under it. At under 10,000 tokens a day, this one pipeline is a rounding error against either plan.

๐—ง๐—ฎ๐—ธ๐—ฒ๐—ฎ๐˜„๐—ฎ๐˜†๐˜€

The overall shape of this experiment โ€” skill per step, script per skill, sequence scheduled end to end, dashboard on top to observe the result โ€” is a reasonable template for turning any recurring, multi-step data task into something that runs itself. The most useful shift in mindset was treating the LLM as the author of the automation rather than the automation itself: writing a script once and running it repeatedly is more reliable and cheaper than asking an LLM to re-derive the same steps on every occurrence.