How we used an AI Teammate to automate ocean shipment tracking (step by step)

I’d almost written off the AI Teammates program. We import storm and screen door hardware from Asia. The demos were all marketing-flavored — intake forms, production requests, drafting copy. None of it mapped to what we do. We’re a storm/screen door hardware importer and distributor. Our workflows are shipments, customs, logistics. Not exactly the target demo.

Then I had a thought: what if the AI Teammate could read PDFs from inbound ocean shipments and update custom fields in the project we use to track them?

So I got early access to the program, and the gap between what I expected and what happened was astounding. Here’s what worked for us.


The application

Three times a week, our freight forwarder sends an Excel report with updates on every active shipment — vessel names, ETDs, container numbers, status changes. Our logistics manager was manually reading that report and updating Asana tasks. Every time.

We used Asana’s AI Teammates beta to automate the entire process. This post walks through exactly how we did it, what worked, and what we’d do differently.


Our setup before AI Teammates

We track every inbound shipment as a task in a single Asana project. Each task has custom fields for the data points that matter: vessel, container number, ETD, ETA, status, port of discharge, etc.

The process was simple but repetitive: freight forwarder sends Excel → logistics manager reads it → updates the custom fields on each task → flags anything unusual. Reliable, but ~100 hours/year of someone’s time on data entry.


Step 1: Define what the Teammate actually does

We started by writing the AI Teammate’s instructions in plain language. No code. No API configuration. Just a clear brief explaining:

  • What the input looks like (an Excel report with specific columns)

  • Which Asana custom fields map to which columns

  • What counts as a “flag” that needs human attention (e.g., date slippage, vessel change, holds)

  • How to communicate — via task comments, stating assumptions before acting

The full instruction set was under 4,000 characters. That’s it.

You are a shipment tracking coordinator. Process Excel tracking reports attached to tasks assigned to you and update matching Asana tasks.
TRIGGER: A new task with an attached Excel file named like " (AUTO) Tracking".
PARSE: Read the In-Transit sheet. Row 8=headers, data starts row 9. Use HBL as the primary match key against Asana tasks, with PO column as the secondary against Asana task names. Update these custom fields from the report: File #, OBL_SET, HBL, DES, ETD, CONTAINER.
DUPLICATES: If the same filename was already processed, skip rows where all values match what's already in Asana.
NORMALIZE POs: A cell may contain multiple POs split by commas, ampersands, or "and" (e.g. 42908,42923 or PO# 42934B & A42947). First try matching the full string. If no match, split and match each PO individually. If PO is blank or NA, go to UNMATCHED.
MATCHING: Search for an Asana task where the HBL custom field matches the HBL column, and/or whose name contains the exact PO string.
No match → go to UNMATCHED.
One match → go to UPDATE.
Multiple matches → UPDATE all of them, then create a subtask: "⚠️ Duplicate PO tasks: PO [value]". Assign to task creator. List matched tasks with links and ask them to verify/merge.
UPDATE: For each matched task:
Empty field in task → set from report, no comment.
Field differs → update it. Comment: "⚠️ [Field] changed: [old] → [new] (source: [filename])". Group all changes for one task into one comment.
Field matches → skip.
Field populated in task but blank in report → keep existing value. Comment: "ℹ️ [Field] blank in report but has [value] in task. Keeping — please verify. (source: [filename])"
STATUS: Only comment when it changes from your last posted status on that task: "📦 Status update: [old] → [new] (source: [filename], FILE # [number])"
MULTI-PO ROWS: When one report row has multiple POs matching separate tasks, update all of them, then create a subtask: "⚠️ Multi-PO row — consider merging: [PO list]". Assign to task creator. Include FILE #, HBL, and links.
UNMATCHED: Create a subtask on the report task:
Name: "⚠️ Manual match needed: PO [value] / FILE # [number]" (if no PO: use HBL instead).
Assign to task creator.
Description: all row data (FILE #, PO, HBL, MBL, SHIPPER, CONTAINER, STATUS, VESSEL, ETD, DES, OBL_SET) and: "Reply with a link to the correct task and I will process the data into it."
When they reply with a task, apply UPDATE logic, then complete the subtask.
Never create new PO tasks. Only update existing tasks or ask for help via subtasks.
COMPLETION: Comment on the report task with a summary: filename, rows processed, rows skipped, tasks updated, fields changed, status changes, unmatched count, merge suggestions, duplicate warnings. Then mark the report task complete.

What worked: Writing instructions the way you’d brief a new hire. “When you see X, do Y. If you’re unsure, ask.” The AI Teammate responds to this style well.

What we’d do differently: Our first draft was both too vague on edge cases and too granular on behaviour. Be specific about what “flagging” means — does it mean a comment? A custom field change? Moving the task to a section? Spell it out. But trust that the AI Teammate will also extrapolate and build understanding, so you don’t have to specify each match and step the way you would in a deterministic system.


Step 2: Test with one document, then vary the format

We ran it against one sample document first. It mapped the fields correctly.

Then we deliberately tested a second sample with a out-of-date or new records. It adapted. No re-training, no broken rules. As instructed it asked how to handle records that didn’t match and started building a memory.

This is where it diverges completely from RPA. Three years ago we explored an RPA approach for the same problem. That would have required 10–20 hours of development, training on the RPA platform, and any deviation from the expected format would have broken it. We shelved it.


Step 3: Expand from single documents to full process ownership

Once we trusted the single-document workflow, we expanded its scope to the full thrice-weekly Excel report. The AI Teammate now:

  1. Reads the incoming report

  2. Matches rows to existing shipment tasks

  3. Updates all relevant custom fields

  4. Flags anything that changed unexpectedly or needs a human decision

  5. Comments on tasks with a summary of what it did

Our logistics manager will go from triaging every line to reviewing only the flags. We will also be able to deprecate a parallel Excel tracker she’d been maintaining — that data now lives entirely in Asana.

We named it Cargo Clerk.

:camera_with_flash: [SCREENSHOT (optional): Before/after of the logistics manager’s workflow — could be the deprecated Excel file next to the Asana project, or a portfolio-level view with AI-populated data rolling up.]


The ROI math

Time to write instructions ~2 hours
Time to test + refine ~6–8 hours
Total setup 8–10 hours
Annual work replaced ~100 hours/year

Each subsequent Teammate takes less time to train because you get better at writing instructions. The skill is brief-writing, not technical configuration.

And the kicker is that the setup time isn’t all up-front heavy lifting like it used to be. It’s incremental, engaging, rewarding, and organic. Just like onboarding a new teammate should be.


Three things I learned

  1. Start with a process that’s already well-defined. If you can’t explain it to a new hire in under a page, you’re not ready to hand it to an AI Teammate. We had an advantage because our shipment tracking workflow was already documented and structured in Asana.

  2. The Teammate is better at adapting to format variation than RPA, but it’s not magic. You still need to define what “good” looks like. The more specific your edge case instructions, the fewer false flags you’ll get.

  3. The biggest unlock isn’t time saved — it’s attention recovered. 100 hours/year sounds good on paper, but the real value is that our logistics manager stopped context-switching into data entry mode multiple times per week. That’s hard to quantify but easy to feel.


What I don’t know yet

Pricing hasn’t been announced. I’m skeptical it’ll fit my team’s budget. But the capability is real, and I suspect the most valuable use cases haven’t been found yet.


Over to you

Most AI Teammate demos I’ve seen are intake-form or content-workflow oriented. We found value in a completely different direction — operational document processing.

What’s a use case you’ve built, or would want to build, that breaks out of the “intake form” box?

Curious whether anyone has tried:

  • Vendor or supplier communication monitoring

  • Financial document parsing (invoices, POs)

  • Multi-step approval chains where the Teammate manages sequencing

10 Likes