← Antonio LozanoTruequeGo

TruequeGo / 2025 – now

A resale market where the price can only go down

Spain’s cheapest high-speed fares are the ones you cannot get back. Ouigo, Avlo and the lowest Renfe and Iryo tickets refund nothing, so a plan that changes is money gone.TruequeGo moves that seat to someone who can use it, at or below what it cost. I designed it, built it and shipped it.

Role
Founder, designer, engineer
Team
Me
Scope
Product, interface, full stack, moderation
Market
Spain, high-speed rail
TruequeGo home page: the headline 'No pierdas tu dinero, recuperalo' over an illustrated skyline, a search bar for trains, buses, planes and hotels, and the last available tickets below it
The whole product is one bar: where from, where to, when. Buses are live, planes and hotels carry a PRONTO tag rather than being hidden, because a market this young has to say what it does not have yet.

The problem

The seat is not what gets wasted. The money is.

The fares people actually buy in Spain are the restricted ones, and the price is low precisely because there is nothing to claim back. Plans change anyway, and the fare is simply kept. On the same day, on the same train, somebody else is paying whatever that route costs that morning: Madrid to Barcelona officially runs €35 to €120 and passes €100 on peak dates.

Two strangers lose to the same journey. One paid for a seat they will not sit in, the other pays full price for it.
The value is already sitting between them. Everything below is machinery for making the swap safe enough to happen.

01 / Finding one

The comparison sits on the card, not behind a click

A resale card answers one question before any other: is this cheaper, and by how much. So the asking price and the original fare sit together on every card, the original struck through. Everything else is what makes a train ticket a train ticket, and the sort is by price, duration or departure.

TruequeGo search results for departures from Madrid, with transport and sort filters and two ticket cards showing asking price above the struck-through original fare
Two tickets, and the page does not pretend to be busier than it is. No skeleton rows, no filler. The search bar stays pinned above the results, so changing the query never means going back.

02 / The ticket

One column is the journey. The other is the money.

The listing splits on the only two things being decided: whether this is the right train, and whether the price is good. The money column reads as a ledger rather than a price tag, and the sign-in wall sits at the end of it. The page prices itself and names the seller while you are still a stranger.

TruequeGo ticket page for a Renfe service from Santiago de Compostela to Madrid, with journey details on the left and a price breakdown, seller and guarantees on the right
€40.00 asked, €46.20 originally paid, €2.50 to the platform, €42.50 to pay. The seller adds in their own words that Renfe wants €69 for the same seat today, because the argument for a resale ticket is usually a specific fact the seller happens to know.

The field that decides whether any of it works is Cambio de nombre. Operators disagree on name changes, and that one fact decides whether a buyer can board. So it is a labelled field next to the date and the duration, reading included, paid by the buyer, or not needed, and it is answered before the price does any persuading.

The rule

Sellers cannot ask for more than they paid

This is the decision the rest of the product sits on, and it is a real cost. A cap on the asking price is a cap on supply, on the size of the market and on what the platform can ever take.

The obvious versionFree pricing

Let the seller name the price

  1. More sellers, because a sold-out route is worth more than the fare paid for it.
  2. A larger take on every sale, and a reason for professionals to show up.
  3. And then it is a scalping site, which is a different product with a different legal position.
  4. Nothing on the card means anything. A price with no ceiling is not a discount.

ShippedCapped at the original fare

At or below what it cost

  1. Resale between individuals stays inside what is legal in Spain.
  2. The original fare is printed on every card, so the cap is visible rather than promised.
  3. The product only ever has one proposition, and it is the same one on every screen.
  4. Supply is smaller, and that is the bill for the other three.
The publish form with a purchase price of 46.20 and an asking price of 60, showing a field error, a live price summary and a red box stating that tickets cannot be sold above the purchase price
The cap is a validation. Asking €60 for a €46.20 ticket fails at the field, and the reason is restated underneath rather than left as a red outline. The summary keeps running while the error stands, so the seller can see exactly what the number would have earned and still cannot use it.

03 / Trust

The money moves last

A buyer is paying a stranger, weeks early, for a document that has to work at a gate. A seller is handing over a ticket before seeing a cent. Both fears are answered by the same thing.

  1. 1

    The listing is checked before it exists

    Every ticket goes through manual review. Rejected ones never appear, so the search results are the moderated set rather than everything ever uploaded.

  2. 2

    The buyer pays, and the money stops

    Stripe charges the card and the funds are held rather than forwarded. Card details never touch TruequeGo.

  3. 3

    The ticket is delivered automatically

    Emailed the moment payment clears, with name-change instructions where the operator needs them. The seller does not have to be awake, or reachable, or willing.

  4. 4

    The buyer travels

    The only step neither side controls, and the one the whole sequence is arranged around.

  5. 5

    The seller is paid

    On the buyer’s confirmation, or on its own ten days after the travel date. If the ticket did not work, the buyer is refunded in full instead, in five to ten working days.

The ten-day rule is the part that matters. Waiting on a confirm button leaves the seller unpaid by anyone who simply travelled and never came back, which is most people. So silence has a deadline, and it resolves in the seller’s favour.

04 / The empty half

A marketplace opens with nothing on the shelves

Every route starts empty and stays empty until somebody happens to have a ticket for it. On a two-sided product that is not an edge case to handle later. On day one it is most of the screens anyone will see, so those are the ones that had to be designed properly.

TruequeGo search for Bilbao to Vigo with no results, showing an alert sign-up box asking for an email to notify when tickets appear on that route
Bilbao to Vigo, nothing available. The filters stay, because the next thing a person tries is loosening one. The alert names the route back to you rather than saying “this search”, and the line under the field says what the address is used for and how to stop it.

The other half of the answer is where demand arrives from. Twelve routes have their own page, each written to be worth reading with nothing to sell on it: the route explained, the operators, the official price range, and the questions people type into a search box.

The Madrid to Barcelona route page: heading, saving badge, operator tags, a three-step explainer, a written section with the official price range, an empty ticket list with an alert box, five FAQ rows, and links to other routes
Madrid – Barcelona, with nothing on it. The yellow line is a tip rather than a warning: Promo fares are cheapest and never allow a name change, so a listing that includes one is the safer buy.

Where a session can end badly

Validation

A search with nothing in it

Submitting the bar empty returns neither every ticket in the country nor zero. It states the rule: at least one of origin, destination or date. The bar it refers to is directly above.

No supply

A real route with nothing on it

The most common result in a young marketplace. It becomes an alert sign-up naming that exact route, with a line offering to sell instead of buy.

Empty landing page

Arriving from a search engine to nothing

The route page still answers the question that brought the visitor. Emptiness costs the middle of the page, not the page.

Not found

A ticket that has already sold

Listings are single items, so links go stale by design as things sell. The 404 puts the way back in the middle of the screen rather than in the header.

TruequeGo search page with an empty search bar, stating that at least one filter is needed: origin, destination or date
Nothing filled in. No red, because nothing has gone wrong yet.
TruequeGo 404 page saying the page does not exist or has been moved, with a button back to the home page
404. Two lines and one way out. A sold listing is the likeliest reason anyone lands here, so it does not scold.

Mobile

The same page on a phone

It stacks in the order the decision is made: the train, then the details, then the money.

01The search bar takes the whole screen, and the transport tabs stay visible so the PRONTO tags still do their job.
TruequeGo home on a phone
02One card per row. Price and struck-through original stay top right, which is where the eye already is.
TruequeGo search results on a phone
03Journey card, then the six details as two columns. Cambio de nombre keeps its place.
TruequeGo ticket page on a phone, showing the journey and the trip details
04The ledger, the saving, the seller and the two guarantees. The buy is the last thing on the page.
TruequeGo ticket page on a phone scrolled to the price breakdown, sign-in buttons, seller and guarantees

The build

Chosen so one person could hold a payments product in one head

Money is being held on behalf of two strangers and there is nobody else to catch a mistake, so every choice buys fewer moving parts.

InterfaceNext.js, TypeScript, Tailwind, DaisyUI
Data and filesSupabase, PostgreSQL and Storage, for the tickets themselves
AccountsClerk, with Google and email
MoneyStripe, holding funds until the journey resolves
RunningVercel

The ticket files decided the storage choice. They are somebody’s name, seat and journey in a PDF, unreachable until a payment clears and then reachable exactly once.

Where it is

Live, checked by hand, and early

TruequeGo is open at truequego.com with real listings across the Spanish high-speed network, every one reviewed by a person before it went up. That is fine at this size and is the first thing that breaks if it works.

The empty half is starting to fill. Traffic has been climbing over the summer, and people are posting tickets without being asked to. The alerts, the route pages and the empty states were built for a shelf with nothing on it, and they are slowly being made unnecessary.

The open question is the other side of the trade. Sellers have found it; buyers have not, in the numbers a marketplace needs. That is the next thing to solve, and it is a distribution problem rather than a design one.