CASE STUDY

ProfitSprint - Profit Tracking Platform joka syntyi todellisesta tarpeesta

Taustaa

Projekti: ProfitSprint – Profit tracking platform verkkokauppiaille
Tyyppi: SaaS web-sovellus
Syntyi: DriveTron-asiakastyön tarpeesta (oma verkkokauppa)
Status: Kaupallinen tuote
Toteutusaika: 8 viikkoa MVP → jatkuva kehitys


Ongelma: Kukaan ei tiennyt tehdäänkö oikeasti voittoa

Pyöritin DriveTronin (sähköpotkulautakauppa) markkinointia ja törmäsin samaan ongelmaan joka kerta:

”Kumpi kampanja tekee oikeasti voittoa?”

Mikä oli väärin:

1. Data oli hajallaan 3-4 paikkaan:

  • Meta Ads Manager: Mainoskulut ja ROAS
  • Google Analytics 4: Kävijät ja ”konversiot”
  • WooCommerce: Tilaukset ja liikevaihto
  • Excel: Yritettiin yhdistää käsin (failed)

2. Kukaan ei puhunu samaa kieltä:

Meta sanoi: "15 konversiota, 3 000€ myyntiä, 4.2 ROAS"
Google Analytics sanoi: "12 konversiota, 2 800€"
WooCommerce sanoi: "18 tilausta, 3 200€ liikevaihtoa"

Mikä oli oikein? Kukaan ei tiennyt, koska cookie tracking on rikki (iOS ATT, consent bannerit).

3. ROAS ei kerro voitosta:

Esimerkki TODELLISESTA tilanteesta:

Kampanja A: 
- Mainoskulut: 500€
- Meta näytti: 2 000€ myyntiä (4.0 ROAS) ← "Hyvä!"

Todellisuus WooCommercesta:
- Oikea myynti: 1 800€ (Meta ylilaskee)
- COGS (tuotteen hankinta): 900€ (50% kate)
- Maksuvälitys (2%): 36€
- Toimitus: 120€
- Muut kulut: 50€

Todellinen voitto: 1 800€ - 500€ - 1 106€ = 194€

POAS (Profit on Ad Spend): 194€ / 500€ = 0.39x

→ Jokainen 1€ mainoksiin toi 0.39€ voittoa.
→ Tarvitaan 1.0+ POAS että kannattaa.
→ Tämä kampanja söi rahaa, vaikka ROAS näytti hyvältä.

4. Raportointi vei 10 tuntia kuussa:

  • Kopioi data Metasta → Excel
  • Kopioi data WooCommercesta → Excel
  • Yritä yhdistää (mahdotonta kun konversiot ei täsmää)
  • Laske COGS, kulut, voitto käsin
  • Kun valmis: data on 1-2 viikkoa vanhaa

5. Päätökset perustuivat arvaukseen:

  • ”Tämä kampanja tuntuu toimivan”
  • ”Nostetaanko budjettia vai ei?”
  • ”Onkohan tämä kannattavaa?”

Todellisuus:
Poltettiin 30% budjetista kampanjoihin jotka tekivät tappiota. Samaan aikaan kannattavat kampanjat alibudjetoitiin.


Ratkaisu: Source-based profit tracking joka ignoroi cookie-ongelmat

Konsepti: Älä yritä yhdistää konversioita – käytä aggregoitua dataa

Idea:
Sen sijaan että yritettäisiin selvittää ”tämä konversio tuli tästä mainoksesta” (mahdotonta cookie-helvetissä), lasketaan:

Päivä: 2025-11-01
---------------------
Liikevaihto (WooCommerce source): 3 200€
Mainoskulut (Meta source): 500€
COGS (asettaa käyttäjä): 1 600€ (50% katteella)
Maksuvälitys: 64€ (2%)
Toimitus: 120€

Voitto = 3 200€ - 500€ - 1 600€ - 64€ - 120€ = 916€
POAS = 916€ / 500€ = 1.83x

Ei attribution-modellia.
Ei konversioseurantaa.
Vain: Paljonko tuli myyntiä tänään? Paljonko meni mainoksiin? = Voitto.


Tekninen toteutus: n8n-automaatiot + PostgreSQL

Stack:

Backend:

  • Node.js + Express (REST API)
  • PostgreSQL (Supabase) – data storage
  • n8n (self-hosted) – kaikki automaatiot

Frontend:

  • React + TailwindCSS
  • Recharts (graafit)
  • Vercel (hosting)

Kustannukset:

  • n8n self-hosted: $5/kk (DigitalOcean Droplet)
  • Supabase: Free tier (alle 500MB)
  • Vercel: Free tier

n8n Workflow (päivittäinen sync)

Workflow rakenne: 100+ nodea, 3 pääpolkua


Frontend: React Dashboard

7-Day Rolling Profit Chart:

  • Backend calculates 7-day moving average
  • Frontend displays with Recharts
  • Updates real-time when sync completes

No AI in core product.
AI is ONLY used in Sprint feature (beta) to analyze test results.


Tulokset: 50% parempi POAS + 10h/kk säästö

ENNEN ProfitSprintiä (DriveTron case):

Mainonnan tehokkuus:

  • ROAS: 3.2x (Meta Ads näytti)
  • POAS: Ei tietoa
  • 30% budjetista meni tappiollisiin kampanjoihin (ei tiedetty)

Ajankäyttö:

  • 10h/kk Excel-helvetissä
  • Numerot 1-2 viikkoa vanhoja
  • Päätökset: ”Tämä tuntuu toimivan”

JÄLKEEN ProfitSprintin:

Mainonnan tehokkuus:

  • POAS: 1.2x → 1.8x (+50% parannus)
  • Tämä tarkoittaa: Jokainen 1€ mainoksiin toi 1.80€ gross marginia

Konkreettinen vaikutus:

Mainosbudjetti: 10 000€/kk

Ennen:
- Gross Margin: 12 000€ (1.2x POAS)
- Net Profit: 2 000€

Jälkeen:
- Gross Margin: 18 000€ (1.8x POAS)
- Net Profit: 8 000€

Lisävoitto: +6 000€/kk = +72 000€/vuosi

Ajankäyttö:

  • Raportointi: 10h/kk → 0h/kk
  • Data päivittyy automaattisesti joka yö
  • Päätökset perustuvat faktaan

Mitä muuttui:

  1. Tappiota tekevät kampanjat pysäytettiin
Kampanja: "Lookalike 1%"
Meta ROAS: 3.8x ← Näytti hyvältä
ProfitSprint POAS: 0.6x ← TAPPIOTA

Päätös: Pysäytetty välittömästi
Säästö: 800€/kk
  1. Voittoa tekevät kampanjat skaalattiin
Kampanja: "Remarketing - Cart Abandoners"
Meta ROAS: 2.1x ← Näytti keskinkertaiselta
ProfitSprint POAS: 2.8x ← PALJON voittoa

Päätös: Budjetti 300€ → 1 200€
Lisävoitto: +3 600€/kk
  1. Tuotteet joilla huono kate löydettiin
Tuote: "DT08 350W"
Myynti: 15 kpl/kk
Liikevaihto: 5 235€
POAS: -0.2x ← Negatiivinen

Syy: COGS 65%, mainonta söi loput
Päätös: Hinta 349€ → 399€
Tulos: POAS -0.2x → +0.8x

Miksi tämä toimii?

1. Source-based tracking = Ei cookie-ongelmia

Perinteiset työkalut:

  • Yrittävät seurata konversioita cookieilla
  • iOS ATT = 96% opt-out
  • Consent bannerit = 60-70% reject
  • Data on 30-50% väärin

ProfitSprint:

  • Kerää datan suoraan lähteestä (WooCommerce API, Meta API)
  • Ei cookieita
  • 100% tarkka (API:sta tuleva data)

2. Päivätason aggregointi riittää

Ei tarvitse tietää:

  • ”Tämä konversio tuli tästä mainoksesta”
  • ”Tämä asiakas klikkasi tätä kampanjaa”

Riittää tietää:

  • Paljonko tuli myyntiä tänään? (WooCommerce source)
  • Paljonko meni mainoksiin tänään? (Meta source)
  • = Voitto

7 päivän liukuva keskiarvo tasoittaa heilahtelut.

3. n8n tekee kaiken työn

Käyttäjä:

  1. Yhdistää WooCommerce + Meta kerran (OAuth)
  2. Asettaa kulut (COGS %, toimitus, maksuvälitys)
  3. Klikkaa ”Sync Data”

n8n:

  • 100+ nodea ajaa automaattisesti
  • Kerää data molemmista lähteistä
  • Konvertoi valuutat
  • Laskee voiton
  • Tallentaa tietokantaan
  • 0 manuaalista työtä

4. Multi-store + multi-currency

User voi yhdistää:

  • Useita WooCommerce/Shopify kauppoja
  • Meta Ads
  • Google Ads (tulossa)

Jokainen kauppa voi olla eri valuutassa → ProfitSprint konvertoi kaikki käyttäjän preferred_currencyyn.

5. Product-level insights

Dashboard näyttää:

  • Mitkä tuotteet tekee voittoa
  • Mitkä tuotteet syö mainoskustannuksia
  • POAS per tuote

Päätökset: ”Tämä tuote kannattaa, tämä ei”


Opit matkan varrelta

1. Yksinkertaisuus voittaa monimutkaisuuden

Yritin ensin rakentaa:

  • Attribution-modellia (first-click, last-click, linear)
  • Konversioiden yhdistämistä Metan ja WooCommercen välillä
  • Cookie-trackeria

Kaikki failasi koska iOS ATT ja consent bannerit hajottaa kaiken.

Sitten tein yksinkertaisen version:

  • Päivätason aggregoitu data
  • Ei attribution-modellia
  • Source-based tracking

Se toimi.

2. n8n on paras työkalu data-automaatiolle

Voisin koodata kaikki API-kutsut itse Node.js:llä. Mutta:

  • n8n on visuaalinen (näet mitä tapahtuu)
  • Error handling built-in
  • Retry-logiikat valmiina
  • Credential management
  • Ei tarvitse kirjoittaa 500 riviä boilerplate-koodia

Jokainen ProfitSprintin data sync on n8n workflow.

Kustannus: $5/kk (DigitalOcean Droplet)

3. Asiakkaat eivät halua ”AI-ratkaisua”

He haluavat:

  • Nähdä teenkö voittoa ✅
  • Tietää mitkä kampanjat toimii ✅
  • Säästää aikaa raportoinnissa ✅

AI on bonus (Sprint verdict analysis), ei core value.

4. Free tier on marketing

Kun annoin profit trackingin ilmaiseksi:

  • 10% upgradasi €19/kk Sprint-planiin
  • Word-of-mouth levisi

5. Supabase Edge Functions = turvallinen tapa käsitellä credentialeja

Ongelma: n8n pitäisi kutsua WooCommerce/Meta API:a → tarvitaan credentialeita.

Ratkaisu:

  1. Credentialit tallennetaan Supabase vaultiin (encrypted at rest)
  2. n8n kutsuu Supabase Edge Functionia (public endpoint)
  3. Edge Function fetchaa + decryptaa credentialit in-memory
  4. Edge Function kutsuu WooCommerce/Meta API:a
  5. Edge Function palauttaa datan n8n:lle
  6. Decryptatut credentialit eivät koskaan poistu Edge Functionista

= GDPR-compliant, secure, scalable


ProfitSprint tänään

Status: Kaupallinen SaaS
Hinnoittelu:

  • Free Forever: Profit tracking (7-day rolling, POAS, product insights, unlimited stores)
  • €19/kk: Sprint testing (AI-powered price/budget tests, beta price locked for life)

Integraatiot:

  • WooCommerce ✅
  • Shopify ✅
  • Meta Ads ✅
  • Google Ads (tulossa)

Tech Stack:

  • Frontend: React + Vercel
  • Backend: Node.js + PostgreSQL (Supabase)
  • Automaatiot: n8n (self-hosted, $5/kk)
  • AI: Claude 3 Haiku (vain Sprint verdicts, ~$0.001 per verdict)

Operational costs per user:

  • n8n compute: ~$0.05/month per user (shared Droplet)
  • Supabase: Free tier (< 500MB per user)
  • Total: < $0.10/month per user

Mitä tämä tarkoittaa sinulle?

Jos sinulla on verkkokauppa:

Kysymys: Tiedätkö juuri nyt, paljonko teit voittoa eilen?

Jos vastaus on ”en” tai ”en ole varma”:

Sinulla on sama ongelma joka minulla oli.

Ratkaisu:

  1. Käytä ProfitSprintiä (jos WooCommerce/Shopify)
  2. TAI rakennan sinulle custom profit tracking -automaation (n8n-pohjainen)

Custom-toteutus muille

ProfitSprint on tehty verkkokauppiaille.

Mutta sama konsepti toimii muille:

  • B2B SaaS: MRR tracking, churn analysis, customer profitability per acquisition channel
  • Palveluyritykset: Project profitability, resource allocation, hourly rate vs actual profit
  • Markkinointitoimistot: Campaign profitability per client, real agency margin

Custom-automaatio:

  • Yhdistää sun datalähteet (CRM, invoicing, time tracking, ads)
  • Laskee voiton/kannattavuuden automaattisesti
  • Dashboard näyttää trendit
  • n8n-pohjainen (skaalautuu, helppo ylläpitää, halpa)

Investointi:

  • Yksinkertainen dashboard: 3 000-5 000€
  • Täysi profit tracking (kuten ProfitSprint): 8 000-12 000€
  • ROI: Yleensä 3-6kk

Lopuksi: Syntyi tarpeesta, ei ideasta

En herännyt aamulla ja ajatellut ”teen profit tracking -työkalun”.

Minulla oli ongelma:

  • En tiennyt teinkö voittoa
  • Excel-helvetti vei 10h/kk
  • Päätökset perustui arvaukseen
  • Cookie tracking oli rikki (iOS ATT)

Ratkaisin oman ongelmani n8n:llä.
Sitten muut verkkokauppiaat kysyi ”voinko käyttää samaa?”

Tästä syntyi ProfitSprint.

Ydin oli n8n-automaatiot – ei AI, ei rakettitiedettä. Vain:

  • API-kutsut WooCommerceen ja Metaan
  • Data-prosessointi (aggregointi, valuuttakonversiot)
  • Laskenta (voitto = myynti – kulut)
  • Tallennus PostgreSQL:ään

AI lisättiin vasta myöhemmin Sprint-featureen, jossa Claude analysoi hintatestin tulokset ja sanoo ”Scale” tai ”Revert”.


Yhteenveto:

  • Ongelma: ROAS ≠ voitto, cookie tracking rikki, Excel-helvetti
  • Ratkaisu: Source-based profit tracking, n8n-automaatiot, aggregoitu data
  • Ydin: 100+ node n8n workflow synkkaa WooCommerce + Meta → laskee voiton → tallentaa DB:hen
  • Tulos: 50% parempi POAS, 10h/kk säästö, data-driven päätökset
  • Kustannukset: $5/kk n8n hosting (kaikille käyttäjille yhteensä)
  • Status: Kaupallinen SaaS

Jos haluat:


Case study kirjoitettu: Marraskuu 2025
ProfitSprint lanseerattu: Elokuu 2024
n8n workflow: 100+ nodea, 3 pääpolkua
Status: Aktiivinen tuote, jatkuva kehitys

Veeti Chat Widget
Veeti Sebastian
AI Konsultti
Vastaan tyypillisesti minuutissa