Elijah Oliver Larsson / selected work Back to portfolio

Marketplace MVP · 2026

Passiton.

Designing the moments that make resale feel risky.

I worked with a teammate on Passiton, a marketplace MVP for buying discounted gift cards and selling unused ones. I focused on the design and frontend experience, where pricing, proof and disputes have to be understood before anyone can trust the exchange.

Passiton marketplace homepage, with gift cards available for browsing and filtering PASSITON / LIVE MVP SCREEN
01 / PRODUCT CASESCROLL TO EXPLORE   ↓
RoleDesign & frontend (group project)
FormatGroup project / interactive prototype
BuildHTML, CSS, JavaScript & Supabase
StatusInteractive demo · no live payments

Value is easy to show. Trust is harder.

An unused gift card still has value. But in a resale transaction, the buyer cannot inspect that value the way they would inspect a physical product.

A listing needs to answer practical questions before someone commits: How much do I save? When does the card expire? What does the seller actually receive? And who handles it if the code does not work?

We approached Passiton as a two-sided product. A simple storefront would only solve half the experience. The seller's submission flow and the uncomfortable post-purchase states needed equal attention.

Put the facts next to the decision.

Price, expiry, review status and fees should be visible at the point where somebody acts on them. Anything the MVP cannot genuinely verify should be described as a limitation, not dressed up as reassurance.

Four parts of the exchange.

Each flow reveals a different kind of uncertainty. The interface puts those points in view rather than hiding them behind a generic shopping experience.

01 / DISCOVERY

Let the numbers do the selling.

Shoppers can filter by brand, category and discount, then compare a card's face value with its asking price. On the detail page, expiry and where the card can be used sit close to the purchase action.

The goal was to make the deal legible without asking someone to calculate the saving or hunt for the conditions.

MARKETPLACE / PRODUCT DETAIL
The catalog makes discounts scannable; the product page shows the numbers and conditions beside the buying action.

02 / SELLING

Show the payout before asking for the card.

The selling form updates a live listing preview as the seller changes the brand, amount and price. A fee breakdown makes the example payout concrete before the card's private code and photo proof are submitted.

For a card listed at 900 kr, the MVP's illustrative 5% fee leaves 855 kr. The arithmetic belongs in the interface.

SELLER FLOW / LIVE PREVIEW Sell form next to a live listing preview, showing a 900 kr price and 855 kr payout after a 5% fee
Amount, asking price and the illustrative payout stay in view while the seller fills in the listing.

03 / VERIFICATION

Proof with a deliberately narrow claim.

Sellers generate a code that expires after 30 minutes, write it on paper and photograph it beside the gift card balance and current date. The image stays private. A submitted listing remains pending until manual review.

This confirms that the evidence was submitted for review. It does not establish identity, prove the balance is real or stop a code being used later. The interface makes that distinction explicit.

VERIFICATION / TIME-LIMITED PROOF Seller verification form with a generated 30-minute code, countdown and private photo upload
The short-lived challenge adds a reviewable step, but cannot verify the card's actual balance or validity.

04 / AFTER PURCHASE

Design the unhappy path before the happy one is real.

We prototyped a simulated 48-hour buyer review period. In the demo, a buyer can confirm an order or open a dispute, exchange private messages with the seller and escalate the case for admin review.

The demo records state changes. It does not collect, hold, release or refund money, and it never delivers a gift card code.

ORDER & DISPUTES / EMPTY STATE Empty-state screen of the simulated order and disputes dashboard, with no orders present
The current empty state explains where future order cases appear. No active or resolved dispute is shown here; those flows are implemented as a simulation.

Built far enough to expose the hard questions.

Passiton is a working frontend MVP with account flows and database-backed features, but it is not a transactional marketplace.

Built

Responsive catalog and product pages, live seller preview, Supabase Auth, private photo storage, review statuses and simulated order/dispute flows.

Deliberately not live

Payments, payouts, automatic balance validation and actual card transfers. Demo data also powers the catalog.

Known gap

A manually reviewed photograph is weaker evidence than a verified balance. Real transactions would require stronger safeguards, an approved payment flow and legal review.

Does “photo reviewed” sound safer than it is?

That is the question I would put in front of buyers first. I would test whether people understand the difference between reviewing a photo and verifying a gift card's actual balance, then look at how much verification friction sellers will tolerate.

We do not have validated transaction or usability outcomes to claim yet. What this MVP gives me is a concrete system to test, including the states that are easy to ignore when designing a polished storefront.