AI Lab · LAB-01 · Agents

Local LinkedIn Agent

I built a LinkedIn AI agent. I'm not a developer. It started with a screenshot — and a privacy concern that changed the architecture entirely.

Nothing leaves the machine
statusshipped · presented live to ~50 people
browser handsplaywright
local brainollama · llama 3.1:8b
memorynotion
model chosen viaown benchmark tool
+-----------+ +---------------+ +----------+ | playwright| --> | ollama | --> | notion | | (browser) | | llama 3.1:8b | | (memory) | +-----------+ +---------------+ +----------+ everything inside this box: my machine everything outside this box: nothing
FIG 01 — The agent scraping LinkedIn, running local inference, and delivering a structured report to Notion — text only, nothing leaving the house.

The question

Someone shared their Claude Desktop setup — an AI agent browsing LinkedIn, reading posts, drafting comments. Looked impressive. I almost set it up. Then I read how computer use actually works. Claude takes screenshots and sends them to Anthropic's servers to understand what's on screen.

I closed the tab.

This isn't a criticism of Anthropic. It's how the feature works. But I spent years working with a center for missing and mistreated children. I know what ends up in feeds. I know whose faces appear in images people don't think twice about. I wasn't sending screenshots of my screen anywhere.

So I built my own version.

What I built

Every weekday at 9am, Playwright opens LinkedIn and scrapes my feed — text only, no screenshots, no images. The content goes to Ollama, a local LLM server running on my home network on my husband's machine. Llama 3.1:8b — I tested four models with my own benchmarking tool before picking it — reads every post and decides: is this worth engaging with? If yes, it drafts a comment and explains why.

By 9:30, everything is in Notion. Three databases: daily report, market intelligence, weekly strategy. When I have time, I open Cowork. It reads the report and rewrites the comments in my voice, using a VOICE.md file I wrote — basically my writing style, written down.

Nothing leaves my house until I decide it does.

What it took

One day. Four Python scripts. A voice file. Claude as the coding partner — not the kind that types while you watch, the kind you describe a problem to and it helps you think through it. I'd never written a Playwright script before. I'd never set up an Ollama integration. I built it anyway because the alternative was using a tool I didn't trust.

Instagram scraping is still unreliable. There are edge cases I haven't fixed. It works well enough that I use it every week.

Why this matters

I keep seeing two camps. People who won't touch AI tools because something feels off about them. People who adopt every new tool immediately because the output is impressive. I'm not in either camp.

Privacy is a design decision. When you choose a tool, you're also choosing its architecture. Most people don't read that far. I think designers should — because we're the ones who eventually get asked to make those architecture decisions legible to users.

Building this wasn't about automation. It was about understanding the thing well enough to trust it. That required building it myself.

The agent runs. I still write my own comments. That's the point.

Privacy as architecture, not a featureLocal-first AI for sensitive contextsNon-developer AI system buildingHuman-in-the-loop social publishingTool choice as a values decision

This project started from a privacy constraint and became an argument: that understanding the architecture of your tools is not optional for designers working in AI.