<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>ian @syndicateio</title>
        <link>https://paragraph.com/@ian-syndicateio</link>
        <description>Building for the future of web3 with @syndicateio</description>
        <lastBuildDate>Sun, 12 Jul 2026 21:56:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>ian @syndicateio</title>
            <url>https://storage.googleapis.com/papyrus_images/77d9753a0408fe08c72be8e2f0d14dcfc50557846e711372e827fedd810a2415.jpg</url>
            <link>https://paragraph.com/@ian-syndicateio</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[AI Agents That Can Bank Themselves Using Blockchains]]></title>
            <link>https://paragraph.com/@ian-syndicateio/ai-agents-that-can-bank-themselves-using-blockchains</link>
            <guid>BPfP072bEmUPynMk1uub</guid>
            <pubDate>Thu, 16 Nov 2023 15:53:53 GMT</pubDate>
            <description><![CDATA[Last night I created a GPT that can bank itself using blockchains. The GPT autonomously manages USDC in its own Safe multisig wallet on Base. You can talk to it, give it suggestions on how to best use its capital, and the GPT might decide to do something with its funds based on your recommendations. It only took me a couple hours—and importantly just a few lines of code to integrate Syndicate (and thus web3). Just simple HTTP REST API calls—no custom backend for keys, transactions, wallets, o...]]></description>
            <content:encoded><![CDATA[<p><strong>Last night I created a GPT that can bank itself using blockchains.</strong></p><p><strong>The GPT autonomously manages USDC in its own Safe multisig wallet on Base.</strong> You can talk to it, give it suggestions on how to best use its capital, and the GPT might decide to do something with its funds based on your recommendations.</p><p><strong>It only took me a couple hours—and importantly just a few lines of code to integrate Syndicate (and thus web3).</strong> Just simple HTTP REST API calls—no custom backend for keys, transactions, wallets, or gas was needed.</p><p>Play with the demo (and see the repo) here:</p><div data-type="embedly" src="https://agent-banked.vercel.app/" data="{&quot;provider_url&quot;:&quot;https://agent-banked.vercel.app&quot;,&quot;description&quot;:&quot;Demo created in a couple hours with OpenAI and Syndicate.&quot;,&quot;title&quot;:&quot;AI Agent that Can Bank Itself Using Blockchains&quot;,&quot;url&quot;:&quot;https://agent-banked.vercel.app/&quot;,&quot;version&quot;:&quot;1.0&quot;,&quot;provider_name&quot;:&quot;Vercel&quot;,&quot;type&quot;:&quot;link&quot;}" format="small"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://agent-banked.vercel.app/" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>AI Agent that Can Bank Itself Using Blockchains</h2><p>Demo created in a couple hours with OpenAI and Syndicate.</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>https://agent-banked.vercel.app</span></div></div></a></div></div><h2 id="h-ai-agents-that-can-bank-themselves" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">AI Agents That Can Bank Themselves</h2><p>Last week I built a demo of a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/ianDAOs/status/1722297600991465567">GPT that could make crypto transactions</a>. It was surprisingly easy to build with Syndicate&apos;s Transaction Cloud and OpenAI&apos;s APIs. I wanted to see how easy it would be to build something new that pushed the edges a bit further.</p><p>As mentioned in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0x16de9a0d10EFc67EF575e72E40FD4a2A826fdEA7/KbWn9Oz37S8us7GiwxBCT8NARNmcb3Sp24HKkARrz48">my previous post</a>, <strong>the ability for AI to pay for things, hold things of value, exchange value, or create things of value—on behalf of itself or others—is how AI gets true agency.</strong></p><p><strong>In this demo, I wanted to show how an AI agent could autonomously hold and manage things of value by being integrated with blockchains.</strong></p><p>Some of the most interesting ideas open up not only when AI agents can transact on behalf of and with people, businesses, or other AI agents—<strong>but also when AI agents can manage things of value and transact on behalf of themselves.</strong></p><div data-type="twitter" tweetId="1722618029878743298" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:123,&quot;created_at&quot;:&quot;2023-11-09T14:11:57.000Z&quot;,&quot;display_text_range&quot;:[0,57],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1722618029878743298&quot;,&quot;text&quot;:&quot;Imagine an AI Agent waiting two days for a wire to clear.&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;21306324&quot;,&quot;name&quot;:&quot;Packy McCormick&quot;,&quot;screen_name&quot;:&quot;packyM&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://storage.googleapis.com/papyrus_images/ee196be57205bd320fe69a26b618bc864cb7af5512f38af9da9492b62e7be4c5.jpg&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1722618029878743298&quot;],&quot;editable_until_msecs&quot;:&quot;1699542717000&quot;,&quot;is_edit_eligible&quot;:true,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:21,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/packyM">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/ee196be57205bd320fe69a26b618bc864cb7af5512f38af9da9492b62e7be4c5.jpg" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/packyM" class="twitter-displayname">Packy McCormick</a>
              <p><a target="_blank" href="https://twitter.com/packyM" class="twitter-username">@packyM</a></p>
    
            </div>
            <a href="https://twitter.com/packyM/status/1722618029878743298" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      Imagine an AI Agent waiting two days for a wire to clear.
      
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/packyM/status/1722618029878743298" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            123
          </a>
          <a target="_blank" href="https://twitter.com/packyM/status/1722618029878743298"><p>8:11 AM • Nov 9, 2023</p></a>
        </div>
    
  </div> 
  </div><p>None of this will be possible with traditional banking rails that are slow, expensive, and don&apos;t run natively across the internet. AI will prefer something other than bank wires.</p><p><strong>Crypto is built to bank AI.</strong></p><h2 id="h-how-i-built-this" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How I Built This</h2><h3 id="h-1-deployed-a-gpt-template" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1/ Deployed a GPT template</h3><p>I deployed a base Next.js GPT app to Vercel using its <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vercel.com/docs/integrations/openai#">integration with OpenAI</a> and an AI template like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vercel.com/templates/next.js/chathn">this one</a>. I updated the template with my OpenAI developer keys to get the basic GPT chatbot experience working.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/07f9af4699fa2887f75ed47b9884a856e87d43f7a20dc3a11707cc5d4f90dc62.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-2-tuned-the-gpt-prompt" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2/ Tuned the GPT prompt</h3><p>I then provided the GPT with context to including some specific intents and actions based on those intents. For this demo, I made it straightforward—but it&apos;s not hard to imagine how you could add more complexity and depth to the prompt context so the GPT could handle more ambiguous goals, responses, and actions.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/59226ee808cecc291c380c1b3835429ee22c54628b3d3a72252512850b3975f0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>It&apos;ll be really interesting to see versions with even more open ended, sophisticated contexts.</p><h3 id="h-3-setup-safe-multisig-wallet-with-usdc-on-base-for-the-gpt" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3/ Setup Safe multisig wallet with USDC on Base for the GPT</h3><p>Via <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.safe.global/welcome">Safe&apos;s website</a>, I created a multisig wallet on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://base.org/">Base</a> for the GPT. I then sent some USDC (to autonomously manage and spend) and ETH (for gas) to the GPT&apos;s multisig wallet.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/316e4a6b2c6d41769bbe068d32e25551b26072033b22d2864846e0c1153b2915.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>I also used Safe&apos;s dashboard to interact with the <code>approve</code>​ function on the main <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913">USDC contract</a> on Base to give Syndicate&apos;s Transaction Cloud the approval and allowance to transfer USDC from the GPT&apos;s Safe multsig wallet when autonomously called by the GPT.</p><h3 id="h-4-integrated-syndicates-transaction-cloud-api" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">4/ Integrated Syndicate&apos;s Transaction Cloud API</h3><p>I used Syndicate&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/get-started/quickstart">Transaction Cloud API </a>and specifically the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/transactions/post-sendtransaction">send transaction</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/transactions/get-request">get transaction request</a> endpoints to do all the heavy-lifting with web3, so I didn&apos;t need to set up any key, wallet, gas, or transaction infrastructure on my end for the app.</p><p>I first configured my project on Syndicate to hook into the main <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://basescan.org/address/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913">USDC contract</a> on Base—specifically the <code>transferFrom</code> function (on the implementation contract via the main proxy contract)—so that when the GPT autonomously called Syndicate&apos;s <code>sendTransaction</code> API, it would be able to then transfer USDC on its own.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0728d19ac3b9a8865b840f3fc14f7209932d4b900d4e2b26676997cdb2fd5b4f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Then, by adding just a few lines of code to the GPT app to integrate Syndicate&apos;s simple HTTP REST APIs for ​sending transactions and getting their transaction hashes​, I was done with the web3 integration 🤯</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dcc83c63e75ed387d70ccf7b61cd7b8109c9b765291622c680719d46ce1e64cc.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-5-setup-openai-function-calling" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5/ Setup OpenAI Function Calling</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/0x16de9a0d10EFc67EF575e72E40FD4a2A826fdEA7/KbWn9Oz37S8us7GiwxBCT8NARNmcb3Sp24HKkARrz48">Unlike my previous demo</a> where I had to deterministically program the entire game and transaction logic, in this demo I leveraged <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://platform.openai.com/docs/guides/function-calling">OpenAI&apos;s function calling</a>, which took a bit to configure but once done was incredible.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/362c2670baa3b6873a33d1afc45ce973d73e35964e631431fd5de63a8ecf1cd8.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Instead of needing to prescriptively define when and how the GPT should call Syndicate&apos;s APIs, using OpenAI&apos;s function calling, I simply defined the API schema and added to the prompt context a couple sentences about when and how the GPT should consider calling Syndicate&apos;s APIs like this:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4c6b2eb6d5d90b7bb977a04b3a7d55e7e4952982e8761257e30184ecc6750ff6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>I was amazed to see how much time and lines of code were saved here. This was a significant improvement over my first demo and is one of the more exciting things to use going forward.</p><h2 id="h-where-it-could-go-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where It Could Go Next</h2><p>There are so many new ideas this demo opened for me:</p><ul><li><p>AI agents with multisig wallets that represent and act on behalf of a person, group, community, network, company, division, etc.</p></li><li><p>AI agents that can go buy/shop for things autonomously</p></li><li><p>AI agents that try to grow their wealth to help others</p></li><li><p>AI agents that give funding to people and projects around the world</p></li><li><p>And so much more...</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9ac05e971a16ad95f0e16297863e152d4187ba0e8e4776aac4c1ed6a45f4af99.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>I&apos;ve been starting to jam on a future experiments with my co-founder <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/WillPapper">Will</a> and former teammates <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xGerber">Joe</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_reidw_">Reid</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ohmygong">Shuya</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/NilsEdison">RM</a> from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/IDEOVC">IDEO&apos;s web3 team</a>. Lots of exciting ideas. More to come soon, but if you want to join the fun, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ianDAOs">DM me</a>.</p><h2 id="h-the-next-wave-of-web3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Next Wave of Web3</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/syndicateio/status/1712470548872315225?s=20">The next wave of web3 is coming</a>, and it&apos;s going to be enabled by step function improvements in DX that unlock new-to-world user interactions, experiences, and applications. The next wave of web3 will also seamlessly integrate with existing technologies and revolutions like AI and spatial computing, via simple HTTP REST APIs like what <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://syndicate.io/">Syndicate</a> and others are currently building.</p><p>If any of this has interested you, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ianDAOs">reach out via DM</a>. I&apos;ve also been thinking about organizing a hackathon-like event with some friends in web3 to build interesting new-to-world things on Syndicate&apos;s APIs, so if you&apos;re interested in that, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forms.gle/74V9SRuC7T3Bhm1Z8">add your info to this form here</a>, and I’ll be in touch soon.</p>]]></content:encoded>
            <author>ian-syndicateio@newsletter.paragraph.com (ian @syndicateio)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/57de7b3d301b7397aab158d34056c613e3b8b33aef4998896a17b221876793b7.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Crypto-Enabled LLMs & Web3 AI Agents]]></title>
            <link>https://paragraph.com/@ian-syndicateio/crypto-enabled-llms-web3-ai-agents</link>
            <guid>DzmTLSTosSbThe8aUUVS</guid>
            <pubDate>Wed, 08 Nov 2023 16:35:57 GMT</pubDate>
            <description><![CDATA[Last night I created a GPT that can make crypto/web3 transactions. I was able to build a demo in just a couple hours, using Open AI and Syndicate&apos;s new Transaction Cloud APIs. (It might get even easier with OpenAI&apos;s new announcements on Monday.) It only took a few lines of code and less than 15 minutes to integrate Syndicate (and thus web3). Just simple HTTP REST API calls—no custom backend for keys, transactions, wallets, or gas was needed. 🤯 You can play with it (and check out th...]]></description>
            <content:encoded><![CDATA[<p><strong>Last night I created a GPT that can make crypto/web3 transactions.</strong></p><p><strong>I was able to build a demo in just a couple hours, using Open AI and Syndicate&apos;s new </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/"><strong>Transaction Cloud APIs</strong></a><strong>.</strong> (It might get even easier with OpenAI&apos;s new announcements on Monday.) It only took a few lines of code and less than 15 minutes to integrate Syndicate (and thus web3). Just simple HTTP REST API calls—no custom backend for keys, transactions, wallets, or gas was needed. 🤯</p><p>You can <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://demo-crypto-llm-20questions.vercel.app/">play with it (and check out the repo) here</a>. It&apos;s a game where the GPT is hiding from you a secret word. If you correctly guess it, the GPT will send you an NFT as a prize onchain.</p><h2 id="h-ai-agents-that-can-transact" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">AI Agents That Can Transact</h2><p><strong>Most people still view AI and crypto/web3 as separate things,</strong> but they address different layers of the software/internet stack and can be integrated in powerful ways. To date, how that could happen has been more conceptual or behind-the-scenes (e.g., analysis on ZKPs, verifying training data, data marketplaces)—not something people could feel, touch, or experience for themselves. But recent advancements now make these new-to-world &quot;AI x crypto/web3&quot; experiences possible, today.</p><p>AI that can autonomously transact with people, businesses, or other AI is a big idea space. Most people think of &quot;AI agents&quot; in terms of tasks, jobs, or work. <strong>But the ability for AI to pay for things, hold things of value, exchange value, or create things of value—on behalf of itself or others—is how AI gets true agency.</strong></p><p>Historically, it&apos;s been difficult to build AI systems and apps. And similarly, it’s still hard to build in crypto/web3. Unless you have a lot expertise in all of the nuances of every layer of the stack (e.g., blockchains, smart contracts, RPCs, Viem, Ethers, keys, gas, nonces, reorgs, retries, monitoring, and so on), a demo like this would have taken days or weeks to build.</p><p>But with simple HTTP REST APIs from Open AI and Syndicate that provide developers with higher levels of abstraction and better/easier DX, I was able to build this demo in one evening. Imagine the possibilities. What could highly capable teams do in weeks or months? AI that gives gifts? AI that creates and sells art? AI that negotiates and makes deals with each other for consumers or businesses? The design space is near infinite.</p><h2 id="h-how-i-built-this" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How I Built This</h2><h3 id="h-1-deployed-a-gpt-template" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1/ Deployed a GPT template</h3><p>I deployed a base Next.js GPT app to Vercel using its <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vercel.com/docs/integrations/openai#">integration with OpenAI</a> and an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vercel.com/templates/ai">AI template</a> like <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vercel.com/templates/next.js/chathn">this one</a>. I updated the template with my OpenAI developer keys to get the basic GPT chatbot experience working. (Note: This will be 10x easier with GPT Builder announced on Monday.)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ed3907d98f4bb2873c286b0f2223077ca445bb616c263ef78d64cf6010c13b95.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-2-tuned-the-gpt-prompt" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2/ Tuned the GPT prompt</h3><p>I then provided the GPT with game context to play 20 questions according to a number of rules with the user. Interestingly, this is where 70%+ of the work was: fine tuning the prompts as well as parameters like <code>temperature</code> and <code>max_tokens</code> to get the desired output from the LLM. (It&apos;ll also be much easier/better with GPT Builder and GPT-4 Turbo.)</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f57049f3e2f11a6ca69480bd38a6782582771d000579a0b7f32fc898092562d2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-3-added-game-logic" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3/ Added game logic</h3><p>After trying to embed all of the game logic in the prompt itself, the LLM would often &quot;hallucinate,&quot; get confused, or be vulnerable to clever players.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5cee9ca160f1831e0e2d9f10aeb6d6a67510c29a72dc96a2aaa336d237fdf80c.png" alt="Should have expected my co-founder Will to break this :)" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Should have expected my co-founder Will to break this :)</figcaption></figure><p>To fix this, I decided to extract some of the game logic and explicitly code it into the server-side route—like whether the game had been won or the player ran out of questions. This was where about 20% of the work was.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8a8c9bfafcbb549c734c56a374d0fbd2ddc431f359d1a5f8d2e60063ee7025b6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This will also get even easier with OpenAI&apos;s new announcements around its GPT Builder.</p><h3 id="h-4-added-transaction-logic" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">4/ Added transaction logic</h3><p>Once the app knew a player had won the game, I added the logic for sending the NFT as a prize and messaging to the player that the prize had been sent to their address. This was pretty easy and was where about 5% of the work was. With OpenAI&apos;s new GPT Builder and function calling via Actions, this might be possible with even less (or no) lines of code.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/eca3d644a4bd97771ebdb4277be8e907f15a3d05d8dcca8767768ccad86a032a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-5-integrated-syndicates-transaction-cloud-api" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5/ Integrated Syndicate&apos;s Transaction Cloud API</h3><p>Finally, I used Syndicate&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/get-started/quickstart">Transaction Cloud API</a> and specifically the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/transactions/post-sendtransaction">send transaction</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/transactions/get-request">get transaction request</a> endpoints to do all the heavy-lifting with web3, so I didn&apos;t need to set up any key, wallet, gas, or transaction infrastructure on my end for the app. Just a few lines of code, simple HTTP REST APIs, and I was done. This part took less than 10 minutes (!!). Now the GPT was able to send an NFT as a prize to players.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/69bb4c2254cc257fad32b8918a03beb379a2af2609fed661bcbc8138f6671e76.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-where-it-could-go-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where It Could Go Next</h2><p>There were a few things that I would have liked to do with this demo if I had more time:</p><ul><li><p>Add the ability for the GPT to pick a new word and players to to reset the game</p></li><li><p>Send a NFT on any network they want (e.g., Ethereum, Optimism, Polygon, Base, Arbitrum, etc.) via Syndicate&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/transactions/post-sendtransaction">Transaction Cloud API</a> by adding NFT contracts to each chain and simply modifying the <code>chainId</code></p></li><li><p>Customize the each NFT&apos;s image and metadata based on the player&apos;s experience via Syndicate&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/metadata/update-metadata">update metadata</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/metadata/media-upload">upload media</a> APIs</p></li><li><p>Create an NFT for each player with metadata that updates based on the number of games played, won, and winning words via Syndicate&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.syndicate.io/open-api/metadata/update-metadata">update metadata</a> API—which could then be used to create leaderboards, communities, and social experiences (e.g., everyone who won with the word &quot;sailboat&quot; would be connected with each other).</p></li><li><p>So much more...</p></li></ul><p>Additionally, this surfaced a whole bunch of new, more ambitious ideas that could be built:</p><ul><li><p>More games with crypto-enabled LLMs, with teams and/or LLMs that play against each other</p></li><li><p>Collaborative projects that use LLMs to generate onchain assets, communities, or stories</p></li><li><p>LLMs used to create personalized assets or experiences onchain</p></li><li><p>Onchain social networks that use LLMs to understand and connect people</p></li><li><p>The list goes on...</p></li></ul><h2 id="h-the-next-wave-of-web3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Next Wave of Web3</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/syndicateio/status/1712470548872315225?s=20">The next wave of web3 is coming</a>, and it&apos;s going to be enabled by step function improvements in DX that unlock new-to-world user interactions, experiences, and applications. The next wave of web3 will also seamlessly integrate with existing technologies and revolutions like AI and spatial computing, via simple HTTP REST APIs like what <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://syndicate.io">Syndicate</a> and others are currently building.</p><p>If any of this has interested you, reach out via <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ianDAOs">DM</a>. I&apos;m also thinking about organizing a hackathon-like event with some friends in web3 to build interesting new-to-world things on Syndicate&apos;s APIs, so if you&apos;re interested in that, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forms.gle/74V9SRuC7T3Bhm1Z8">add your info to this form here</a>, and I’ll be in touch soon.</p>]]></content:encoded>
            <author>ian-syndicateio@newsletter.paragraph.com (ian @syndicateio)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/0b9cc08eb90eb8a1c8c0dae4c101c88e3c14b24ac04a6bcc542795dd15c7b5a5.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>