tekoäly

How I built my personal AI assistant office, working in media (pros and cons)

Testing the Gemini image generation API via my assistant. Skip to the end to see the result (two monkeys instead of one, haha).

An honest TLDR: This is an ongoing project that will probably never end. But an extremely interesting one. Is it useful? Definitely? Is it perfect? No.

So, as you might know, I’m not a programmer at all but I have had quite a clear idea of how I would like this thing to work. I built this by vibe-coding in Claude Code and made gradual changes along the way. One inspiration has been my friend Jaakko’s own experiment that you can read about here (opens to another tab).

The idea

Instead of one chatbot that tries to do everything, I made a small office. One lead assistant (orchestrator agent) understands what I want and decides who does the work. Specialist helpers do most the actual jobs. Basically I started with prompting and planning first with my Claude, listing my wishes and finding out what’s realistic. I connected my assistant to Codex as well for a while but disconnected it after testing fo the time being.

The structure

  • Lead assistant (Pääassari). It talks to me, decides whether to delegate, hands out clear assignments, and assembles the results. It’s rulebook is mainly one CLAUDE.md file in my Obsidian vault, plus a general one that applies to all my Claude Code projects on my computer.
  • Seven specialist helpers. Each is one short text file in .claude/agents/, with a job description and a limited set of tools:
    • Research helper (Tutkimusapuri): web search, plus a database of how newsrooms use AI. OSINT: no tools of its own but and the instruction to look tools up from a public directory. This is also connected to my Notion databases where I’ve collected some observations from media industry via a Claude automation.
    • Work helper (Työapuri): connects to my Slack, Confluence, Jira, work email and calendar, Sharepoint.
    • Home helper (Kotiapuri): reads my personal Gmail and family calendars. Read-only but lead assistant writes calendar entries if I confirm.
    • Writer (Kirjoittaja): drafts Linkedin posts and blogs in my voice, using a style guide.
    • Presentation helper (Preseapuri): makes on-brand slide decks (HTML and PowerPoint), based on Alma Media design system.
    • Image and video helpers (Kuva-apuri, Videoapuri): images via Gemini API (a personal one), animated data videos from chart screenshots.
  • The office itself. A browser app where each helper has a pixel-art desk (inspiration for the pixel-art came e.g. from Ippen Media’s Markus Frantz), and the lead assistant walks over to the one it delegates to. Under the hood, a small local Python server runs Claude Code.

The expense tracker: knowing what the office costs

AI helpers cost real money for every run, so I built cost tracking into the office.

  • Every answer is priced. After each run, Claude Code reports the cost in dollars. My office server (palvelin.py) records it with the date and the helper that did the work, and saves it all in a local data.json file.
  • Three views.
    • A ”Today” counter at the top of the office shows total spend for the day.
    • Each helper’s desk shows what that helper has cost today.
    • Each conversation in the sidebar shows its own running cost, and a memory bar shows how full the conversation is.
  • Claude Code’s own status line (~/.claude/statusline.sh) shows the same two numbers in the terminal: the session’s cost and how full the memory is.
  • The tracker changes how I work.
    • The lead assistant sizes up each request (light, medium or heavy) and warns me before heavy runs such as deep research, many images or video rendering. It also offers a cheaper alternative.
    • Long conversations get expensive, because every message rereads the whole history. So the assistant suggests a fresh, short conversation once the memory bar passes 60%.
    • It also led to the cheap ”Pikachat” quick-chat mode, with its own separate cost line.

The rules that make it (at least a bit more) trustworthy

  • Read-only by design. The helpers that touch work and personal data have no write tools at all, so a mistake can’t send an email or edit a Jira ticket. Writing happens only when I explicitly ask, in the main session.
  • Confirm before saving. Nothing goes into the vault, GitHub or Jira without asking me first.
  • Work and personal stay apart. If it’s unclear, the assistant asks ”work or personal?”
  • Cost awareness. See the tracker above. The assistant doesn’t guess dollar amounts. It reads the real figures from get_usage -tool.

Where Obsidian fits

Obsidian is the memory of the office, my ”second brain.” The assistant lives in the vault folder, so everything it learns about me and my writing sits next to my own notes.

  • Two parts. Muistiinpanot/ holds my observations, ideas and learning notes. Blogi-arkisto/ holds about 225 of my published blog posts since 2017, which serve as reference material for my writing voice.
  • The assistant writes, but only with permission. It can write straight into the vault, but it always asks first. At the end of a conversation it asks, ”Should I save a note from this?”
  • Obsidian Sync carries the notes to my other devices automatically.
  • Not for project management. For me, the Obsidian vault is for thinking.

Pros and cons so far

A presentation test based on Alma design system.

Pros

  • I’ve noticed that I want to actually use this regularly and develop it further. Thats a good sign. Sometimes I find using this inside Claude Code as well but its not as fun.
  • Having this as a Chrome tab is a great place for it to be because Chrome is the place I use most (Claude I use in the desktop app).
  • The assistant sees my real notes and blog archive, so it writes, at best, in my voice.
  • Read-only helpers and ask-first rules make delegating to AI feel safer.
  • The cost tracker shows spending per helper and per conversation. This was a good thing to add.
  • Obsidian Sync is good to have.

Cons

  • Obsidian Sync has no API, so Claude’s ”normal” chat and my phone can’t read the vault so far. The workaround like a OneDrive mirror or a private GitHub repo isn’t decided yet.
  • The assistant only works so far in Claude Code, so it is tied to my computer. I would not like to set up a virtual server or buy a second computer just for this.
  • The setup is a bit fiddly.
  • The vault has only about a dozen notes so far, so the ”second brain” payoff depends on me keeping it fed. I am still not very convinced Obsidian is as good as some people say.
Normaali
Yleisön ymmärtäminen & analytiikka

Tämä harjoitus vei tekoälyagentilta 4 minuuttia – kolusi itse viiden median otsikot, laski merkkimäärät, analysoi sisältöä ja teki taulukon

Termiä tekoälyagentti käytetään nykyään melko hövelisti, mutta alun perin sillä on viitattu tekoälyn kykyyn hoitaa peräkkäisiä tehtäviä automaattisesti.

Tässä kirjoituksessa käsittelemäni esimerkki on tehty lontoolaisen startupin Convergence AI:n Proxy-työkalulla, jolle antamani komento oli seuraava:

Käy läpi suomalaismedioiden Ilta-Sanomat, Iltalehti, Yle, Helsingin Sanomat ja Keskisuomalainen verkkosivujen osa, joka kertoo luetuimmat jutut sillä hetkellä. Tämän jälkeen laadi taulukko, joka sisältää kunkin median nimen, viisi luetuinta otsikkoa, niiden keskimääräisen merkkimäärän (ilman välilyöntejä) sekä kolme pointtia, mitkä seikat yhdistävät kunkin tiedotusvälineen luetuimpia juttuja.

”Normaali” keskusteleva tekoälytyökalu ei kykenisi tekemään tämänkaltaista moniosaista tehtävää, mutta Proxyllä tässä kesti noin viisi minuuttia, eikä se tarvinnut täsmentäviä ohjeita, mitä se joskus kysyy. Proxyn tekoäly siis käytännössä käy promptissa mainituilla sivustoilla ja etsii niiden luetuimmat-osiot. Muutaman kohdalla tekoäly meni niille googlaamalla ensin ”Iltalehti luetuimmat”, osan kohdalla menemällä suoraan palvelun etusivulle ja etsimällä sieltä luetuimmat-osion. Proxy tarvitsi tehtävän toteuttamiseen 17 vaihetta, joista viimeinen oli pyytämäni taulukko. Kauneusvirhe oli se, että Proxy ei kyennyt tekemään taulukkoa täydellisenä Markdown-versiona keskustelunäkymään, eikä liitetiedostona, vaan tiedot oli itse kopioitava käsin tässä tapauksessa Google Sheetsiin:

Proxyn työstönäkymä näytti tältä:

Huono asia perinteisen median kannalta on ainakin se, että Proxy näyttäisi ohittavan sivustojen blokkausyritykset tekoälyille mm. ottamalla sivustoilta kuvakaappauksia. Median vinkkelistä tekoälyagenteille on helppo nähdä myös mahdollisuuksia, vaikkapa tutkivien toimittajien omiin seuranta-alueisiin erikoistuneiden tekoälyapureiden rakentamiseen. Kävin tätä puolta hieman enemmän läpi aiemmassa blogikirjoituksessani.

Normaali
Strategia ja liiketoiminta

Näin helposti (ja ilmaiseksi) syntyi tekoälyagentti, joka pyörii puolestani netissä sukututkimusharrastustani varten

Tekoälyagenttien yleistymisen vaikutukset media-alaan ja esimerkiksi tutkivien journalistien tekoälytyökaluihin ovat tämänkin kokeilun perusteella ilmeiset. Riskitkin on helppo nähdä.

Tekoälybotit on suunniteltu pääasiassa vuorovaikutukseen ihmisten kanssa, kun taas tekoälyagentit pystyvät suorittamaan monimutkaisia ja peräkkäisiä tehtäviä itsenäisesti – käytännössä esimerkiksi käymään erilaisissa tietokannoissa puolestasi ja parhaimmillaan lähettämään tulokset ajastettuna sähköpostiisi vaikka maanantaiaamuisin kello 9.

En ole itse teknologian syväosaaja, vaan pikemminkin teknologiaan kriittis-innostuneesti suhtautuva umpihumanisti, joten päätin kirjata kokeiluni talteen myös tänne blogiin.

Kokeilin tekoälyagentin luomiseen ensin Zapier AI -nimistä palvelua, mutta se oli omaan makuuni hieman liian monimutkainen. Hollannin yleisradion strategiajohtajan Ezra Eemanin Wayfinder-uutiskirjeestä bongasin brittiläisen startupin Convergence AI:n Proxy-nimisen uuden palvelun, joka osoittautui käytettävyydeltään niin helpoksi, että se hakkasi Zapierin mennen tullen. Proxyä voi toistaiseksi käyttää useamman kerran päivässä ilmaiseksi.

Maksullisista tekoälytyökaluista käytän itse tällä hetkellä päivittäin Perplexityä (noin 20e/kk), mutta siinä ei vielä tällaista agentinluomismahdollisuutta ole – tosin veikkaan, että pian on, sillä alusta päivittää mm. kielimallejaan ja ominaisuuksiaan koko ajan, viimeisimpänä Deep Researchillä, joka leipoo aiheesta kuin aiheesta pelottavan hyviä akateemisen tason analyysejä lähdeviitteineen.

Convergence AI:n Proxy toimii pelkistettynä näin:

  1. Mene osoitteeseen Convergence.ai.
  2. Luo tunnus ja salasana, kirjaudu.
  3. Kuvaile chat-ikkunassa, mitä haluat tehdä. Lähtöteksti on englanniksi, mutta voit keskustella normaalisti suomeksi. Valittavana on myös oletustehtäviä, kuten erilaiset uutistiivistelmät.
  4. Voit täsmentää ohjeita matkan varrella.
  5. Harrastan sukututkimusta, joten kokeilin siihen liittyvällä esimerkillä. Pyysin Proxyä hakemaan tietoa Kansalliskirjaston vanhojen lehtien digitoidusta tietokannasta siten, että saisin tiivistelmän aina tuoreimmista lisäyksistä, joissa sukunimeni mainitaan. Näin keskusteluni eteni:

“Mene osoitteeseen digi.kansalliskirjasto.fi, etsi tietoa nimellä “Pirhonen”, jäsennä tulokset muotoon “viimeksi lisätyt” ja kerro tuoreimmat 3 tulosta bullet pointeina niin, että mainitset lehden nimen, lehden julkaisupäivämäärän sekä lyhyesti kontekstin, jossa nimi Pirhonen esiintyy.”

Tällä komennolla sain ensin englanninkielisen tuloksen, joten täsmensin:

“Voisitko antaa tulokset suomen kielellä”.

Tämän jälkeen sain tuloksen, joka ei kuitenkaan ole aivan sitä mitä tarkoitin eli viimeksi lisätyt eivät ole ensin:

Täsmensin komentoa lisää:

“Muuta hakuasetuksia oikeasta yläkulmasta muotoon ’Viimeksi’ lisätyt, jolloin hakutuloksissa näkyy viimeksi lisätty tulos.”

Tämän jälkeen sain tuloksen, joka oli muuten ok, mutta halusin konteksti-kohdasta vielä hieman selkeämmän:

“Kerro kontekstista hieman tarkemmin niin, että asiayhteyden ymmärtää paremmin.”

Tämän jälkeen Proxy antoi juuri oikeanlaisen ja kaipaamani tuloksen:

Halutessani voisin pyytää Proxyä tekemään saman haun vaikkapa joka maanantai ja lähettämään tulokset sähköpostiini. Tämä toiminto ei kuitenkaan näytä käytännössä toimivan ainakaan vielä täydellisesti, vaikka joihinkin oletustehtäviin Proxy sitä jo tarjoaa. Tuloksen Proxy kyllä lähettää sähköpostiin, mutta ei ajastettuna, vaan pienellä viiveellä kunkin haun jälkeen.

Uhkia ja mahdollisuuksia

Joka tapauksessa on helppo nähdä, millaisia sekä mahdollisuuksia että uhkia tekoälyagentit tuovat media-alalle. Tulevaisuudessa agenttimaisten sisällönkuluttajien osuus epäilemättä kasvaa – mistä tiedät, onko taustalla oikea ihminen vai ei, suoraan tai välillisesti? Agentit myös käyttävät surutta medioiden tekijänoikeudellista sisältöä, mikä taitaa valitettavasti olla tuulimyllyjä vastaan taistelemista. Kyyninen voisi myös sanoa, että joissain medioissa tekoälyn tekemää sisältöä kuluttaa pian – tekoäly. Mihin jäi ihminen.

Riskinä on myös tietoturva. Jotta agentit pystyvät toimimaan, niille on annettava pääsy niihin järjestelmiin joissa haluat niiden toimivan, kuten vaikkapa kalenteriisi. Tässä kohtaa huomaan itse, että raja tulee vastaan, kun käytän kaupallisia ei-suljetussa järjestelmässä olevia työkaluja: en mielelläni anna niille pääsyä mihinkään, mihin ei ole pakko, koska en luota niihin tarpeeksi.

Mitä tulee mediaan ja etenkin journalismiin, agenteissa on helppo nähdä isoja mahdollisuuksia esimerkiksi tutkivien toimittajien työkaluihin: voit rakentaa helposti esimerkiksi agentin, joka kahlaa puolestasi tietoa haluamaltasi seuranta-alueelta. Tähän suuntaan jotkut mediat ovatkin jo omia tekoälytyökalujaan vieneet. Mahdollisuuksia on myös esimerkiksi personoitujen uutiskirjeiden tuunaamisessa – sellainen kun on helppo rakentaa jo nyt itse täysin haluamakseen, kuten tämäkin kokeilu osoitti.

Lue myös: Dagens Media listasi ruotsalaismedian TOP15 tekoälytyökalut – tässä esimerkit linkkeineen.

Normaali