Field Report // NO. 032
My agent did the points arithmetic, I booked the flights: an Avios decision loop
How a personal agent turns a vague trip wish into ranked, priced, bookable flights: value points against the live cash fare, make every screen reading falsifiable, and keep the paying click human.
“Caribbean weather in May” is not a spec. It is four words typed into a Discord thread on a Sunday morning, the kind of half-wish most of us park and never act on. By that evening the flights were booked, paid for with tens of thousands of loyalty points and a few hundred pounds of taxes instead of a four-figure cash fare, and the confirmations sat in two calendars, time zones handled. I did the booking click and two corrections. My agent, a personal profile I call Porter, did everything else. This piece shows you how to run the same loop: the arithmetic rules, the pricing screen that nearly ended it, and the design rule that makes an agent safe with your money.
Four words is enough if the loop already exists
A vague wish becomes bookable when an agent chains two lookups it already knows how to do. Porter runs on Hermes Agent, lives behind Discord, and keeps its travel rules in a plain markdown skill file, which is just a notes file the agent reads before it answers. Porter did not ask clarifying questions for an hour when I typed the wish. It ranked the islands by recent observed rainfall, because the Caribbean everyone remembers from brochures has shifted as the climate has, then cross-referenced the wettest months against every route British Airways flies out of London. Antigua came out on top: among the driest of the direct destinations in recent Mays, a nonstop from Gatwick, and, because I was looking on the day the fares moved, the cheapest board price in sight. Two of us, a four-figure fare all in. Most people never get past the wish because each step is a separate evening of tabs. Porter cleared them in one thread because the loop already existed. The searching side of that loop has its own article, so does the flight-watching side; this is the deciding side, and it is the layer that actually moves money.
Points are money with a posted exchange rate
The first thing Porter did with my flights was try to talk me out of spending my points on them. Avios, British Airways’ loyalty points, are a currency with an exchange rate that changes daily. The honest rate is not a rule of thumb; it is this: value per point equals the live cash fare minus the cash component of the award, divided by the points spent. The denominator that matters is the fare you would actually pay today, on sale, not the brochure number, because a redemption that only beats an inflated fare is not a saving. Porter holds this rule in its skill file, along with a guardrail about my companion voucher, a coupon that wipes the points price off a second seat while leaving the cash taxes untouched. Free-Amex vouchers are economy-only, and economy to the Caribbean carries a few hundred pounds of taxes per person, so the textbook advice says the voucher earns its keep in business class or stays in the drawer. Porter told me exactly that. Then I sent it a screenshot anyway, because the screen in front of me looked like a bargain, and the whole discipline of this loop exists for the moment a human ignores good advice because the marketing said please.
The pricing screen read back wrong twice
Airport bureaux de change make money by showing you a big number and hiding the commission, and British Airways’ mix picker, the slider that splits a booking between points and cash, borrows the trick. My screenshot showed six rows of Avios prices with a cash column, and a strikethrough on the points figures that flattered the deal. Getting the screen read at all was the first break. The platform vision tool could not see the image on the first pass, so I said use flash GLM 5.3, and Porter routed the screenshot straight to the vision model over the coding endpoint instead. The read came back clean. The second break was worse, because it produced a confident wrong answer: Porter read the cash column as per-person and priced all six rows against half of my real cash alternative. Every row came back negative or terrible, verdict pay the cash fare and keep the voucher. The lesson from break one is that every load-bearing sense needs a second path; the lesson from break two is that the agent should say how it read the inputs in one line a human can falsify. Mine took one message: “No. It’s the total for both of us, not pp.” Still wrong, so I corrected it again: those figures are the full cost, all in, for both of us.
When the reading flipped, the verdict flipped
One corrected input turned the whole board upside down, which is the real reason to argue with your agent instead of shrugging. Re-run with the totals read correctly, the screen told a different story. Row six cost tens of thousands of Avios plus a few hundred pounds total for two, against a four-figure cash fare, a saving of roughly eight hundred pounds at just over a penny per point. For context, a healthy long-haul economy redemption clears about 0.6p; the misread had scored the same row at well under half that. Five of the six rows were still bad deals, rows where you would pay more total cash than the fare itself while burning points, but the best row was genuinely good, good enough to beat both the sale fare and Porter’s own economy-voucher default. And this is where the rulebook lost to the board: defaults set the starting position, the live arithmetic decides. Porter flipped its verdict, told me to take row six, and attached the three checks it could not see from a screenshot: that the flights behind the row were the morning nonstops and not a two-stop routing, that my balance covered the full points price because a shortfall gets topped up with cash at bad rates, and that the voucher would burn, so no business-class play later. I checked those three things at the checkout, because the click that moves money is mine, and booked it.
The decision loop
The tooling is an agent with a skill file and a vision path; the loop is the part worth keeping.
- Store the rules where the agent reads them. A markdown skill file with the always-on rules: value every redemption against the live sale fare, never a rule of thumb; compute value per point per row; check the off-peak calendar, British Airways’ list of dates that price about 30% cheaper in points, before quoting an award price. Without the file, the agent answers from marketing logic it memorised somewhere.
- Price the wish against the live board. Cash fare first, the real sale fare on the real dates, fetched in the same session as the points pricing. Award space and cash fares move independently, so quote them side by side or not at all.
- Convert, never assume. Value per point equals cash fare minus the award’s cash component, divided by points spent. On my screen: a four-figure fare minus a few hundred pounds of taxes, divided by tens of thousands of points, lands just over a penny. Anything under roughly 0.5p is a no; quote the rate next to every option so the comparison is visible.
- Read the screen out loud. Before the verdict, one falsifiable line: “the plus-cash column is the total for both passengers, voucher applied, nothing else to pay.” If the reading is wrong, a human fixes it in five seconds, which is exactly what happened here. An unstated reading fails silently; a stated one fails cheaply.
- Verdict with sanity checks. The agent states the best row, the saving, and the checks it cannot perform from a screenshot: the flights behind the row, the balance covering the full points price, what the booking consumes. The agent sees the menu; only the human sees the till.
- The human books, the agent finishes. The checkout happens on the airline’s own site, with my card and my click. Then the hand-back: I told Porter it was booked, and Porter added both flights to my calendar and my partner’s with the time zones right, which is the unglamorous half of the deal and the reason I trusted it with the glamorous half.
What it cost and what it cannot do
The loop ran on infrastructure I already had, which is the honest cost line: Hermes, a Discord account, a markdown skill file, and one vision call on a subscription I pay for anyway. No new tooling, no API credits, no travel-booking service. The trip itself cost tens of thousands of points plus a few hundred pounds instead of a four-figure fare, so the arithmetic saved roughly eight hundred pounds of real money on a fare that was already on sale. What the loop cannot do matters just as much. It cannot see the checkout page, so the final total is confirmed by the human, always. It cannot guarantee award availability, which evaporates when cash fares drop, because airlines price them against each other. It cannot make the voucher halve the taxes: the coupon touches only the points, so the deal works when the arithmetic says so, and on most rows it does not. And it got the central reading wrong on the first pass, with a written skill in hand, which is why step four exists and why the human stays in the loop at exactly one point: the correction and the click.
Takeaway
Porter did not book a flight. It converted a wish into a shortlist, converted points into pounds at the day’s real rate, stated its reading of the screen so I could break it in one line, and handed me a decision with the checks attached. That is the pattern, and it transfers to anything with a loyalty currency: hotels, trains, supermarket points. Price every option against the live alternative you would actually pay, make the input reading falsifiable, and keep the one click that moves money in human hands. The half-wish you typed as a joke becomes a booked trip, and the next half of the trip was already waiting: I asked for a hotel the same evening, and the shortlist Porter came back with is the second half of this story.