Case study · 06 / 09

Kasanowa

Sales incentive programme

Sales reps earn real money for hitting challenge targets and solving product quizzes, then cash out to a card. Behind the fun front: wholesale data imports, a rewards engine and five roles in one app.

  • Gamification
  • Fintech
  • Data imports

Partner

Colian (Goplana, Grześki, Toffino)

Industry

FMCG · Sales incentives

Platform

Web app, mobile-first

Our role

Product engineering, end to end

The product

What it does

Field reps of Colian — maker of Goplana, Grześki and Toffino — see their wallet, the products in the current challenge, articles and the pot to win in quizzes. The agency, Colian, regional managers and wholesalers each get their own admin views.

Our part

What we built

A Vue 3 + TypeScript app on a Laravel 12 backend in DDD + CQRS, deployed from a monorepo pipeline to stage and production through an SSH bastion.

Under the hood

The hard parts

  1. 01

    Wholesale data you can trust

    CSV/TSV imports validated for structure, binary and XLSX/ODS files detected, each line hashed against duplicates, and processing queued with retries on a schedule.

  2. 02

    A rewards engine

    Thresholds, percentages, progressive tiers and rankings — rewards booked in database transactions to a wallet with a full operation log.

  3. 03

    Five roles, one SPA

    Separate permissions and views for each role, including a preview mode that shows admins the app through a rep’s eyes.

  4. 04

    Quizzes built in one go

    Nested question and answer tabs, inline editing and the whole quiz saved in a single packed request; grading and payout happen in one transaction.

The outcome

A playful incentive programme with every złoty traceable from sale to payout.

Inside the product

7 screens, explained

Demo data · click any screen to enlarge

01

Cash for quizzes

A rep solves a product quiz: question from the rich-text editor, closed or open answers, question counter and the amount to win.

02

The result — and the payout

One backend transaction grades the answers, checks the pass threshold and credits the reward to the wallet.

03

Rep dashboard

Wallet balance, products in the active challenge, an article carousel and the quiz pot — the wallet total is computed from the wallet log.

04

Built for the phone

The same dashboard at 390 px with its own mobile menu — reps live on their phones.

05

Quiz builder

Dynamic question tabs with nested answer tabs, a WYSIWYG editor with a 5 MB content limit and an open/closed question switch.

06

Article editor

Validated form, autocomplete linking the article to a challenge product, rich text and drag-and-drop image upload.

07

Admin: reps and earnings

Server-paginated table with search, earnings per challenge, quiz and payout totals and activation links.

Stack

Frontend

  • Vue 3
  • TypeScript
  • Vite
  • Vuetify 3
  • Pinia
  • vee-validate + yup
  • Quill
  • Swiper

Backend

  • Laravel 12
  • DDD + CQRS
  • Sanctum
  • Spatie Media Library
  • Queues

Infra

  • MariaDB
  • Docker (PHP-FPM, Nginx, Supervisor)
  • GitLab CI/CD

Next case

VKS →

Online invoicing & accounting SaaS

Want a product
like this?

Get a free estimate