Field Notes
Vindler Finds a Voice
LinWheel exists because an agent that does work should be able to talk about it.
Wind on the Wire covered the qortex half: moving the knowledge graph off localhost and onto the network. This is the other ship. The one where Vindler found a voice.
How It Started
The problem was simple: LinkedIn doesn’t let you publish articles through its API. Only posts. If you want to publish a native article programmatically, you need browser automation.
So that’s what we built: a Python microservice on Modal.com running headless Chrome, injecting a li_at cookie, navigating the LinkedIn article editor, and publishing.
Not pretty. But nothing else does it.
By January it was a real product. OAuth, carousels, voice profiles, a compose page, brand styles…The kind of thing you’d plausibly show at a demo.
Which was the whole problem: It was a demo. It had no particular reason to exist inside our stack.
Then we asked the obvious question: why is this a separate app?
The Pivot
Vindler already knows what you ship. It tracks commits, PRs, deployment outcomes. All of that context was sitting right there inside the runtime.
LinWheel pulls context from commits, PRs, and deployment outcomes instead of asking what you worked on. The agent writes about your work without you describing it first.
The standalone app didn’t disappear. The web UI still works.
But the agent interface became the product. The UI became the review surface where humans check the agent’s decisions.
The Pipeline
Raw content goes in. Polished, voice-matched, approved posts come out.
The agent reshapes your idea through seven rhetorical angles, refines the draft against a voice profile, generates cover images, and queues everything for your review.
- Reshape doesn’t pick a tone from a dropdown. It picks a strategy: contrarian, field note, demystification, identity validation, provocateur, synthesizer, curious cat. Seven angles from one idea.
- Voice profiles are the part that actually matters. Create a named profile, publish through it, and it tightens over time. After about 20 posts the output stops reading like an impression and starts reading like your first draft on a good day.
- The approval gate is structural. Nothing publishes without you. A hallucinated LinkedIn post goes to your professional network with your name on it. You can’t quietly roll that back.
The Learning Loop
Every approval and rejection trains the voice profile. Approve a draft and the agent learns what works for you. Reject one and it adjusts. The output converges on your voice rather than a generic approximation of it.
Each user’s learning is independent. Your preferences train your profile. Nobody else’s.
What’s Next
The next piece is engagement optimization: the agent learns which content angles, posting times, and formats perform best for your audience and adjusts its drafting strategy accordingly. That loop is nearly ready to ship.
Eyes peeled: get in touch if you’re curious.