This is a reflection written about my first ETL push to production after my second T project. The honest version. It is a reflection about what I would have wanted to know looking back at that point of time and a record of the things that slowed everything down, the assumptions that turned out to be wrong, and what knowledge would have been useful for a new intern before your first push.
Understanding The Problem Comes First
When I got my first data ticket at Vatico, I assumed the hard part would be the code. It wasn’t. The hard part was understanding the business well enough to know what I was actually being asked to measure — and that took far longer than writing any query.
Looking back, almost every delay I experienced in the first two weeks came from the same root cause: I didn’t understand the business flows behind the data I was touching. I was querying tables I didn’t fully understand, mapping statuses I hadn’t verified, and building logic on top of assumptions I hadn’t confirmed. The code was fine. The foundation wasn’t.
The same problem arose even in my second ticket. Imagine being asked to measure courier success rate. While it sounds simple, it can mean three completely different things depending on where the bottleneck lies:
• Warehouse handoff: Did the warehouse successfully hand the package to the courier? (If they failed, it’s a warehouse problem, not the courier’s fault).
• Courier delivery: Did the courier successfully deliver the package to the customer? (If they failed, it’s a courier performance problem).
• System operations: Did Vatico’s servers successfully sync the order details to both the warehouse and the courier? (If they failed, it’s an operations/IT pipeline problem).
Build around the wrong one, and you will spend three days on a ticket that should take one morning. Not because you wrote bad code — because you answered the wrong question.
That distinction alone — understanding which handoff in the order-to-delivery chain you are measuring — is worth more than any SQL optimisation you could learn in your first week.
Before opening a ticket, review “How to approach a task in a Data Sprint”, “Intentionality — less is more”, and the reference example inside the Data Analytics Training Slides. These materials will equip you with the expectations from your supervisor and the skills to produce intentional work.
The Business Flows You Need to Know First
Use the Vatico bot for table discovery, but don’t rely on it for business logic. The bot tells you what tables exist, not why the business operates the way it does. Read our internal blog posts thoroughly and clarify context directly with your supervisor before opening a ticket.
Why this matters: The bot knows schema structure, not operational and business flow context. Relying on it for business rules leads to querying technically valid tables to answer the wrong questions — wasting days building logic on false assumptions.
Master these core business flows first — missing this context is what causes most early project delays:
Here are some links to get you started on the business flows, business constraints, SLAs (Service Level Agreements) and processes that VATICO does.
- Overall operational and data workflows for payment reconsolidation:
https://vatico.vn/2023/03/03/overall-operational-and-data-workflows-for-payment-reconsolidation/ - Process for buyers:
https://vatico.vn/quy-trinh-danh-cho-nguoi-mua-hang/ - Shipping Policy and Shipment Procedures:
https://vatico.vn/chinh-sach-van-chuyen/ - Ordering Policy and Payment Processes:
https://vatico.vn/quy-trinh-thanh-toan/ - Return Inspection and Refund Policy:
https://vatico.vn/quy-trinh-doi-tra-hang-va-hoan-tien/ - Resolution Dispute and Complaints:
https://vatico.vn/quy-trinh-giai-quyet-tranh-chap-khieu-nai/
Take a look at the CRM in your free time: we looked at orders to see how orders were processed.
The rule of thumb: if you cannot explain the business flow behind the metric you’re building in plain English to a non-technical person, you are not ready to write the query yet. The code comes last.
Status Values: The Hidden Complexity
A status column isn’t just a string — it’s a business rule encoded as text. Assuming what it means without verification leads to logic that is confidently wrong.
Here are the status questions I wish I had asked in week one:
Know Your Tools — Before You Need Them
Early on, I spent time trying to get access to systems I didn’t need yet, while not fully understanding the ones I already had access to. The more useful habit is to know your verification tools well from the start — because when your numbers look wrong, you need to know exactly where to go to check them.
| Tool | What it’s the source of truth for | What to use it for |
|---|---|---|
| WooCommerce / WordPress | Sale orders and their statuses | Verify order states, check customer records, confirm what “cancelled” or “completed” looks like at the source |
| Courier portal (Courier A / Courier B) | Shipment tracking and courier-side statuses | Verify delivery outcomes and shipment status labels — especially important to check for inconsistencies between our database and our couriers |
| Google Data Studio | Warehouse’s operational view | This is where you can track orders inbound and outbound from the warehouse. |
| Datahub | Data lineage and model documentation | Trace where a column comes from, understand how a table is built, use it to track for lineage (upsteam and downstream). So that you know where each table draws data from and who it passes it to. |
| pgAdmin | What is actually in Datahub / the database | validate that the data you expect to find for example from Datahub is actually there |
| Vatico Training Data Blog Posts | Business flows and process knowledge | Read these to understand why the data is structured the way it is, to gather experience from the past intern, to understand business flows |
| Vatico Bot | Data Discovery and Ticket Refinement | Use it to discover where to look for data, to get quick answers to where some data might be, or how to build some basic queries. But never trust it blindly — always validate the information it gives you with the actual data or models |
Litmus Test: Test your understanding
Before you write your next ticket or touch any data, can you answer these 10 business and technical questions about how VATICO operates? If you don’t know the answers, research our process docs and blog posts first—because these rules directly affect how we scope problems and build data models.
If I have a shipping order that is marked as ‘returned’ in my database but the warehouse says it is shipped, what could the possible problems be?
If my courier delivers a package, when must the VAT invoice be issued?
If the courier says that my order is at their warehouse, but the database says shipped, what could that mean? How long max should the package be stuck at the warehouse before it becomes concerning?
What is the difference between COD and prepaid for VATICO? How does it affect the expected delivery time to the customer?
Can a customer refund and change their details for an order? If yes or no, why is it designed like that?
What is the difference between an order being “on-hold” versus “cancelled” on WooCommerce?
What timezone should our timestamps be stored in inside our database?
If there is an error in the staging data, what could be the causes? Should I fix it directly in staging now?
In pgAdmin, where can I check records for warehouse orders? Where can I check records for sales orders? Where can I check if something is successfully delivered?
How many marketplaces does VATICO support for Vietnam and Singapore?
If you can answer these questions, you should have a good foundation of how VATICO operates.
Start well. Scope tight. Ask early.

