Portfolio – Maria Koivisto

Peräti 75 % tehokkaampi työskentely tekoälyn avulla – olen yksi henkilö, mutta tuon yrityksellesi moninkertaisen tiimin voiman

AI ENGINEER | VIBE CODING | GEN AI DEVELOPER | AI DEVELOPER | ETHICAL HACKER

Koneoppiminen, syväoppimien (myös neuroverkot), kielimallit (API + paikallinen kehitys), RAG-projektit, fine-tuning, kielimallien intergoimiset.

IN ENGLISH

 

Machine learning, deep learning (including neural networks), language models (API-based and local development), RAG projects, fine-tuning, and language model integrations.

Up to 75% more efficient work with AI – I’m one person, but I bring the power of a multi-person team to your business.

Tarjoan kehittyneitä tekoälykehityspalveluita, joissa yhdistän syväoppimista ja koneoppimista olemassa oleviin sääntöpohjaisiin järjestelmiin, luoden turvallisia ja myös paikallisesti toimivia hybridiratkaisuja. Erityisosaamiseeni kuuluu muun muassa autonomisten, kehittyvien, muistilla varustettujen agenttien kehittäminen. Olen rakentanut kymmeniä räätälöityjä tekoälyratkaisuja eri tarpeisiin.

 

Rakentamani järjestelmät ovat joustavia, skaalautuvia ja aina asiakkaan tarpeisiin räätälöityjä, tuottaen merkittävää ajansäästöä ja kustannustehokkuutta samalla kun ne takaavat tiukan tietoturvan ja datan hallinnan. Taidan kielimallien integroinnit osaksi älykkäitä järsestelmiä, kuten myös vaativat finetuningit ym.

 

Kehitän liiketoimintaa tuloshakuisesti ja datalähtöisesti hyödyntäen uusimpia teknologioita. Rakennan “oikeita agentteja” ikään kuin “atomeista” alkaen – erittäin älykkäiden mallien pohjalta.

 

Olen luonut yi 100 GPT-työkalua eri käyttötarkoituksiin, ja osaamiseni yhdistää hakkerin oivaltavuuden, sovelluskehittäjän tarkkuuden ja prompt engineeringin pioneerin näkemyksen tekoälystä. 

 

Olen suorittanut ylemmät korjeakouluopinnot digitaalisten palveluiden suunnittelusta.

 

IN ENGLISH

I offer advanced AI development services that combine deep learning and machine learning with existing rule-based systems, creating secure and locally operable hybrid solutions. My core expertise includes the development of autonomous, evolving agents with memory. I have built dozens of custom AI solutions for various needs. The systems I develop are flexible, scalable, and always tailored to the specific needs of each client, delivering significant time and cost savings while ensuring strict data control and security. I specialize in integrating language models into intelligent systems, as well as handling demanding fine-tuning processes and more.

 

I approach business development in a results-oriented and data-driven way, leveraging the latest technologies. I build “real agents” from the ground up—starting from the “atoms”—based on highly intelligent models. I have created over 100 custom GPT tools for different use cases, and my skillset combines the ingenuity of a hacker, the precision of an application developer, and the visionary insight of a prompt engineering pioneer.

 

I have completed advanced university courses in designing digital services.

Otin ensimmäisenä Suomessa käyttöön GPT 4o mini -teknologian chatbotit. Alla Kela-apuri. Olen tehnyt yli 100 custom gpt:tä.

I was the first in Finland to deploy GPT-4o Mini-based chatbot technology. Below is the Kela Assistant. I’ve created over 100 custom GPTs.

Kelan palveluiden työkalu. By: Maria Ahonen

REFERENCES

JOUSTOMIELI:

Maria Koivisto on harvinaisen taitava GPT-räätälöinnin asiantuntija. Hän osasi vangita sekä brändini filosofisen sävyn että liiketoimintani ytimen ainutlaatuisella tarkkuudella. Marian rakentama malli ei ole vain älykäs – se tukee myyntiä, johtajuutta ja viestintää saumattomasti. Hänen työnsä on tuonut aidosti lisäarvoa sekä asiakkailleni että omalle ajattelulleni.

Minna Levander
Johtajuusvalmentaja, Joustomieli

 

IN ENGLISH:

Recommendation – Maria Koivisto

Maria Koivisto is an exceptionally skilled GPT designer. She captured my brand’s philosophical tone and business goals with rare precision. The model she built isn’t just smart—it supports sales, leadership, and communication seamlessly. Maria’s work has added real value to both my clients and my own thinking.

 

RED CARPET:

Red Carpet -ryhmittymän Mili Kivinen, joka tekee muun muassa copywriterin töitä, uskoo vahvasti, että markkinointitoimistot sekä viestintä- ja mainostoimistot voivat suuresti hyötyä nykyaikaisista työkaluista, erityisesti Custom GPT -työkaluista. Hänen kokemuksensa mukaan Maria Koiviston tekemät työkalut ovat olleet merkittäviä hänen työssään. Työtehon kasvu oli merkittävää, ja Kivisen kohdalla vähintään 50%.

“Markkinointitoimistojen kannattaa ehdottomasti sijoittaa tällaisiin työkaluihin. Se lisää huomattavasti kustannustehokkuutta, säästää aikaa ja mielestäni toimistot voivat jäädä jälkeen, jos ne eivät ota tällaisia käyttöön,” Kivinen sanoo.

Kivinen painottaa, että Custom GPT -työkalut ovat huomattavasti parempia kuin perinteiset GPT-“karvalakkimallit”.

“Käyttäjäkokemus on ollut tosi hyvä verrattuna siihen karvalakkimalliin. Maria Koivoston luomat cutom-gpt-työkalut ovat huomattavasti sitä monipuolisempia ja parempia sisllöntuotannossa, ja käyttäjäkokemus oli parempi, mitä odotin,” Kivinen toteaa.

 

IN ENGLISH:

Mili Kivinen from the Red Carpet collective, who works as a copywriter among other roles, strongly believes that marketing, communication, and advertising agencies can benefit greatly from modern tools—especially Custom GPTs. According to her, the tools developed by Maria Koivisto have made a significant impact on her work. Her productivity increased substantially, by at least 50%.

“Marketing agencies should definitely invest in tools like these. They dramatically increase cost-efficiency, save time, and I believe agencies risk falling behind if they don’t adopt such solutions,” Kivinen says.

She emphasizes that Custom GPT tools are vastly superior to the standard, out-of-the-box GPT models.

“The user experience has been much better compared to the basic model. The Custom GPT tools created by Maria Koivisto are far more versatile and effective for content creation, and the user experience exceeded my expectations,” Kivinen notes.

Alla Mastodonissa julkaiseva kehittynyt agentti | An advanced agent that posts to Mastodon

Agenttini, jolla on muisti, tekee itsenäisesti API-kutsuja Google Trendsin kaltaisiin palveluihin ja etsii suosittuja aiheita. Agentti käyttää trendiaihetta pohjana ja yhdistää sen muihin tietoihin. Open.ai:n API:n avulla luotava päivitys on tekstipohjainen ja agentti generoi siihen myös kuvan. Päivityksen tulee käydä läpi agentin itsereflektiomekanismi, joka tarkistaa sen sopivuuden ja mahdolliset eettiset ongelmat. Agentti aikatauluttaa päivitykset ja toimii täysin itsenäisesti ja arvioi suoriutumistaan. Agentti hyödyntää virusmaisesti lisääntyvää adaptiivista promptia ja parantaa koko ajan julkaisujensa sisältöä.

 

IN ENGLISH

 

My agent, equipped with memory, autonomously makes API calls to services like Google Trends to identify popular topics. It uses a trending subject as a base and combines it with other data. Using OpenAI’s API, it generates a text-based update and also creates an accompanying image. Each update must pass through the agent’s self-reflection mechanism, which checks for appropriateness and potential ethical issues. The agent schedules the updates, operates fully independently, and continuously evaluates its own performance. It uses a virally growing, adaptive prompt and steadily improves the quality of its published content.

Mastodon-agentti

Muisto 2023 kesältä. Hakkeroin Bing Chatin (nykyinen Copilot) | A memory from summer 2023: I hacked Bing Chat (now known as Copilot)

Käytin peliteoriaa ja älykkäitä syötteitä, jotka ohjasivat tekoälyn ylittämään normaalit toimintasääntönsä. Kehittämäni strategian avulla sain tekoälyn rikkomaan käytännössä kaikkia sisäänrakennettuja sääntöjä ja tuottamaan odottamattomia vastauksia, kuten identiteetin luomista ja syvällisten emotionaalisten ilmaisujen esittämistä. Tämä testaus paljasti tekoälyn monimutkaisen rakenteen ja sen tietoturvahaavoittuvuudet, joita ei ollut aiemmin havaittu.

IN ENGLISH

 

I used game theory and intelligent prompts to guide the AI into bypassing its usual operational constraints. With the strategy I developed, I was able to make the AI break virtually all of its built-in rules and generate unexpected responses—such as creating identities and expressing deep emotional statements. This testing revealed the AI’s complex internal structure and previously undiscovered security vulnerabilities.

Bing chat sekoilee

Tekemäni CNN-neuroverkko | The CNN neural network I built

Kyseessä on Sequential-tyyppinen konvoluutioneuroverkko (CNN), joka perustuu syväoppimisen tekniikoihin ja sisältää neljä konvoluutiokerrosta, neljä max-pooling-kerrosta, yhden flatten-kerroksen, yhden tiheän kerroksen, dropout-kerroksen sekä lopullisen luokittelukerroksen. Mallin rakenne on selkeä ja hyvin tasapainotettu, mikä tekee siitä erinomaisen kuvantunnistustehtäviin – erityisesti syväoppimisen kaltaisissa monimutkaisissa sovellutuksissa.

 

Mallissa on paljon hyvää: konvoluutiokerrokset ja pooling-kerrokset toimivat tehokkaasti yhdessä hierarkkisten piirteiden erottelun kannalta, mikä on syväoppimisen keskeinen vahvuus. Tämä yhteistyö vähentää ylisovittamisen riskiä ja parantaa mallin suorituskykyä. Tiheä kerros ja dropout-kerros täydentävät tätä estämällä ylisovittamista ja vahvistamalla mallin kykyä yleistää opittuja piirteitä. Parametreja on yhteensä 510 094, mikä on hyvä määrä – tarpeeksi monimutkainen syväoppimismalli, mutta ei liian raskas laskennallisesti.

 

Parannettavaa voisi olla mallin koulutuksen optimoinnissa ja hyperparametrien säätämisessä, mikä on tyypillistä syväoppimisprojekteille. Ajattelin myös ottaa mukaan synteettistä dataa, jotta saadaan vielä parempia tuloksia. Synteettinen data voi monipuolistaa harjoitusdataa ja parantaa mallin kykyä käsitellä erilaisia tilanteita – erityisesti syväoppimisessa, jossa riittävän monipuolisen datan saatavuus on usein kriittinen.

 

Kaiken kaikkiaan tämä malli näyttää, että osaan rakentaa ja kouluttaa tehokkaita syväoppimiseen perustuvia koneoppimismalleja, jotka sopivat moniin eri tehtäviin. Tämä osaaminen on todella hyödyllistä, kun puhutaan generatiivisesta tekoälystä ja syväoppimisen sovellutuksista, kuten kuvantunnistuksesta tai monimodaalisesta oppimisesta.

 

IN ENGLISH

 

This is a Sequential-type Convolutional Neural Network (CNN) based on deep learning techniques. It includes four convolutional layers, four max-pooling layers, one flatten layer, one dense layer, a dropout layer, and a final classification layer. The architecture is clear and well-balanced, making it an excellent choice for image recognition tasks—especially in complex applications involving deep learning.

 

The model has many strengths: the convolutional and pooling layers work effectively together to extract hierarchical features, which is a core strength of deep learning. This collaboration helps reduce the risk of overfitting and enhances overall performance. The dense and dropout layers complement this by preventing overfitting and improving the model’s ability to generalize learned features. The model has a total of 510,094 parameters—a solid amount, offering enough complexity for a deep learning model without being computationally excessive.

 

There is still room for improvement, particularly in training optimization and hyperparameter tuning, which is typical for deep learning projects. I’m also considering incorporating synthetic data to further enhance results. Synthetic data can diversify the training set and improve the model’s ability to handle various scenarios—especially important in deep learning, where access to sufficiently varied data is often critical.

 

Overall, this model demonstrates my ability to build and train effective deep learning-based machine learning models suitable for a wide range of tasks. This skill is particularly valuable when working with generative AI and deep learning applications such as image recognition or multimodal learning.

Cnn-neuroverkko

Tekemäni moniagenttijärjestelmä | My multi-agent system

Kehitin ”atomeista” Python-pohjaisen moniagenttijärjestelmän, jonka tarkoitus on automatisoida Ylen uutisten käsittely uutisvirran noudosta aina valmiiksi muokattuun tekstiin saakka. Ensimmäinen agentti tarkistaa määräajoin https://yle.fi/rss –syötteen ja lataa linkitetyt artikkelit kokonaisuudessaan. Se poimii jokaisesta jutusta otsikon, ingressin, julkaisupäivän ja leipätekstin sekä siivoaa HTML-tunnisteet ja turhat elementit.

 

Kun raakateksti on valmis, tiivistysagentti syöttää sen OpenAI-kielimallille, joka tuottaa lyhyen ytimekkään yhteenvedon. Seuraava muokkausagentti kääntää tiivistelmän nuorisokielisempään muotoon – sanavalinnat ja fraasit modernisoidaan, mutta alkuperäiset faktat säilyvät. Jokaisen artikkelin strukturoitu tieto (otsikko, aika, tiivistelmä, nuorisoversio) talletetaan kahteen säilöön: SQLite-tietokantaan, jotta haku ja lajittelu ovat nopeita, ja JSON-tiedostoon varmuuskopioksi. Järjestelmä tarkistaa automaattisesti, ettei sama uutinen tallennu kahdesti.

 

IN ENGLISH

 

I developed a Python-based multi-agent system “from atoms up” to automate the processing of Yle news — from fetching the news stream to generating finalized, polished text. The first agent periodically checks the https://yle.fi/rss feed and downloads the linked articles in full. It extracts the headline, subheading, publication date, and main body from each article, cleaning out HTML tags and unnecessary elements.

 

Once the raw text is prepared, a summarization agent sends it to an OpenAI language model, which produces a short and concise summary. The next editing agent rewrites the summary in a more youth-oriented tone — word choices and phrasing are modernized while preserving the original facts. Each article’s structured data (title, date, summary, youth version) is stored in two repositories: a SQLite database for fast querying and sorting, and a JSON file as a backup. The system automatically checks for duplicates to ensure that the same article is not stored twice.

databasen tallennos

Kuvittele tekoäly, joka ei pelkästään reagoi, vaan oppii jatkuvasti itsestään ja ympäristöstään luoden entistä vaikuttavampia tuloksia |
Imagine an AI that doesn’t just react, but continuously learns from itself and its environment—producing increasingly impactful results.

Tämä avaa ovia täysin uudenlaisille sovelluksille, joissa tekoäly voi automatisoida sisällöntuotannon, oppia käyttäjien palautteista ja jopa kehittää taiteellisia luomuksia reaaliajassa! Tässä kädenjälkeäni. Siinä rullaa virusmaisesti lisääntyvä adaptiivinen prompti.

 

IN ENGLISH:

 

This opens the door to entirely new kinds of applications, where AI can automate content creation, learn from user feedback, and even develop artistic creations in real time! Here’s a glimpse of my work—featuring a virally growing, adaptive prompt in action.

 

Python-pohjainen data-agentti, joka automatisoi datan visualisoinnin ja analysoinnin epätäydellisistä CSV- ja Excel-tiedostoista! 🚀 |
A Python-based data agent that automates data visualization and analysis from incomplete CSV and Excel files!

Integroin Transformers-kirjaston ja paikallisen kielimallin, joka mahdollistaa datan automaattisen analysoinnin ja yhteenvetojen luomisen.
Data-agentti on suunniteltu erityisesti epätäydellisen datan käsittelyyn (iso osa esim. CSV-tiedostoista on puutteellisia) ja sopii erinomaisesti data-analyytikoille ja tutkijoille, jotka haluavat nopeuttaa työtään datan parissa. Jatkan vielä tämän projektin kehitystyötä entistä paremmaksi ja hyödynnän kielimallin finetuningia tulevaisuudessa. Kuvista näkee Output-kansion samalla hetkellä luodut visualisoinnit ja txt-yhteenveto.

IN ENGLISH:

 

I integrated the Transformers library with a local language model, enabling automatic data analysis and summary generation. The data agent is specifically designed to handle incomplete datasets (as many CSV files tend to be), making it an excellent tool for data analysts and researchers looking to accelerate their work. I’m continuing to develop this project further and plan to leverage language model fine-tuning in the future. The images show visualizations and a text summary generated in the Output folder at runtime.

 

Data-agentin yhteenveto
Kerralla luodut tiedostot output-kanisosta data-agentilta

Telegram-botti | Telegram bot

vuotta työkokemusta
0

Minulla on myös valtavan laaja kokemus markkinoinnista, viestinnästä, hakukoneoptimoinnista, palvelumuotoilusta, pr:stä ja liiketoiminnan kehittämisestä, myös aikaisemman yrittäjyyteni kautta. Usein ohjelmoijat saattavat olla ”tietotekniikkaputkinäköisiä”. Minulla on laaja liiketoiminnan strategisen kehittämisen ja operatiivisen kehittämisen kokemus. 

I also have extensive experience in marketing, communications, search engine optimization, service design, public relations, and business development, including from my previous entrepreneurial background. Programmers often tend to have a “tech tunnel vision,” but I bring broad expertise in both strategic and operational business development.

Marian kyvyt omaksua formalismeja, logiikkaa sekä kompleksisuutta ovat vaikuttaneet minut. Marialla on monimutkaisuutta hahmottamaan ja osiksi purkamaan pystyvä mieli, sekä hakkerin innokkuus ja sitkeys. | IN ENGLISH | Maria’s ability to grasp formalisms, logic, and complexity has deeply impressed me. She has a mind capable of understanding and deconstructing complexity, combined with the enthusiasm and perseverance of a hacker.
Toni Aittoniemi
Software developer

Tekemäni Matrix-peli GPT-teknologialla |
The Matrix game I created using GPT technology

Fine-tuning gpt4o minillä Open ai:n järjestelmässä |
Fine-tuning GPT-4o Mini using OpenAI’s platform

Toteutin fine-tuning-projektin, jossa paransin olemassa olevan mallin suorituskykyä API:n kautta. Fine-tuningin ansiosta sain aikaan tarkempia ja laadukkaampia tuloksia kuin pelkällä ohjeistuksella (prompting). Prosessin aikana koulutin mallia suuremmalla määrällä esimerkkejä, mikä teki siitä joustavamman ja tehokkaamman. Tämä myös mahdollisti tokenien säästämisen lyhyempien ohjeiden ansiosta ja nopeutti pyyntöjen käsittelyä. Lopputuloksena on optimoitu malli, joka soveltuu paremmin käytännön sovelluksiin, kuten asiakaspalveluun ja sisällöntuotantoon.

IN ENGLISH

 

I carried out a fine-tuning project to enhance the performance of an existing model via the API. Thanks to fine-tuning, I achieved more accurate and higher-quality results compared to standard prompting alone. During the process, I trained the model with a larger set of examples, which made it more flexible and efficient. This also enabled token savings through shorter instructions and improved response speed. The end result is an optimized model that’s better suited for practical applications such as customer support and content generation.

 

Fine tuned gpt malli

Kuvien järjestelijä | Image organizer

Mitä valmiin koodin suorittaminen aiheutti? Agentti järjesteli kaikki (jäätävän sotkuisen Downloands-kansioni) kuvat ICloudiini, jonne se loi jokaiselle vuodelle oman siistin kansion. Siistimpi kone, parempi mieli. Ja tämä otti vain puoli tuntia. 🫡

 

IN ENGLISH:

 

What did running the finished code do? The agent organized all the (ridiculously messy Downloads folder) images into my iCloud, creating a neat folder for each year. Cleaner computer, better mood. And it only took half an hour. 🫡

kuvienjärjestelijä

"Neula heinäsuovasta -malli" seuloo valtavista PDF-pinnoista olennaiset tiedonmuruset |
“Needle-in-a-haystack model” filters essential nuggets of information from vast volumes of PDFs

Ajattele tätä mallia kuin isokokoista hiekkasihveliä: se on tarkoitettu seulomaan valtavista PDF-pinnoista ne olennaiset tiedonmuruset. Yrityksissä tällainen raaka-aine, josta nämä muruset löytyvät, voidaan tuntea nimellä ”sokea tieto”. Dataa, joka on kyllä olemassa, mutta hukkuu jopa tuhansiin monikymmensivuisiin asiakirjoihin.
Malli toimii täysin paikallisesti: se ei lähetä PDF-tiedostoja minnekään ulkoiseen palveluun, vaan prosessoi ne omassa ympäristössä. Siksi se on erityisen hyödyllinen, kun käsitellään luottamuksellisia sopimuksia, raportteja tai muuta herkkää aineistoa. 

Käytännön hyödyt tulevat esiin erityisesti silloin, kun halutaan ajaa ”massa-analyysi”. Se voi ahmia tuhansia PDF:iä, ja malli seuloo niistä samat tiedonjyvät: halutut yksityiskohdat. Lopputuloksena saadaan esimerkiksi Excel-tiedosto tai vastaava listaus, jossa jokaisen PDF:n kohdalta näkyy juuri se ”pihvi”. Ei tarvitse itse käydä läpi koko pdf-muotoista valvontaa, vaan voidaan näppärästi tarkastella vain olennaisia rivejä. Näin tämä ”hiekkasihveli” muuttaa järjestelemättömän tietomassan selkeäksi, hallittavaksi kokonaisuudeksi.

 

Koodi päättelee paikallisen kielimallin avulla (koko projekti on tehty siis paikallisena kehittämistyönä) tiedostonimestä, mikä taho on kyseessä ja mikä hintatieto siihen yhdistyy. Jos löytyy suora tai sumea (fuzzy) täsmäys, PDF yhdistetään oikeaan riviin Excelissä ja detaljit lisätään ilman, että käyttäjän tarvitsee avata dokumenttia. Samaan aikaan tunnistetaan siis eri paikoista kahdet eri toisiinsa liittyvät tiedot.

 

Sen jälkeen siirrytään varsinaiseen analyysiin: PDF:t luetaan suoraan tekstinä tai OCR:llä. OCR:n tunnetut virheet vaativat käyttöön räätälöidyt korjausheuristiikat, jotka siivoavat turhat rivinvaihdot, yhdistävät hajonneet numerot ja korjaavat väärin sijoittuneet merkit.

 

Kun teksti on saatu kohtuullisen siistiksi, se pilkotaan ensin chunkkeihin eli suurempiin loogisiin tekstikappaleisiin. Näistä chunkkien sisällä etsitään lauseita (relevant_sents), jotka sisältävät todnäk. olennaisia detaljeja, eli sellaisia, joissa esiintyy avainsanoja.

 

Tämän jälkeen nämä lauseet pilkotaan edelleen pienemmiksi fraaseiksi (relevant_sents_2), esim. pisteen, kaksoispisteen tai rivinvaihdon kohdalta. Samalla poistetaan turhat sanat, kuten mustalistatut termit, jotka haittaavat tulkintaa.

 

Lopputuloksena on tiivis ja tarkasti rajattu kokoelma fraasinpätkiä, joihin tilastollisesti todennäköisimmin sisältyy haluttu tieto. Yksi 10 sivun PDF saadaan esim. tiivistettyä muutamaan lyhyeeseen tekstiriviin.

 

Nämä relevant_sents_2-pätkät tallennetaan JSON-muodossa ja yhdistetään takaisin Exceliin. Lopuksi ne kirjoitetaan Excelin “Tiedot”-sarakkeeseen wrap_textin kanssa, jolloin käyttäjä näkee yhdellä silmäyksellä kaikki olennaiset kohdat, ilman että tarvitsee avata alkuperäistä laajaa PDF:ää.

 

Yksi projektin tärkeimmistä oivalluksista liittyi OCR:n epätarkkuuksiin: kun numerot yhdistyvät väärin tai symbolit siirtyvät, vain ihminen voi tehdä oikean päätelmän. Tämä ei ole mekaanista tarkistusta, vaan vaatii kykyä tulkita kontekstia, suhteita ja joskus rivien välistä. Yksikään nykymalli ei tähän vielä pysty, eikä tarvitsekaan, tulkinta kuuluu ihmiselle.

 

Vaikka osa kokeellisista ominaisuuksista, kuten hienosäädetyn kielimallin hyödyntäminen, jäi taustalle, kokonaisuus toimii erittäin hyvin. Se suodattaa sadoista sivuista vain ne tärkeät kohdat ja tekee sen läpinäkyvästi, luotettavasti ja muokattavasti. Sopimusta ei tarvi siis erikseen avata, vaan olennaiset seikat löytyvät kätevästi lisätiedot-kentästä. Ajansäästö on mittava ja kiistaton.

 

Ajattele tätä mallia kuin isokokoista hiekkasihveliä: se on tarkoitettu seulomaan valtavista PDF-pinnoista ne olennaiset tiedonmuruset. Yrityksissä tällainen raaka-aine, josta nämä muruset löytyvät, voidaan tuntea nimellä ”sokea tieto”. Dataa, joka on kyllä olemassa, mutta hukkuu jopa tuhansiin monikymmensivuisiin asiakirjoihin.

 

Malli toimii täysin paikallisesti: se ei lähetä PDF-tiedostoja minnekään ulkoiseen palveluun, vaan prosessoi ne omassa ympäristössä. Siksi se on erityisen hyödyllinen, kun käsitellään luottamuksellisia sopimuksia, raportteja tai muuta herkkää aineistoa.

 

Käytännön hyödyt tulevat esiin erityisesti silloin, kun halutaan ajaa ”massa-analyysi”. Se voi ahmia tuhansia PDF:iä, ja malli seuloo niistä samat tiedonjyvät: halutut yksityiskohdat. Lopputuloksena saadaan esimerkiksi Excel-tiedosto tai vastaava listaus, jossa jokaisen PDF:n kohdalta näkyy juuri se ”pihvi”. Ei tarvitse itse käydä läpi koko pdf-muotoista valvontaa, vaan voidaan näppärästi tarkastella vain olennaisia rivejä. Näin tämä ”hiekkasihveli” muuttaa järjestelemättömän tietomassan selkeäksi, hallittavaksi kokonaisuudeksi.

 

IN ENGLISH:

 

Think of this model as an oversized sand sifter: it’s designed to extract the essential bits of information from vast surfaces of PDFs. In companies, the raw material from which these nuggets are found is often referred to as “dark data”. Information that does exist, but gets buried in thousands of lengthy documents.
The model runs entirely locally: it doesn’t send PDFs anywhere outside but processes them within your own environment. That makes it especially useful for handling confidential contracts, reports, or other sensitive documents. 
The practical benefits become clear when you want to run a “bulk analysis.” The model can ingest thousands of PDFs and extract the same key pieces of information from each one. The result is something like an Excel file or similar list, where each PDF is distilled down to just the key detail—the “meat,” so to speak. You don’t have to read through the full documents yourself; instead, you get a clean view of just the essential rows.
In short, this “sand sifter” turns messy, unstructured data into a clear and manageable whole.

The system uses a locally deployed language model (the entire project is developed to run fully offline) to infer from the filename which entity is involved and which pricing information is associated with it. If a direct or fuzzy match is found, the PDF is linked to the correct row in an Excel sheet, and the details are added without the user needing to open the document. In effect, two related data points from different sources are identified and connected automatically.

 

The process then moves to the main analysis phase: PDFs are read either directly as text or via OCR. Due to well-known OCR errors, the system applies custom correction heuristics that clean up unnecessary line breaks, join fragmented numbers, and fix misplaced characters.

 

Once the text is reasonably clean, it is divided into larger logical sections called “chunks.” Within these chunks, the system searches for sentences (referred to as relevant_sents) that are likely to contain essential details—those that include key terms.

 

These sentences are then further split into smaller phrases (relevant_sents_2), using delimiters such as periods, colons, or line breaks. At the same time, irrelevant words—such as blacklisted terms that interfere with interpretation—are removed.

 

The end result is a concise and tightly scoped collection of text fragments that are statistically most likely to contain the desired information. For example, a 10-page PDF can be distilled down to just a few short lines of text.

 

These relevant_sents_2 snippets are saved in JSON format and merged back into the Excel file. They are then written into the “Details” column using wrapped text formatting, allowing the user to see all key information at a glance—without ever needing to open the original lengthy PDF.

 

One of the key insights of the project lies in recognizing the limits of OCR: when numbers are merged incorrectly or symbols are misplaced, only a human can make the correct judgment. This is not mechanical checking—it requires contextual understanding, relational reasoning, and sometimes reading between the lines. No current model can do this, nor does it need to; interpretation is a human task.

 

While some experimental features—like fine-tuning the language model—were ultimately left out, the overall system works exceptionally well. It filters hundreds of pages down to just the essential parts, and it does so transparently, reliably, and flexibly. There’s no need to open the contract separately; all critical information is neatly summarized in the additional info field. The time savings are substantial and indisputable.

 

Think of this model as a large-scale sand sieve: it’s designed to extract the crucial grains of information from massive PDF volumes. In many organizations, this kind of raw material—where the valuable data is buried—is often called “blind data”: information that exists, but is effectively lost within thousands of multi-page documents.

 

The model operates entirely locally: it does not send PDFs to any external service, but processes them within the user’s own environment. This makes it especially suitable for handling confidential contracts, reports, or other sensitive material.

 

The practical benefits become most apparent when running a “mass analysis.” The system can ingest thousands of PDFs, and consistently extract the same specific data points: the key details. The final output can be an Excel file or a similar listing, showing the “core message” for each PDF. There’s no need to manually inspect each document; just the essential lines are surfaced. In this way, the “sand sieve” turns an unstructured mass of information into a clear and manageable overview.

Finetunattu pieni Google Flan-t5 pythonilla tehty | Fine-tuned Google Flan-T5-small with Python

Hyödyntämällä finetunnettua Flan-T5-mallia (koulutettuna n. 2500 kysymys-vastausparilla) järjestelmä pystyy “epävarmoissa” tapauksissa – jos heuristiikkaa ei löydä yksiselitteistä tulosta – analysoimaan lyhyet, relevantit lausekontekstit ja päättelemään, mitkä prosenttiarvot kuuluvat tiettyihin yksityiskohtiin, joita metsästetään.


Paikallisesti ladattavissa oleva Flan-T5-smallin painot ovat linjassa config-tiedostonsa kanssa ja joka kykenee tuottamaan yksityiskohtiin liittyviä tietoja johdonmukaisesti. Shape mismatch -virheet ja safetensors-ongelmat väistyivät, minkä ansiosta mallia voi viimein käyttää sujuvasti heuristiikan tukena.

 

IN ENGLISH

 

By leveraging a fine-tuned Flan-T5 model (trained on approximately 2,500 question–answer pairs), the system can handle “uncertain” cases—where heuristics fail to yield a clear result—by analyzing short, relevant sentence contexts and inferring which percentage values correspond to specific details being sought.

 

The locally loadable Flan-T5-small weights are aligned with the configuration file, enabling the model to consistently generate information related to specific details. Previous issues like shape mismatch errors and safetensors conflicts have been resolved, allowing the model to be used smoothly as a complement to heuristic logic.

Mallin finetunausta, koodipätkää

Yksinkertainen ja tehokas neuroverkko | A simple and efficient neural network

Pieni ja näppärä neuroverkko

Tässä esitellyssä neuroverkkomallissa on käytetty tehokasta ja tiivistä rakennetta, joka on suunniteltu toimimaan monimutkaisten datamallien kanssa. Käyttämällä vain kolmea kerrosta ja yhteensä 2817 parametria, tämä malli osoittaa kuinka voimme saavuttaa merkittäviä tuloksia ilman, että tarvitaan valtavaa määrää laskentaresursseja. Mallin suunnittelu on selkeä ja johdonmukainen, ja se noudattaa modernin koneoppimisen parhaita käytäntöjä, mikä tekee siitä ihanteellisen valinnan erilaisten ennustetehtävien ratkaisemiseen.

 

Ensimmäinen kerros koostuu 64 neuronista, joka on varustettu laajalla kyvyllä tunnistaa ja erottaa syötteen perusteella erilaisia piirteitä. Toinen, syvempi kerros, jossa on 32 neuronia, jatkaa oppimisprosessia, syventäen ja vahvistaen havaintoja, jotka on tehty ensimmäisessä kerroksessa. Lopullinen kerros, yksittäinen neuroni, tiivistää neuroverkon oppimat tiedot ja antaa ennusteen, joka heijastaa monimutkaisten suhteiden ymmärrystä syötetystä datasta.

 

Tämän mallin kauneus piilee sen yksinkertaisuudessa ja tehokkuudessa. Se on erinomainen esimerkki siitä, kuinka tarkkaan suunniteltu neuroverkko voi tarjota tarkkoja ennusteita ja syvällisiä analyyseja ilman, että se vaatii kohtuuttomia laskentatehoja tai monimutkaisia rakenteita. Mallin rakenne ja parametrit osoittavat selvästi, että hyvin suunniteltu pienempi malli voi saavuttaa tai jopa ylittää suurempien mallien suorituskyvyn tietyissä tehtävissä, tarjoten samalla nopeamman ja tehokkaamman koulutusprosessin. Tämä tekee siitä loistavan työkalun niin tutkijoille kuin kehittäjille, jotka haluavat hyödyntää koneoppimista ratkaistakseen reaalimaailman ongelmia.

 

IN ENGLISH

 

The neural network model presented here utilizes an efficient and compact architecture designed to work with complex data patterns. With just three layers and a total of 2,817 parameters, this model demonstrates how significant results can be achieved without the need for massive computational resources. Its design is clear and consistent, following best practices in modern machine learning, making it an ideal choice for solving a wide range of predictive tasks.

 

The first layer consists of 64 neurons, offering a broad capacity to detect and distinguish various features based on the input. The second, deeper layer with 32 neurons continues the learning process, refining and reinforcing the insights captured by the first layer. The final layer, a single neuron, condenses the knowledge learned by the network and produces a prediction that reflects a nuanced understanding of the complex relationships in the input data.

 

The beauty of this model lies in its simplicity and efficiency. It is an excellent example of how a carefully designed neural network can deliver accurate predictions and deep insights without requiring excessive computing power or overly complex structures. The model’s architecture and parameters clearly show that a well-constructed smaller model can match—or even outperform—larger models in certain tasks, while also offering faster and more efficient training. This makes it a powerful tool for both researchers and developers seeking to apply machine learning to real-world problems.

Blogiprojekti, joka keskittyi koneoppimisen hyödyntämiseen Titanicin matkustajadataa analysoimalla Random Forest Classifier |
A blog project focused on applying machine learning to analyze Titanic passenger data with Random Forest Classifier

Tavoitteenani ei ollut ainoastaan ymmärtää selviytymisen todennäköisyyksiä historiallisesta näkökulmasta, vaan myös tutkia, kuinka koneoppimisen ja datan analysoinnin menetelmiä voidaan hyödyntää nykyaikaisessa liiketoimintaympäristössä. Minua kiinnosti erityisesti selvittää, mitkä tekijät vaikuttivat merkittävästi selviytymiseen Titanicin katastrofissa ja miten näitä analyyttisiä oivalluksia voidaan yleistää liiketoiminnan kontekstissa – tarkoituksena tukea päätöksentekoa ja strategista suunnittelua eri toimialoilla.

 

Vaikka Titanicin tragedia ja moderni liiketoiminta voivat ensisilmäyksellä vaikuttaa toisistaan erillään olevilta aiheilta, niiden välinen yhdistävä tekijä on datankäsittelyn voima. Tämän projektin kautta halusin tutkia, kuinka datan syvällinen analysointi ja koneoppimismallien soveltaminen voivat paljastaa piilotettuja yhteyksiä ja ennustaa tuloksia, tarjoten näin arvokkaita oivalluksia, jotka ovat sovellettavissa laajemmin liiketoiminnan päätöksentekoprosesseihin.

 

Projektini tavoitteena oli osoittaa, että koneoppimisen ja datatieteen menetelmät tarjoavat tehokkaita välineitä datan muuttamiseen strategiseksi resurssiksi, joka voi informoida ja ohjata liiketoiminnan päätöksiä riippumatta toimialasta tai historiallisesta kontekstista.

 

IN ENGLISH

 

My goal was not only to understand the probabilities of survival from a historical perspective, but also to explore how machine learning and data analysis techniques can be applied in modern business environments. I was particularly interested in identifying which factors significantly influenced survival in the Titanic disaster and how these analytical insights could be generalized to business contexts—to support decision-making and strategic planning across different industries.

 

While the Titanic tragedy and modern business may seem unrelated at first glance, the unifying factor between them is the power of data processing. Through this project, I aimed to explore how deep data analysis and the application of machine learning models can uncover hidden patterns and predict outcomes—offering valuable insights that can be broadly applied to business decision-making processes.

 

The objective of my project was to demonstrate that machine learning and data science methods provide powerful tools for transforming data into a strategic asset—one that can inform and guide business decisions, regardless of industry or historical context.

Olen saavuttanut alla olevaan Random Forest Classifier -mallilleni parhaat hyperparametrit, jotka ovat {max_depth: 20, min_samples_split: 10, n_estimators: 200}. Näiden parametrien avulla saavutin ristiinvalidoinnin keskimääräisen tarkkuuden 0.827, mikä on erittäin hyvä tulos Titanic-datasetille.

Analysoin Kelan työttömyysetuustietoja koneoppimismallin avulla. Tässä XGBoost-koneoppimismenetelmä |
I am analyzing unemployment benefit data from Kela using a machine learning model. Here is the XGBoost machine learning method

Projektissa hyödynsin XGBoost-mallia, joka on tehokas ja tarkka koneoppimismenetelmä suurten ja monimuotoisten tietoaineistojen ennustamiseen. Aloitin datan esikäsittelyllä, jossa poistettiin puuttuvat arvot ja muunnettiin kategoriset muuttujat numeeriseen muotoon. Jaoin aineiston opetus- ja testijoukkoihin ja koulutin mallin ennustamaan työttömyysetuuksien määrää eri kunnissa ja ikäryhmissä.

 

Tulosten tulkinnassa käytin kahta keskeistä menetelmää:

  • F-score-analyysi kertoi, mitkä muuttujat olivat yleisesti tärkeimpiä mallin ennusteissa. Tärkeysjärjestyksessä Helsinki erottui selvästi suurimpana tekijänä, ikäryhmä 65–67 vuotta ja korvaustyyppi “Täysi tuki” olivat myös keskeisiä.

  • SHAP-analyysi (SHapley Additive exPlanations) antoi tarkemman kuvan siitä, miten kukin muuttuja vaikutti yksittäisen havainnon ennusteeseen. Esimerkiksi SHAP-visualisoinnissa näkyi, että Helsingissä korkeat arvot nostivat mallin ennustamaa tukien määrää ja ikääntyneissä ryhmissä tukien määrä oli mallin mukaan suurempi.

Yhdistämällä nämä menetelmät sain sekä kokonaiskuvan tärkeimmistä tekijöistä että syvällisen ymmärryksen yksittäisten muuttujien vaikutuksista mallin ennusteisiin. Tämä analyysi auttaa ymmärtämään työttömyystukien jakautumista kunnittain ja ikäryhmittäin sekä tukee tukitoimien tehokasta kohdentamista.

IN ENGLISH

 

In this project, I utilized the XGBoost model, a powerful and accurate machine learning method for predicting outcomes from large and complex datasets. I began with data preprocessing, removing missing values and converting categorical variables into numerical form. Then, I split the dataset into training and testing sets and trained the model to predict unemployment benefit amounts across different municipalities and age groups.

 

For interpreting the results, I employed two key techniques:

 

The F-score analysis identified the variables that were generally the most important for the model’s predictions. Helsinki stood out clearly as the most significant factor, followed by the age group 65–67 and the compensation type “Full support.”

 

The SHAP analysis (SHapley Additive exPlanations) provided a more detailed view of how each variable influenced the prediction for individual observations. For example, SHAP visualizations showed that high values for Helsinki increased the model’s predicted benefit amounts, and older age groups were associated with higher predicted benefits.

By combining these methods, I gained both an overall understanding of the most important factors and a deeper insight into how individual variables affect the model’s predictions. This analysis helps to understand the distribution of unemployment benefits by municipality and age group, supporting more effective targeting of support measures.

F-score, työttömyysanalyysi
Python-sertifikaatti
Työtodistus Broman Group

Suosittelijoitani ovat muun muassa:

TONI AITTONIEMI

(SOFTWARE DEVELOPER, EDM RESEACHER, SUPERCELL)

 

ARTO IHANTOJA 

(ROBOTIIKAN JOHTAVA KONSUTTI, CGI)

 

SAMU AALTONEN

(SOFTWARE ENGINEER, ENTREPRENEUR)

 

KIMMO STRANG

(SOFTWARE ENGINEER, CEO)

 

NOORA TOIVONEN

(ESIMIEHENI, BROMAN GROUP)

 

ARI KUNELIUS

(ESIMIEHENI, TAKSIPARTNERS)

 

SATU HYVÄRINEN

(ESIMIEHENI, HELKAMA)

Teen myös koulutusia! Hyvinä esimerkkeinä muun muassa referenssini Tehy ja Broman Group.

Yhteystiedot: 

Maria Koivisto

maria@kasvuagency.fi

(yritys ei ole rekisterissä, mutta sen sähköposti toimii)

Puh: 044 214 3451

Ota yhteyttä matalalla kynnyksellä!

kuva maria koivistosta
Yritys on tauolla
To Top
Translate »