---
title: "Palvelut ja hinnoittelu"
lang: fi
page-layout: full
title-block-banner: false
include-in-header:
text: |
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,700;1,400&family=IBM+Plex+Mono:wght@400;600&family=Source+Serif+4:wght@300;400&display=swap" rel="stylesheet">
<style>
body,
.quarto-container, #quarto-content,
.page-layout-full, main.content {
background: #0d1117 !important;
color: #e8e0d5 !important;
font-family: 'Source Serif 4', serif !important;
}
#title-block-header { display: none !important; }
h1,h2,h3,h4,h5 { color: #f0ebe3 !important; font-family: 'Playfair Display', serif !important; }
.en-nav {
display: flex; flex-wrap: wrap; align-items: center;
gap: 0.25rem 0; padding: 0.75rem 1.5rem;
border-bottom: 1px solid rgba(232,224,213,0.1);
background: rgba(13,17,23,0.97);
font-family: 'IBM Plex Mono', monospace;
font-size: 0.72rem; letter-spacing: 0.08em;
}
.en-nav a { color: #857e76 !important; text-decoration: none !important; padding: 0.35rem 0.7rem; transition: color 0.2s; white-space: nowrap; }
.en-nav a:hover { color: #2a9d8f !important; }
.en-nav a.active { color: #f0ebe3 !important; }
.en-nav .nav-fi { margin-left: auto; color: #e63946 !important; padding-left: 1rem; }
.en-nav .nav-fi:hover { color: #f4a261 !important; }
.page-wrap { max-width: 1040px; margin: 0 auto; padding: 4rem 1.5rem 6rem; box-sizing: border-box; }
.page-label {
font-family: 'IBM Plex Mono', monospace !important; font-size: 0.68rem;
letter-spacing: 0.22em; text-transform: uppercase; color: #2a9d8f !important; margin-bottom: 1.2rem; display: block;
}
.frac-hero { display: grid; grid-template-columns: 1fr; gap: 3rem; margin-bottom: 4rem; }
@media (min-width: 760px) { .frac-hero { grid-template-columns: 1.1fr 0.9fr; gap: 5rem; align-items: center; } }
.hero-title {
font-family: 'Playfair Display', serif !important;
font-size: clamp(2rem, 6vw, 3.6rem) !important;
color: #f0ebe3 !important; line-height: 1.1; margin-bottom: 1.5rem;
}
.hero-title em { font-style: italic !important; color: #e63946 !important; }
.hero-body { color: #a09890 !important; font-size: 1rem; line-height: 1.82; margin-bottom: 2rem; }
.btn-primary {
display: inline-block; background: #e63946 !important; color: #fff !important;
padding: 0.85rem 1.8rem; font-family: 'IBM Plex Mono', monospace !important;
font-size: 0.78rem !important; letter-spacing: 0.06em;
text-decoration: none !important; border: none !important; border-radius: 0 !important;
width: auto; max-width: 90vw; word-break: break-word;
transition: background 0.2s, transform 0.15s;
}
.btn-primary:hover { background: #c1121f !important; transform: translateY(-2px); color: #fff !important; }
.btn-secondary {
display: inline-block; background: transparent !important; color: #a09890 !important;
padding: 0.85rem 1.4rem; font-family: 'IBM Plex Mono', monospace !important;
font-size: 0.72rem !important; letter-spacing: 0.06em;
text-decoration: none !important; border: 1px solid rgba(160,152,144,0.3) !important; border-radius: 0 !important;
margin-left: 0.6rem; transition: color 0.2s, border-color 0.2s;
}
.btn-secondary:hover { color: #2a9d8f !important; border-color: #2a9d8f !important; }
.hero-aside { background: rgba(42,157,143,0.05); border: 1px solid rgba(42,157,143,0.15); padding: 2rem; }
.aside-item { margin-bottom: 1.5rem; }
.aside-item:last-child { margin-bottom: 0; }
.aside-num { font-family: 'IBM Plex Mono', monospace !important; font-size: 1.8rem; font-weight: 600; color: #2a9d8f !important; line-height: 1; display: block; }
.aside-desc { font-size: 0.86rem; color: #857e76 !important; line-height: 1.6; margin-top: 0.2rem; }
.section-label {
font-family: 'IBM Plex Mono', monospace !important; font-size: 0.65rem;
letter-spacing: 0.2em; text-transform: uppercase; color: #2a9d8f !important;
margin-bottom: 0.8rem; margin-top: 3.5rem; display: block;
}
.section-title {
font-family: 'Playfair Display', serif !important;
font-size: clamp(1.5rem, 3.5vw, 2.2rem) !important;
color: #f0ebe3 !important; margin-bottom: 1.5rem; line-height: 1.2;
}
.divider { border: none; border-top: 1px solid rgba(232,224,213,0.07) !important; margin: 3rem 0; }
.split { display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 600px) { .split { grid-template-columns: 1fr 1fr; gap: 3rem; } }
.split-col h3 { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.68rem !important; letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 1.2rem; }
.split-col.problem h3 { color: #e63946 !important; }
.split-col.solution h3 { color: #2a9d8f !important; }
.split-col ul { list-style: none !important; padding: 0 !important; margin: 0 !important; }
.split-col ul li { padding: 0.65rem 0 0.65rem 1.2rem; border-bottom: 1px solid rgba(232,224,213,0.06); color: #a09890 !important; font-size: 0.92rem; line-height: 1.65; position: relative; }
.split-col ul li::before { content: '—'; position: absolute; left: 0; }
.split-col.problem ul li::before { color: #e63946; }
.split-col.solution ul li::before { color: #2a9d8f; }
.tier-grid { display: grid; grid-template-columns: 1fr; gap: 1px; background: rgba(232,224,213,0.06); }
@media (min-width: 640px) { .tier-grid { grid-template-columns: repeat(2, 1fr); } }
.tier { background: #0d1117 !important; padding: 2rem 1.5rem; display: flex; flex-direction: column; }
.tier.featured { background: #0f1a24 !important; border-top: 2px solid #e63946; }
.tier-name { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.65rem !important; letter-spacing: 0.14em; text-transform: uppercase; color: #457b9d !important; margin-bottom: 0.4rem; }
.tier.featured .tier-name { color: #e63946 !important; }
.tier-title { font-family: 'Playfair Display', serif !important; font-size: 1.3rem !important; color: #f0ebe3 !important; margin-bottom: 0.8rem; }
.tier-price { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.74rem !important; color: #f4a261 !important; margin-bottom: 0.3rem; }
.tier-price-note { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.62rem !important; color: #6b6560 !important; margin-bottom: 1.2rem; letter-spacing: 0.04em; }
.tier ul { list-style: none !important; padding: 0 !important; margin: 0 0 1.5rem !important; flex: 1; }
.tier ul li { font-size: 0.86rem; color: #857e76 !important; padding: 0.45rem 0 0.45rem 1rem; border-bottom: 1px solid rgba(232,224,213,0.05); position: relative; }
.tier ul li::before { content: '✓'; position: absolute; left: 0; color: #2a9d8f; font-size: 0.72rem; }
.tier-cta { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.72rem !important; letter-spacing: 0.08em; color: #2a9d8f !important; text-decoration: none !important; margin-top: auto; }
.tier-cta:hover { color: #e63946 !important; }
.fit-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (min-width: 700px) { .fit-grid { grid-template-columns: repeat(4, 1fr); } }
.fit-card { padding: 1.3rem; background: rgba(232,224,213,0.03) !important; border: 1px solid rgba(232,224,213,0.07); }
.fit-icon { font-size: 1.3rem; margin-bottom: 0.5rem; display: block; }
.fit-card h4 { font-family: 'Playfair Display', serif !important; font-size: 0.95rem !important; color: #e8e0d5 !important; margin-bottom: 0.4rem; }
.fit-card p { font-size: 0.82rem; color: #6b6560 !important; line-height: 1.6; margin: 0; }
.terms { margin-top: 1rem; }
.terms-row { display: grid; grid-template-columns: 1fr; gap: 0.4rem 2rem; padding: 1.1rem 0; border-bottom: 1px solid rgba(232,224,213,0.06); }
@media (min-width: 640px) { .terms-row { grid-template-columns: 0.4fr 1fr; } }
.terms-row dt { font-family: 'IBM Plex Mono', monospace !important; font-size: 0.7rem !important; letter-spacing: 0.08em; text-transform: uppercase; color: #457b9d !important; }
.terms-row dd { margin: 0; color: #a09890 !important; font-size: 0.9rem; line-height: 1.7; }
.cta-block {
margin-top: 3rem; padding: 3rem 2rem;
background: linear-gradient(135deg, rgba(230,57,70,0.08) 0%, rgba(42,157,143,0.06) 100%) !important;
border: 1px solid rgba(232,224,213,0.08); text-align: center;
}
.cta-block h2 { font-family: 'Playfair Display', serif !important; font-size: clamp(1.5rem, 4vw, 2rem) !important; color: #f0ebe3 !important; margin-bottom: 1rem; }
.cta-block p { color: #a09890 !important; max-width: 460px; margin: 0 auto 2rem; line-height: 1.8; font-size: 0.95rem; }
.cta-block .btn-primary { display: inline-block !important; width: auto !important; font-size: 0.72rem !important; padding: 0.85rem 1.4rem !important; }
.cta-block .cta-email { display: block; margin-top: 1.2rem; font-family: 'IBM Plex Mono', monospace !important; font-size: 0.72rem !important; color: #857e76 !important; text-decoration: none !important; }
.cta-block .cta-email:hover { color: #2a9d8f !important; }
</style>
---
```{=html}
<nav class="en-nav">
<a href="/index.html">Etusivu</a>
<a href="/pricing.html" class="active">Palvelut</a>
<a href="/fractional/fractional.html">Fractional Head of Data</a>
<a href="/blog.html">Blogi</a>
<a href="/about.html">Minusta</a>
<a href="/en/index.html" class="nav-fi">🇬🇧 EN</a>
</nav>
<div class="page-wrap">
<span class="page-label">Palvelut</span>
<div class="frac-hero">
<div>
<h1 class="hero-title">Avoin data<br><em>kilpailuetuna.</em></h1>
<p class="hero-body">
Autan yrityksiä ja organisaatioita löytämään ja hyödyntämään avointa
dataa päätöksenteossa. Työni yhdistää avoimen datan kartoituksen,
tilastollisen analyysin ja liiketoimintalähtöisen tulkinnan.
<br><br>
Lopputulos on konkreettinen: parempi ymmärrys markkinasta, riskeistä
tai kasvumahdollisuuksista — ja se, mitä päätöksissä ei vielä tiedetä.
</p>
<a href="https://cal.com/kristianvepsalainen/intro" class="btn-primary">Varaa maksuton 20 min puhelu →</a>
<a href="mailto:kristian.vepsalainen@proton.me" class="btn-secondary">Tai laita sähköpostia</a>
</div>
<aside class="hero-aside">
<div class="aside-item">
<span class="aside-num">10+</span>
<div class="aside-desc">vuotta tilastollista työtä terveys-, finanssi- ja tutkimusaloilla</div>
</div>
<div class="aside-item">
<span class="aside-num">FM + MEng</span>
<div class="aside-desc">matematiikka & kyberturvallisuus</div>
</div>
<div class="aside-item">
<span class="aside-num">7+</span>
<div class="aside-desc">vertaisarvioitua julkaisua kanssakirjoittajana tai pääanalyytikkona</div>
</div>
<div class="aside-item">
<span class="aside-num">Avoin</span>
<div class="aside-desc">data edellä — julkiset aineistot kilpailutietona</div>
</div>
</aside>
</div>
<hr class="divider">
<span class="section-label">Erityisosaaminen</span>
<h2 class="section-title">Mitä ratkaisen.</h2>
<div class="split">
<div class="split-col problem">
<h3>Tyypillinen tilanne</h3>
<ul>
<li>Dataa kertyy ilman järjestelmällistä analyysiä</li>
<li>Mittarit kertovat mitä tapahtui, ei miksi</li>
<li>Ei kapasiteettia rakentaa ennuste- tai riskimalleja</li>
<li>Sääntely- ja julkista dataa jää seuraamatta</li>
<li>Päätökset pistearvojen varassa — epävarmuutta ei mitata</li>
</ul>
</div>
<div class="split-col solution">
<h3>Mitä tuon</h3>
<ul>
<li>Bayeslaiset mallit, jotka tekevät epävarmuuden näkyväksi</li>
<li>Avoimen datan ja OSINTin yhdistely kilpailutiedoksi</li>
<li>Todennäköisyyspohjaiset ennusteet luottamusväleineen</li>
<li>Datastrategia kytkettynä liiketoiminnan päätöksiin</li>
<li>Tutkimustason analyysi konsultointinopeudella</li>
</ul>
</div>
</div>
<hr class="divider">
<span class="section-label">Palvelupaketit</span>
<h2 class="section-title">Miten työskennellään yhdessä.</h2>
<div class="tier-grid">
<div class="tier">
<div class="tier-name">Diagnoosi</div>
<div class="tier-title">Avoimen datan kartoitus</div>
<div class="tier-price">Alkaen 3 500 € + alv</div>
<div class="tier-price-note">Kiinteä hinta · 2–4 viikkoa</div>
<ul>
<li>Organisaation kysymyksen tai ongelman määrittely</li>
<li>Avoimen datan ja OSINT-lähteiden kartoitus</li>
<li>Alustava analyysi ja visualisointi</li>
<li>Keskeiset havainnot ja suositukset</li>
<li>Kirjallinen raportti + etäesitys</li>
</ul>
<a href="https://cal.com/kristianvepsalainen/intro" class="tier-cta">Kysy lisää →</a>
</div>
<div class="tier featured">
<div class="tier-name">Ydinpalvelu</div>
<div class="tier-title">Fractional Head of Data</div>
<div class="tier-price">Alkaen 1 200 € + alv / pv</div>
<div class="tier-price-note">1–2 pv/vko · jatkuva</div>
<ul>
<li>Datastrategian rakentaminen ja ylläpito</li>
<li>Mallien rakentaminen, ennustaminen, bayeslainen päättely</li>
<li>Toimialasi avoimen datan seuranta</li>
<li>Sisäisen datatiimin ohjaus ja sparraus</li>
<li>Kuukausittainen johdon raportointi — epävarmuus mukaan luettuna</li>
<li>Tavoitettavuus sovittujen päivien välissä</li>
</ul>
<a href="https://cal.com/kristianvepsalainen/intro" class="tier-cta">Aloita keskustelu →</a>
</div>
<div class="tier">
<div class="tier-name">Projekti</div>
<div class="tier-title">Strateginen analyysi</div>
<div class="tier-price">Alkaen 2 500 € + alv</div>
<div class="tier-price-note">Hinnoitellaan projektikohtaisesti</div>
<ul>
<li>Yksi rajattu lopputulos: malli, ennuste tai analyysi</li>
<li>Sopii myös akateemisiin yhteistyöhankkeisiin</li>
<li>Julkaisukelpoinen lopputulos</li>
<li>Replikoitava koodi ja dokumentaatio luovutetaan</li>
</ul>
<a href="https://cal.com/kristianvepsalainen/intro" class="tier-cta">Kysy lisää →</a>
</div>
</div>
<hr class="divider">
<span class="section-label">Sopii erityisesti</span>
<h2 class="section-title">Kenelle tämä on.</h2>
<div class="fit-grid">
<div class="fit-card">
<span class="fit-icon">🏥</span>
<h4>Terveys & lääke</h4>
<p>Rekisteridata, kliiniset tulokset, potilasvirtojen mallinnus, sääntelyanalytiikka.</p>
</div>
<div class="fit-card">
<span class="fit-icon">⚖️</span>
<h4>Oikeus & politiikka</h4>
<p>Lainsäädännön analytiikka, EU-direktiivien seuranta, sääntelymuutosten mallinnus.</p>
</div>
<div class="fit-card">
<span class="fit-icon">🔬</span>
<h4>Tutkimusorganisaatiot</h4>
<p>Akateeminen yhteistyö, tilastollinen analyysi julkaisuihin, avoimen datan menetelmät.</p>
</div>
<div class="fit-card">
<span class="fit-icon">📊</span>
<h4>Dataa tuottavat pk-yritykset</h4>
<p>Organisaatiot, joilla on dataa mutta ei sisäistä senior-tason tilasto-osaamista.</p>
</div>
</div>
<hr class="divider">
<span class="section-label">Toimitusehdot</span>
<h2 class="section-title">Näin sovitaan.</h2>
<dl class="terms">
<div class="terms-row">
<dt>Tarjous</dt>
<dd>Jokainen projekti käynnistyy kirjallisella tarjouksella ja tilausvahvistuksella, joka sisältää työn laajuuden, aikataulun ja hinnan.</dd>
</div>
<div class="terms-row">
<dt>Maksuehdot</dt>
<dd>14 päivää laskun päiväyksestä. Projektit laskutetaan yleensä kahdessa erässä (50 % alussa, 50 % valmistuessa); Fractional Head of Data kuukausittain.</dd>
</div>
<div class="terms-row">
<dt>Asiakkaan vastuut</dt>
<dd>Asiakas toimittaa olennaiset tiedot ja taustamateriaalit sovitussa aikataulussa. Aikataulu voi muuttua, jos tietoja ei ole saatavilla.</dd>
</div>
<div class="terms-row">
<dt>Avoin data</dt>
<dd>Analyysit perustuvat pääosin avoimiin ja julkisiin lähteisiin, jotka dokumentoidaan raportissa mahdollisimman läpinäkyvästi.</dd>
</div>
<div class="terms-row">
<dt>Immateriaalioikeudet</dt>
<dd>Asiakas saa oikeuden käyttää tuloksia omassa toiminnassaan. Menetelmät, koodi ja yleinen osaaminen jäävät palveluntarjoajan käyttöön, ellei toisin sovita.</dd>
</div>
<div class="terms-row">
<dt>Vastuun rajaus</dt>
<dd>Analyysit perustuvat saatavilla olevaan dataan ja parhaaseen asiantuntija-arvioon. Tuloksia ei tule tulkita sitovina ennusteina tai taloudellisina suosituksina. Vastuu rajoittuu projektin arvoon.</dd>
</div>
<div class="terms-row">
<dt>Luottamuksellisuus</dt>
<dd>Kaikki asiakkaalta saatu tieto käsitellään luottamuksellisesti.</dd>
</div>
</dl>
<div class="cta-block">
<h2>Selvitetään, sopiiko tämä.</h2>
<p>
Ensimmäinen keskustelu ei maksa mitään. Käydään läpi datasi, päätöksesi
ja se, onko avoimesta datasta hyötyä organisaatiosi päätöksenteossa.
</p>
<a href="https://cal.eu/kristianvepsalainen" class="btn-primary">
Varaa maksuton 20 min puhelu →
</a>
<a href="mailto:kristian.vepsalainen@proton.me" class="cta-email">
tai sähköpostitse kristian.vepsalainen@proton.me
</a>
</div>
</div>
```