Agoda Bangkok · Jun–Aug 2026 · Commercial Operations & AI Automation Intern · project 01 of 2

Commercial checks, reviewed by a person

A commercial team used to find sales opportunities by hand. Now one tool runs the checks and lists the candidates. A manager still decides which are real — then edits a ready-made draft for the account manager.

Live
Built forMy manager (commercial background, not technical) and the regional account-manager teams.
Runs asFixed checks and message templates — same input, same output. No generative AI while it runs.
Handed overA week teaching my manager how the tool works and how to use AI well.

01The problem

Finding an opportunity meant answering the same four questions for every hotel, by hand — then finding the right colleague and writing to them.

Which hotels sell with us but are not yet switched on with partner platforms such as Booking.com and Priceline? Is each one allowed to be — does it issue invoices, does its market qualify? And is it really worth a call?

Someone answered those questions by hand. Then they looked up who manages that hotel and wrote them a message.

Three of the four are routine. One is judgement. Then a lookup and a message. All of it in the same spreadsheet, by the same person — and again for the next row.

the old way on partner?invoice?market?worth it?find managerwrite …and the next hotel, and the next — same person, same afternoon

By hand: three routine checks, one judgement call, one lookup, one message.grey line drawing = done by hand · dashed box = a brain check

02What I built

One flow instead of a wall of rows. The routine checks run on their own; the judgement stays with a person.

grey = old waycolour = builtgreen diamond = a person decides
01
Find the gapsCompares what sells with us against what is switched on with a partner platform — the check the team used to do by eye.
02
Apply the rulesInvoice capability and market eligibility are checked first. A gap that fails the rules never reaches the list.
03
Post a review list in SlackOne card per hotel, with the responsible account manager already named — no looking it up.
A manager decidesShe ticks the candidates that make commercial sense and leaves the rest. The tool prepares; it does not choose.
04
Draft, ready to editA pre-filled message for the account manager opens in a pop-up. She edits it in Slack and saves.
05
Notify — if chosenEmail or Slack DM, as a separate click. Nothing is switched on automatically.
#commercial-checksreview channel · illustration
Commercial checksAPPtoday

2 hotels passed the rules this run. Tick the ones worth a call, then Next.

  • Harbour View Hotelsells with us · not on the partner platform
    invoice okmarket okmanager · J. T.
  • Lakeside Resortpasses the rules · reviewer: “not this one, not now”
    invoice okmarket okmanager · M. K.
Next → draftSkip this run
illustration · names invented · the real cards carry more fields and a table view

03What a person still decides

The tool never contacts anyone on its own. My manager reads each candidate and ticks the ones that make commercial sense — it cannot know what she knows about a hotel or a market. She can rewrite the draft before saving it, and notifying the account manager is a separate click.

We chose not to trust automation with the judgement. That was the design, not a limitation.

04What it removed

Three kinds of grunt work went away. The judgement did not — on purpose.

Repetition

The same comparison, by hand, row after row. Now it runs the same way every time; a person only reads the result.

False leads

Chase a gap, then learn it wasn’t allowed anyway. The invoice and market rules run first, so those never reach the list.

Copy-paste

Look up the account manager, write each message by hand. The name is on the card; the draft arrives pre-filled.

05How I built it

In detail, not in jargon. Five steps, roughly in the order they happened.

STEP 1
Asked first

I asked my manager and the account-manager teams what a useful notification needs: which facts, what wording, what to do next. That became the message template.

STEP 2
Wrote each check as a fixed question

A check is an SQL query — a written question to the database: “which hotels sell with us but are not switched on with the partner?” The invoice and market rules run before anything is shown.

STEP 3
Built a small Python service that talks to Slack

It runs the checks and posts the cards, checkboxes and draft pop-up. Same inputs, same outputs, every time.

Fixed logic was also the fit for the guidance I was given.

STEP 4
Reviewed with my manager, twice a week or more

Her feedback caught wrong tags, hotels already switched on, and tables too dense for Slack. I logged each finding, fixed it with AI coding assistants, re-ran, re-checked.

STEP 5
Handed over

Validated first in a dry run delivered only to a reviewer, then handed over: code in GitLab, automated tests, a written handover, and a week teaching my manager how the pieces connect and how to work with AI.

06My part · not my part

Credit where it belongs. I designed and built the tool; the commercial thinking and the final calls were never mine.

My part

  • Designed the checks and the rules they apply, from my manager’s goals
  • Built the Python service, the Slack review cards and the draft pop-up
  • Validated results with my manager; logged and fixed what was wrong
  • Asked the account-manager teams what a message needs to say
  • Wrote the handover; spent a week training my manager

Not my part

  • The commercial ideas and the final judgement — my manager’s
  • Talking to hotels — the account managers’
  • Agoda’s data, definitions and platform rules — given, not mine
  • Hosting and deployment — Agoda’s, not mine
  • Every automated test — I ran the validation; I didn’t write them all
Built with Python SQL Slack GitLab Claude · Cursor (coding help)
For the technical readerA Python service that runs fixed SQL checks and posts Slack cards, checkboxes and an editable pop-up; drafts come from templates filled with the check’s output. Code in GitLab with automated tests; validated in a dry run that delivered only to one reviewer, then handed over with written docs.

Facts on this page come from my own notes and interviews only. Anything drawn as an example is labelled “illustration”. Partner platforms are named as companies I worked with — never for.

All work