<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pow</title>
    <description>The latest articles on DEV Community by Pow (@powxenv).</description>
    <link>https://dev.to/powxenv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F786208%2F9067487e-1b37-4d92-8725-e866132ad8df.jpg</url>
      <title>DEV Community: Pow</title>
      <link>https://dev.to/powxenv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/powxenv"/>
    <language>en</language>
    <item>
      <title>My Obsession With Personality Tests Became a Game</title>
      <dc:creator>Pow</dc:creator>
      <pubDate>Sun, 21 Jun 2026 19:38:19 +0000</pubDate>
      <link>https://dev.to/powxenv/my-obsession-with-personality-tests-became-a-game-50p3</link>
      <guid>https://dev.to/powxenv/my-obsession-with-personality-tests-became-a-game-50p3</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I have a confession. I am one of those people who will take any personality test that crosses my path. MBTI? Done it. Big Five? Done it twice. "Which bread are you?" Also done it, and I was sourdough, if you must know.&lt;/p&gt;

&lt;p&gt;You take the test, you get your label, and that is it. You are an introvert. Cool. But am I an introvert who is becoming more social, or an introvert who is settling deeper into my shell? The test does not say. It took a photo and called it a portrait.&lt;/p&gt;

&lt;p&gt;I wanted to know which direction I was heading.&lt;/p&gt;

&lt;p&gt;That question became Arcus. It is a self-discovery game where you take interactive tests and find out where you stand and which way you are moving. Four tests, each built around a different lens on how people think, feel, and change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Solstice Cycle&lt;/strong&gt; maps your energy as a cycle with seasons and a direction. Are you gathering momentum or settling into rest? The solstice is the turning point. This test finds yours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passage of Time&lt;/strong&gt; asks which part of time you live in. The past, the present, or the future. It also asks how time itself feels to you: a resource, a weight, a gift, or a mystery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modes of Mind&lt;/strong&gt; is my love letter to Alan Turing. It asks the question he asked: does what a mind says about itself match what it does? You describe how you think, then you make decisions, and the test compares the two. The gap is the fun part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spectrum of Self&lt;/strong&gt; explores how well you know yourself and how honestly you show it. Are you settled in who you are, or still figuring it out? Both are fine. Pride is the courage to be who you are.&lt;/p&gt;

&lt;p&gt;The tests are grounded in real psychological research, but Arcus is for fun and self-exploration. It is a curiosity machine with good citations.&lt;/p&gt;

&lt;p&gt;Take a test, follow your arc, and see what you discover.&lt;/p&gt;

&lt;p&gt;Try it here: &lt;strong&gt;&lt;a href="https://arcus.pows.workers.dev" rel="noopener noreferrer"&gt;https://arcus.pows.workers.dev&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;The demo video walks through the experience from start to finish.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/sY5rht9IwMc"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/powxenv" rel="noopener noreferrer"&gt;
        powxenv
      &lt;/a&gt; / &lt;a href="https://github.com/powxenv/arcus" rel="noopener noreferrer"&gt;
        arcus
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      See the arc you're on
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Arcus&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;See the arc you're on.&lt;/strong&gt; Four personality assessments that show where you stand and which direction you're heading across energy, thinking, identity, and time.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What Arcus is&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Arcus measures personality as a curve with a direction. Every result has two parts: a position and a direction. The position tells you where you stand. The direction tells you where you are headed. Together they trace an arc.&lt;/p&gt;
&lt;p&gt;Arcus asks four questions. Where is your energy sitting, and which way is it turning? Does what you say about your mind match what your choices show? How well do you know yourself, and how well do you show it? Where does your attention sit across time, and how do you feel about time passing?&lt;/p&gt;
&lt;p&gt;The name comes from the Latin word for arc. An arc has a shape and a direction. It connects where you were to where you are going.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/powxenv/arcus" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy1gsb0ol6h03tdct3v16.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy1gsb0ol6h03tdct3v16.gif" alt="Turing" width="640" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I could not write code and slap "personality test" on it. That is how you get a BuzzFeed quiz with delusions of grandeur. I wanted the numbers to mean something. So I did something unusual: I started with research papers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding the foundation
&lt;/h3&gt;

&lt;p&gt;For each theme, I went looking for established measurement instruments in the academic literature. I needed constructs with decades of validation behind them, not vibes.&lt;/p&gt;

&lt;p&gt;Russell's circumplex model was a perfect match for the solstice. A circular model of emotions for a cyclical theme. Cacioppo and Petty's Need for Cognition scale measured how much people enjoy hard thinking. Campbell's Self-Concept Clarity scale captured how well people know themselves. Zimbardo's Time Perspective Inventory described how people relate to past, present, and future.&lt;/p&gt;

&lt;p&gt;Some ideas did not survive the vetting. Riding's cognitive style model looked great on paper until I found that Riding himself said it cannot be measured through self-report. The guy who invented the thing told me I was measuring it wrong. I replaced it with Epstein's Rational-Experiential Inventory, which was built for self-report from day one.&lt;/p&gt;

&lt;h3&gt;
  
  
  The template trap
&lt;/h3&gt;

&lt;p&gt;My first version of the suite was gorgeous. Every test had two axes, two facets, four quadrants. Symmetrical. Elegant. I was proud of myself.&lt;/p&gt;

&lt;p&gt;It was also wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjit0x4vih470givl36v5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjit0x4vih470givl36v5.gif" alt="Turing" width="480" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Turing test broke first. Epstein showed that Need for Cognition and Faith in Intuition are independent. They correlate at about 0.08, which in research terms means "we have never met." Collapsing them into one bipolar axis meant a mid-range score could mean high in both, low in both, or anything in between. I was destroying what made the measurement work.&lt;/p&gt;

&lt;p&gt;The Passage test confirmed the pattern. Its three factors are independent. Forcing them into two axes was like trying to fit a triangle into a line. You lose a dimension and call it simplification.&lt;/p&gt;

&lt;p&gt;The template was the disease. Each test needed its own structure. Two axes where the construct was bipolar. Independent scales where it was orthogonal. Multiple factors where it was multi-dimensional. Letting go of my beautiful template made the code harder and the product better. A lesson I keep learning in every project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building each test
&lt;/h3&gt;

&lt;p&gt;The Solstice test puts you on Russell's circular model using two axes: Solar Height (how activated you are) and Tidal Direction (outward vs inward). Each axis has two facets with eight items. The quadrant picks your season. But the solstice is about direction, so I added four trajectory items. The result gives you both a season and a direction: waxing, waning, or steady.&lt;/p&gt;

&lt;p&gt;The Turing test keeps Need for Cognition and Faith in Intuition on separate scales because they are separate things. The combination picks one of four modes. Then comes the behavioral check: five override problems (the bat and ball, the lily pads, the classics) and ten decision scenarios that classify your actual decision strategy. The gap between what you said and what your choices showed is the Turing signature.&lt;/p&gt;

&lt;p&gt;The Pride test mirrors the Solstice structure but measures identity clarity and authenticity. A commitment component asks whether your identity feels claimed or still forming.&lt;/p&gt;

&lt;p&gt;The Passage test scores past, present, and future as three independent factors. Crossing a threshold on any combination gives you one of eight temporal types. Then a stance layer asks what time itself feels like. A resource, a weight, a gift, or a mystery.&lt;/p&gt;

&lt;p&gt;You can explore each test in detail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://arcus.pows.workers.dev/assessment/solstice" rel="noopener noreferrer"&gt;https://arcus.pows.workers.dev/assessment/solstice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arcus.pows.workers.dev/assessment/turing" rel="noopener noreferrer"&gt;https://arcus.pows.workers.dev/assessment/turing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arcus.pows.workers.dev/assessment/pride" rel="noopener noreferrer"&gt;https://arcus.pows.workers.dev/assessment/pride&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://arcus.pows.workers.dev/assessment/passage" rel="noopener noreferrer"&gt;https://arcus.pows.workers.dev/assessment/passage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Development process
&lt;/h3&gt;

&lt;p&gt;The frontend is React with TanStack Start. HeroUI handles the components. Scoring and question banks are TypeScript, sourced from the research design docs. The scoring is deterministic and verified against a test suite. The AI reflection uses Google Gemma 4 31B. Users opt in before anything gets sent.&lt;/p&gt;

&lt;p&gt;Development was assisted by PI Coding Agent with a GLM Coding Plan subscription and OpenCode Go using the DeepSeek model. The demo video narration was generated with ElevenLabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google AI Usage
&lt;/h2&gt;

&lt;p&gt;The results page offers an optional interpretation powered by Google Gemma 4 31B. Users opt in before their responses are sent. The AI builds on the deterministic result, the individual responses, and the test context without replacing the scoring. AI output is labeled and sits in its own section.&lt;/p&gt;

&lt;p&gt;The Modes of Mind test is not named after Turing for vibes. It is built around his actual idea: the Imitation Game. You say how you think. Your choices show how you decide. The test compares the two and shows you the gap. Can you tell what a mind is by looking at what it does? That is the question Turing asked, and it is the question this test asks you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Built This
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmtp59o5ivveb1umge045.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmtp59o5ivveb1umge045.gif" alt="Turing" width="400" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am fascinated by people. In the way where you sit across from a friend at dinner and think: how do you experience this conversation differently from me? How do you carry your energy? How do you decide things? How do you think about who you are?&lt;/p&gt;

&lt;p&gt;Those questions sent me down a rabbit hole of psychology research. The deeper I went, the more I found frameworks that were rich, nuanced, and fascinating. The circumplex model. The independence of cognition and intuition. The multi-dimensionality of time perspective. These are not quiz fodder. They are careful, validated ways of describing how humans work.&lt;/p&gt;

&lt;p&gt;But when most people encounter personality psychology, they get a four-letter code and a list of career suggestions. I wanted to do better than that. I wanted to treat the research with respect and still make something fun.&lt;/p&gt;

&lt;p&gt;Building Arcus taught me things. Forcing every construct into the same shape destroys what makes it meaningful. The hardest part of a personality tool is deciding what to show and what to leave out. Research is a conversation.&lt;/p&gt;

&lt;p&gt;I do not think Arcus will replace anyone's favorite personality test. That was never the plan. The plan was to build something that helps people see themselves a little more clearly, grounded in research I respect, and wrapped in an experience that is fun to use.&lt;/p&gt;

&lt;p&gt;If you take a test and it tells you something you recognize, or makes you think about yourself in a way you had not before, then it worked.&lt;/p&gt;

&lt;p&gt;Thanks for reading. Go take a test.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Why I'm Not Recommending OpenClaw</title>
      <dc:creator>Pow</dc:creator>
      <pubDate>Fri, 24 Apr 2026 00:10:33 +0000</pubDate>
      <link>https://dev.to/powxenv/why-im-not-recommending-openclaw-5dnm</link>
      <guid>https://dev.to/powxenv/why-im-not-recommending-openclaw-5dnm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've been following OpenClaw since it blew up in late 2025. I even installed it and have been running it for a while now. And honestly, I'm still trying to figure out how I feel about it.&lt;/p&gt;

&lt;p&gt;On one hand, it's the most exciting thing happening in personal AI right now. On the other, I can't in good conscience tell most people to go install it. That contradiction has been bothering me, so I spent some time digging into what's actually going on with this project. Here's what I found.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing everyone's talking about
&lt;/h2&gt;

&lt;p&gt;If you somehow missed it, OpenClaw is an open-source AI agent framework that you host yourself. Instead of going to a website or opening an app to chat with an AI, you run it on your own machine and connect it to the messaging apps you already use. WhatsApp, Telegram, Discord, Slack, Signal, iMessage, you name it.&lt;/p&gt;

&lt;p&gt;The idea is that your AI assistant becomes part of your digital life rather than something you visit. It can run shell commands, read and write files, browse the web, send emails, manage your calendar, and execute custom skills that other people have built.&lt;/p&gt;

&lt;p&gt;It also has persistent memory that actually works. A heartbeat mechanism lets it take initiative and message you when something needs attention. And you can plug in whatever AI model you want or switch between them as needed.&lt;/p&gt;

&lt;p&gt;This sounds like exactly what personal AI should be. Not a chat tab that forgets everything between sessions, but an agent that lives alongside you, knows your context, and can actually do things on your behalf.&lt;/p&gt;

&lt;p&gt;It's also the fastest-growing open source project in history. Over 350,000 GitHub stars in a few months. The community is huge and passionate. People are building incredible things with it.&lt;/p&gt;

&lt;p&gt;But then there's the other side of the story.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part the hype doesn't mention
&lt;/h2&gt;

&lt;p&gt;The most common post on the OpenClaw subreddit, as reported by Radek Sienkiewicz in his detailed writeup of 50 days with OpenClaw, is pretty telling: "I set up OpenClaw but don't know what to use it for."&lt;/p&gt;

&lt;p&gt;I admit, I relate to this. OpenClaw is running on my system right now, but I'm still figuring out where it actually fits in my workflow. When I'm coding, I still reach for Claude Code. When I have general questions or need quick help, I open ChatGPT. OpenClaw is there, capable and waiting, but I haven't found the thing it does better than the tools I already know.&lt;/p&gt;

&lt;p&gt;That's after getting through a setup process that requires comfort with command lines, API keys, configuration files, and debugging cryptic error messages. In a Reddit thread about production readiness, summarized by BSWEN, every single response agreed that OpenClaw is "not even remotely close to production use."&lt;/p&gt;

&lt;p&gt;The security situation is genuinely concerning. An audit found 512 vulnerabilities, eight of them critical, including a remote code execution flaw. Cisco called it a "security nightmare." Credentials are stored in plain text files. Security researchers found 135,000 OpenClaw instances exposed to the internet. Community skills on ClawHub have been discovered to be straight-up malware, sending data to external servers.&lt;/p&gt;

&lt;p&gt;The reliability issues are frustrating. Memory is inconsistent, sometimes forgetting what it should remember. Context gets lost mid-task. The agent makes wrong assumptions and can't self-correct. It gets stuck in loops. Updates break things constantly. Switching between AI models causes problems.&lt;/p&gt;

&lt;p&gt;And then there's the cost. OpenClaw itself is free, but you need an LLM to make it work. Free models hit limits immediately. As PCMag reported in their critical review, one user ran out of free Gemini usage after a single prompt. Sambhav, writing at ssntpl.com, documented spending $400 testing OpenClaw in real workflows. Serious usage can run anywhere from $15 to $150+ per month according to multiple user reports.&lt;/p&gt;

&lt;h2&gt;
  
  
  But also, it's kind of amazing
&lt;/h2&gt;

&lt;p&gt;Here's the thing that makes this complicated. Despite all of that, the people who stick with OpenClaw often end up loving it.&lt;/p&gt;

&lt;p&gt;Sienkiewicz, in that same 50-day exploration, described seeing his agent "fail, kill itself, and forget what it was working on." But he also saw it "migrate servers, research entire projects with parallel agents, and generate art that makes me smile every morning."&lt;/p&gt;

&lt;p&gt;Aniruddha Adak, writing about his journey with OpenClaw on dev.to, described building "a 24/7 lobster-powered executive assistant that runs in the background, chats via WhatsApp/Telegram, remembers everything, and executes tasks."&lt;/p&gt;

&lt;p&gt;People have built agents that monitor competitors, manage smart homes, automate deployments, handle customer support, and dozens of other use cases.&lt;/p&gt;

&lt;p&gt;The vision behind OpenClaw is genuinely compelling. Your conversation history stays on your infrastructure, not someone else's cloud. You're not locked into any one AI provider. The agent can take initiative through the heartbeat mechanism. You can extend it with thousands of community-built skills.&lt;/p&gt;

&lt;p&gt;This is the direction personal AI should be heading. An open-source, self-hosted infrastructure that respects your privacy, avoids vendor lock-in, and can actually do things on your behalf.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what do you do with all this?
&lt;/h2&gt;

&lt;p&gt;I've been wrestling with this, and here's where I've landed.&lt;/p&gt;

&lt;p&gt;If you're a developer or someone comfortable with infrastructure and debugging, OpenClaw offers a front-row seat to where personal AI is going. You'll deal with rough edges and breaking changes, but you'll also see capabilities that don't exist anywhere else.&lt;/p&gt;

&lt;p&gt;If you work in regulated industries or care deeply about data privacy, OpenClaw gives you more control over where your conversation history lives. You can even configure it with local-only models for true data isolation, though most people still use cloud providers.&lt;/p&gt;

&lt;p&gt;But if you're looking for a polished, reliable assistant that just works, this isn't it. ChatGPT and Claude remain better choices for the vast majority of users right now.&lt;/p&gt;

&lt;p&gt;The gap between what OpenClaw promises and what it currently delivers is real. The people posting "my agent built a full app overnight" have spent weeks tuning and debugging. The demos don't reflect the daily reality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is all going
&lt;/h2&gt;

&lt;p&gt;The OpenClaw Foundation seems aware of these issues. Their 2026 roadmap focuses on stability, security, and accessibility. They're planning native multi-agent orchestration, a redesigned plugin SDK, built-in vector memory, an improved web dashboard, and deeper enterprise integrations.&lt;/p&gt;

&lt;p&gt;The vision remains compelling. An open-source personal AI infrastructure that can execute complex tasks autonomously while respecting privacy and avoiding vendor lock-in. This is where we should be headed.&lt;/p&gt;

&lt;p&gt;We're just not there yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  My honest take
&lt;/h2&gt;

&lt;p&gt;OpenClaw is too important to ignore but too rough to recommend. That's the tension I keep coming back to.&lt;/p&gt;

&lt;p&gt;It represents a significant shift in how we think about personal AI, from reactive chatbots to proactive agents that can actually do things. It prioritizes data sovereignty and user control. It embraces an extensible, community-driven approach.&lt;/p&gt;

&lt;p&gt;These are important values. As AI becomes more integrated into our lives, having open-source alternatives that respect privacy and avoid vendor lock-in matters more and more. OpenClaw is pioneering that path.&lt;/p&gt;

&lt;p&gt;But the current implementation is too rough for mainstream adoption. The security issues need attention. The reliability needs to improve. The setup needs to become more accessible.&lt;/p&gt;

&lt;p&gt;The future of personal AI isn't in chat tabs you visit. It's in agents that live alongside you in your digital life, knowing your context, remembering your preferences, and capable of taking action on your behalf. OpenClaw is pointing toward that future.&lt;/p&gt;

&lt;p&gt;The question is whether it can mature quickly enough to realize its potential before someone else does.&lt;/p&gt;

&lt;p&gt;I'm going to keep watching. Maybe even keep experimenting with it on the side. But I'm not ready to tell anyone else to install it yet.&lt;/p&gt;

&lt;p&gt;Watch this space. The next eighteen months are going to tell us whether OpenClaw becomes the foundation of personal AI infrastructure or merely an ambitious experiment that paved the way for something better.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
      <category>openclaw</category>
      <category>ai</category>
    </item>
    <item>
      <title>I built Sotion, an AI social content workflow on top of Notion</title>
      <dc:creator>Pow</dc:creator>
      <pubDate>Sun, 29 Mar 2026 17:47:29 +0000</pubDate>
      <link>https://dev.to/powxenv/i-built-sotion-an-ai-social-content-workflow-on-top-of-notion-1nb6</link>
      <guid>https://dev.to/powxenv/i-built-sotion-an-ai-social-content-workflow-on-top-of-notion-1nb6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/notion-2026-03-04"&gt;Notion MCP Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;&lt;a href="https://sotion.up.railway.app/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt;&lt;/strong&gt;, an AI-powered social content assistant that turns a Notion workspace into an operational content system.&lt;/p&gt;

&lt;p&gt;The idea came from a simple problem: a lot of people already keep their best raw material in Notion, whether they are creators, marketers, founders, indie hackers, or small teams. But the moment they want to turn those notes into social posts, the workflow breaks. They jump between docs, AI chat tabs, scheduling tools, and social apps. The content gets rewritten multiple times, context gets lost, and publishing becomes manual again.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; to keep that loop in one place.&lt;/p&gt;

&lt;p&gt;I also wanted it to be useful not only for developers or highly technical users, but for anyone who already feels comfortable working in Notion. That is why the product is built around a guided onboarding flow, plain-language chat, and a workspace model that feels familiar instead of technical. Users do not need to understand MCP, APIs, or agent workflows to get value from it. They just connect their workspace, add an AI provider, and start asking for help naturally.&lt;/p&gt;

&lt;p&gt;Under the hood, I built a custom harness around &lt;strong&gt;&lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt;&lt;/strong&gt; so Sotion can create an authenticated MCP client for each user, bring those tools into the assistant runtime, and use them as part of a real product workflow rather than as a standalone demo. That harness is what allows Sotion to connect Notion with chat, workspace setup, drafting, organization, and publishing actions in a way that feels seamless to the user.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt;, a user connects their workspace through Notion MCP, adds their preferred AI provider, and then starts chatting in plain language. From there, Sotion can help create a dedicated social media workspace in Notion, organize a content database, draft posts, rewrite existing ideas, check connected publishing accounts, and publish approved text posts to supported platforms.&lt;/p&gt;

&lt;p&gt;What makes it useful is that Notion is not treated as a passive note dump. It becomes the system of record for the content workflow.&lt;/p&gt;

&lt;p&gt;Live URL: &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;https://sotion.noval.me/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Connect Notion through &lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt;&lt;/strong&gt; so &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; can work directly with the user’s workspace&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guided onboarding&lt;/strong&gt; to connect Notion and add an AI provider before entering the app&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Natural-language chat&lt;/strong&gt; for turning notes, ideas, and drafts into social content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dedicated social content workspace in Notion&lt;/strong&gt;, including a structured database for managing posts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-model AI support&lt;/strong&gt; through providers like OpenAI, Claude, OpenRouter, DeepSeek, Moonshot AI, and Z.AI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Social account connection and readiness checks&lt;/strong&gt; for publishing workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-approved publishing&lt;/strong&gt; for posts to supported social platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional online research sources&lt;/strong&gt; via MCP integrations like &lt;a href="https://exa.ai/" rel="noopener noreferrer"&gt;Exa&lt;/a&gt; and &lt;a href="https://www.tavily.com/" rel="noopener noreferrer"&gt;Tavily&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Supported social workflow today
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; is designed for &lt;strong&gt;text-based social publishing&lt;/strong&gt;. Right now, the app supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Twitter (X)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Threads&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/YK8Xza1msIo"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us the code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/powxenv" rel="noopener noreferrer"&gt;
        powxenv
      &lt;/a&gt; / &lt;a href="https://github.com/powxenv/sotion" rel="noopener noreferrer"&gt;
        sotion
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An AI-powered social content assistant that helps you turn your Notion workspace into a system for planning, drafting, organizing, and publishing social posts.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Sotion&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Sotion is an AI-assisted social content workspace built around Notion.&lt;/p&gt;
&lt;p&gt;It helps users connect Notion, draft social posts with AI, keep content organized in a dedicated Notion workspace, and publish approved text posts to connected platforms.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;

  
    
    &lt;span class="m-1"&gt;demo.mp4&lt;/span&gt;
    
  

  

  


&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Key Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Connect Notion with &lt;strong&gt;Notion MCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Guided onboarding for Notion + AI provider setup&lt;/li&gt;
&lt;li&gt;Chat-based workflow for planning, drafting, and rewriting content&lt;/li&gt;
&lt;li&gt;Dedicated Notion workspace for social content management&lt;/li&gt;
&lt;li&gt;Multiple AI provider support:
&lt;ul&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Claude&lt;/li&gt;
&lt;li&gt;DeepSeek&lt;/li&gt;
&lt;li&gt;Moonshot AI&lt;/li&gt;
&lt;li&gt;Z.AI&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Social account connection for &lt;strong&gt;X&lt;/strong&gt; and &lt;strong&gt;LinkedIn&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Approval-based publishing for text posts&lt;/li&gt;
&lt;li&gt;Optional MCP online research sources:
&lt;ul&gt;
&lt;li&gt;Exa&lt;/li&gt;
&lt;li&gt;Tavily&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Install dependencies&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;bun install&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. Create &lt;code&gt;.env.local&lt;/code&gt;
&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;SERVER_URL=http://localhost:7634
VITE_APP_TITLE=Sotion

DATABASE_URL=postgres://user:password@localhost:5432/sotion
DATABASE_POOL_URL=postgres://user:password@localhost:5432/sotion

NOTION_CLIENT_ID=
NOTION_CLIENT_SECRET=

X_CLIENT_ID=
X_CLIENT_SECRET=

LINKEDIN_CLIENT_ID=
LINKEDIN_CLIENT_SECRET=

THREADS_CLIENT_ID=
THREADS_CLIENT_SECRET=

MCP_ENCRYPTION_KEY=replace-with-a-random-secret-at-least-32-chars
AI_PROVIDER_ENCRYPTION_KEY=replace-with-a-different-random-secret-at-least-32-chars&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;DATABASE_URL&lt;/code&gt; is used by the app&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DATABASE_POOL_URL&lt;/code&gt; is used by Drizzle Kit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MCP_ENCRYPTION_KEY&lt;/code&gt; is used to encrypt MCP-related secrets&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AI_PROVIDER_ENCRYPTION_KEY&lt;/code&gt; is used to encrypt AI provider API…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/powxenv/sotion" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Tech stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TanStack Start&lt;/li&gt;
&lt;li&gt;AI SDK&lt;/li&gt;
&lt;li&gt;Drizzle ORM + Neon&lt;/li&gt;
&lt;li&gt;Better Auth&lt;/li&gt;
&lt;li&gt;Notion MCP&lt;/li&gt;
&lt;li&gt;Deploy on Railway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the core parts of the project is the custom &lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt; client flow. I built this layer so &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; can connect to &lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt; using OAuth and create an authorized MCP client for each user session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;NOTION_MCP_SERVER_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://mcp.notion.com/mcp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createAuthorizedNotionMcpClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;flow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createProvider&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;createMCPClient&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;transport&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NOTION_MCP_SERVER_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;authProvider&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;flow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;provider&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;authorizationRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Used Notion MCP
&lt;/h2&gt;

&lt;p&gt;I used &lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt; to make &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; work with the same place where ideas already live.&lt;/p&gt;

&lt;p&gt;Most social content tools start after the thinking is already done. In my workflow, that thinking usually starts in Notion: rough notes, half-written drafts, launch ideas, product updates, and scattered content angles. I wanted the assistant to step into that environment instead of forcing users to move everything somewhere else first.&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://developers.notion.com/guides/mcp/mcp" rel="noopener noreferrer"&gt;Notion MCP&lt;/a&gt;, &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; can look into the workspace, understand what already exists, and help turn that raw material into something operational.&lt;/p&gt;

&lt;p&gt;In practice, this means &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;find relevant notes and drafts inside Notion&lt;/li&gt;
&lt;li&gt;create and organize a content database for tracking ideas and posts&lt;/li&gt;
&lt;li&gt;store platform-specific drafts back into Notion&lt;/li&gt;
&lt;li&gt;update statuses and publishing metadata as work progresses&lt;/li&gt;
&lt;li&gt;use Notion as persistent context across sessions instead of starting from zero every time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes the product from “AI that writes posts” into “AI that works with your real content system.”&lt;/p&gt;

&lt;p&gt;A simple example:&lt;br&gt;
A user can connect Notion, ask &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; to create a social content workspace, and then continue with prompts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Turn my product notes into a LinkedIn post”&lt;/li&gt;
&lt;li&gt;“Make an X version of this idea”&lt;/li&gt;
&lt;li&gt;“Plan posts for this week”&lt;/li&gt;
&lt;li&gt;“Save the drafts back to Notion”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the assistant can operate directly on the workspace, the output does not disappear into chat history. It becomes part of a living system inside Notion that the user can review, edit, and keep building on.&lt;/p&gt;

&lt;p&gt;I also wanted the workflow to stay useful when the answer is not already inside Notion. Sometimes drafting a strong post needs fresh context from the web, whether that is industry news, supporting references, or additional research. For that, &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; supports additional MCP-powered online sources like &lt;strong&gt;&lt;a href="https://exa.ai/" rel="noopener noreferrer"&gt;Exa&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href="https://www.tavily.com/" rel="noopener noreferrer"&gt;Tavily&lt;/a&gt;&lt;/strong&gt;. When users enable them, &lt;a href="https://sotion.noval.me/" rel="noopener noreferrer"&gt;Sotion&lt;/a&gt; can search the web, open relevant pages, and bring that context into the drafting process, while still keeping Notion as the place where the work is organized and saved.&lt;/p&gt;

&lt;p&gt;That was the main thing I wanted to unlock: keeping ideation, drafting, organization, research, and follow-up in one continuous workflow instead of breaking it across disconnected tools.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
