<?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: Douglas D</title>
    <description>The latest articles on DEV Community by Douglas D (@trisdane).</description>
    <link>https://dev.to/trisdane</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%2F3998526%2Fe40194be-a51d-400b-abe3-ea768f66dda2.png</url>
      <title>DEV Community: Douglas D</title>
      <link>https://dev.to/trisdane</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/trisdane"/>
    <language>en</language>
    <item>
      <title>My AI hunts contracts for me: The part that made it start winning business was the retro.</title>
      <dc:creator>Douglas D</dc:creator>
      <pubDate>Fri, 10 Jul 2026 11:39:13 +0000</pubDate>
      <link>https://dev.to/trisdane/my-ai-hunts-contracts-for-me-the-part-that-made-it-start-winning-business-was-the-retro-4doc</link>
      <guid>https://dev.to/trisdane/my-ai-hunts-contracts-for-me-the-part-that-made-it-start-winning-business-was-the-retro-4doc</guid>
      <description>&lt;p&gt;I built a playbook inside Founders OS that hunts for consulting contracts. It searches listings, scores each one against what my two-person shop actually wins, writes tasks for the good ones, and drafts proposals for the exceptional ones. Standard automation so far.&lt;/p&gt;

&lt;p&gt;The part that matters is the last step of every run: a retrospective. After I act on a batch, the playbook asks me what the scores got wrong. What did I pass on that scored high? What did I chase that went nowhere? What red flags or stats do the no response bids have in common. Then it writes those lessons back into its own scoring rubric. The next run starts smarter than the last one.&lt;/p&gt;

&lt;p&gt;Here is what that loop actually taught it, in order, from real runs.&lt;/p&gt;

&lt;p&gt;Run one, it fired a strong proposal at a $25K build with fifty-plus proposals. Never got viewed. Client hired someone else. Same thing happened on the next crowded listing. The retro turned that into a rule: a crowded slate where the client is already deep in their funnel is not competitive, it is dead. Stop spending effort there.&lt;/p&gt;

&lt;p&gt;A few runs later it was still docking good clients just for having thin payment history. I told it that was wrong, thin history is fine if payment is verified. It corrected the rubric. But then it learned the sharper version on its own runs: do not look at whether a client has history, look at what they paid past hires. A client whose prior hires were all sub-ten-dollars-an-hour, or whose past jobs were all credit-repair gigs, is a red flag no matter how good the listing reads.&lt;/p&gt;

&lt;p&gt;Then it learned to prefer fixed-price over hourly, because that is how we actually want to get paid. It learned that "already interviewing a dozen candidates" beats rate and fit every time, skip it. It even fired two search terms that kept returning the wrong domain entirely.&lt;/p&gt;

&lt;p&gt;None of that came from me sitting down to write rules. It came from the system reading its own outcomes and adjusting.&lt;/p&gt;

&lt;p&gt;The result is not a flood of wins. It is a much tighter shortlist and far fewer wasted bids, and it has started landing wins on and more proposal engagement as it adapts. For a two-person shop where my time is the whole budget, not chasing the dead listings is the win.&lt;/p&gt;

&lt;p&gt;One more thing that mattered to me. All of that learning, every lesson about what converts and what does not, lives in my own database. Founders OS is open source and self-hosted, runs over stdio against my own Postgres. The memory of what works for my business is not sitting in someone else's SaaS that I would lose if I left.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/OurThinkTank/founders-os" rel="noopener noreferrer"&gt;https://github.com/OurThinkTank/founders-os&lt;/a&gt;&lt;br&gt;
Site: &lt;a href="https://foundersmcp.com" rel="noopener noreferrer"&gt;https://foundersmcp.com&lt;/a&gt;&lt;br&gt;
npm: @ourthinktank/founders-os&lt;/p&gt;

&lt;p&gt;If you run a small shop, how do you decide what work to chase? I am curious whether anyone else has tried to make that decision learn from its own misses.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Why my business AI runs on stdio and my own database, not a SaaS backend</title>
      <dc:creator>Douglas D</dc:creator>
      <pubDate>Thu, 02 Jul 2026 09:01:16 +0000</pubDate>
      <link>https://dev.to/trisdane/why-my-business-ai-runs-on-stdio-and-my-own-database-not-a-saas-backend-53i7</link>
      <guid>https://dev.to/trisdane/why-my-business-ai-runs-on-stdio-and-my-own-database-not-a-saas-backend-53i7</guid>
      <description>&lt;p&gt;I build for a living, mostly as a fractional CTO, and I got tired of one thing: every time I opened an AI client to help me run my company with a specific client, I had to re-explain the company first. Who the client is. What we invoiced them. When I last talked to them. The AI was smart. It just had no idea what my business actually was.&lt;/p&gt;

&lt;p&gt;So we built Founders OS. It is an open-source MCP server that gives your AI client real business context: CRM, financials, tasks, playbooks, guardrails, and a memory layer. You point Claude, Cursor, or any MCP client at it and it can answer across all of that in one shot. Not "here is your CRM data" and separately "here is your ledger." One question, both sources, one answer. Which clients are behind on payment and when did I last contact them. That reads the ledger and the CRM together because they share the same context.&lt;/p&gt;

&lt;p&gt;Here is the part I want to talk about, because it was the real decision: it runs over stdio, self-hosted, on your own Postgres DB. No hosted backend in the middle. No account with us. No data leaving your infrastructure unless you decide otherwise.&lt;/p&gt;

&lt;p&gt;That was deliberate, and it cost us the easier path.&lt;/p&gt;

&lt;p&gt;The easy version is a SaaS backend. You sign up, we hold your data, done. Cleaner install, nicer funnel. But think about what this data is. It is your customer list, your revenue, your unpaid invoices, your private notes on deals, and your knowledge. Data like that should live where you decide it lives, not wherever a vendor's AI feature happens to need it. So we made self-hosted the default and the floor. It is free, open, and yours, and it always will be.&lt;/p&gt;

&lt;p&gt;Later we will offer a hosted option for teams that would rather we run the ops than run it themselves. When we do, it keeps the same rule: your data stays in your own database, single tenant, export anytime, no lock-in, and the whole thing stays open source. Convenience is the thing you would be paying for. Ownership is not something you ever hand over.&lt;/p&gt;

&lt;p&gt;So the model is: you deploy it, it talks to your own database, and the transport is stdio between your MCP client and the server. Your business context lives where your business already lives. Run it self-hosted and we never see it, and nothing phones home when you close the client.&lt;/p&gt;

&lt;p&gt;The tradeoff is real. Self-hosted means you deploy it yourself. There is no magic hosted URL to paste, yet. For a founder or a small team that already runs their own stack, that is a feature, not a chore. You own the whole thing.&lt;/p&gt;

&lt;p&gt;It is 100 percent open source and live now. If you run your business through an AI client and you are tired of re-explaining your company every session, this is for you.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/OurThinkTank/founders-os" rel="noopener noreferrer"&gt;https://github.com/OurThinkTank/founders-os&lt;/a&gt;&lt;br&gt;
Site: &lt;a href="https://foundersmcp.com" rel="noopener noreferrer"&gt;https://foundersmcp.com&lt;/a&gt;&lt;br&gt;
npm: @ourthinktank/founders-os&lt;/p&gt;

&lt;p&gt;Built by OurThinkTank. Happy to answer anything in the comments, especially on the self-hosting setup or the memory layer.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>opensource</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I gave my AI client my real business context, and stopped explaining my company and customers every session</title>
      <dc:creator>Douglas D</dc:creator>
      <pubDate>Tue, 23 Jun 2026 10:22:55 +0000</pubDate>
      <link>https://dev.to/trisdane/i-gave-my-ai-client-my-real-business-context-and-stopped-explaining-my-company-and-customers-every-41go</link>
      <guid>https://dev.to/trisdane/i-gave-my-ai-client-my-real-business-context-and-stopped-explaining-my-company-and-customers-every-41go</guid>
      <description>&lt;p&gt;Every time Vince and I opened Claude to help with our business, we filled in pertinent data about the business. Who this customer is. What we charged them. What we said last time. The AI was capable. It just had no context, so we provided the context, every time.&lt;/p&gt;

&lt;p&gt;Vince and I built Founders OS to help us run our business with AI. It is an open-source MCP server that hands your AI client the actual state of your company: CRM, tasks, projects, a double-entry financial ledger, and a semantic memory that persists across sessions. It runs locally over stdio and stores everything in your own database. No middleman, no SaaS account, and most importantly no data leaving your control.&lt;/p&gt;

&lt;p&gt;The part that changed how we work is cross-domain reasoning. We ask one question and the model reads across modules to answer it. "Which customers we closed this quarter still have an unpaid invoice, and what did I promise them last time we talked?" That is the CRM, the ledger, and memory in a single answer. Before, that was three lookups and a spreadsheet. Now it is one sentence.&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%2Fusdf42fk1nzvjhri1bnk.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%2Fusdf42fk1nzvjhri1bnk.gif" alt="Founders OS kicking off your day in Claude" width="760" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because it is self-hosted, the data ownership story is simple: it is your own database. You run the migrations for the tool groups you want, point your client at it, and that is the whole deal. Each teammate runs their own instance against the shared database, and that shared DB is what defines your org boundary. Personal memory stays personal, org memory is shared.&lt;/p&gt;

&lt;p&gt;It is MIT licensed and live. If you have ten minutes:&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/OurThinkTank/founders-os" rel="noopener noreferrer"&gt;https://github.com/OurThinkTank/founders-os&lt;/a&gt;&lt;br&gt;
npm: @ourthinktank/founders-os&lt;br&gt;
Site and setup: &lt;a href="https://foundersmcp.com" rel="noopener noreferrer"&gt;https://foundersmcp.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try it and something is rough, open an issue. We are building this in the open and dogfooding it on our own company every day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
