Jyri Gromyko Lintunen SuomiEnglishРусскийPDF
Jyri Gromyko Lintunen
Ansioluettelo

Jyri GromykoLintunen

Full-Stack-kehittäjä · Taloushallinnon ja teollisuuden automaatio

Rakennan ohjelmia. Rakastan vaikeita ongelmia. Tuotan toimivia ratkaisuja.

Avoin uusille projekteille9+ vuotta yrittäjänäHelsinki · etä / hybridi

Tuloshakuinen full-stack-kehittäjä, yli 9 vuoden yrittäjäkokemus koodauksesta. Erikoistunut taloushallinnon ja teollisuuden automaatioon, pankki-integraatioihin, ERP- ja CRM-järjestelmiin sekä LLM-pohjaisiin tuotantopipelineihin. Yhtä lailla kotonani käyttöliittymäarkkitehtuurissa, Python- ja PHP-backendeissä kuin tietokantasuunnittelussa ja palvelinylläpidossa. Vien projektin määrittelystä tuotantoon ja ylläpidän sitä vuosia.

9+vuotta kehitystyötä
80+toimitettua hanketta
6vuotta yhtä ERP-järjestelmää
25+aktiivista koodivarastoa

Profiili

Kuka olen ja mitä teen

Aloitin koodaamisen yrittäjänä vuonna 2017 ja olen siitä lähtien vienyt läpi yli 80 toimeksiantoa: verkkokauppoja, ERP- ja CRM-järjestelmiä, pankki-integraatioita, konenäköpipelineja ja markkinointiautomaatiota. Suurin osa niistä pyörii yhä.

Painopisteeni on siellä, missä liiketoiminnan säännöt ovat sotkuisia ja data on likaista: arvonlisäveron käsittely kahdelle yhtiömuodolle, tiliotteiden ja kuittien automaattinen täsmäytys, julkisivupaneelin geometria canvasilla, liidien rikastus kymmenestä eri rajapinnasta. Tällaiset järjestelmät eivät ole näyttäviä, mutta ne pitävät yrityksen pystyssä.

Työskentelen dokumentoidusti: arkkitehtuuripäätökset kirjataan ADR-tiedostoihin, jokaisella moduulilla on spesifikaationsa, ja testit ajetaan ennen kuin mitään julistetaan valmiiksi. Olen rakentanut oman AI-agenttisopimuksen (AGENTS.md), jota kaikki työkalut noudattavat — niin että työ säilyy toistettavana ja tarkastettavana istunnosta toiseen.

Työkokemus

Yrittäjyys, asiakasprojektit ja palvelus

Yrittäjä & Full-Stack-kehittäjä

2017 — Nykyhetki
Gromyko Jyri Tmi. / GG Solutions Oy · Helsinki, Suomi

Oma toiminimi ja osakeyhtiö. Vastaan asiakasprojekteista alusta loppuun: määrittely, arkkitehtuuri, toteutus, tuotantoonvienti, ylläpito ja laskutus.

  • Taloushallinnon automaatiojärjestelmien suunnittelu ja kehitys: kirjanpito, ALV- ja YEL-käsittely, tilinpäätös, reskontra, pankki-integraatiot (Nordea, Holvi).
  • Full-stack-sovellukset ja SaaS-tuotteet: React / Vue.js -käyttöliittymät, Python-, Django-, Laravel- ja Flask-backendit, PostgreSQL- ja MySQL-tietokannat.
  • Rajapinta- ja tietokanta-arkkitehtuuri: REST-API:t, monivaiheiset migraatiot, SQL-massakäsittely ja synkronointi kassa- ja ERP-järjestelmien kanssa.
  • Palvelinylläpito ja käyttöönotto: Docker / Podman Compose, systemd + Nginx, Redis, Celery, jaettu kehitysinfrastruktuuri usealle projektille.
  • LLM-pohjaiset tuotantojärjestelmät: Claude- ja Gemini-integraatiot, konenäköanalyysi, prompt-rekisteri versioinnilla ja eval-ajoilla, kustannusseuranta per kutsu.
  • Tiimien koordinointi: kehittäjät, suunnittelijat ja markkinoijat; työn pilkkominen rinnakkain ajettaviksi työpaketeiksi ja katselmointi.
  • Monikanavaiset markkinointikampanjat (Google Ads, Meta, LinkedIn, SEO) ja konversio-optimointi mitattavilla tuloksilla.
PythonDjangoFlaskLaravelReactPostgreSQLMySQLDockerRedisCeleryREST APILLM

Varusmiespalvelus

6 kuukautta
Puolustusvoimat — Jääkäriprikaati · Sodankylä, Pohjois-Lappi

Suoritettu varusmiespalvelus arktisissa olosuhteissa. Kuormankestoa, ryhmätyötä ja kurinalaista suoritusta paineen alla.

Taidot & teknologiat

Mitä käytän päivittäin, mitä hallitsen ja mikä on tuttua

Backend

PythonDjangoFlaskFastAPIPHPLaravelNode.jsREST APISQLAlchemyCeleryWordPress / WooCommerce

Frontend

ReactRedux ToolkitTypeScriptViteKonva / CanvasMUITailwindVue.jsi18nextjQueryHTML / CSS

Tietokannat

PostgreSQLMySQLMariaDBSQLiteRedisChromaDBSQL-massakäsittely

Pankki & taloushallinto

NordeaHolviFirefly IIIALV / VATYELTilinpäätös (KPL)ReskontraSähköinen laskutusStripeVisma Nova

Infrastruktuuri & käyttöönotto

Docker / ComposePodmansystemd + NginxLinuxGitGoogle CloudAWSCI/CDPlaywrightSelenium

AI & data

Claude APIGemini APIOpenAI APIopenai-agents SDKLiteLLMVision-analyysiPrompt-versiointi & evalitNLPRAG

Data & integraatiot

Gmail APIGoogle Sheets APIGoogle Calendar APITelegram Bot API / TelethonXML / CSV / XLSX ETLWooCommerce RESTWeb scrapingProxy-rotaatio

Markkinointi & kasvu

SEOGoogle AdsMeta AdsLinkedIn AdsKonversio-optimointiA/B-testausGDPR-compliance
YdinosaaminenVahva työkaluTuttu

Päähankkeet

Viisi järjestelmää, joissa työ on ollut syvintä ja pisintä

🏗️

Editori — rakennusalan ERP

Julkisivuremonttien ja huoneistokorjausten koko elinkaari yhdessä järjestelmässä — alkujaan „Westfacen työmaaeditori”
2021 — 2026
Arkkitehti & pääkehittäjä Tuotannossa

Kuuden vuoden ajan rakennettu ERP julkisivuremontteja ja huoneistokorjauksia tekevälle urakoitsijalle. Järjestelmä kattaa koko ketjun: projektin perustaminen, julkisivun ja seinien visuaalinen editointi canvasilla, elementtien seuranta ja historia, konfiguroitavat tilatyönkulut, tiketöinti, materiaalilogistiikka, henkilöstö ja kalusto sekä talous. Kolme erillistä sovellusta jakaa yhden REST-API:n.

Mitä rakensin
  • Canvas-editori julkisivuille ja seinille (Konva / react-konva): paneelit, saumat, reiät, eristysteipit, listat, tukirungot ja pystyprofiloinnit — jokainen projektikohtaisena esiasetuksena, jota voi säätää rikkomatta vanhoja projekteja.
  • Vienti suoraan tuotantoon: 99-sarakkeinen työstöskeema CNC-linjalle (Cut Rite / Schmid B300) — porauskoordinaatit X1–X10 ja Y1–Y10, taskut, raamit, lävistäjät, hengitysreiät, reunatyöstöt, materiaalikoodit (HPL, kuitusementti, alumiinikomposiitti) ja lavakohtainen purkujärjestys. Editorissa piirretty julkisivu muuttuu koneen ajettavaksi ohjelmaksi ilman välikäsiä.
  • Konfiguroitava tilakone: tilaryhmät, tilalogiikat ja tilatyypit sekä muutoshistoria jokaiselle entiteetille (elementti, huoneisto, huone, tiketti, yritys). Asiakas määrittelee omat työnkulkunsa ilman koodimuutosta.
  • Materiaali- ja varastokirjanpito: nimikkeistö kategorioineen, varastosaldot, siirtotapahtumat, materiaalipyynnöt riveineen, toimittajat ja hintahistoria, tilaukset.
  • Tiketöinti tiimeille ja koneille: tikettityypit ja -ryhmät, tiimit ja kalusto, vaihekohtaiset tilat, riippuvuudet tikettien välillä ja täysi tilahistoria.
  • Käyttöoikeudet kahdella tasolla: spatie/laravel-permission backendissä ja CASL frontendissä, projektikohtaiset roolit — sama käyttäjä voi olla työnjohtaja yhdessä projektissa ja katselija toisessa.
  • Excel-tuonti ja -vienti (maatwebsite/excel, xlsx), PDF-generointi selaimessa (jspdf + html2canvas), monikielisyys (i18next) ja reaaliaikaiset ilmoitukset.
  • Toistettava kehitysympäristö: Docker Compose (MySQL 8, Redis 7, Nginx), yhden komennon käynnistys ja `php artisan app:selftest` -terveystarkistus, arkkitehtuuripäätökset ADR-tiedostoina.
Mittakaava
111Eloquent-mallia
171migraatiota
137kontrolleria
248API-reittiä
900+frontend-moduulia
3sovellusta, 1 API
Laravel 10PHP 8.2MySQL 8Redis 7React 18TypeScriptRedux ToolkitKonvaRefine.devMUISanctumDocker
📊

B2B-CRM & liidiautomaatio

Liidien hankinta, rikastus, kampanjasekvenssit ja myyntiputki yhdellä alustalla
2026 — Nykyhetki
Arkkitehti & ainoa kehittäjä Tuotannossa · v8.4

GDPR-yhteensopiva myynnin ulkoisen tavoittamisen alusta, joka yhdistää sähköpostilokin, sekvenssipohjaisen kampanja-automaation, liidien rikastuksen ja React-CRM:n. Kaksi backendia elää rinnakkain: Flask-tuotanto ja Django-uudelleenkirjoitus, jotka jakavat saman PostgreSQL-skeeman ja vastaavat toisiaan päätepiste päätepisteeltä.

Mitä rakensin
  • Kampanjamoottori: monivaiheiset sekvenssit, viestivariantit A/B-testauksella (multi-armed bandit), haarautumat ehtojen perusteella, automaattiset toimenpiteet ja vastaanottajien ilmoittautumiset.
  • 17 liidilähteen orkestrointi yhden ajastimen alla: Finder.fi, PRH/YTJ, Jooble, LinkedIn Jobs ja Messages, People Data Labs, Hunter, ZeroBounce, QuickEmail, Apify, Apilayer, Abstract, teknologiapinon tunnistus ja PageSpeed-pisteytys.
  • PageSpeed- ja mainosaukkopisteytys: Google PageSpeed Insights, SSL-tunnistus, Google Ads Transparency ja Meta Ads Library yhdistetään 0–100 pisteeksi ja hot / warm / cold -prioriteetiksi, joka päivittyy automaattisesti verkkosivun vaihtuessa.
  • Rikastusketju, jossa jokainen kontakti kulkee maksullisten ja ilmaisten lähteiden läpi (PDL → Hunter → ZeroBounce → Gemini), kunnes sillä on varmistettu, toimitettavissa oleva sähköposti ja perusteltu yrityskonteksti.
  • Myyntiputki: diilit, vaiheet ja vaihehistoria, tehtävät ja tehtäväpohjat, aktiviteettivirta, tallennetut suodattimet ja sarakekonfiguraatiot per käyttäjä.
  • GDPR-kerros: projektikohtaiset mustat listat, compliance-moduuli, peruutuslinkkien käsittely, bounce-tapahtumat ja sähköpostitilien OAuth-kierrätys.
  • Proxy-kerros sticky-sessioilla: yksi ulostulo-IP pinnataan pyyntöjoukolle ContextVar-rajatusti, ja katkennut sessio uusitaan uudella tunnisteella. Mitattuna 12 peräkkäisestä pyynnöstä 11 onnistui 11 eri suomalaisella IP:llä, mediaani 1,6 s.
  • Käyttöönotto ilman kontteja tuotannossa: systemd + Nginx + natiivi PostgreSQL. Kehityksessä Podman Compose omilla ylikirjoituksillaan.
Mittakaava
39+domain-mallia
17liidilähdettä
17Django-sovellusta
v8.4julkaistu versio
78committia 6 kk:ssa
PythonFlask 3.1Django 6.0SQLAlchemy 2.0PostgreSQL 16React 19Vite 8CeleryRedisTelegram APIGeminisystemd + Nginx
🏦

Automatisoitu kirjanpitojärjestelmä

Tiliotteesta tilinpäätökseen kahdelle yhtiömuodolle — ilman ihmisen puuttumista
2026 — Nykyhetki
Arkkitehti & kehittäjä Päivittäisessä käytössä

Kokonaisvaltainen kirjanpidon automaatio toiminimelle, osakeyhtiölle ja henkilökohtaiselle tilille. Järjestelmä noutaa tiliotteet, hakee kuitit sähköpostista, täsmäyttää ne transaktioihin, laskee ALV:n ja YEL-kulut, julkaisee kirjanpidon Firefly III:een ja generoi valmiin tilinpäätöksen.

Mitä rakensin
  • Tiliotteiden nouto ja jäsennys: Nordea (CSV / JSON) ja Holvi (XLSX / JSON). Osakeyhtiöllä on kaksi Holvi-tiliä — pää- ja verovarantotili — joista vain päätili julkaistaan kirjanpitoon ja varanto seurataan budjettina.
  • Kuittien automaattinen keruu Gmail API:n kautta (OAuth2), sähköpostin muunto PDF:ksi ja kuitin täsmäytys oikeaan transaktioon summan, päivän ja vastapuolen perusteella.
  • ALV-moottori: verokannat ja Vero-luokat, käänteinen arvonlisävero, YEL-kulut, vastapuolikartta ja säännöt, jotka elävät konfiguraatiossa eikä koodissa.
  • Idempotentti julkaisu Firefly III:een: transaktiot tunnistetaan external_id:llä, joten ajon toistaminen ei koskaan luo duplikaatteja. Suomalainen tilikartta kartoitetaan Firefly-kategorioiksi, budjetit luetaan Google Sheetsin suunnitelmasta, PDF-kuitit liitetään transaktioihin.
  • Tilinpäätösgeneraattori: kirjanpitolain mukainen tase ja tuloslaskelma molemmille yhtiömuodoille, ulos XLSX- ja PDF-muodossa. Lisäksi Vero.fi-valmis HTML-ALV-ilmoitus.
  • Suunnittelumoduuli: budjetti vs. toteuma kolmella tilillä, lähdesuunnitelma Google Sheetsistä, raportti julkaistaan takaisin toiseen taulukkoon.
  • Yli 20 ajoskriptiä (.sh ja .bat) koko putken ajamiseen yhdellä komennolla; Chrome ja fontit tunnistetaan automaattisesti Linuxilla, macOS:llä ja Windowsilla.
Mittakaava
3kirjanpitokokonaisuutta
2pankkia integroituna
20+pipeline-skriptiä
0duplikaattia (idempotentti)
PythonGmail APIGoogle Sheets APINordeaHolviFirefly IIISQLiteGeminiopenpyxlChrome headlessDocker
🪟

SKT tarjoussofta — konenäkö urakkalaskentaan

Kiinteistöjen arviointi ja ikkunanpesun kustannuslaskenta pääkaupunkiseudulla
2026 — Nykyhetki
Arkkitehti & kehittäjä · asiakas Suomen Kiipeilytekniikka Oy Aktiivinen asiakasprojekti

Korvaa asiakkaan Visma Nova -pohjaisen tarjouslaskennan verkkosovelluksella. Putki hakee Oikotie-ilmoitukset, geokoodaa rakennukset, noutaa katunäkymäkuvat, ajaa niistä Claude Vision -analyysin, laskee työtunnit ja tuottaa tarjouksen. Laajennetaan postinumerokohtaiseen asunto-osakeyhtiöiden kartoitukseen ja Nova-vientiin.

Mitä rakensin
  • 10-vaiheinen putki: Oikotie-scraper (kortit, tiedot ja kuvat) → Digitransit-geokoodaus → Google Street View (URL-allekirjoitettu) ja Mapillary → Claude Sonnet Vision → työtuntikaava v2.0 ja tarkennus v3.0 → tarjous yhdellä komennolla.
  • Isännöitsijätietojen poiminta LLM:llä vapaamuotoisesta tekstistä, 584 isännöintitoimiston listan tuonti ja täsmäytys olemassa olevaan tarjouskantaan.
  • Kustannusseuranta jokaiselle LLM-kutsulle omalla itsetestillään — vision-analyysin hinta pysyy näkyvissä ennen kuin ajo skaalataan sadoille kohteille.
  • 5-sivuinen Streamlit-hallintapaneeli tuloksille, 11 taulun tietokanta ja tuojat asiakkaan Excel-dumpeille.
  • Työ pilkottu kuudeksi rinnakkaiseksi vaiheeksi (S0–S5), jotka voi ajaa jopa yhdeksässä samanaikaisessa istunnossa — jokaisella oma tiedostonsa, omistajuutensa ja hyväksymiskriteerinsä.
Mittakaava
10putken vaihetta
264kohdetta pilottialueella
1,7 GBanalysoitavaa kuvamateriaalia
584isännöintitoimistoa
84committia
Python 3.11Claude Sonnet VisionGoogle Street ViewMapillaryDigitransitSQLiteStreamlitDockerVisma Nova
🧠

Personal Advisory Council

Itse ylläpidetty monen tekoälyn neuvosto, joka arvioi päätöksiä rinnakkain
2026
Arkkitehti & kehittäjä Toimiva prototyyppi

Alusta lukee sisään pankkitiliotteet (XLSX), Obsidian-muistiinpanot ja GitHub-repojen README-tiedostot, ajaa kahdeksan erikoistunutta agenttipersoonaa rinnakkain käyttäjän kysymystä vasten, vertaisarvioi jokaisen vastauksen ja syntetisoi puheenjohtajan tuomion antihauraus­pisteineen (0–100) ja kolmen toimenpiteen listoineen.

Mitä rakensin
  • Viisivaiheinen työnkulku: sisäänluku → arkkitehtiagentti ehdottaa neuvoston → interaktiivinen muokkaus → rinnakkaisajo → vertaisarviointi ja synteesi.
  • Monikäyttäjätuki istuntoeristyksellä, URL-pohjainen reititys, jaettavat istuntolinkit ja välimuisti, joka estää kalliiden ajojen vahingossa toistamisen.
  • Token- ja kustannusseuranta reaaliajassa, konfiguroitava päättelysyvyys ja edistymisen seuranta ajon aikana.
  • Docker Compose -pino: FastAPI-backend, React-käyttöliittymä, LiteLLM-välityspalvelin, ChromaDB vektorihakuun ja valinnainen Telegram-botti.
Mittakaava
8agenttipersoonaa rinnakkain
5vaihetta työnkulussa
0–100antihauraus­pisteytys
Python 3.12FastAPISQLAlchemy 2.0openai-agents SDKLiteLLMChromaDBReact 19Tailwind 4Docker ComposeTelegram
📈

Kaupankäynnin automaatio ja markkinadata

Kopiokauppabotit, strategiatilastot ja uutisten sentimenttianalyysi kolmella markkinalla
2022 — 2023
Arkkitehti & kehittäjä Toimitettu

Kahden vuoden mittainen kokonaisuus, jonka tarkoitus oli selvittää mitattavasti, mikä menestyneiden sijoittajien tuloksissa on toistettavaa. Julkiset huippukauppiaiden profiilit luetaan koneellisesti, heidän avoimet positionsa peilataan demo-tilille, ja jokainen kauppa kirjataan analysoitavaksi. Sen ympärille rakentui uutisten keruu, otsikoiden sentimenttianalyysi ja strategioiden vertailu.

Mitä rakensin
  • Kopiokauppabotti kolmelle markkinalle: valuutta (cTrader / IC Markets), osakkeet ja kryptovaluutta (Binance). Profiileja seurataan kymmenen sekunnin välein, uusi avoin positio peilataan ja suljetaan silloin kun alkuperäinenkin sulkeutuu.
  • Kauppiaiden ja strategioiden jäsennin julkisista tulosprofiileista (FXBlue): käyttäjien poiminta, jokaisen strategian historian keruu ja tilastollinen vertailu — mitkä tulokset kestävät tarkastelun ja mitkä ovat kohinaa.
  • Uutisputki ja sentimenttianalyysi: ulkomaisten ja kryptouutisten keruu (mm. Cointelegraph), otsikoiden luokittelu ja mediaindeksien lähteiden kartoitus — signaali erotettiin melusta ennen kuin sitä käytettiin mihinkään.
  • Strategioiden mallinnus ja testaus: kauppahistorian vienti ja PnL-analyysi, säännönmukaisuuksien haku, demokaupat lokiin ja tulosten vertailu ajanjaksojen välillä.
  • Käyttöönotto omalle palvelimelle päättymättömäksi silmukaksi, jotta seuranta jatkuu vuorokauden ympäri ilman valvontaa; jokainen kauppa tallennetaan päivämäärän, suunnan, kohde-etuuden ja summan kanssa.
Mittakaava
3markkinaa katettuna
10 sseurantaväli
24/7ajo palvelimella
2vuotta kehitystä
PythoncTraderIC MarketsBinance APIFXBlueSentiment analysisNLPSQLite / CSVVPScron

Asiakastyöt & verkkokaupat

Kaupallisia toimeksiantoja, joista suurin osa on yhä tuotannossa

🛒

camu.fi

Verkkokauppa, yli 8 000 tuotetta ja jatkuva kassajärjestelmäsynkronointi
2020 — 2023
Kehittäjä & ylläpitäjä
  • XML-pohjainen tuote- ja saldosynkronointi kassajärjestelmän kanssa viiden minuutin välein — käytännössä miljoonia SQL-komentoja vuorokaudessa ilman että kauppa hidastuu.
  • Konversio nostettiin 0,2 %:sta 1 %:iin: hakukoneoptimointi, sivunopeus, Redis-välimuisti, kuvien optimointi ja ostoputken uudelleensuunnittelu.
  • 14 erillistä taustapalvelua: tuotesynkronointi, tilausvienti, saldopäivitys, kuvankorjaus ja -optimointi, SEO-skriptit, Shopping-feed, tietokannan siivous ja välimuistin lämmitys.
WordPressWooCommercePHPMySQLRedisPythonXMLSEO
🧱

westface.fi

Julkisivupaneelien verkkokauppa ja integraatio Visma Nova / Loocos -toiminnanohjaukseen
2022 — 2026
Kehittäjä & integraatiovastaava
  • Kaksi Python-mikropalvelua yhdistävät kaupan toiminnanohjaukseen: tuotetuoja purkaa Novan pakkauksen ja päivittää katalogin WooCommerce REST -rajapinnan kautta (saldo, hinta, tila, kategoriat, brändi, julkisivuattribuutit); tilausvienti kulkee toiseen suuntaan.
  • Monikielisyys WPML:llä, SEO Rank Mathilla ja WooCommercen HPOS-tilauskanta. Tuotteiden JSON-LD-rakennedata korjattiin yhden lähteen periaatteella, jotta hakukone ei näe kahta kilpailevaa Product-entiteettiä.
  • Täysi paikallinen Docker-kopio tuotantokaupasta, jotta muutokset voi testata koskematta myyntiin — mukaan lukien välimuistin tyhjennys ja URL-uudelleenkirjoitus.
WordPressWooCommercePHP 8.2MySQLPythonWPMLRank MathVisma NovaDocker
🧗

whitebalance.fi

Kiipeily- ja ulkoiluvarusteiden verkkokauppa (Kiipeilytekniikka)
2022 — 2026
Kehittäjä
  • Sama Nova / Loocos -integraatiopari kuin westfacella, sovitettuna eri attribuuttimalliin (brändi, väri, koko) ja eri tilaustallennukseen.
  • Ajonaikainen käännöskerros TranslatePressillä — tuotteet säilytetään vain suomeksi, eikä jokaiselle kielelle synny kaksoiskappaletta tietokantaan.
  • Paikallinen kehityspino omilla korjauksillaan (REST-autentikointi ilman HTTPS:ää) selkeästi merkittynä paikalliseksi, jotta ne eivät koskaan päädy tuotantoon.
WordPressWooCommerce 8.4PHP 8.2MySQLPythonACFTranslatePressRank MathDocker
🛋️

tilasa.fi

Verkkosivu ja verkkokauppa italialaisille tilaa säästäville kalusteille
2018
Suunnittelu & toteutus
  • Kääntövuoteet ja seinäsängyt tuotekategorioina, esitteiden lataus ja rahoitushaku suoraan sivustolta.
  • Rakennettu kestämään: sivusto on ollut tuotannossa keskeytyksettä vuodesta 2018 ja toimii yhä vuonna 2026 ilman uudelleenrakennusta.
WordPressWooCommercePHPSEO
🎭

Suomen Kansallisooppera — kampanja

Kohdennettu digitaalinen mainoskampanja ja lipunmyyntifunneli
2019
Kampanjasuunnittelu & optimointi
  • Yleisösegmentointi ja kanavakohtainen viestinkulku LinkedIn Adsissa ja Google Adsissa, konversio-optimointi lipunmyyntifunnelin jokaisessa vaiheessa.
LinkedIn AdsGoogle AdsAnalyticsCRO
📐

Palsbo — tilahallinta ja lomakesuojaus

Toimitilojen tuonti Excelistä, tilaryhmät ja roskapostisuojaus
2021 — 2026
Kehittäjä
  • Toistuvat Excel-tuonnit tilalistoista siivotaan ja normalisoidaan; tilaryhmien tietomalli suunniteltiin erikseen ennen toteutusta.
  • Yhteydenottolomakkeiden roskapostisuojaus Cloudflare Turnstilella, suunnitelma ja spesifikaatio kirjattuna ennen koodia.
PHPWordPressPythonCloudflare TurnstileXLSX
🔎

accounta.fi

Hakukoneoptimointi taloushallinnon toimialalla — yksi Suomen kilpailluimmista
2021 — 2023
SEO-strategia & toteutus
  • Noin 400 hakusanan klusteripuu koko toimialalta: kirjanpito, tilitoimisto, palkanlaskenta, tilinpäätös, arvonlisävero ja yrityksen perustaminen — jokainen haara omine sivutarkoituksineen palvelusivuista blogiin.
  • Kilpailija-analyysi noin 50 toimialan verkkotunnuksesta (mm. Accountor, Azets, Rantalainen, Talenom, Netvisor, Visma, Zervant): orgaaninen liikenne, viittaavat verkkotunnukset ja linkkiprofiilin syvyys — mihin kannattaa hyökätä ja mihin ei.
  • Tulosten seuranta Search Consolen dataa vasten, ei arvioina — sijoitusten ja klikkien kehitys kirjattiin ja hakusanalista päivitettiin sen mukaan.
SEOSearch ConsoleKeyword researchBacklink analysisContent strategy
🏭

Betonikoneet.fi & Liikuntasaumat.fi

Rakennusalan konekaupan ja saumaurakoinnin näkyvyys hakukoneissa ja Google Adsissa
2019 — 2021
SEO & Google Ads
  • Hakusana-analyysi ja kampanjarakenne molemmille toimialoille, teknisten SEO-virheiden korjaus ja tuotesivujen laajennus satoihin nimikkeisiin.
  • Kilpailijoiden linkkiprofiilien läpikäynti liikuntasaumapuolella: mistä alan linkit oikeasti tulevat ja mitkä niistä ovat toistettavissa.
SEOGoogle AdsWordPressAnalytics
🧲

Liidikoneisto — kuudessa vuodessa käsityöstä alustaksi

Sama ongelma ratkaistuna yhä uudelleen, kunnes siitä tuli tuote
2019 — 2026
Kehittäjä
  • 2019–2020: ensimmäiset jäsentimet ja liidi-CRM:n luonnos, kohderyhmäanalyysi, soittoskriptit ja liidien seurantataulukot; Helsingin tapahtumien jäsennin ja pohjoismaisten yritysrekisterien (Proff.no/dk/se) toimialakartoitus.
  • 2021–2022: Fonecta- ja Finder-jäsentimet sekä koko rakennusalan yritystietokanta — yli 400 yritystä nimineen, verkkotunnuksineen, päättäjineen, liikevaihtoluokkineen ja Y-tunnuksineen. Päälle automaattinen avointen paikkojen postitus.
  • 2026: sama tarve tuotteistettuna — 17 liidilähdettä, rikastusketju, kampanjasekvenssit ja myyntiputki yhdessä alustassa. Kuuden vuoden käsityö kiteytyi järjestelmäksi.
PythonFinder.fiFonectaProffPRH / YTJWeb scrapingCRM
🪢

kiipeilytekniikka.fi

Köysityöyrityksen sivusto ja referenssiaineisto
2025 — 2026
Ylläpito & paikallinen kehitysympäristö
  • Tuotantosivuston paikallinen Docker-klooni tietokantatuonteineen, jotta muutokset voidaan tehdä turvallisesti ennen julkaisua.
WordPressPHPMySQLDocker
+ yli 74 muuta toimitettua hanketta vuosien varrelta

Työkalut & infrastruktuuri

Se mitä rakensin, jotta kaikki muu olisi mahdollista

🕷️

AutoCrawler — itseohjautuva QA-agentti

Tunnistaa verkkosovelluksen frameworkin, poimii staattisesti reitit, lomakkeet ja valitsimet, käynnistää sovelluksen Playwrightilla, ryömii sen läpi LLM-avusteisella lomakkeiden täytöllä ja konenäköpohjaisella poikkeamatunnistuksella, ja tuottaa SQLite- ja HTML-raportit. Adapterit kahdeksalle frameworkille (Django, Flask, FastAPI, Laravel, React, Vue, Next.js, Nuxt), kahdeksan testisovellusta ja integraatiotestit, jotka vaativat vähintään 80 %:n reittikattavuuden.

Python 3.11PlaywrightSQLiteLLM visionpytest
📦

gromi-core — jaettu Python-ydinkirjasto

Monen palveluntarjoajan LLM-asiakas (Claude, Gemini) kustannusseurannalla, JSON-vastausten pakotuksella sekä uudelleenyritys- ja varajärjestelylogiikalla; strukturoitu JSON-lokitus; kerroksittainen konfiguraatio (ympäristömuuttujat → .env → pyproject); LLM-rajapinnoille viritetyt tenacity-dekoraattorit. Julkaistaan yksityisenä pakettina, jota muut projektit asentavat riippuvuutena.

PythonClaude APIGemini APItenacityGitHub Packages
🧾

gromi-prompts — versioitu prompt-rekisteri

Promptit ovat versioituja artefakteja eivätkä koodiin haudattuja merkkijonoja: jokaisella on YAML-metatiedot, versiohistoria ja vähintään kymmenen JSONL-testitapausta. Komentorivityökalu ajaa evalit, vertailee versioita keskenään ja tekee kuivaharjoituksen ilman LLM-kutsua. Rekisterissä on 19 prompt-perhettä — kulujen luokittelu, kuittien tunnistus, julkisivuanalyysi, myyntiviestien personointi, SEO-sisältö, tuotekoodit.

PythonJSONL evalsYAMLCLIGitHub Packages
🧰

myaitools — itsestään kasvava työkalukirjasto

Toteuttaa LATM-silmukan ("LLMs as Tool Makers"): tunnista → määrittele → rakenna → testaa → dokumentoi → rekisteröi → käytä. Istunnon alussa työkaluluettelo injektoidaan kontekstiin, tehtävän päätteeksi kevyt paikallinen heuristiikka arvioi ilmaiseksi, kannattiko jokin osatehtävä vangita työkaluksi — ja jos kannatti, irrallinen rakentaja-agentti tekee sen testeineen ja rekisteröi sen. Päättely maksetaan kerran, työkalu jää.

PythonBashClaude Code hooksJSON manifestpytest
🔀

proxybroker — rotaation koordinaattori

Ainoa prosessi, joka kutsuu palveluntarjoajien rotaatiorajapintoja. Palveluntarjoajat rajoittavat rotaatiota (yksi per kaksi minuuttia), joten rinnakkaiset kutsujat saavat 429:n ja ulostulo-IP jäätyy — ja yhden palvelun rotaatio katkaisee toisen kesken pyynnön. Välittäjä sarjallistaa, jäähdyttää ja koordinoi rotaation kvorumilla: vaihto tapahtuu vasta kun jokainen yhteydessä oleva palvelu on äänestänyt sen puolesta, tai kun varoventtiili laukeaa. Jumiutunut palvelu ei koskaan lukitse muita.

PythonHTTP daemonflockcroncurl_cffi
🧩

Jaettu kehitysinfrastruktuuri

Yksi Docker-pino (MySQL 8, Redis 7, Mailpit) palvelee kaikkia projekteja samassa verkossa: tietokannat luodaan skriptillä, jokainen projekti liittyy ulkoiseen verkkoon ja sen käynnistysskripti nostaa infran automaattisesti pystyyn jos se ei ole käynnissä. Seitsemän projektia jakaa saman pinon ilman porttiristiriitoja.

Docker ComposeMySQL 8Redis 7MailpitBash
🔥

Firefly III -talouspino

Paikallinen Firefly III -asennus Data Importerin, tekoälyluokittelijan ja sähköpostiraportoijan kanssa. Yhden komennon käynnistys hoitaa tietokannan tuonnin, konttien nostamisen ja terveystarkistuksen — tämä on kirjanpitoautomaation kohde, johon transaktiot ja kuitit julkaistaan.

Docker ComposeFirefly IIIMySQLMailpit
📚

AI-agenttisopimus ja oppimispipeline

Yksi sitova toimintasopimus (AGENTS.md), joka peilataan jokaiselle tekoälykoodaustyökalulle — Claude Code, Copilot, OpenCode, Cursor, Windsurf, Codex, Aider — niin että työ pysyy toistettavana riippumatta siitä, mikä työkalu sen tekee. Päälle kolmikerroksinen Obsidian-tietoholvi (moduulit, alilistat, spesifikaatiot) ja arkkitehtuuripäätökset ADR-muodossa. Samassa varastossa oppimispipeline: tiivistelmät, muistikortit ja NLP-kartat.

MarkdownObsidianNode.jsPythonADR
🔑

autoreger — rajapintakvoottien orkestrointi

Orkestroi rekisteröinnit ja kvootat viidelle rikastuspalvelulle (People Data Labs, Apilayer, Apify, Hunter, ZeroBounce) kahdessa tilassa: burst ajaa yhden palvelun kerrallaan loppuun, pulse kiertää yhden avaimen per palvelu kerrallaan tasaisemman kuormaprofiilin vuoksi. Kaksi juuriorkestraattoria ja viisi projektikohtaista käynnistintä, kaikki lokitettuna.

PythonBashSeleniumProxy rotationcron
✉️

MailFlow-liittimen automaatio

Puoliautomaattinen työkalu postilaatikoiden liittämiseen lämmityspalveluun. Yksi näkyvä Chrome pysyvällä profiililla autentikoidun proxyn läpi: kirjaudut kerran, minkä jälkeen työkalu kävelee laatikot yksitellen läpi, kiertää Gmailin sovellussalasanavelhon ja esitäyttää lomakkeen. Proxyn IP kierrätetään kerran istuntoa kohti jäähdytysaikaa kunnioittaen.

PythonSeleniumChrome profileProxy

Omat projektit & kokeilut

Henkilökohtaisia harjoituksia, joissa opettelin uusia tekniikoita

🏠

krisha_hunter

Asunnonetsintäputki Almatyyn: hakutulosten ryömintä → tekstisuodatin alias- ja kieltomuototunnistuksella → Gemini-konenäkö valokuville → tietokanta taloyhtiöistä ja kaupunginosista → pisteytys 0–100 → Telegram. Geodata 2GIS:stä ja Google Routesista. Kustannus noin 0,001–0,003 dollaria per ilmoitus.

PythonGemini 2.5 Flash2GIS APIGoogle RoutesSQLiteTelegram
🐇

pupu_bot

Selainbotti, joka ratkaisee headless-tilan tunnistusongelmat oikeasti eikä kierrä niitä: pysyvä profiili, kerran käsin tehty kirjautuminen, istunnon vienti ja palautus 30 sekunnin välein, sekä diagnostiikkakomento joka raportoi Chromen version, ikkunakoon, User-Agent-vuodon ja sijainnin. Selaimeton jsdom-testisarja kattaa 34 tarkistusta.

PythonSeleniumChromejsdomBash
💬

bibi_bot

Telethon-pohjainen Telegram-automaatio vastausnäppäimistöllä ohjattavalle botille. Kvootan täyttyminen tunnistetaan ja työ jatkuu itsestään tauon jälkeen; esitarkistuskomento validoi konfiguraation, istunnon ja kortin lukemisen ennen ajoa. Yksikkötestit koko päätöslogiikalle.

PythonTelethonunittest
📱

iOS-WebView-sovellus ja App Store -julkaisu

Verkkopalvelun kääriminen natiiviksi iOS-sovellukseksi WebView'n ympärille ja koko julkaisupolku App Storeen: sertifikaatit, provisioning, arviointiprosessin vaatimukset ja se osuus työstä, jota kukaan ei arvaa ennen ensimmäistä hylkäystä.

iOSWebViewApp Store Connect
🤖

Sosiaalisten alustojen automaatio

Sarja pieniä selain- ja API-automaatioita eri alustoille (mm. Instagram ja Tinder) — harjoituksia siinä, miten istunto pidetään elossa, miten kvootan täyttyminen tunnistetaan ja miten käyttöliittymän muuttuessa automaatio hajoaa hallitusti eikä hiljaa.

PythonSeleniumREST APIs
🗂️

crimsonalter

XenForo-foorumien jäsennin ja pilvilatausten hallinta: teemahaku avainsanoilla, sisällön koon arviointi ennen latausta, lataukset Mail.ru Cloudista ja Yandex.Diskistä, aineisto järjestettynä aiheittain. Kaksi eri foorumimoottoria, joista toinen DDoS-Guardin ja captchan takana — käsittelyyn tarvittiin oma selainpohjainen alkukättely.

Pythoncurl_cffiPlaywrightXenForo

Miten työskentelen

Periaatteet, jotka näkyvät jokaisessa yllä olevassa projektissa

📐

Arkkitehtuuripäätökset kirjataan

Jokainen ei-ilmeinen valinta päätyy ADR-tiedostoon: mikä päätettiin, mitä vaihtoehtoja punnittiin ja miksi. Puolen vuoden päästä kukaan ei joudu arvailemaan.

🧪

Todisteet ennen väitteitä

Mitään ei julisteta valmiiksi ennen kuin testit on ajettu ja tuloste katsottu. Terveystarkistuskomennot ovat osa jokaista pinoa, eivät jälkikäteinen lisä.

🔁

Idempotenssi oletuksena

Kirjanpitoajon, tuotesynkronoinnin tai liidien tuonnin toistaminen ei saa koskaan tuottaa duplikaatteja. Ulkoiset tunnisteet ja kuivaharjoitukset ovat sääntö, eivät poikkeus.

🤖

Tekoäly työkaluna, ei oikotienä

LLM-kutsut ovat versioituja, testattuja ja kustannusseurattuja. Promptit elävät rekisterissä eval-tapauksineen — kuten mikä tahansa muu tuotantokoodi.

🧱

Toistettava ympäristö

Jokainen projekti käynnistyy yhdellä komennolla puhtaalla koneella. Jaettu infrastruktuuri poistaa porttiristiriidat ja "minun koneellani toimii" -keskustelut.

🗺️

Työ pilkotaan rinnakkain ajettavaksi

Isot urakat jaetaan itsenäisiksi työpaketeiksi, joilla on oma tiedosto, omistaja ja hyväksymiskriteeri — niin useampi kehittäjä (tai agentti) voi edetä yhtä aikaa törmäämättä.

Koulutus

Bachelor of Science — AI in Business

IU International University of Applied Sciences

2024 — Nykyhetki · Etäopiskelu
Tekoäly liiketoiminnassa: data-analytiikka, koneoppiminen, digitaalinen liiketoimintamalli ja projektinhallinta.

9+ vuotta tuotantokoodia

Itseopiskelu & käytäntö

2017 — Nykyhetki
Suurin osa osaamisesta on hankittu rakentamalla asiakkaille järjestelmiä, jotka on pitänyt saada toimimaan ja pysymään toiminnassa vuosia.

Kielet

Suomi Äidinkieli
Englanti Sujuva
Venäjä Edistynyt
Ruotsi Alkeet

Referenssit

Jyri teki Tilasalle vuonna 2018 nettisivun tilasa.fi. Toimii edelleen vuonna 2026. Suosittelen Jyriä asiantuntemuksen ja laadun vuoksi.
Jussi JokinenTilasa Oy
Tuottaa mitä lupasi — ajoissa ja huolella. Kiitos!
Miika JunttilaPeer Car Share Oy

Harrastukset

🥋 Combat-sambo (itsepuolustus ilman aseita)🥊 Nyrkkeily🦵 Potkunyrkkeily🛠️ Omien työkalujen rakentaminen

Minusta

Menestyn vaikeiden haasteiden parissa ja rakastan ratkaista monimutkaisia ongelmia. Olipa kyse pankki-integraation automatisoimisesta, skaalautuvan SaaS-tuotteen arkkitehtuurista tai massakäsittelyn optimoinnista — tuon saman energian kaikkeen tekemiseeni. Tykkään rakentaa tylsiä ohjelmistoja, koska niillä yhteiskuntamme pyörii saumattomasti.

Minua motivoi erityisesti se hetki, kun monimutkainen kokonaisuus muuttuu selkeäksi ja luotettavaksi järjestelmäksi. Uskon, että hyvä ohjelmisto ei ole pelkästään teknisesti toimiva, vaan myös helposti ymmärrettävä, ylläpidettävä ja kestävä pitkällä aikavälillä. Siksi panostan selkeään arkkitehtuuriin, testattavuuteen ja automaatioon.