tekoäly, Yleisön ymmärtäminen & analytiikka

Part 2: How I rebuilt my personal AI assistant office on Claude Mods (pros and cons)

To make this 30 second video with a single prompt, my main assistant delegated the editing of the raw material (located in a folder on my computer) to my video subagent that uses Remotion technology.

In part one I built an “assistant office” in the browser. It was a small Python server running on localhost, with a web page on top. It looked nice (especially the pixel-art). It also meant one more server to start, keep alive and maintain.

So I moved it, to the place I spent my time quite a lot anyway. The office now lives inside the Claude Code window as mods. Mods are small add-ons: panels, bars, notifications and guards. I’m not a programmer. I made them with Claude by describing what I wanted. It was quite simple since I knew what had worked well and what I wanted to improve.

What I carried over from the original office

  • Memory guard: reminds me when memory is over 60% full. Time to consider a new conversation.
  • Turn bar: shows how long the last turn took.
  • Folders: my five key folders open in Finder with one click.
  • Office: the main assistant is now a small stick figure. The helpers are plain text. Cost in dollars and memory percentage sit below. When a helper is working, its name turns green, so I see who is active. Needed? Perhaps not but I wanted to have this, haha.

Two mods are new: a write guard, which asks permission before Claude writes to Slack, email, calendar, Jira, Confluence or GitHub (reading doesn’t ask), and a work log of what the helpers are doing right now.

I do have a few automations running with Claude Routines to my Slack but those are not part of my assistant office. Its not needed.

The helpers

  • Main assistant: understands the request, delegates, and answers me.
  • Home helper: reads my private email and calendars.
  • Work helper: reads my work tools such as Slack, Sharepoint, Outlook, Confluence etc.
  • Writer: drafts posts and texts in my voice if I want.
  • Research helper: searches the web and cites sources. Is connected to a few MCP’s as well, and my Notion-table that includes information about AI use cases in media.
  • Presentation helper: makes slide decks in an Alma brand template based on sa specific design system.
  • Image helper: generates one image at a time, on request. Uses Gemini API and Magnific API.
  • Video helper: makes and edits videos, and transcribes audio locally.

The folders

  • Output (everything the assistant produces)
  • Images
  • Videos
  • Presentations
  • Notes (my Obsidian vault)

What works

  • Everything is in the same window as the work.
  • No server, no browser tab to keep alive.
  • The guards give some more control.
  • Cost and status are always visible.
  • New mods are easy to add.

What doesn’t

  • It still only works in Claude Code, as a wholesome assistant office. Not in chat, not on mobile. I actually don’t want to add remote controls for this at least as of yet. I can for example use all of my connectors normally via basic Claude chat from phone, that is quite enough.
  • It’s text and a stick figure, not pixel art. The old office is still usable if I want to get back to it (it launches via an app button on my Mac).
  • The mod technology is new and changing. It is not always easy to discover what works with what.

My takeaway: I think I’ve traded looks for better control and easier upkeep. But we will see what happens in the future. What I’ve noticed anyway now is that my agent office has become my number one place where I use Claude. A good sign I think. And more importantly, I feel that it makes my life easier in quite a few ways.

The future? I’m looking forward to testing Claude Duet or ChatGPT Dots at some point since the idea of 24/7 agents doing stuff for you proactively is quite alluring. But still, I’d like to semi-build something my self rather than get something off-the-shelf.

Normaali
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