Skip to content

02 / Product

My Local Loop

Two-Sided Marketplace / Local Commerce

A two-sided local commerce marketplace where businesses join by giving exclusive value, not paying marketing fees, and residents subscribe to discover and redeem it.

RoleProduct Design / Full-Stack Development / UX / UI / Product Strategy
StackNext.js / React / TypeScript / Tailwind CSS / PostgreSQL / Neon / Prisma / Clerk / Stripe / Zod / Upstash Redis / Vercel
StatusClosed beta
TimelineActive development
LiveClosed beta

Public / Local commerce

↔ Drag
The My Local Loop landing page: a headline reading “The local deals you can’t get anywhere else”, a phone showing a personal QR Local Pass, and an “Our Local Partners” row of participating businesses.
The public site — local deals, the subscription, participating partners, the Local Pass and QR redemption, stated in a single view.

01 / The Problem

Independent businesses compete against budgets they can't match.

Independent local businesses increasingly compete against major chains, conglomerates and online retailers with marketing budgets they cannot realistically match.

Traditional coupon systems don't solve this well. Most local businesses still lean on in-store promotions, social media, flyers, manually distributed coupons and printed coupon books.

Where the coupon book breaks

  • 01Businesses often pay just to participate
  • 02Offers are static once printed
  • 03A business may get only one or two placements
  • 04Offers can't easily be changed
  • 05Redemption is difficult to measure
  • 06The customer has to carry a physical book
  • 07Little connects a redemption to repeat behaviour

What if the business didn't have to

pay for the marketing platform at all?

02 / The Idea

So we flipped who pays — and what they pay with.

My business partner and I had both watched independent “Mom & Pop” businesses struggle as consumer spending moved toward major chains, conglomerates and online retailers.

We wanted something that could help local businesses generate traffic and repeat customers without another advertising expense. So the model was intentionally inverted. Consumers fund the platform through a subscription — $9.99 CAD a month today, planned to move to $14.99.

Instead of the business paying the platform,

the business pays with value.

Traditional

Business pays the platform to advertise a discount

My Local Loop

Business gives exclusive value; the Local pays for access

Partners contribute

Exclusive offers

Locals contribute

A subscription

The marketplace

Connects the two

03 / The Marketplace Loop

Every redemption is a reason to make the next offer.

No side is paying the other in the usual sense. Partners contribute value, Locals contribute a subscription, and each completed redemption feeds the reason for the next one — which is what keeps the loop turning.

  1. ProvidePartners post offers01
  2. DiscoverLocals find value02
  3. VisitThe business03
  4. RedeemThe Local Pass04
  5. DataTraffic + signal05
  6. CreateNew offers06
  7. ReturnThe Local comes back07
  8. The Loop — the loop continues

04 / Two Sides, One Product

One marketplace, built as two products that never overlap.

My Local Loop is effectively two connected applications running against one marketplace: the Local, and the Partner. They mirror each other in structure and share almost nothing in permission.

Local / Demand

Subscribe, discover, redeem.

  • Create an account and subscribe through Stripe
  • Browse active offers and participating businesses
  • See nearby businesses on a map
  • Search and filter deals
  • Track savings, coupon usage and frequent visits
  • Carry a Local Pass — a unique QR and manual code
Marketplace

Partner / Supply

Apply, get approved, go live.

  • Submit a Partner Application with a proposed baseline offer
  • Get reviewed in the admin portal, then redeem an emailed key
  • Onboard — gated behind creating the baseline offer
  • Build offers: discounts, imagery, dates, limits
  • Track redemptions, repeat customers and revenue attributed
  • Manage the storefront and scan the Local Pass

05 / The Local Experience

The consumer product, at a glance.

Once onboarded, the Local enters a portal built to make value effortless to find. It leads with the number that matters to a subscriber — what they've saved — and surrounds it with active deals, nearby businesses, high-traffic hours and the newest offers.

Local / Dashboard

↔ Drag
The Local dashboard: savings over the last 30 days, coupons used, active coupons and frequent visits, with places nearby, high-traffic hours and newest offers.
The Local dashboard — savings first, then active deals, nearby businesses, high-traffic hours and the newest offers.

06 / The Design

Built for people who don't call themselves technical.

A coffee shop owner, a photographer, a fitness studio, a retailer, a shopper — none should need experience with complex SaaS to understand the platform. The interface prioritises clear navigation, few steps, readable information, large targets and obvious primary actions.

It deliberately moves away from the stereotypical dark SaaS aesthetic. Forest green, cream, warm gold, soft sage and white give it an identity that reads local and approachable rather than clinical — and the responsive site behaves close to an app while the dedicated app is in development.

Colour

Forest#2d4a3e
Cream#f3eee3
Gold#9c7a3c
Sage#3d5e50
White#ffffff

Type

Local

A soft serif-adjacent display over a plain interface face, sized for people who don’t consider themselves technical.

Aa — UI label / mono

Surface

Coupons used

18

Action

Become a LocalHave a key?

Large targets / obvious primary

Principles

  • 01Clear navigation over feature density
  • 02Minimal steps to a primary action
  • 03Large, obvious interaction targets
  • 04Strong, predictable hierarchy
  • 05Mobile-first, responsive across every surface

Local / Discovery

↔ Drag
The coupon discovery view: every active local deal, counts of live deals, businesses and categories, a search field and category filters.
Discovery — every active deal, searchable and filterable by category, so no one is tracking a physical book.

Local / Nearby

↔ Drag
The map view: participating businesses plotted across Kamloops with location pins.
Nearby — discovery is geographic, surfacing participating businesses around the Local using geospatial logic (GeoHashing).

Local / Savings

↔ Drag
The Local savings view: total saved, coupons used, stores visited and average per deal, with a savings-over-time chart and top stores.

07 / The Local Pass

The bridge between the app and the shop counter.

The Local Pass is where the digital marketplace meets the physical business. Every Local carries a unique QR code and a unique manual customer code.

At checkout the Local presents the QR for the Partner to scan. If the Partner is on a desktop or can't scan, the manual code is entered by hand instead. Either way the system validates the Local and the coupon rules before the redemption is accepted.

Local / Local Pass

↔ Drag
The Local Pass: a large personal QR code to scan at checkout, and a manual customer code beneath it.
The Local Pass — a unique QR to scan at checkout, with a manual code to read out when a Partner can't scan.

08 / Redemption Architecture

One identity, validated by us — not by every POS.

Giving every Local a platform-controlled identity means a Partner can confirm membership and coupon eligibility through My Local Loop itself, with no integration into their payment system.

Local Passone platform-controlled identity

Presented as

QR codescanned
Manual codeentered by hand

Validated through My Local Loop

  1. Partner portalreceives the code01
  2. Validationis this a real Local?02
  3. Coupon ruleslimits, dates, eligibility03
  4. Redeemaccepted04
  5. Redemption recordedwritten once05
  6. Analyticsboth sides update06

09 / The Challenge

The hard part was the seam between the two sides.

The Local and Partner experiences are connected but carry completely different permissions and workflows. A Partner should never reach Local-only systems; a Local should never enter Partner administration. Authentication alone wasn't enough — the product needed role-aware authorization throughout.

The second challenge was redemption. Integrating into every business's payment or POS system would be an enormous burden, especially in beta. So My Local Loop owns the redemption layer instead.

The best integrationwas no integration.

By giving every Local a platform-controlled identity through their QR and manual code, Partners validate membership and coupon eligibility through My Local Loop — keeping redemption independent of whatever system already sits on their counter.

One marketplace.Two completelydifferent users.

LocalDemandPartnerSupply

10 / The Partner Experience

The other side of the loop is the operational one.

Once a Local redeems an offer, the Partner side becomes the operational view of that activity — redemptions, repeat customers, active coupons and how each offer is performing.

Partner / Dashboard

↔ Drag
The Partner dashboard: redemptions over time, total redemptions, repeat customers, active coupons and coupon performance.
The Partner dashboard — the operational view: redemptions over time, repeat customers, and how each offer is performing.

11 / The Offer Builder

This is where the marketplace's supply is made.

Offers are created by the Partner, not by us. A Partner sets the title, description, imagery and category; picks a discount type and amount; schedules a start and expiry (or marks it non-expiring); and sets a per-customer limit or allows unlimited redemptions.

TitleDiscountImageryScheduleLimitsPublish

Partner / Offer builder

↔ Drag
The offer builder: fields for title, description, category, discount type and amount, start and expiry dates, a non-expiring toggle and per-customer usage.
The offer builder — a Partner makes the marketplace's supply: discount, imagery, schedule and limits, without us managing it.

12 / The Feedback Loop

Nothing stops when the coupon is redeemed.

Partners can read redemptions, revenue attributed to redemptions, unique customers, average savings, redemption trends, discount mix, and new versus returning customers. What a Partner creates becomes inventory the Local discovers — and what the Local redeems becomes the signal that shapes the next offer.

PartnerStorefrontLocalLocal PassAnalyticsNext offer

Partner / Analytics

↔ Drag
The Partner analytics view: redemptions, revenue generated, unique customers and average saved, with revenue over time, discount mix and new-versus-returning customers.
Partner analytics — redemptions, revenue attributed, unique customers, discount mix and new-versus-returning, after the coupon is redeemed.

Partner / Storefront

↔ Drag
The Partner storefront: the business's public page on My Local Loop with its live deals, exactly as a shopper sees it.
The storefront — what a Partner creates becomes inventory the Local discovers. The supply side, made public.

13 / The Build

A two-sided product, drawn the way it stacks.

My Local Loop is built with Next.js, React and TypeScript on Tailwind, with PostgreSQL on Neon through Prisma, Clerk for authentication, Stripe for subscriptions, Upstash Redis, Zod and react-markdown. Database migrations are applied manually through Neon, and it's hosted on Vercel.

Localdemand
Partnersupply

Authenticate through one layer

Clerkauthentication
Next.jsReact / TypeScript
Application layerrole-aware authorization

Services

Prismadata layer
Stripesubscriptions
UpstashRedis
PostgreSQL / Neonstorage · manual migrations

Systems on the marketplace

01Offers
02Redemptions
03Local Pass
04Partner applications
05Storefronts
06Analytics
07Geospatial discovery
08Role / access control

14 / Validation

Not a prototype — a marketplace in use.

My Local Loop is operating in a closed beta. These are validation numbers, not growth metrics: real businesses and real consumers are on the platform and redeeming offers.

Feedback from participating businesses has been positive, and the beta keeps surfacing bugs, mobile improvements, onboarding refinements and operational requirements — all being addressed before broader expansion.

20

Participating businesses

12

Consumers

Kamloops

Core market

Live

Coupon redemptions

15 / What I Learned

A marketplace is a different kind of problem.

Building this showed me how different a two-sided marketplace is from a single-user SaaS product. Every decision affects two groups. A great Local experience means little if Partners find offer creation hard; a powerful Partner dashboard means little if Locals don't see enough value to subscribe. The loop only moves when both sides get enough.

Security mattered more than I expected. Authentication alone wasn't enough — the application needed authorization that understood who the user is and what they're permitted to do.

Who you are.What you're allowed to do.Not the same question.

16 / What's Next

Still being built. Still being proven.

My Local Loop remains in active development. Kamloops is the core market, additional cities are applying, and expansion is being introduced gradually. The dedicated consumer app is in development.

  • 01Onboard more PartnersKeep growing the supply side of the marketplace.
  • 02Grow consumer adoptionBring more Locals into the loop.
  • 03Harden the betaFix bugs and keep improving the mobile experience.
  • 04Expand carefullyMove into additional cities as they're ready.
  • 05Ship the appComplete the dedicated consumer application.

17 / Why I Built It

It started as trust between two partners.

My business partner had seen products I'd built before and trusted me to take the idea behind My Local Loop and turn it into a working platform. That trust let me own the product from concept through implementation.

I also care about the problem. Independent businesses increasingly compete with companies whose resources they can't match. My Local Loop is a chance to build technology that helps them attract customers without adding another marketing expense — an idea between two partners that's now a working marketplace being used by real businesses and consumers.

Two partners.One idea.A working marketplace.