<?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: Roman </title>
    <description>The latest articles on DEV Community by Roman  (@openverb).</description>
    <link>https://dev.to/openverb</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%2F3764860%2F2b70aaef-5716-4164-bca5-2ff317c1bcc5.png</url>
      <title>DEV Community: Roman </title>
      <link>https://dev.to/openverb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/openverb"/>
    <language>en</language>
    <item>
      <title>Building an Ecosystem of Software Projects: From AI Infrastructure to Geospatial Technology, Music, and Professional Development</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Fri, 25 Sep 2026 13:42:22 +0000</pubDate>
      <link>https://dev.to/openverb/building-an-ecosystem-of-software-projects-from-ai-infrastructure-to-geospatial-technology-music-4d47</link>
      <guid>https://dev.to/openverb/building-an-ecosystem-of-software-projects-from-ai-infrastructure-to-geospatial-technology-music-4d47</guid>
      <description>&lt;p&gt;How a collection of independent software projects evolved into a connected ecosystem exploring artificial intelligence, developer infrastructure, geospatial technology, digital publishing, and knowledge discovery.&lt;/p&gt;

&lt;p&gt;Over the past several years, I’ve been building software across several different domains.&lt;/p&gt;

&lt;p&gt;Some projects started as solutions to problems I encountered while working as a land surveyor. Others emerged from experiments with artificial intelligence, music production, developer tooling, and digital publishing.&lt;/p&gt;

&lt;p&gt;At first glance, these projects might appear unrelated.&lt;/p&gt;

&lt;p&gt;What does a professional experience-tracking application have in common with an AI execution framework?&lt;/p&gt;

&lt;p&gt;How does a geographic music atlas relate to file management software?&lt;/p&gt;

&lt;p&gt;And why would someone working in land surveying also build tools for monetization, blogging, and AI-assisted music?&lt;/p&gt;

&lt;p&gt;The answer is that many of these projects emerged from a common interest:&lt;/p&gt;

&lt;p&gt;Building software that gives people more control over their work, knowledge, creativity, and digital infrastructure.&lt;/p&gt;

&lt;p&gt;This article introduces the ecosystem I’ve been developing, the problems each project addresses, and the architectural direction connecting them.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenVerb — Building an Execution Layer for AI Actions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://openverb.org" rel="noopener noreferrer"&gt;https://openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the most significant developments in artificial intelligence is the transition from systems that generate information to systems that execute actions.&lt;/p&gt;

&lt;p&gt;Modern AI models can interpret instructions, generate code, and interact with external tools.&lt;/p&gt;

&lt;p&gt;But connecting intelligence to execution introduces additional architectural challenges.&lt;/p&gt;

&lt;p&gt;How does an agent discover available actions?&lt;/p&gt;

&lt;p&gt;How are inputs validated?&lt;/p&gt;

&lt;p&gt;How are permissions enforced?&lt;/p&gt;

&lt;p&gt;How do we determine whether an operation succeeded?&lt;/p&gt;

&lt;p&gt;And how do we establish a verifiable record of what happened?&lt;/p&gt;

&lt;p&gt;These questions led me to develop OpenVerb.&lt;/p&gt;

&lt;p&gt;OpenVerb is an open execution layer for AI actions built around structured verbs, schemas, policies, execution, and receipts.&lt;/p&gt;

&lt;p&gt;The underlying concept is that an action should be treated as more than an arbitrary function call.&lt;/p&gt;

&lt;p&gt;An action has a purpose, a contract, execution requirements, potential side effects, and a result.&lt;/p&gt;

&lt;p&gt;OpenVerb explores how these elements can be organized into reusable infrastructure.&lt;/p&gt;

&lt;p&gt;The OpenVerb architecture&lt;/p&gt;

&lt;p&gt;The ecosystem includes packages addressing different parts of the execution lifecycle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runtime&lt;/li&gt;
&lt;li&gt;Policy&lt;/li&gt;
&lt;li&gt;SDK&lt;/li&gt;
&lt;li&gt;CLI&lt;/li&gt;
&lt;li&gt;Core&lt;/li&gt;
&lt;li&gt;Standard library&lt;/li&gt;
&lt;li&gt;Developer integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also includes specialized packages exploring applications in areas such as GIS, formatting, and geographic storytelling.&lt;/p&gt;

&lt;p&gt;The broader objective is to establish infrastructure that can support AI-driven operations across different software environments.&lt;/p&gt;

&lt;p&gt;Intelligence determines what should be done. Action infrastructure governs how it gets done.&lt;/p&gt;

&lt;p&gt;This distinction becomes increasingly important as AI agents interact with business applications, enterprise systems, development environments, and real-world operations.&lt;/p&gt;

&lt;p&gt;OpenVerb is my exploration of that architectural direction.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PaywallOS — Monetization as Software Infrastructure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://paywallos.openverb.org" rel="noopener noreferrer"&gt;https://paywallos.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software monetization is often treated as something developers add after building their applications.&lt;/p&gt;

&lt;p&gt;A payment provider is integrated.&lt;/p&gt;

&lt;p&gt;A subscription table is created.&lt;/p&gt;

&lt;p&gt;Some premium features are hidden behind a conditional statement.&lt;/p&gt;

&lt;p&gt;But monetization becomes much more complicated as applications grow.&lt;/p&gt;

&lt;p&gt;Different subscription tiers need different permissions.&lt;/p&gt;

&lt;p&gt;Some users receive access to specific features.&lt;/p&gt;

&lt;p&gt;Others receive usage allowances.&lt;/p&gt;

&lt;p&gt;Certain actions might require payment, while others remain freely available.&lt;/p&gt;

&lt;p&gt;And eventually, the application needs to understand not simply whether someone paid, but what that payment authorizes them to do.&lt;/p&gt;

&lt;p&gt;This is the problem space behind PaywallOS.&lt;/p&gt;

&lt;p&gt;The project explores a portable monetization layer organized around a structured execution model:&lt;/p&gt;

&lt;p&gt;Tier&lt;br&gt;
  ↓&lt;br&gt;
Policy&lt;br&gt;
  ↓&lt;br&gt;
Verb&lt;br&gt;
  ↓&lt;br&gt;
Execution&lt;br&gt;
  ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;The objective is to connect monetization decisions to application behavior.&lt;/p&gt;

&lt;p&gt;Rather than treating payment infrastructure and application execution as entirely separate concerns, PaywallOS explores how they can operate together.&lt;/p&gt;

&lt;p&gt;It also connects naturally to OpenVerb’s broader approach to governed actions.&lt;/p&gt;

&lt;p&gt;A premium feature is ultimately an action that someone is authorized to perform under particular conditions.&lt;/p&gt;

&lt;p&gt;The challenge is making that relationship explicit, reusable, and manageable.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;FolderCopilot — Making Existing File Systems More Useful&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://foldercopilot.com" rel="noopener noreferrer"&gt;https://foldercopilot.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One of the recurring challenges I’ve encountered in professional environments is managing large collections of project files.&lt;/p&gt;

&lt;p&gt;Engineering and surveying projects often contain years of accumulated information.&lt;/p&gt;

&lt;p&gt;CAD drawings.&lt;/p&gt;

&lt;p&gt;Survey computations.&lt;/p&gt;

&lt;p&gt;GIS datasets.&lt;/p&gt;

&lt;p&gt;PDF plans.&lt;/p&gt;

&lt;p&gt;Project correspondence.&lt;/p&gt;

&lt;p&gt;Field records.&lt;/p&gt;

&lt;p&gt;Supporting documents.&lt;/p&gt;

&lt;p&gt;The problem isn’t necessarily that these files are poorly organized.&lt;/p&gt;

&lt;p&gt;Sometimes, the underlying directory structure is perfectly reasonable.&lt;/p&gt;

&lt;p&gt;The difficulty is understanding what’s already there.&lt;/p&gt;

&lt;p&gt;A project folder might contain hundreds of files distributed across multiple directories, and determining the current state of the project requires navigating the entire structure.&lt;/p&gt;

&lt;p&gt;This was part of the motivation behind FolderCopilot.&lt;/p&gt;

&lt;p&gt;FolderCopilot explores ways to make existing file systems easier to navigate, understand, and work with.&lt;/p&gt;

&lt;p&gt;The underlying philosophy is straightforward:&lt;/p&gt;

&lt;p&gt;You shouldn’t have to reorganize your entire digital workspace before software can help you understand it.&lt;/p&gt;

&lt;p&gt;The project is particularly relevant to professionals working with large, structured collections of project information.&lt;/p&gt;

&lt;p&gt;It also reflects a broader theme across my ecosystem: helping people make better use of information they’ve already created.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Survey Manager Pro — Software Built Around Surveying Workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://surveymanagerapp.com" rel="noopener noreferrer"&gt;https://surveymanagerapp.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My professional background is in geography, geospatial technology, and land surveying.&lt;/p&gt;

&lt;p&gt;I’ve worked with boundary analysis, CAD drafting, GIS data, project preparation, and other surveying workflows.&lt;/p&gt;

&lt;p&gt;One thing I’ve observed is that surveyors often depend on multiple applications to complete a single project.&lt;/p&gt;

&lt;p&gt;GIS software handles one part of the workflow.&lt;/p&gt;

&lt;p&gt;CAD software handles another.&lt;/p&gt;

&lt;p&gt;Project documents exist in file directories.&lt;/p&gt;

&lt;p&gt;Computations, field information, and other supporting materials may be distributed across different systems.&lt;/p&gt;

&lt;p&gt;The challenge is not necessarily replacing those applications.&lt;/p&gt;

&lt;p&gt;It’s improving how the workflow comes together.&lt;/p&gt;

&lt;p&gt;Survey Manager Pro is my exploration of software designed around the practical needs of surveying professionals.&lt;/p&gt;

&lt;p&gt;The project includes desktop, web, and QGIS-oriented development, connecting my professional experience with my software engineering interests.&lt;/p&gt;

&lt;p&gt;I’m particularly interested in the relationship between project organization, geographic information, and the actual work surveyors perform.&lt;/p&gt;

&lt;p&gt;The broader objective is to develop tools that understand professional workflows rather than requiring professionals to adapt everything they do to generic software.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Elevatr — Turning Professional Experience Into a Documented Asset&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://elevatr.dev" rel="noopener noreferrer"&gt;https://elevatr.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another project emerged directly from my experience pursuing professional land surveying licensure.&lt;/p&gt;

&lt;p&gt;In many regulated professions, completing the work is only one part of professional development.&lt;/p&gt;

&lt;p&gt;You also need to demonstrate what you’ve done.&lt;/p&gt;

&lt;p&gt;That may involve documenting experience, projects, responsibilities, supervision, and hours.&lt;/p&gt;

&lt;p&gt;And reconstructing several years of professional experience after the fact can be difficult.&lt;/p&gt;

&lt;p&gt;I began thinking about a different approach.&lt;/p&gt;

&lt;p&gt;What if professionals maintained a structured record of their experience as it happened?&lt;/p&gt;

&lt;p&gt;Instead of trying to remember every project years later, they could build a professional history throughout their careers.&lt;/p&gt;

&lt;p&gt;That thinking led to Elevatr.&lt;/p&gt;

&lt;p&gt;Elevatr helps professionals document their work experience, track projects, record hours, and maintain a history of their professional development.&lt;/p&gt;

&lt;p&gt;The platform includes web, desktop, and mobile development.&lt;/p&gt;

&lt;p&gt;The Android application has also been published on Google Play.&lt;/p&gt;

&lt;p&gt;Beyond professional licensure&lt;/p&gt;

&lt;p&gt;Although land surveying provided the original context, the underlying problem exists across many professions.&lt;/p&gt;

&lt;p&gt;Engineers, architects, technicians, and other professionals accumulate valuable experience throughout their careers.&lt;/p&gt;

&lt;p&gt;But professional experience is often represented by little more than job titles and employment dates.&lt;/p&gt;

&lt;p&gt;I believe there’s an opportunity to document it more meaningfully.&lt;/p&gt;

&lt;p&gt;A résumé tells people where you worked. A professional experience record can help explain what you actually did.&lt;/p&gt;

&lt;p&gt;Elevatr is my attempt to make that documentation more accessible and useful.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Expanding Beyond Traditional Productivity Software&lt;/p&gt;

&lt;p&gt;Not every project in my ecosystem began with a conventional workplace problem.&lt;/p&gt;

&lt;p&gt;Some emerged from exploring what artificial intelligence makes possible in education, creativity, and digital knowledge systems.&lt;/p&gt;

&lt;p&gt;Two of those projects have become particularly significant.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Topics Archive — AI-Assisted Music as a Knowledge Interface&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://topicsarchive.openverb.org" rel="noopener noreferrer"&gt;https://topicsarchive.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Music is traditionally organized around artists, albums, and genres.&lt;/p&gt;

&lt;p&gt;But music can also be organized around knowledge.&lt;/p&gt;

&lt;p&gt;History.&lt;/p&gt;

&lt;p&gt;Geography.&lt;/p&gt;

&lt;p&gt;Biographies.&lt;/p&gt;

&lt;p&gt;Scientific discoveries.&lt;/p&gt;

&lt;p&gt;Religious narratives.&lt;/p&gt;

&lt;p&gt;Cultural events.&lt;/p&gt;

&lt;p&gt;This is the thinking behind Topics Archive.&lt;/p&gt;

&lt;p&gt;Topics Archive explores how AI-assisted music production can be used to create educational and thematic musical collections.&lt;/p&gt;

&lt;p&gt;The project includes archives covering historical figures, biblical narratives, inventions, geography, and FIFA World Cup history.&lt;/p&gt;

&lt;p&gt;The idea is not simply to generate songs about random subjects.&lt;/p&gt;

&lt;p&gt;It’s to organize musical works into meaningful collections that people can explore.&lt;/p&gt;

&lt;p&gt;A biography becomes a musical storytelling opportunity.&lt;/p&gt;

&lt;p&gt;A historical event becomes part of a thematic archive.&lt;/p&gt;

&lt;p&gt;A geographic location becomes a musical discovery experience.&lt;/p&gt;

&lt;p&gt;From individual songs to structured collections&lt;/p&gt;

&lt;p&gt;One of the most interesting aspects of this project is the relationship between content generation and software architecture.&lt;/p&gt;

&lt;p&gt;Generating a song is one operation.&lt;/p&gt;

&lt;p&gt;Organizing hundreds of songs into a coherent archive is another.&lt;/p&gt;

&lt;p&gt;Building discovery mechanisms around those archives introduces an entirely different technical challenge.&lt;/p&gt;

&lt;p&gt;And allowing people to create and curate their own collections creates additional opportunities.&lt;/p&gt;

&lt;p&gt;Topics Archive is increasingly becoming an exploration of what happens when AI-assisted creative production is connected to structured digital publishing and curation.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;World Music Atlas — Geography as a Music Discovery Interface&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://openmusicatlas.org" rel="noopener noreferrer"&gt;https://openmusicatlas.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The World Music Atlas emerged from the geographic music experiments within Topics Archive.&lt;/p&gt;

&lt;p&gt;I wanted to explore a simple concept:&lt;/p&gt;

&lt;p&gt;Could a geographic atlas become an interface for discovering music?&lt;/p&gt;

&lt;p&gt;Instead of beginning with an artist or a genre, someone could begin with a place.&lt;/p&gt;

&lt;p&gt;A country.&lt;/p&gt;

&lt;p&gt;A territory.&lt;/p&gt;

&lt;p&gt;Eventually, perhaps a city, river, region, or ocean.&lt;/p&gt;

&lt;p&gt;The geographic location becomes the entry point into a musical experience.&lt;/p&gt;

&lt;p&gt;This led to the creation of the World Music Atlas — 2026 Founding Edition.&lt;/p&gt;

&lt;p&gt;The founding collection includes musical works inspired by 203 places around the world, including 195 countries and eight additional territories.&lt;/p&gt;

&lt;p&gt;The technical architecture&lt;/p&gt;

&lt;p&gt;The platform uses Next.js and Vercel, with the atlas accessing the underlying Topics Archive data through a read-only database connection.&lt;/p&gt;

&lt;p&gt;I also published an initial TypeScript SDK:&lt;/p&gt;

&lt;p&gt;npm install &lt;a class="mentioned-user" href="https://dev.to/openverb"&gt;@openverb&lt;/a&gt;/music-atlas&lt;/p&gt;

&lt;p&gt;The package provides a foundation for integrating atlas functionality into other software projects.&lt;/p&gt;

&lt;p&gt;The broader vision includes developer integrations, geographic storytelling, additional musical editions, and new ways of exploring cultural and geographic information.&lt;/p&gt;

&lt;p&gt;The World Music Atlas is not intended to replace traditional geographic research or serve as an authoritative collection of indigenous musical traditions.&lt;/p&gt;

&lt;p&gt;It’s a born-digital creative atlas exploring the intersection of geography, AI-assisted music, and digital curation.&lt;/p&gt;

&lt;p&gt;The music is the medium. Geography provides the structure. Discovery is the experience.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenBlog — Giving Ideas Room to Develop&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🌐 &lt;a href="https://openblog.openverb.org" rel="noopener noreferrer"&gt;https://openblog.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another problem I’ve encountered is the limitation of short-form publishing.&lt;/p&gt;

&lt;p&gt;Platforms such as LinkedIn and X are useful for discovering ideas and starting conversations.&lt;/p&gt;

&lt;p&gt;But some ideas need more space.&lt;/p&gt;

&lt;p&gt;A technical explanation might require architecture diagrams, implementation details, and examples.&lt;/p&gt;

&lt;p&gt;A professional experience might require several thousand words.&lt;/p&gt;

&lt;p&gt;A research observation might develop into an entire article.&lt;/p&gt;

&lt;p&gt;When everything has to fit within a social media character limit, important context can disappear.&lt;/p&gt;

&lt;p&gt;This is part of the motivation behind OpenBlog.&lt;/p&gt;

&lt;p&gt;OpenBlog explores AI-assisted digital publishing, including the ability to develop articles from prompts and expand shorter social media posts into more complete written content.&lt;/p&gt;

&lt;p&gt;The concept is particularly relevant to my broader ecosystem.&lt;/p&gt;

&lt;p&gt;A technical observation about OpenVerb could begin as a LinkedIn post and eventually become a detailed development article.&lt;/p&gt;

&lt;p&gt;A project announcement could become a longer explanation of the problem, architecture, and implementation.&lt;/p&gt;

&lt;p&gt;A short reflection could develop into a more substantial piece of writing.&lt;/p&gt;

&lt;p&gt;Social media can introduce an idea. Long-form publishing gives that idea room to develop.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Bigger Picture: Building Systems That Connect&lt;/p&gt;

&lt;p&gt;Looking at these projects together, I see several recurring architectural themes.&lt;/p&gt;

&lt;p&gt;They may address different audiences, but many of the underlying problems are related.&lt;/p&gt;

&lt;p&gt;Structured information&lt;/p&gt;

&lt;p&gt;Elevatr structures professional experience.&lt;/p&gt;

&lt;p&gt;Topics Archive structures educational music collections.&lt;/p&gt;

&lt;p&gt;The World Music Atlas organizes music geographically.&lt;/p&gt;

&lt;p&gt;FolderCopilot explores ways to understand existing file structures.&lt;/p&gt;

&lt;p&gt;Execution and governance&lt;/p&gt;

&lt;p&gt;OpenVerb explores structured AI actions.&lt;/p&gt;

&lt;p&gt;PaywallOS explores policies governing access to monetized functionality.&lt;/p&gt;

&lt;p&gt;Domain-specific workflows&lt;/p&gt;

&lt;p&gt;Survey Manager Pro focuses on surveying and geospatial professionals.&lt;/p&gt;

&lt;p&gt;Elevatr addresses professional experience documentation.&lt;/p&gt;

&lt;p&gt;The World Music Atlas explores geographic discovery.&lt;/p&gt;

&lt;p&gt;Publishing and distribution&lt;/p&gt;

&lt;p&gt;OpenBlog provides a publishing environment.&lt;/p&gt;

&lt;p&gt;Topics Archive organizes and publishes musical collections.&lt;/p&gt;

&lt;p&gt;The World Music Atlas creates another interface for discovering those collections.&lt;/p&gt;

&lt;p&gt;These projects are not all components of one monolithic application.&lt;/p&gt;

&lt;p&gt;Each addresses a particular problem and can have its own identity, users, and development direction.&lt;/p&gt;

&lt;p&gt;But there are opportunities for shared infrastructure, integrations, and architectural reuse.&lt;/p&gt;

&lt;p&gt;That’s what makes the ecosystem interesting to me.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why I’m Building Across Multiple Domains&lt;/p&gt;

&lt;p&gt;There’s a common assumption that developers should focus exclusively on one industry or problem.&lt;/p&gt;

&lt;p&gt;Specialization has obvious advantages.&lt;/p&gt;

&lt;p&gt;But working across different domains can also reveal recurring patterns that are less obvious when viewed from within a single industry.&lt;/p&gt;

&lt;p&gt;My experience in land surveying informs the way I think about structured data, professional workflows, documentation, and geographic information.&lt;/p&gt;

&lt;p&gt;My work with AI infrastructure influences how I approach execution, automation, policies, and developer tooling.&lt;/p&gt;

&lt;p&gt;My experiments with music and digital publishing have introduced different challenges involving content organization, discovery, curation, and distribution.&lt;/p&gt;

&lt;p&gt;These experiences continuously inform one another.&lt;/p&gt;

&lt;p&gt;Sometimes an architectural concept developed for one project becomes relevant to another.&lt;/p&gt;

&lt;p&gt;Sometimes a workflow problem encountered professionally becomes the foundation of an entirely new application.&lt;/p&gt;

&lt;p&gt;And sometimes an experimental project reveals an opportunity that wasn’t part of the original plan.&lt;/p&gt;

&lt;p&gt;The connection isn’t necessarily the industry. It’s the way I approach building software.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;What I’ve Learned From Building an Ecosystem&lt;/p&gt;

&lt;p&gt;Developing multiple projects has taught me several things.&lt;/p&gt;

&lt;p&gt;First, the problem behind a project matters more than the number of features it contains.&lt;/p&gt;

&lt;p&gt;Second, software becomes more interesting when it reflects a genuine understanding of the environment in which people will use it.&lt;/p&gt;

&lt;p&gt;Third, reusable infrastructure creates opportunities that isolated implementations may not.&lt;/p&gt;

&lt;p&gt;And finally, not every project needs to begin with a fully developed business model or a prediction about its eventual market size.&lt;/p&gt;

&lt;p&gt;Some projects begin as experiments.&lt;/p&gt;

&lt;p&gt;Others begin as tools developed to solve an immediate problem.&lt;/p&gt;

&lt;p&gt;Over time, the architecture, audience, and opportunities become clearer.&lt;/p&gt;

&lt;p&gt;Of course, building multiple projects also introduces challenges.&lt;/p&gt;

&lt;p&gt;Maintaining software requires time.&lt;/p&gt;

&lt;p&gt;Documentation matters.&lt;/p&gt;

&lt;p&gt;Testing matters.&lt;/p&gt;

&lt;p&gt;User experience matters.&lt;/p&gt;

&lt;p&gt;And deciding what to prioritize becomes increasingly important as the ecosystem grows.&lt;/p&gt;

&lt;p&gt;But I see these challenges as part of the process of developing a sustainable body of work.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;What’s Next?&lt;/p&gt;

&lt;p&gt;My focus is on continuing to develop these projects while improving the infrastructure, usability, documentation, and integrations surrounding them.&lt;/p&gt;

&lt;p&gt;For OpenVerb, that means continuing to explore the architecture of AI action execution.&lt;/p&gt;

&lt;p&gt;For Elevatr and Survey Manager Pro, it means developing tools grounded in real professional workflows.&lt;/p&gt;

&lt;p&gt;For FolderCopilot, it means improving how people interact with existing digital information.&lt;/p&gt;

&lt;p&gt;For Topics Archive and the World Music Atlas, it means expanding the possibilities of AI-assisted music, digital curation, and knowledge discovery.&lt;/p&gt;

&lt;p&gt;For PaywallOS and OpenBlog, it means exploring better systems for monetization and publishing.&lt;/p&gt;

&lt;p&gt;I also want to continue documenting the development process.&lt;/p&gt;

&lt;p&gt;Not just announcements about new features, but the architectural decisions, challenges, experiments, and lessons behind the software.&lt;/p&gt;

&lt;p&gt;That’s one reason I’m sharing this work on DEV.&lt;/p&gt;

&lt;p&gt;I’m interested in connecting with other developers who are building infrastructure, experimenting with AI, working in geospatial technology, or exploring unconventional intersections between software and other disciplines.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;When I look at these projects together, I don’t simply see a collection of applications.&lt;/p&gt;

&lt;p&gt;I see a growing body of work shaped by different professional experiences, technical interests, and experiments.&lt;/p&gt;

&lt;p&gt;Some projects address problems I’ve encountered directly.&lt;/p&gt;

&lt;p&gt;Others explore possibilities that emerging technologies have made accessible.&lt;/p&gt;

&lt;p&gt;And others are attempts to build infrastructure that can support entirely new categories of applications.&lt;/p&gt;

&lt;p&gt;The objective isn’t to build software for the sake of having more projects.&lt;/p&gt;

&lt;p&gt;It’s to create useful systems, learn from the process, and explore how different technologies can work together.&lt;/p&gt;

&lt;p&gt;Software development gives us the opportunity to turn observations into tools, tools into platforms, and platforms into infrastructure that other people can build upon.&lt;/p&gt;

&lt;p&gt;That’s the opportunity I’m exploring through this ecosystem.&lt;/p&gt;

&lt;p&gt;And I’m still building.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Explore the Ecosystem&lt;/p&gt;

&lt;p&gt;Project Focus   Website&lt;br&gt;
OpenVerb    AI action infrastructure    &lt;a href="https://openverb.org" rel="noopener noreferrer"&gt;https://openverb.org&lt;/a&gt;&lt;br&gt;
PaywallOS   Monetization infrastructure &lt;a href="https://paywallos.openverb.org" rel="noopener noreferrer"&gt;https://paywallos.openverb.org&lt;/a&gt;&lt;br&gt;
FolderCopilot   File management and discovery   &lt;a href="https://foldercopilot.com" rel="noopener noreferrer"&gt;https://foldercopilot.com&lt;/a&gt;&lt;br&gt;
Survey Manager Pro  Surveying and geospatial workflows  &lt;a href="https://surveymanagerapp.com" rel="noopener noreferrer"&gt;https://surveymanagerapp.com&lt;/a&gt;&lt;br&gt;
Elevatr Professional experience documentation   &lt;a href="https://elevatr.dev" rel="noopener noreferrer"&gt;https://elevatr.dev&lt;/a&gt;&lt;br&gt;
Topics Archive  AI-assisted educational music   &lt;a href="https://topicsarchive.openverb.org" rel="noopener noreferrer"&gt;https://topicsarchive.openverb.org&lt;/a&gt;&lt;br&gt;
World Music Atlas   Geographic music discovery  &lt;a href="https://openmusicatlas.org" rel="noopener noreferrer"&gt;https://openmusicatlas.org&lt;/a&gt;&lt;br&gt;
OpenBlog    AI-assisted digital publishing  &lt;a href="https://openblog.openverb.org" rel="noopener noreferrer"&gt;https://openblog.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;About the Author&lt;/p&gt;

&lt;p&gt;I’m Roman Hancel, a geospatial technology professional, software developer, and founder building projects across AI infrastructure, land surveying, professional development, music, and digital publishing.&lt;/p&gt;

&lt;p&gt;My work explores how software can connect different disciplines, make professional knowledge more accessible, and create new opportunities for independent developers and creators.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a World Music Atlas: 203 Places, AI-Generated Music, and a New Way to Explore Geography</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Fri, 25 Sep 2026 13:37:24 +0000</pubDate>
      <link>https://dev.to/openverb/i-built-a-world-music-atlas-203-places-ai-generated-music-and-a-new-way-to-explore-geography-2gb0</link>
      <guid>https://dev.to/openverb/i-built-a-world-music-atlas-203-places-ai-generated-music-and-a-new-way-to-explore-geography-2gb0</guid>
      <description>&lt;p&gt;What started as an experiment in combining geography and AI-assisted music production became a born-digital musical atlas covering 203 places around the world.&lt;/p&gt;

&lt;p&gt;🌍 Explore the project: &lt;a href="https://openmusicatlas.org" rel="noopener noreferrer"&gt;https://openmusicatlas.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Idea&lt;/p&gt;

&lt;p&gt;I’ve always been interested in the intersection of geography, technology, and how people understand the world.&lt;/p&gt;

&lt;p&gt;As a geospatial developer, I spend a lot of time thinking about how geographic information can be represented, organized, and explored.&lt;/p&gt;

&lt;p&gt;Maps are one of the most powerful tools we have for understanding our planet.&lt;/p&gt;

&lt;p&gt;But what happens when we introduce music into that experience?&lt;/p&gt;

&lt;p&gt;What would it look like to build a musical atlas where someone could select a country and listen to a musical interpretation inspired by that place?&lt;/p&gt;

&lt;p&gt;That question eventually led me to build the World Music Atlas.&lt;/p&gt;

&lt;p&gt;The project combines geography, AI-assisted music production, digital archives, and web development into an interactive experience.&lt;/p&gt;

&lt;p&gt;The initial collection now represents 203 places around the world.&lt;/p&gt;

&lt;p&gt;From an Educational Music Archive to a Global Atlas&lt;/p&gt;

&lt;p&gt;Before building the World Music Atlas, I had been developing another project called Topics Archive⁠￼.&lt;/p&gt;

&lt;p&gt;Topics Archive explores how AI-assisted music can be used to organize and communicate knowledge.&lt;/p&gt;

&lt;p&gt;The platform includes musical collections exploring subjects such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Historical biographies&lt;/li&gt;
&lt;li&gt;Biblical narratives&lt;/li&gt;
&lt;li&gt;Geography and world cultures&lt;/li&gt;
&lt;li&gt;Inventions and scientific developments&lt;/li&gt;
&lt;li&gt;FIFA World Cup history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying idea is that music can become another interface for learning.&lt;/p&gt;

&lt;p&gt;Instead of treating songs exclusively as entertainment, we can also organize them into educational and thematic archives.&lt;/p&gt;

&lt;p&gt;The World Music Atlas emerged from that broader experiment.&lt;/p&gt;

&lt;p&gt;I wanted to take one of those collections and build a dedicated geographic experience around it.&lt;/p&gt;

&lt;p&gt;Not simply a playlist of countries.&lt;/p&gt;

&lt;p&gt;An actual musical atlas.&lt;/p&gt;

&lt;p&gt;The 2026 Founding Edition&lt;/p&gt;

&lt;p&gt;The first major milestone was establishing a collection representing the world.&lt;/p&gt;

&lt;p&gt;The resulting 2026 Founding Edition includes 203 places, covering 195 countries and eight additional territories.&lt;/p&gt;

&lt;p&gt;Each location has an associated musical work inspired by that place.&lt;/p&gt;

&lt;p&gt;The atlas provides a geographic interface for discovering these works and exploring the collection.&lt;/p&gt;

&lt;p&gt;The experience connects three elements:&lt;/p&gt;

&lt;p&gt;Place → Music → Discovery&lt;/p&gt;

&lt;p&gt;A user can begin with a geographic location, discover its associated musical work, and explore additional places through the atlas.&lt;/p&gt;

&lt;p&gt;The objective is not to claim that an AI-generated song represents the definitive musical identity of a country.&lt;/p&gt;

&lt;p&gt;Instead, the collection offers creative musical interpretations inspired by geography, culture, history, and place.&lt;/p&gt;

&lt;p&gt;This distinction is important.&lt;/p&gt;

&lt;p&gt;AI-assisted musical interpretation should not be confused with authentic documentation of a community’s traditional music.&lt;/p&gt;

&lt;p&gt;The World Music Atlas is a curated digital creation, not an ethnomusicological authority.&lt;/p&gt;

&lt;p&gt;Building the Atlas as a Software Platform&lt;/p&gt;

&lt;p&gt;One of my goals was to make the project more than a collection of songs.&lt;/p&gt;

&lt;p&gt;I wanted to establish a foundation that could support future editions, geographic expansion, and developer integrations.&lt;/p&gt;

&lt;p&gt;The website is built using Next.js and deployed through Vercel.&lt;/p&gt;

&lt;p&gt;The musical collection originated within Topics Archive, with the atlas accessing its underlying data through a read-only database connection.&lt;/p&gt;

&lt;p&gt;This allowed me to establish a dedicated geographic experience without unnecessarily duplicating the existing archive.&lt;/p&gt;

&lt;p&gt;The platform includes several important components.&lt;/p&gt;

&lt;p&gt;Geographic Exploration&lt;/p&gt;

&lt;p&gt;The /explore experience provides an entry point into the collection.&lt;/p&gt;

&lt;p&gt;Users can discover musical works through geographic locations rather than relying exclusively on conventional music discovery methods such as artist names, albums, or genres.&lt;/p&gt;

&lt;p&gt;This introduces another way of thinking about music interfaces.&lt;/p&gt;

&lt;p&gt;A location can become the primary discovery mechanism.&lt;/p&gt;

&lt;p&gt;Place Pages&lt;/p&gt;

&lt;p&gt;Individual place pages provide dedicated destinations for the musical works associated with particular geographic locations.&lt;/p&gt;

&lt;p&gt;For example, the atlas includes locations such as Jamaica, Haiti, France, Japan, Brazil, and Bangladesh.&lt;/p&gt;

&lt;p&gt;These pages establish a foundation for future geographic and cultural context.&lt;/p&gt;

&lt;p&gt;Curatorial Policy&lt;/p&gt;

&lt;p&gt;The project also includes a curatorial policy.&lt;/p&gt;

&lt;p&gt;When building an AI-assisted cultural collection, it is important to distinguish creative interpretation from documented cultural representation.&lt;/p&gt;

&lt;p&gt;The atlas is intended to support curiosity and discovery while remaining transparent about the nature of its musical works.&lt;/p&gt;

&lt;p&gt;Annual Editions&lt;/p&gt;

&lt;p&gt;Rather than continuously modifying one collection without preserving its history, I introduced the concept of editions.&lt;/p&gt;

&lt;p&gt;The initial collection is identified as the 2026 Founding Edition.&lt;/p&gt;

&lt;p&gt;Future editions could explore different musical styles, geographic scales, or curatorial approaches.&lt;/p&gt;

&lt;p&gt;This also creates opportunities to preserve earlier versions of the project as distinct digital artifacts.&lt;/p&gt;

&lt;p&gt;Building a Developer SDK&lt;/p&gt;

&lt;p&gt;Another important part of the project is making the atlas accessible to developers.&lt;/p&gt;

&lt;p&gt;I published an initial TypeScript package:&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/openverb"&gt;@openverb&lt;/a&gt;/music-atlas&lt;/p&gt;

&lt;p&gt;The package establishes a foundation for integrating World Music Atlas functionality into other applications.&lt;/p&gt;

&lt;p&gt;npm install &lt;a class="mentioned-user" href="https://dev.to/openverb"&gt;@openverb&lt;/a&gt;/music-atlas&lt;/p&gt;

&lt;p&gt;The initial SDK supports modern JavaScript environments and is designed around lightweight integration.&lt;/p&gt;

&lt;p&gt;It provides a starting point for building applications that interact with the atlas beyond the primary website.&lt;/p&gt;

&lt;p&gt;Some potential applications include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive geographic experiences&lt;/li&gt;
&lt;li&gt;Educational applications&lt;/li&gt;
&lt;li&gt;Digital exhibitions&lt;/li&gt;
&lt;li&gt;Music discovery interfaces&lt;/li&gt;
&lt;li&gt;Geographic storytelling platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is particularly interesting to me because I also work on OpenVerb, an open execution layer for AI actions.&lt;/p&gt;

&lt;p&gt;The broader goal across these projects is to build software that can be reused and extended rather than existing exclusively as isolated applications.&lt;/p&gt;

&lt;p&gt;Why Geography and Music?&lt;/p&gt;

&lt;p&gt;Geography is often taught visually.&lt;/p&gt;

&lt;p&gt;Maps, satellite imagery, photographs, charts, and spatial datasets help us understand the world.&lt;/p&gt;

&lt;p&gt;But geographic understanding is not limited to visual information.&lt;/p&gt;

&lt;p&gt;Places are also associated with language, sound, stories, traditions, and human experiences.&lt;/p&gt;

&lt;p&gt;Music offers another way to engage with geographic subjects.&lt;/p&gt;

&lt;p&gt;Imagine an educational experience where students can explore countries on a map, listen to musical interpretations, and then investigate the languages, history, and cultural traditions of those places.&lt;/p&gt;

&lt;p&gt;The music becomes an entry point.&lt;/p&gt;

&lt;p&gt;The geography provides context.&lt;/p&gt;

&lt;p&gt;The combination encourages exploration.&lt;/p&gt;

&lt;p&gt;This is where I see the broader opportunity for projects like the World Music Atlas.&lt;/p&gt;

&lt;p&gt;AI-assisted music can become a component of interactive knowledge systems, not simply another category of generated content.&lt;/p&gt;

&lt;p&gt;What’s Next?&lt;/p&gt;

&lt;p&gt;The 2026 Founding Edition establishes the initial geographic collection.&lt;/p&gt;

&lt;p&gt;But the architectural possibilities extend much further.&lt;/p&gt;

&lt;p&gt;Future expansions could include cities, capitals, regions, rivers, lakes, seas, and oceans.&lt;/p&gt;

&lt;p&gt;There are also opportunities to explore different musical interpretations of the same places across multiple editions.&lt;/p&gt;

&lt;p&gt;On the developer side, I want to continue expanding the SDK and the ways geographic music collections can be integrated into other applications.&lt;/p&gt;

&lt;p&gt;The broader vision is a platform where geography, music, storytelling, and software come together to create new forms of digital cultural experiences.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Building the World Music Atlas reinforced something I’ve been exploring across several of my software projects:&lt;/p&gt;

&lt;p&gt;The most interesting applications of generative AI may not be the generated artifacts themselves, but the systems we build around them.&lt;/p&gt;

&lt;p&gt;A generated song is one artifact.&lt;/p&gt;

&lt;p&gt;A curated musical collection is another level.&lt;/p&gt;

&lt;p&gt;A geographic interface that organizes those works into an explorable atlas introduces an entirely different experience.&lt;/p&gt;

&lt;p&gt;And a developer SDK creates opportunities for that experience to extend into other applications.&lt;/p&gt;

&lt;p&gt;The World Music Atlas is an experiment in what becomes possible when those layers come together.&lt;/p&gt;

&lt;p&gt;The world is not just something we can map.&lt;/p&gt;

&lt;p&gt;It’s also something we can explore through sound.&lt;/p&gt;

&lt;p&gt;🌍 Explore the World Music Atlas: &lt;a href="https://openmusicatlas.org" rel="noopener noreferrer"&gt;https://openmusicatlas.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎵 Explore Topics Archive: &lt;a href="https://topicsarchive.openverb.org" rel="noopener noreferrer"&gt;https://topicsarchive.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💻 Developer SDK: &lt;a href="https://www.npmjs.com/package/@openverb/music-atlas" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@openverb/music-atlas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;I’m Roman Hancel, a geospatial developer and creator of the World Music Atlas, Topics Archive, OpenVerb, and several other software projects exploring the intersection of geography, artificial intelligence, and digital infrastructure.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built Semantic Monetization Into SaaS With OpenVerb + PaywallOS</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Mon, 24 Aug 2026 14:12:42 +0000</pubDate>
      <link>https://dev.to/openverb/how-i-built-semantic-monetization-into-saas-with-openverb-paywallos-1aoj</link>
      <guid>https://dev.to/openverb/how-i-built-semantic-monetization-into-saas-with-openverb-paywallos-1aoj</guid>
      <description>&lt;p&gt;Most SaaS paywalls are still implemented as scattered conditional logic.&lt;/p&gt;

&lt;p&gt;You start with something simple:&lt;/p&gt;

&lt;p&gt;if (user.isPaid) {&lt;br&gt;
  enableExport()&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Then the product grows.&lt;/p&gt;

&lt;p&gt;Now you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free users&lt;/li&gt;
&lt;li&gt;Pro users&lt;/li&gt;
&lt;li&gt;Business users&lt;/li&gt;
&lt;li&gt;usage limits&lt;/li&gt;
&lt;li&gt;feature-specific restrictions&lt;/li&gt;
&lt;li&gt;trials&lt;/li&gt;
&lt;li&gt;team permissions&lt;/li&gt;
&lt;li&gt;billing state&lt;/li&gt;
&lt;li&gt;upgrade prompts&lt;/li&gt;
&lt;li&gt;API enforcement&lt;/li&gt;
&lt;li&gt;backend authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before long, monetization logic is spread across frontend components, API routes, middleware, database checks, and billing code.&lt;/p&gt;

&lt;p&gt;That is the problem I wanted to solve with PaywallOS.&lt;/p&gt;

&lt;p&gt;PaywallOS is an AI-powered semantic monetization and paywall platform built on top of OpenVerb, an open execution layer for AI actions.&lt;/p&gt;

&lt;p&gt;The core idea is simple:&lt;/p&gt;

&lt;p&gt;Instead of monetizing pages, monetize actions.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Problem With Traditional Paywalls&lt;/p&gt;

&lt;p&gt;Traditional SaaS products often think in terms of routes or features.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;/dashboard → Free&lt;br&gt;
/reports → Pro&lt;br&gt;
/admin → Business&lt;/p&gt;

&lt;p&gt;That model works for some products, but it becomes limiting when the same interface contains actions that belong to different pricing tiers.&lt;/p&gt;

&lt;p&gt;Imagine a data platform where every user can open the dashboard.&lt;/p&gt;

&lt;p&gt;A Free user might be able to:&lt;/p&gt;

&lt;p&gt;view_data&lt;br&gt;
search_records&lt;br&gt;
create_project&lt;/p&gt;

&lt;p&gt;A Pro user might additionally have access to:&lt;/p&gt;

&lt;p&gt;export_data&lt;br&gt;
generate_report&lt;br&gt;
ai_suggestions&lt;/p&gt;

&lt;p&gt;And a Business user might unlock:&lt;/p&gt;

&lt;p&gt;bulk_export&lt;br&gt;
team_management&lt;br&gt;
advanced_analytics&lt;/p&gt;

&lt;p&gt;The page itself is not really what you are selling.&lt;/p&gt;

&lt;p&gt;The capabilities are.&lt;/p&gt;

&lt;p&gt;That is where semantic monetization becomes useful.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Treating Product Features as Verbs&lt;/p&gt;

&lt;p&gt;OpenVerb is built around the idea that software actions can be represented as semantic verbs.&lt;/p&gt;

&lt;p&gt;Instead of thinking about a button as merely a UI component:&lt;/p&gt;

&lt;p&gt;Export&lt;/p&gt;

&lt;p&gt;I can describe what the button actually does:&lt;/p&gt;

&lt;p&gt;export_data&lt;/p&gt;

&lt;p&gt;The same approach works for many different capabilities:&lt;/p&gt;

&lt;p&gt;generate_report&lt;br&gt;
create_workspace&lt;br&gt;
invite_member&lt;br&gt;
ai_suggestions&lt;br&gt;
download_pdf&lt;br&gt;
run_analysis&lt;br&gt;
publish_project&lt;/p&gt;

&lt;p&gt;These become part of the product’s semantic action layer.&lt;/p&gt;

&lt;p&gt;PaywallOS can then map those verbs to commercial rules.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;tiers:&lt;br&gt;
  free:&lt;br&gt;
    actions:&lt;br&gt;
      - view_data&lt;br&gt;
      - search_records&lt;br&gt;
  pro:&lt;br&gt;
    actions:&lt;br&gt;
      - view_data&lt;br&gt;
      - search_records&lt;br&gt;
      - export_data&lt;br&gt;
      - generate_report&lt;br&gt;
      - ai_suggestions&lt;br&gt;
  business:&lt;br&gt;
    actions:&lt;br&gt;
      - "*"&lt;/p&gt;

&lt;p&gt;Now the pricing model is expressed in terms of what users are allowed to do.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Frontend Integration&lt;/p&gt;

&lt;p&gt;The frontend can remain relatively simple.&lt;/p&gt;

&lt;p&gt;Initialize PaywallOS with the current application and user context:&lt;/p&gt;

&lt;p&gt;initPaywallOS(&lt;br&gt;
  apiKey,&lt;br&gt;
  appId,&lt;br&gt;
  userId,&lt;br&gt;
  userTier&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;Then actionable components can be tagged with semantic verbs:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Export&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
  Generate Report&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
  AI Suggestions&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The important part is that the UI does not need to contain the full pricing policy.&lt;/p&gt;

&lt;p&gt;The component simply declares intent.&lt;/p&gt;

&lt;p&gt;verb="export_data"&lt;/p&gt;

&lt;p&gt;PaywallOS determines whether that action is allowed.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;What Happens When the User Clicks?&lt;/p&gt;

&lt;p&gt;Suppose a Free user clicks:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Export&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The application can send an authorization request conceptually like:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "userId": "user_123",&lt;br&gt;
  "tier": "free",&lt;br&gt;
  "verb": "export_data"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;PaywallOS evaluates the request.&lt;/p&gt;

&lt;p&gt;The result might be:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "allowed": false,&lt;br&gt;
  "reason": "tier_required",&lt;br&gt;
  "requiredTier": "pro"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The frontend can then show the appropriate upgrade experience.&lt;/p&gt;

&lt;p&gt;For an authorized user:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "allowed": true&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The application continues with the action.&lt;/p&gt;

&lt;p&gt;This creates a clean separation between:&lt;/p&gt;

&lt;p&gt;User intent&lt;br&gt;
    ↓&lt;br&gt;
Monetization policy&lt;br&gt;
    ↓&lt;br&gt;
Authorization&lt;br&gt;
    ↓&lt;br&gt;
Execution&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Centralizing Monetization Logic&lt;/p&gt;

&lt;p&gt;One of my main goals with PaywallOS was eliminating pricing logic scattered throughout an application.&lt;/p&gt;

&lt;p&gt;Without a centralized system, you eventually get code like:&lt;/p&gt;

&lt;p&gt;if (&lt;br&gt;
  user.plan === "pro" ||&lt;br&gt;
  user.plan === "business" ||&lt;br&gt;
  user.isAdmin ||&lt;br&gt;
  user.hasLegacyAccess&lt;br&gt;
) {&lt;br&gt;
  // ...&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Then another component has slightly different logic.&lt;/p&gt;

&lt;p&gt;And another API endpoint checks something else.&lt;/p&gt;

&lt;p&gt;Eventually nobody is completely sure which rules are authoritative.&lt;/p&gt;

&lt;p&gt;With an action-centric model, the product can have a centralized policy configuration:&lt;/p&gt;

&lt;p&gt;actions:&lt;br&gt;
  export_data:&lt;br&gt;
    minimumTier: pro&lt;br&gt;
  generate_report:&lt;br&gt;
    minimumTier: pro&lt;br&gt;
    monthlyLimit: 50&lt;br&gt;
  ai_suggestions:&lt;br&gt;
    minimumTier: pro&lt;br&gt;
    monthlyLimit: 100&lt;br&gt;
  bulk_export:&lt;br&gt;
    minimumTier: business&lt;br&gt;
  team_management:&lt;br&gt;
    minimumTier: business&lt;/p&gt;

&lt;p&gt;Now monetization becomes configuration rather than duplicated application logic.&lt;/p&gt;

&lt;p&gt;That is a major architectural difference.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Usage-Based Monetization&lt;/p&gt;

&lt;p&gt;Tier access is only one part of the problem.&lt;/p&gt;

&lt;p&gt;AI products especially are increasingly usage-based.&lt;/p&gt;

&lt;p&gt;A Pro subscription might include:&lt;/p&gt;

&lt;p&gt;100 AI generations / month&lt;br&gt;
50 reports / month&lt;br&gt;
10 exports / day&lt;/p&gt;

&lt;p&gt;That means authorization needs to understand more than:&lt;/p&gt;

&lt;p&gt;Does this user have Pro?&lt;/p&gt;

&lt;p&gt;It may also need to ask:&lt;/p&gt;

&lt;p&gt;Has this user reached the action limit?&lt;/p&gt;

&lt;p&gt;The action model makes this natural.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;ai_suggestions:&lt;br&gt;
  minimumTier: pro&lt;br&gt;
  limits:&lt;br&gt;
    monthly: 100&lt;/p&gt;

&lt;p&gt;An authorization result could then return:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "allowed": false,&lt;br&gt;
  "reason": "usage_limit",&lt;br&gt;
  "limit": 100,&lt;br&gt;
  "used": 100,&lt;br&gt;
  "resetAt": "2026-09-01T00:00:00Z"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The product can respond accordingly.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Stripe Handles Billing. PaywallOS Handles Meaning.&lt;/p&gt;

&lt;p&gt;Stripe is excellent at managing the financial side of subscriptions.&lt;/p&gt;

&lt;p&gt;It understands things like:&lt;/p&gt;

&lt;p&gt;customer&lt;br&gt;
subscription&lt;br&gt;
price&lt;br&gt;
invoice&lt;br&gt;
payment&lt;/p&gt;

&lt;p&gt;But your application still needs to understand what those billing states mean inside the product.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Stripe price_123&lt;/p&gt;

&lt;p&gt;does not inherently mean:&lt;/p&gt;

&lt;p&gt;allow export_data&lt;br&gt;
allow generate_report&lt;br&gt;
deny bulk_export&lt;br&gt;
limit ai_suggestions to 100/month&lt;/p&gt;

&lt;p&gt;That semantic mapping belongs to the application layer.&lt;/p&gt;

&lt;p&gt;PaywallOS sits between billing state and product capability.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Stripe&lt;br&gt;
  ↓&lt;br&gt;
Subscription state&lt;br&gt;
  ↓&lt;br&gt;
PaywallOS&lt;br&gt;
  ↓&lt;br&gt;
Semantic action policy&lt;br&gt;
  ↓&lt;br&gt;
Application&lt;/p&gt;

&lt;p&gt;Stripe remains the billing infrastructure.&lt;/p&gt;

&lt;p&gt;PaywallOS interprets that billing state as executable product permissions.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why OpenVerb Fits This Model&lt;/p&gt;

&lt;p&gt;OpenVerb treats actions as structured verbs.&lt;/p&gt;

&lt;p&gt;A verb can define things such as:&lt;/p&gt;

&lt;p&gt;name&lt;br&gt;
description&lt;br&gt;
input schema&lt;br&gt;
output schema&lt;br&gt;
policy&lt;br&gt;
execution behavior&lt;br&gt;
receipt&lt;/p&gt;

&lt;p&gt;That architecture maps naturally to monetization.&lt;/p&gt;

&lt;p&gt;If the system already understands:&lt;/p&gt;

&lt;p&gt;export_data&lt;/p&gt;

&lt;p&gt;as an action, then commercial policy can become another policy applied to that action.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Intent&lt;br&gt;
  ↓&lt;br&gt;
Verb&lt;br&gt;
  ↓&lt;br&gt;
Authentication&lt;br&gt;
  ↓&lt;br&gt;
Monetization policy&lt;br&gt;
  ↓&lt;br&gt;
Usage policy&lt;br&gt;
  ↓&lt;br&gt;
Execution&lt;br&gt;
  ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;This is especially interesting for AI systems.&lt;/p&gt;

&lt;p&gt;An AI agent may decide that it wants to perform:&lt;/p&gt;

&lt;p&gt;generate_report&lt;/p&gt;

&lt;p&gt;The runtime should still be able to determine whether that user is commercially authorized to execute the verb.&lt;/p&gt;

&lt;p&gt;The AI does not need to understand the entire pricing implementation.&lt;/p&gt;

&lt;p&gt;It simply expresses the intended action.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;AI-Native Paywall Configuration&lt;/p&gt;

&lt;p&gt;Another area I am exploring with PaywallOS is using AI to generate the initial action library.&lt;/p&gt;

&lt;p&gt;A developer could describe an application:&lt;/p&gt;

&lt;p&gt;My SaaS product lets users create projects, run AI analysis,&lt;br&gt;
export reports, invite teammates, and perform bulk exports.&lt;/p&gt;

&lt;p&gt;An AI-assisted setup process could propose:&lt;/p&gt;

&lt;p&gt;create_project&lt;br&gt;
run_ai_analysis&lt;br&gt;
export_report&lt;br&gt;
invite_member&lt;br&gt;
bulk_export&lt;/p&gt;

&lt;p&gt;It could then suggest an initial tier structure:&lt;/p&gt;

&lt;p&gt;Free:&lt;br&gt;
  create_project&lt;br&gt;
Pro:&lt;br&gt;
  run_ai_analysis&lt;br&gt;
  export_report&lt;br&gt;
Business:&lt;br&gt;
  invite_member&lt;br&gt;
  bulk_export&lt;/p&gt;

&lt;p&gt;The developer still controls the final policy.&lt;/p&gt;

&lt;p&gt;But AI can dramatically reduce the amount of configuration required to get started.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Backend Still Has to Enforce It&lt;/p&gt;

&lt;p&gt;Frontend paywalls should never be treated as security boundaries.&lt;/p&gt;

&lt;p&gt;Hiding or disabling a button is useful UX, but users can still call APIs directly.&lt;/p&gt;

&lt;p&gt;That means the same semantic authorization needs to happen on the backend.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;app.post("/api/export", async (req, res) =&amp;gt; {&lt;br&gt;
  const decision = await paywall.authorize({&lt;br&gt;
    userId: req.user.id,&lt;br&gt;
    verb: "export_data"&lt;br&gt;
  })&lt;br&gt;
  if (!decision.allowed) {&lt;br&gt;
    return res.status(403).json(decision)&lt;br&gt;
  }&lt;br&gt;
  return exportData(req, res)&lt;br&gt;
})&lt;/p&gt;

&lt;p&gt;The frontend improves the experience.&lt;/p&gt;

&lt;p&gt;The backend provides the enforcement.&lt;/p&gt;

&lt;p&gt;Both systems use the same semantic action.&lt;/p&gt;

&lt;p&gt;That prevents the frontend and backend from developing separate interpretations of the pricing model.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;A Better Developer Mental Model&lt;/p&gt;

&lt;p&gt;The biggest change is not really technical.&lt;/p&gt;

&lt;p&gt;It is conceptual.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;Which page does this plan unlock?&lt;/p&gt;

&lt;p&gt;I want developers to ask:&lt;/p&gt;

&lt;p&gt;Which actions can this user perform?&lt;/p&gt;

&lt;p&gt;That creates a more flexible monetization model.&lt;/p&gt;

&lt;p&gt;The same action can appear:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;on multiple pages&lt;/li&gt;
&lt;li&gt;in a mobile app&lt;/li&gt;
&lt;li&gt;in a desktop application&lt;/li&gt;
&lt;li&gt;through an API&lt;/li&gt;
&lt;li&gt;inside an AI agent&lt;/li&gt;
&lt;li&gt;through an automation workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The commercial rule remains attached to the action.&lt;/p&gt;

&lt;p&gt;Not the interface.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Where This Could Go&lt;/p&gt;

&lt;p&gt;Action-based monetization opens up some interesting possibilities.&lt;/p&gt;

&lt;p&gt;A product could eventually define:&lt;/p&gt;

&lt;p&gt;generate_image → $0.10&lt;br&gt;
run_analysis → $1.00&lt;br&gt;
export_dataset → Pro&lt;br&gt;
bulk_processing → Business&lt;br&gt;
premium_model → 5 credits&lt;/p&gt;

&lt;p&gt;The same semantic execution layer could support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;subscriptions&lt;/li&gt;
&lt;li&gt;credits&lt;/li&gt;
&lt;li&gt;usage-based pricing&lt;/li&gt;
&lt;li&gt;per-action pricing&lt;/li&gt;
&lt;li&gt;API metering&lt;/li&gt;
&lt;li&gt;AI agent permissions&lt;/li&gt;
&lt;li&gt;enterprise feature controls&lt;/li&gt;
&lt;li&gt;marketplace actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, monetization becomes part of application architecture rather than a layer added after the product is built.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;The main idea behind PaywallOS is straightforward:&lt;/p&gt;

&lt;p&gt;Product capabilities should be first-class objects in the monetization system.&lt;/p&gt;

&lt;p&gt;Instead of spreading pricing logic across dozens of components:&lt;/p&gt;

&lt;p&gt;if paid&lt;br&gt;
if pro&lt;br&gt;
if business&lt;br&gt;
if credits &amp;gt; 0&lt;/p&gt;

&lt;p&gt;describe the action:&lt;/p&gt;

&lt;p&gt;export_data&lt;/p&gt;

&lt;p&gt;Then let a centralized policy determine:&lt;/p&gt;

&lt;p&gt;Who can execute it?&lt;br&gt;
Which tier includes it?&lt;br&gt;
How often can it run?&lt;br&gt;
Does it consume usage?&lt;br&gt;
Should an upgrade be shown?&lt;/p&gt;

&lt;p&gt;OpenVerb provides the semantic action model.&lt;/p&gt;

&lt;p&gt;Stripe can provide the billing infrastructure.&lt;/p&gt;

&lt;p&gt;PaywallOS connects those pieces into an action-centric monetization layer.&lt;/p&gt;

&lt;p&gt;That is the architecture I am experimenting with at:&lt;/p&gt;

&lt;p&gt;paywallos.openverb.org&lt;/p&gt;

&lt;p&gt;If you are building SaaS, AI tools, agents, or usage-based products, I think action-level monetization is going to become increasingly useful as applications become more dynamic and less page-centric.&lt;/p&gt;

&lt;h1&gt;
  
  
  opensource #saas #ai #webdev #typescript
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>PaywallOS: What an OpenVerb Domain Implementation Looks Like</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Thu, 20 Aug 2026 14:56:25 +0000</pubDate>
      <link>https://dev.to/openverb/paywallos-what-an-openverb-domain-implementation-looks-like-4827</link>
      <guid>https://dev.to/openverb/paywallos-what-an-openverb-domain-implementation-looks-like-4827</guid>
      <description>&lt;p&gt;PaywallOS: What an OpenVerb Domain Implementation Looks Like&lt;/p&gt;

&lt;p&gt;This week, I want to show one of the clearest examples of what OpenVerb can look like when it is applied to a real software domain.&lt;/p&gt;

&lt;p&gt;That example is PaywallOS.&lt;/p&gt;

&lt;p&gt;OpenVerb provides a common way to define actions as verbs, validate inputs, apply policies, execute actions, and return receipts.&lt;/p&gt;

&lt;p&gt;PaywallOS takes that model and applies it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;subscription tiers&lt;/li&gt;
&lt;li&gt;entitlements&lt;/li&gt;
&lt;li&gt;feature access&lt;/li&gt;
&lt;li&gt;usage limits&lt;/li&gt;
&lt;li&gt;upgrade decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is that PaywallOS is not a separate idea from OpenVerb.&lt;/p&gt;

&lt;p&gt;It is an example of what can be built on top of the OpenVerb execution model.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;Most SaaS applications start with simple subscription checks.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;p&gt;if (user.plan === "pro") {&lt;br&gt;
  exportData()&lt;br&gt;
} else {&lt;br&gt;
  showUpgradeModal()&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;That works at first.&lt;/p&gt;

&lt;p&gt;Then the product grows.&lt;/p&gt;

&lt;p&gt;Now you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free, Pro, and Business tiers&lt;/li&gt;
&lt;li&gt;usage limits&lt;/li&gt;
&lt;li&gt;unlimited features&lt;/li&gt;
&lt;li&gt;AI quotas&lt;/li&gt;
&lt;li&gt;custom entitlements&lt;/li&gt;
&lt;li&gt;different upgrade paths&lt;/li&gt;
&lt;li&gt;enterprise exceptions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Soon, feature-access logic starts spreading across the codebase.&lt;/p&gt;

&lt;p&gt;function handleExport() {&lt;br&gt;
  if (!user.subscription) {&lt;br&gt;
    showUpgradeModal()&lt;br&gt;
  } else if (user.plan === "free") {&lt;br&gt;
    showUpgradeModal()&lt;br&gt;
  } else if (&lt;br&gt;
    user.plan === "pro" &amp;amp;&amp;amp;&lt;br&gt;
    exportsThisMonth &amp;gt;= 50&lt;br&gt;
  ) {&lt;br&gt;
    showLimitModal()&lt;br&gt;
  } else {&lt;br&gt;
    exportData()&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;The application now has to understand pricing logic everywhere.&lt;/p&gt;

&lt;p&gt;PaywallOS approaches this differently.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Step 1: Define Product Capabilities as Verbs&lt;/p&gt;

&lt;p&gt;Instead of thinking first about buttons and routes, define the actual action.&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "verbs": [&lt;br&gt;
    {&lt;br&gt;
      "name": "dashboard.view",&lt;br&gt;
      "description": "Access the analytics dashboard"&lt;br&gt;
    },&lt;br&gt;
    {&lt;br&gt;
      "name": "data.export",&lt;br&gt;
      "description": "Export reports and raw data"&lt;br&gt;
    },&lt;br&gt;
    {&lt;br&gt;
      "name": "ai.insights",&lt;br&gt;
      "description": "Generate automated AI insights"&lt;br&gt;
    },&lt;br&gt;
    {&lt;br&gt;
      "name": "ai.forecast",&lt;br&gt;
      "description": "Generate predictive forecasts"&lt;br&gt;
    }&lt;br&gt;
  ]&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Now these actions have stable identities.&lt;/p&gt;

&lt;p&gt;data.export means one thing regardless of where the button appears.&lt;/p&gt;

&lt;p&gt;ai.insights means one thing regardless of which frontend component triggers it.&lt;/p&gt;

&lt;p&gt;That is the OpenVerb idea.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Step 2: Connect Verbs to Tiers&lt;/p&gt;

&lt;p&gt;Now define which subscription tiers can execute which verbs.&lt;/p&gt;

&lt;p&gt;Free&lt;/p&gt;

&lt;p&gt;dashboard.view&lt;/p&gt;

&lt;p&gt;Pro&lt;/p&gt;

&lt;p&gt;dashboard.view&lt;br&gt;
data.export&lt;br&gt;
ai.insights&lt;/p&gt;

&lt;p&gt;Business&lt;/p&gt;

&lt;p&gt;dashboard.view&lt;br&gt;
data.export&lt;br&gt;
ai.insights&lt;br&gt;
ai.forecast&lt;br&gt;
team.collaboration&lt;br&gt;
api.custom_keys&lt;br&gt;
support.priority&lt;/p&gt;

&lt;p&gt;At this point, the pricing model becomes much easier to inspect.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;Where in the codebase do we check for Pro?&lt;/p&gt;

&lt;p&gt;you can ask:&lt;/p&gt;

&lt;p&gt;Which verbs does Pro allow?&lt;/p&gt;

&lt;p&gt;That is a much cleaner boundary.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Step 3: Add Usage Policies&lt;/p&gt;

&lt;p&gt;Not every entitlement needs to be unlimited.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;dashboard.view&lt;br&gt;
Free: unlimited&lt;br&gt;
Pro: unlimited&lt;br&gt;
Business: unlimited&lt;br&gt;
data.export&lt;br&gt;
Free: denied&lt;br&gt;
Pro: 50/month&lt;br&gt;
Business: unlimited&lt;br&gt;
ai.insights&lt;br&gt;
Free: denied&lt;br&gt;
Pro: 20/month&lt;br&gt;
Business: unlimited&lt;br&gt;
ai.forecast&lt;br&gt;
Free: denied&lt;br&gt;
Pro: denied&lt;br&gt;
Business: unlimited&lt;/p&gt;

&lt;p&gt;Now the system can answer more than a simple yes or no.&lt;/p&gt;

&lt;p&gt;It can determine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether the action is included&lt;/li&gt;
&lt;li&gt;whether a limit applies&lt;/li&gt;
&lt;li&gt;how much usage remains&lt;/li&gt;
&lt;li&gt;whether the user needs to upgrade&lt;/li&gt;
&lt;li&gt;whether the monthly quota has been reached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Step 4: Let the UI Describe the Action&lt;/p&gt;

&lt;p&gt;The frontend can simply declare what action the user wants to perform.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Export&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
  Generate Insights&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
  Forecast&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Now the UI does not need to understand the entire pricing system.&lt;/p&gt;

&lt;p&gt;It only needs to say:&lt;/p&gt;

&lt;p&gt;The user wants to execute data.export.&lt;/p&gt;

&lt;p&gt;PaywallOS can evaluate the entitlement.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Complete Example&lt;/p&gt;

&lt;p&gt;Suppose Alex is on the Free plan.&lt;/p&gt;

&lt;p&gt;Alex clicks:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Export&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The system evaluates:&lt;/p&gt;

&lt;p&gt;User: Alex&lt;br&gt;
Tier: Free&lt;br&gt;
Verb: data.export&lt;br&gt;
Decision: DENY&lt;br&gt;
Reason:&lt;br&gt;
data.export requires Pro or Business&lt;/p&gt;

&lt;p&gt;The application can show the appropriate upgrade experience.&lt;/p&gt;

&lt;p&gt;Now Alex upgrades to Pro.&lt;/p&gt;

&lt;p&gt;The exact same button remains:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Export&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;But the evaluation changes:&lt;/p&gt;

&lt;p&gt;User: Alex&lt;br&gt;
Tier: Pro&lt;br&gt;
Verb: data.export&lt;br&gt;
Usage:&lt;br&gt;
17 / 50&lt;br&gt;
Decision:&lt;br&gt;
ALLOW&lt;/p&gt;

&lt;p&gt;The export runs.&lt;/p&gt;

&lt;p&gt;Usage becomes:&lt;/p&gt;

&lt;p&gt;18 / 50&lt;/p&gt;

&lt;p&gt;No new conditional.&lt;/p&gt;

&lt;p&gt;No change to the button.&lt;/p&gt;

&lt;p&gt;No duplicated subscription logic.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;When the Limit Is Reached&lt;/p&gt;

&lt;p&gt;Eventually Alex reaches:&lt;/p&gt;

&lt;p&gt;50 / 50&lt;/p&gt;

&lt;p&gt;The next request can return:&lt;/p&gt;

&lt;p&gt;Decision: DENY&lt;br&gt;
Reason:&lt;br&gt;
monthly_limit_reached&lt;br&gt;
Limit:&lt;br&gt;
50&lt;/p&gt;

&lt;p&gt;The system can then show a quota message instead of an upgrade message.&lt;/p&gt;

&lt;p&gt;Same verb.&lt;/p&gt;

&lt;p&gt;Different policy result.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Same Pattern Works for AI Features&lt;/p&gt;

&lt;p&gt;Consider:&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
  Analyze Dataset&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;A Free user:&lt;/p&gt;

&lt;p&gt;DENY&lt;br&gt;
Upgrade required&lt;/p&gt;

&lt;p&gt;A Pro user with 7 of 20 uses consumed:&lt;/p&gt;

&lt;p&gt;ALLOW&lt;br&gt;
Usage: 8 / 20&lt;/p&gt;

&lt;p&gt;A Pro user at the limit:&lt;/p&gt;

&lt;p&gt;DENY&lt;br&gt;
Monthly limit reached&lt;/p&gt;

&lt;p&gt;A Business user:&lt;/p&gt;

&lt;p&gt;ALLOW&lt;br&gt;
Unlimited&lt;/p&gt;

&lt;p&gt;The feature remains:&lt;/p&gt;

&lt;p&gt;ai.insights&lt;/p&gt;

&lt;p&gt;The policy determines whether it can execute.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Architecture&lt;/p&gt;

&lt;p&gt;The complete flow looks like this:&lt;/p&gt;

&lt;p&gt;UI&lt;br&gt;
verb="ai.insights"&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
What action is being requested?&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;PaywallOS&lt;br&gt;
Who is requesting it?&lt;br&gt;
What tier are they on?&lt;br&gt;
Is the verb included?&lt;br&gt;
Does it have a limit?&lt;br&gt;
How much has been used?&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Decision&lt;br&gt;
ALLOW&lt;br&gt;
DENY&lt;br&gt;
UPGRADE&lt;br&gt;
LIMIT_REACHED&lt;/p&gt;

&lt;p&gt;↓&lt;/p&gt;

&lt;p&gt;Application&lt;br&gt;
Execute the action&lt;br&gt;
or&lt;br&gt;
present the appropriate paywall&lt;/p&gt;

&lt;p&gt;This separation is the important part.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why This Matters Beyond Paywalls&lt;/p&gt;

&lt;p&gt;PaywallOS is interesting because it demonstrates that OpenVerb does not need to directly implement every domain.&lt;/p&gt;

&lt;p&gt;OpenVerb provides a common execution language.&lt;/p&gt;

&lt;p&gt;The domain system adds its own interpretation.&lt;/p&gt;

&lt;p&gt;PaywallOS asks:&lt;/p&gt;

&lt;p&gt;Who is allowed to execute this verb?&lt;/p&gt;

&lt;p&gt;A GIS system could ask:&lt;/p&gt;

&lt;p&gt;Which mapping environment can execute this verb?&lt;/p&gt;

&lt;p&gt;An enterprise agent system could ask:&lt;/p&gt;

&lt;p&gt;Which agent is authorized to execute this verb?&lt;/p&gt;

&lt;p&gt;A workflow engine could ask:&lt;/p&gt;

&lt;p&gt;Is this verb allowed at the current workflow stage?&lt;/p&gt;

&lt;p&gt;A physical-device runtime could ask:&lt;/p&gt;

&lt;p&gt;Which device can execute this action?&lt;/p&gt;

&lt;p&gt;Same execution model.&lt;/p&gt;

&lt;p&gt;Different domain.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;OpenVerb as the Shared Layer&lt;/p&gt;

&lt;p&gt;You can think of the architecture like this:&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
   ↓&lt;br&gt;
PaywallOS&lt;/p&gt;

&lt;p&gt;But that same model could also support:&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
   ↓&lt;br&gt;
GIS execution layer&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
   ↓&lt;br&gt;
CRM execution layer&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
   ↓&lt;br&gt;
Browser automation&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;OpenVerb&lt;br&gt;
   ↓&lt;br&gt;
AI-native IDE&lt;/p&gt;

&lt;p&gt;That is the larger direction.&lt;/p&gt;

&lt;p&gt;OpenVerb defines the common language of execution.&lt;/p&gt;

&lt;p&gt;Domain systems build on top of it.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Bigger Idea&lt;/p&gt;

&lt;p&gt;Traditional software often looks like:&lt;/p&gt;

&lt;p&gt;User clicks button&lt;br&gt;
↓&lt;br&gt;
Application runs custom logic&lt;/p&gt;

&lt;p&gt;An OpenVerb-style system can look more like:&lt;/p&gt;

&lt;p&gt;Human or AI requests an action&lt;br&gt;
↓&lt;br&gt;
Action is represented as a verb&lt;br&gt;
↓&lt;br&gt;
Policy determines whether it can execute&lt;br&gt;
↓&lt;br&gt;
The correct runtime executes it&lt;br&gt;
↓&lt;br&gt;
A receipt describes what happened&lt;/p&gt;

&lt;p&gt;That gives AI systems a structured boundary between:&lt;/p&gt;

&lt;p&gt;deciding what should happen&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;actually making it happen&lt;/p&gt;

&lt;p&gt;PaywallOS is one concrete example of that idea.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Explore It&lt;/p&gt;

&lt;p&gt;PaywallOS:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://paywallos.openverb.org" rel="noopener noreferrer"&gt;https://paywallos.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenVerb:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://openverb.org" rel="noopener noreferrer"&gt;https://openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install:&lt;/p&gt;

&lt;p&gt;npm install openverb&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;pip install openverb&lt;/p&gt;

&lt;p&gt;If you are building AI agents, SaaS platforms, developer tools, automation systems, or domain-specific execution environments, I would be interested to see what this model could look like in your architecture.&lt;/p&gt;

&lt;p&gt;OpenVerb: open execution for AI.&lt;/p&gt;

&lt;h1&gt;
  
  
  OpenVerb #AI #OpenSource #DevTools #AIAgents #SaaS #TypeScript #Python
&lt;/h1&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%2Fs6cebb18zxajh88x7bu6.png" 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%2Fs6cebb18zxajh88x7bu6.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building Topics Archive: What Happens When Generative Media Needs an Archive?</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:48:43 +0000</pubDate>
      <link>https://dev.to/openverb/building-topics-archive-what-happens-when-generative-media-needs-an-archive-f8e</link>
      <guid>https://dev.to/openverb/building-topics-archive-what-happens-when-generative-media-needs-an-archive-f8e</guid>
      <description>&lt;p&gt;We’ve spent enormous effort figuring out how to generate AI media.&lt;/p&gt;

&lt;p&gt;I’ve been thinking about a different problem:&lt;/p&gt;

&lt;p&gt;Where does all of it go?&lt;/p&gt;

&lt;p&gt;If AI makes media effectively unlimited, generation eventually stops being the only interesting problem.&lt;/p&gt;

&lt;p&gt;Organization becomes infrastructure.&lt;/p&gt;

&lt;p&gt;That’s what I’m exploring with Topics Archive.&lt;/p&gt;

&lt;p&gt;From Feeds to Topics&lt;/p&gt;

&lt;p&gt;Most internet media is organized around feeds.&lt;/p&gt;

&lt;p&gt;Creator&lt;br&gt;
  ↓&lt;br&gt;
Post&lt;br&gt;
  ↓&lt;br&gt;
Feed&lt;br&gt;
  ↓&lt;br&gt;
Gone from attention&lt;/p&gt;

&lt;p&gt;Topics Archive explores a different structure:&lt;/p&gt;

&lt;p&gt;Topic&lt;br&gt;
  ↓&lt;br&gt;
Identity&lt;br&gt;
  ↓&lt;br&gt;
Metadata&lt;br&gt;
  ↓&lt;br&gt;
Generated Artifacts&lt;br&gt;
  ↓&lt;br&gt;
Relationships&lt;br&gt;
  ↓&lt;br&gt;
Discovery&lt;/p&gt;

&lt;p&gt;Instead of making the post the primary unit, make the subject persistent.&lt;/p&gt;

&lt;p&gt;A topic could be:&lt;/p&gt;

&lt;p&gt;a person&lt;br&gt;
a country&lt;br&gt;
a city&lt;br&gt;
an animal&lt;br&gt;
a historical event&lt;br&gt;
a Bible story&lt;br&gt;
a soccer match&lt;br&gt;
a scientific concept&lt;/p&gt;

&lt;p&gt;Then generated songs, images, videos, biographies, metadata, and other artifacts can accumulate around it.&lt;/p&gt;

&lt;p&gt;Testing the Model With Music&lt;/p&gt;

&lt;p&gt;I’ve already experimented with the concept through several archives.&lt;/p&gt;

&lt;p&gt;One is the Bible Musical Archive, where stories and subjects become musical artifacts.&lt;/p&gt;

&lt;p&gt;Another is the World Cup Musical Archive, where matches can become persistent topics with generated music associated with them.&lt;/p&gt;

&lt;p&gt;I’ve also built a large biography collection.&lt;/p&gt;

&lt;p&gt;The point isn’t simply:&lt;/p&gt;

&lt;p&gt;AI can make a song about anything.&lt;/p&gt;

&lt;p&gt;We already know generative models can create enormous quantities of media.&lt;/p&gt;

&lt;p&gt;The interesting question is:&lt;/p&gt;

&lt;p&gt;How do we organize generated culture when creating it becomes nearly free?&lt;/p&gt;

&lt;p&gt;The Technical Problem&lt;/p&gt;

&lt;p&gt;A topic-based archive starts resembling a graph more than a traditional music library.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;World Cup&lt;br&gt;
   ↓&lt;br&gt;
Tournament&lt;br&gt;
   ↓&lt;br&gt;
Match&lt;br&gt;
 ↙     ↘&lt;br&gt;
Team A  Team B&lt;br&gt;
   ↓&lt;br&gt;
Location&lt;br&gt;
   ↓&lt;br&gt;
Generated Song&lt;/p&gt;

&lt;p&gt;Now the media is connected to structured entities.&lt;/p&gt;

&lt;p&gt;That opens possibilities around APIs, geographic interfaces, search, recommendation, automated generation pipelines, and programmatic archives.&lt;/p&gt;

&lt;p&gt;Why I Think This Matters&lt;/p&gt;

&lt;p&gt;Generative media is going to produce an enormous amount of cultural material.&lt;/p&gt;

&lt;p&gt;Feeds are optimized for what’s new.&lt;/p&gt;

&lt;p&gt;Archives are optimized for what persists.&lt;/p&gt;

&lt;p&gt;I’m interested in building for the second problem.&lt;/p&gt;

&lt;p&gt;Maybe the next major challenge in generative media isn’t generating another billion artifacts.&lt;/p&gt;

&lt;p&gt;Maybe it’s creating structures that make those artifacts discoverable, contextual, and worth preserving.&lt;/p&gt;

&lt;p&gt;Topics Archive:&lt;br&gt;
&lt;a href="https://topicsarchive.openverb.org" rel="noopener noreferrer"&gt;https://topicsarchive.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  generativeai #musictech #archives #knowledgegraphs #ai
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building OpenVerb: An Open Execution Layer Between AI and Software</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:47:15 +0000</pubDate>
      <link>https://dev.to/openverb/building-openverb-an-open-execution-layer-between-ai-and-software-445o</link>
      <guid>https://dev.to/openverb/building-openverb-an-open-execution-layer-between-ai-and-software-445o</guid>
      <description>&lt;p&gt;The more capable LLMs become, the more interested I am in what happens after reasoning.&lt;/p&gt;

&lt;p&gt;Suppose an AI understands:&lt;/p&gt;

&lt;p&gt;Create a CRM contact for Sarah Chen.&lt;/p&gt;

&lt;p&gt;Understanding the request isn’t the difficult part anymore.&lt;/p&gt;

&lt;p&gt;Execution is.&lt;/p&gt;

&lt;p&gt;That’s the problem behind OpenVerb.&lt;/p&gt;

&lt;p&gt;Actions as Verbs&lt;/p&gt;

&lt;p&gt;OpenVerb represents application capabilities as structured verbs:&lt;/p&gt;

&lt;p&gt;crm.create_contact&lt;br&gt;
email.send&lt;br&gt;
gis.add_layer&lt;br&gt;
file.move&lt;/p&gt;

&lt;p&gt;Instead of giving an AI unrestricted control over software, applications expose known capabilities.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;Intent&lt;br&gt;
  ↓&lt;br&gt;
Verb&lt;br&gt;
  ↓&lt;br&gt;
Schema&lt;br&gt;
  ↓&lt;br&gt;
Policy&lt;br&gt;
  ↓&lt;br&gt;
Executor&lt;br&gt;
  ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;This creates a boundary between intelligence and execution.&lt;/p&gt;

&lt;p&gt;The model determines intent.&lt;/p&gt;

&lt;p&gt;The execution infrastructure determines what that intent is allowed to become.&lt;/p&gt;

&lt;p&gt;The Ecosystem&lt;/p&gt;

&lt;p&gt;OpenVerb started as a protocol and has expanded into a larger developer ecosystem.&lt;/p&gt;

&lt;p&gt;I’ve built or experimented with:&lt;/p&gt;

&lt;p&gt;Protocol&lt;br&gt;
Framework&lt;br&gt;
Runtime&lt;br&gt;
Policy&lt;br&gt;
SDK&lt;br&gt;
CLI&lt;br&gt;
Core&lt;br&gt;
.ov&lt;br&gt;
Viewer&lt;br&gt;
Studio&lt;br&gt;
CRM&lt;br&gt;
GIS&lt;br&gt;
IDE&lt;br&gt;
Pulse&lt;br&gt;
Stdlib&lt;br&gt;
Markdown&lt;br&gt;
Python Core&lt;br&gt;
Fellowship&lt;/p&gt;

&lt;p&gt;These aren’t intended to be unrelated packages.&lt;/p&gt;

&lt;p&gt;They’re different pieces of the same execution problem.&lt;/p&gt;

&lt;p&gt;Portable Workflows&lt;/p&gt;

&lt;p&gt;One extension of this architecture is .ov.&lt;/p&gt;

&lt;p&gt;AI can generate workflows today, but they’re frequently trapped inside the application that created them.&lt;/p&gt;

&lt;p&gt;.ov explores:&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
 ↓&lt;br&gt;
Generate workflow&lt;br&gt;
 ↓&lt;br&gt;
Save .ov&lt;br&gt;
 ↓&lt;br&gt;
Inspect&lt;br&gt;
 ↓&lt;br&gt;
Execute&lt;br&gt;
 ↓&lt;br&gt;
Reuse&lt;/p&gt;

&lt;p&gt;The workflow becomes an artifact instead of temporary conversation state.&lt;/p&gt;

&lt;p&gt;Policy and Receipts&lt;/p&gt;

&lt;p&gt;Execution introduces consequences.&lt;/p&gt;

&lt;p&gt;The fact that an agent knows about:&lt;/p&gt;

&lt;p&gt;email.send&lt;/p&gt;

&lt;p&gt;doesn’t mean it should always execute it.&lt;/p&gt;

&lt;p&gt;That’s why policy sits directly in the OpenVerb model.&lt;/p&gt;

&lt;p&gt;And afterward, a receipt provides evidence of execution.&lt;/p&gt;

&lt;p&gt;I think those concepts become increasingly important as AI moves from:&lt;/p&gt;

&lt;p&gt;“Here’s what you should do.”&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;“I did it.”&lt;/p&gt;

&lt;p&gt;The Long-Term Idea&lt;/p&gt;

&lt;p&gt;I’m exploring OpenVerb as something approaching a universal runner for AI actions.&lt;/p&gt;

&lt;p&gt;Applications provide capabilities.&lt;/p&gt;

&lt;p&gt;Models provide intelligence.&lt;/p&gt;

&lt;p&gt;OpenVerb provides the execution contract between them.&lt;/p&gt;

&lt;p&gt;Models can change.&lt;/p&gt;

&lt;p&gt;Agents can change.&lt;/p&gt;

&lt;p&gt;Applications can change.&lt;/p&gt;

&lt;p&gt;The capability interface can remain understandable.&lt;/p&gt;

&lt;p&gt;OpenVerb:&lt;br&gt;
&lt;a href="https://openverb.org" rel="noopener noreferrer"&gt;https://openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NPM:&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/openverb" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/openverb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OpenVerb is open infrastructure, so if you’re building agents, copilots, automation systems, or developer tools, I’d be particularly interested in what you’d build on top of it.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #agents #opensource #developerexperience #automation
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Building PaywallOS: Separating Payments From Entitlements</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:44:33 +0000</pubDate>
      <link>https://dev.to/openverb/building-paywallos-separating-payments-from-entitlements-flh</link>
      <guid>https://dev.to/openverb/building-paywallos-separating-payments-from-entitlements-flh</guid>
      <description>&lt;p&gt;A surprisingly common SaaS anti-pattern looks something like:&lt;/p&gt;

&lt;p&gt;if (user.plan === "pro") {&lt;br&gt;
  showFeature();&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;Until it doesn’t.&lt;/p&gt;

&lt;p&gt;Add multiple tiers.&lt;/p&gt;

&lt;p&gt;Usage limits.&lt;/p&gt;

&lt;p&gt;Trials.&lt;/p&gt;

&lt;p&gt;One-time purchases.&lt;/p&gt;

&lt;p&gt;Organizations.&lt;/p&gt;

&lt;p&gt;Add-ons.&lt;/p&gt;

&lt;p&gt;API access.&lt;/p&gt;

&lt;p&gt;AI credits.&lt;/p&gt;

&lt;p&gt;Suddenly payment state and authorization logic are spread throughout the application.&lt;/p&gt;

&lt;p&gt;That’s the infrastructure problem I’ve been exploring with PaywallOS.&lt;/p&gt;

&lt;p&gt;Payments Aren’t Entitlements&lt;/p&gt;

&lt;p&gt;A payment provider answers questions about transactions and subscriptions.&lt;/p&gt;

&lt;p&gt;Your application has a different question:&lt;/p&gt;

&lt;p&gt;What is this user actually allowed to do?&lt;/p&gt;

&lt;p&gt;Those concerns are related, but they aren’t identical.&lt;/p&gt;

&lt;p&gt;I think about the architecture as:&lt;/p&gt;

&lt;p&gt;Payment&lt;br&gt;
   ↓&lt;br&gt;
Subscription / Purchase&lt;br&gt;
   ↓&lt;br&gt;
Entitlement&lt;br&gt;
   ↓&lt;br&gt;
Resource / Capability&lt;br&gt;
   ↓&lt;br&gt;
Access Decision&lt;/p&gt;

&lt;p&gt;That separation creates a cleaner boundary between billing infrastructure and application authorization.&lt;/p&gt;

&lt;p&gt;Why This Matters for AI&lt;/p&gt;

&lt;p&gt;The problem gets even more interesting with agents.&lt;/p&gt;

&lt;p&gt;Traditional SaaS might ask:&lt;/p&gt;

&lt;p&gt;Can this user access FEATURE_X?&lt;/p&gt;

&lt;p&gt;An agentic application may need to ask:&lt;/p&gt;

&lt;p&gt;Can this user execute ai.generate_report?&lt;br&gt;
Does this account have 10 executions remaining?&lt;br&gt;
Can this agent invoke export.create?&lt;br&gt;
Does this plan allow this model?&lt;/p&gt;

&lt;p&gt;Now entitlement infrastructure starts intersecting with capability-based execution.&lt;/p&gt;

&lt;p&gt;That’s one reason PaywallOS also connects conceptually with some of the work I’ve been doing on OpenVerb.&lt;/p&gt;

&lt;p&gt;OpenVerb asks:&lt;/p&gt;

&lt;p&gt;Is this action structurally valid and permitted?&lt;/p&gt;

&lt;p&gt;PaywallOS asks:&lt;/p&gt;

&lt;p&gt;Does this account possess the entitlement required to access it?&lt;/p&gt;

&lt;p&gt;Those are different layers, but they can complement each other.&lt;/p&gt;

&lt;p&gt;The Bigger Idea&lt;/p&gt;

&lt;p&gt;I don’t think every SaaS developer should have to reinvent entitlement logic throughout their application.&lt;/p&gt;

&lt;p&gt;The goal behind PaywallOS is to explore a dedicated infrastructure layer for:&lt;/p&gt;

&lt;p&gt;Identity&lt;br&gt;
  +&lt;br&gt;
Payment State&lt;br&gt;
  +&lt;br&gt;
Entitlements&lt;br&gt;
  +&lt;br&gt;
Usage&lt;br&gt;
  ↓&lt;br&gt;
Access Decision&lt;/p&gt;

&lt;p&gt;Checkout is only the beginning of a paywall.&lt;/p&gt;

&lt;p&gt;The interesting engineering starts after someone pays.&lt;/p&gt;

&lt;p&gt;PaywallOS:&lt;br&gt;
&lt;a href="https://paywallos.openverb.org" rel="noopener noreferrer"&gt;https://paywallos.openverb.org&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  saas #payments #authorization #developerexperience #architecture
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Building Elevatr: Treating Professional Experience as Structured Data</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:41:03 +0000</pubDate>
      <link>https://dev.to/openverb/building-elevatr-treating-professional-experience-as-structured-data-5dh9</link>
      <guid>https://dev.to/openverb/building-elevatr-treating-professional-experience-as-structured-data-5dh9</guid>
      <description>&lt;p&gt;Most career software models employment.&lt;/p&gt;

&lt;p&gt;I became interested in modeling something different:&lt;/p&gt;

&lt;p&gt;experience itself.&lt;/p&gt;

&lt;p&gt;I built Elevatr after dealing with the complexity of documenting professional experience for licensure.&lt;/p&gt;

&lt;p&gt;A résumé might say:&lt;/p&gt;

&lt;p&gt;Company&lt;br&gt;
Role&lt;br&gt;
2024–2026&lt;/p&gt;

&lt;p&gt;But a licensing process may care about what actually happened during those years.&lt;/p&gt;

&lt;p&gt;Projects.&lt;/p&gt;

&lt;p&gt;Hours.&lt;/p&gt;

&lt;p&gt;Responsibilities.&lt;/p&gt;

&lt;p&gt;Experience categories.&lt;/p&gt;

&lt;p&gt;Supervision.&lt;/p&gt;

&lt;p&gt;Verification.&lt;/p&gt;

&lt;p&gt;That requires a different data model.&lt;/p&gt;

&lt;p&gt;Modeling Experience&lt;/p&gt;

&lt;p&gt;Conceptually, Elevatr looks more like:&lt;/p&gt;

&lt;p&gt;Professional&lt;br&gt;
   ↓&lt;br&gt;
Employer&lt;br&gt;
   ↓&lt;br&gt;
Project&lt;br&gt;
   ↓&lt;br&gt;
Experience Entry&lt;br&gt;
   ↓&lt;br&gt;
Category + Hours + Responsibility&lt;br&gt;
   ↓&lt;br&gt;
Evidence&lt;br&gt;
   ↓&lt;br&gt;
Verification&lt;/p&gt;

&lt;p&gt;Now experience becomes queryable.&lt;/p&gt;

&lt;p&gt;How many hours were accumulated in a category?&lt;/p&gt;

&lt;p&gt;Which projects demonstrate a particular competency?&lt;/p&gt;

&lt;p&gt;Which entries have been verified?&lt;/p&gt;

&lt;p&gt;Who supervised them?&lt;/p&gt;

&lt;p&gt;Which requirements remain incomplete?&lt;/p&gt;

&lt;p&gt;Multiple Platforms&lt;/p&gt;

&lt;p&gt;I’ve been building Elevatr across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop&lt;/li&gt;
&lt;li&gt;Web&lt;/li&gt;
&lt;li&gt;Mobile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interfaces serve different purposes.&lt;/p&gt;

&lt;p&gt;Mobile  → capture&lt;br&gt;
Desktop → dedicated workspace&lt;br&gt;
Web     → manage/access&lt;/p&gt;

&lt;p&gt;They ultimately revolve around the same professional record.&lt;/p&gt;

&lt;p&gt;I’ve also worked on verification workflows, including DocuSign integration.&lt;/p&gt;

&lt;p&gt;That’s important because there’s a major difference between:&lt;/p&gt;

&lt;p&gt;"I recorded this experience."&lt;/p&gt;

&lt;p&gt;and:&lt;/p&gt;

&lt;p&gt;"This experience was verified."&lt;/p&gt;

&lt;p&gt;Why This Gets Interesting With AI&lt;/p&gt;

&lt;p&gt;Once professional experience has structure, AI can potentially help convert natural descriptions into categorized records.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Prepared an ALTA/NSPS Land Title Survey draft, incorporated legal and surveyor comments, updated Exhibit A and Schedule B, and revised plan notes.&lt;/p&gt;

&lt;p&gt;That can potentially be transformed into structured experience rather than disappearing inside a timesheet.&lt;/p&gt;

&lt;p&gt;The model becomes:&lt;/p&gt;

&lt;p&gt;Natural-language work description&lt;br&gt;
            ↓&lt;br&gt;
       Extraction&lt;br&gt;
            ↓&lt;br&gt;
 Project + Tasks + Categories&lt;br&gt;
            ↓&lt;br&gt;
     Experience Record&lt;br&gt;
            ↓&lt;br&gt;
        Verification&lt;/p&gt;

&lt;p&gt;That’s the technical direction I find most interesting.&lt;/p&gt;

&lt;p&gt;Elevatr isn’t intended to be another employee timesheet.&lt;/p&gt;

&lt;p&gt;A timesheet belongs primarily to the employer.&lt;/p&gt;

&lt;p&gt;Your professional experience belongs to your career.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://elevatr.dev" rel="noopener noreferrer"&gt;https://elevatr.dev&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  careerdevelopment #saas #ai #engineering #softwaredevelopment
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building FolderCopilot: What Happens When AI Becomes a Layer Above the Filesystem?</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:39:51 +0000</pubDate>
      <link>https://dev.to/openverb/building-foldercopilot-what-happens-when-ai-becomes-a-layer-above-the-filesystem-2oec</link>
      <guid>https://dev.to/openverb/building-foldercopilot-what-happens-when-ai-becomes-a-layer-above-the-filesystem-2oec</guid>
      <description>&lt;p&gt;The filesystem is one of the oldest interfaces we still use every day.&lt;/p&gt;

&lt;p&gt;We create folders.&lt;/p&gt;

&lt;p&gt;We name files.&lt;/p&gt;

&lt;p&gt;We drag them around.&lt;/p&gt;

&lt;p&gt;We download something and promise ourselves we’ll organize it later.&lt;/p&gt;

&lt;p&gt;AI changes what should be possible here.&lt;/p&gt;

&lt;p&gt;That’s the idea behind FolderCopilot, a project I’ve been building around AI-assisted file and workspace organization.&lt;/p&gt;

&lt;p&gt;The Problem&lt;/p&gt;

&lt;p&gt;Traditional filesystems understand structure:&lt;/p&gt;

&lt;p&gt;/projects&lt;br&gt;
  /client-a&lt;br&gt;
    /documents&lt;br&gt;
    /images&lt;/p&gt;

&lt;p&gt;But they don’t understand why that structure exists.&lt;/p&gt;

&lt;p&gt;A file manager knows that:&lt;/p&gt;

&lt;p&gt;proposal-final-v3.pdf&lt;/p&gt;

&lt;p&gt;is a PDF.&lt;/p&gt;

&lt;p&gt;It doesn’t inherently know that it’s a client proposal belonging to a particular project and should live alongside related contracts and correspondence.&lt;/p&gt;

&lt;p&gt;FolderCopilot explores adding that contextual layer.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;/p&gt;

&lt;p&gt;File&lt;br&gt;
 ↓&lt;br&gt;
Metadata / Content&lt;br&gt;
 ↓&lt;br&gt;
Context&lt;br&gt;
 ↓&lt;br&gt;
Role&lt;br&gt;
 ↓&lt;br&gt;
Workspace&lt;br&gt;
 ↓&lt;br&gt;
Organization&lt;/p&gt;

&lt;p&gt;More Than One Interface&lt;/p&gt;

&lt;p&gt;I’ve been developing FolderCopilot as an ecosystem rather than a single utility.&lt;/p&gt;

&lt;p&gt;That includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desktop application&lt;/li&gt;
&lt;li&gt;Web experience&lt;/li&gt;
&lt;li&gt;Browser-extension workflows&lt;/li&gt;
&lt;li&gt;Role-based organization&lt;/li&gt;
&lt;li&gt;Workspace templates&lt;/li&gt;
&lt;li&gt;AI-assisted organization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The desktop layer is particularly important because the local filesystem remains where a huge amount of real work happens.&lt;/p&gt;

&lt;p&gt;The browser matters because that’s where much of the mess originates.&lt;/p&gt;

&lt;p&gt;Downloads, PDFs, screenshots, research documents, and attachments constantly enter the filesystem through it.&lt;/p&gt;

&lt;p&gt;Role-Based Organization&lt;/p&gt;

&lt;p&gt;One design decision I made was not to assume everyone should organize files the same way.&lt;/p&gt;

&lt;p&gt;A developer might think in terms of:&lt;/p&gt;

&lt;p&gt;repositories&lt;br&gt;
documentation&lt;br&gt;
assets&lt;br&gt;
builds&lt;br&gt;
configuration&lt;/p&gt;

&lt;p&gt;A researcher might care about:&lt;/p&gt;

&lt;p&gt;papers&lt;br&gt;
references&lt;br&gt;
datasets&lt;br&gt;
notes&lt;br&gt;
results&lt;/p&gt;

&lt;p&gt;So FolderCopilot includes role-oriented experiences for developers, students, researchers, teachers, project managers, and others.&lt;/p&gt;

&lt;p&gt;I’ve also built workspace templates around academic work, development, clients, small businesses, research, and job searches.&lt;/p&gt;

&lt;p&gt;The bigger goal isn’t automated folder creation.&lt;/p&gt;

&lt;p&gt;It’s giving AI enough context to reason about:&lt;/p&gt;

&lt;p&gt;Where does this file belong within the way this particular person works?&lt;/p&gt;

&lt;p&gt;That’s a much more interesting problem.&lt;/p&gt;

&lt;p&gt;Where I’m Taking It&lt;/p&gt;

&lt;p&gt;I don’t think AI file management should mean giving a model uncontrolled permission to rearrange your drive.&lt;/p&gt;

&lt;p&gt;The interesting architecture is somewhere between AI reasoning and controlled filesystem operations.&lt;/p&gt;

&lt;p&gt;That’s the layer I’m continuing to explore.&lt;/p&gt;

&lt;p&gt;FolderCopilot isn’t meant to replace the filesystem.&lt;/p&gt;

&lt;p&gt;It’s an experiment in what happens when the filesystem finally gets an intelligent organizational layer.&lt;/p&gt;

&lt;p&gt;FolderCopilot:&lt;br&gt;
&lt;a href="https://foldercopilot.com" rel="noopener noreferrer"&gt;https://foldercopilot.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re working on local-first AI, file organization, desktop AI, or intelligent workspace tooling, I’d be interested in comparing approaches.&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #productivity #desktop #filesystem #automation
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>⚡ OpenVerb Is Becoming an Ecosystem for AI Execution</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:34:21 +0000</pubDate>
      <link>https://dev.to/openverb/openverb-is-becoming-an-ecosystem-for-ai-execution-10df</link>
      <guid>https://dev.to/openverb/openverb-is-becoming-an-ecosystem-for-ai-execution-10df</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/..." 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/..." alt="Uploading image" width="800" height="400"&gt;&lt;/a&gt;OpenVerb started with a relatively simple question:&lt;/p&gt;

&lt;p&gt;How should AI actually take actions inside software?&lt;/p&gt;

&lt;p&gt;Not generate instructions for an action.&lt;/p&gt;

&lt;p&gt;Not tell the user which buttons to click.&lt;/p&gt;

&lt;p&gt;Actually execute it.&lt;/p&gt;

&lt;p&gt;That question started with the OpenVerb Protocol and has since expanded into an ecosystem of frameworks, developer packages, applications, portable workflow files, policy infrastructure, and execution tooling.&lt;/p&gt;

&lt;p&gt;Here’s what I’ve been building.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The OpenVerb Protocol&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the foundation is the concept of a verb.&lt;/p&gt;

&lt;p&gt;Applications expose capabilities using structured names:&lt;/p&gt;

&lt;p&gt;email.send&lt;br&gt;
crm.create_contact&lt;br&gt;
gis.add_layer&lt;br&gt;
file.move&lt;/p&gt;

&lt;p&gt;Instead of giving an agent unrestricted application access, the AI requests a known capability.&lt;/p&gt;

&lt;p&gt;The basic execution model is:&lt;/p&gt;

&lt;p&gt;Intent&lt;br&gt;
  ↓&lt;br&gt;
Verb&lt;br&gt;
  ↓&lt;br&gt;
Schema&lt;br&gt;
  ↓&lt;br&gt;
Policy&lt;br&gt;
  ↓&lt;br&gt;
Executor&lt;br&gt;
  ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;The AI provides intelligence.&lt;/p&gt;

&lt;p&gt;OpenVerb provides the execution contract.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The OpenVerb Framework&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A protocol isn’t particularly useful if developers can’t implement it.&lt;/p&gt;

&lt;p&gt;So I built the framework around it.&lt;/p&gt;

&lt;p&gt;The developer stack includes components such as:&lt;/p&gt;

&lt;p&gt;Runtime&lt;br&gt;
Policy&lt;br&gt;
SDK&lt;br&gt;
CLI&lt;br&gt;
Core&lt;/p&gt;

&lt;p&gt;The Runtime handles execution.&lt;/p&gt;

&lt;p&gt;The Policy Engine controls whether execution is permitted.&lt;/p&gt;

&lt;p&gt;The SDK provides programmatic access.&lt;/p&gt;

&lt;p&gt;The CLI provides developer tooling.&lt;/p&gt;

&lt;p&gt;And Core provides shared foundations across the ecosystem.&lt;/p&gt;

&lt;p&gt;An application can register capabilities while OpenVerb handles the infrastructure surrounding their execution.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Policy-Controlled Execution&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One of the ideas I care about most in OpenVerb is separating:&lt;/p&gt;

&lt;p&gt;CAN EXECUTE&lt;/p&gt;

&lt;p&gt;from:&lt;/p&gt;

&lt;p&gt;SHOULD EXECUTE&lt;/p&gt;

&lt;p&gt;An agent might know that email.send exists.&lt;/p&gt;

&lt;p&gt;That doesn’t automatically mean it should be allowed to execute it.&lt;/p&gt;

&lt;p&gt;Policy can sit directly in the execution path:&lt;/p&gt;

&lt;p&gt;Agent&lt;br&gt;
  ↓&lt;br&gt;
Verb Request&lt;br&gt;
  ↓&lt;br&gt;
Validation&lt;br&gt;
  ↓&lt;br&gt;
Policy&lt;br&gt;
  ↓&lt;br&gt;
Execution&lt;/p&gt;

&lt;p&gt;As agents gain more autonomy, I think this distinction becomes increasingly important.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receipts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Execution also needs evidence.&lt;/p&gt;

&lt;p&gt;If an agent says:&lt;/p&gt;

&lt;p&gt;“I updated the CRM.”&lt;/p&gt;

&lt;p&gt;I want infrastructure capable of answering:&lt;/p&gt;

&lt;p&gt;What changed?&lt;/p&gt;

&lt;p&gt;Which verb executed?&lt;/p&gt;

&lt;p&gt;What inputs were used?&lt;/p&gt;

&lt;p&gt;Did execution succeed?&lt;/p&gt;

&lt;p&gt;What happened afterward?&lt;/p&gt;

&lt;p&gt;That’s why receipts are part of the OpenVerb architecture.&lt;/p&gt;

&lt;p&gt;Request → Execute → Result → Receipt&lt;/p&gt;

&lt;p&gt;The goal is to make AI execution more observable and auditable.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;.ov — Portable AI Workflows&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then I started thinking about another problem.&lt;/p&gt;

&lt;p&gt;AI can generate workflows, but those workflows are frequently trapped inside the application or conversation that generated them.&lt;/p&gt;

&lt;p&gt;So I created the .ov format.&lt;/p&gt;

&lt;p&gt;The idea:&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
  ↓&lt;br&gt;
Generate Workflow&lt;br&gt;
  ↓&lt;br&gt;
Save .ov&lt;br&gt;
  ↓&lt;br&gt;
Inspect&lt;br&gt;
  ↓&lt;br&gt;
Execute&lt;br&gt;
  ↓&lt;br&gt;
Share&lt;br&gt;
  ↓&lt;br&gt;
Reuse&lt;/p&gt;

&lt;p&gt;Instead of an AI workflow being temporary application state, it can become a portable artifact.&lt;/p&gt;

&lt;p&gt;A .ov workflow can describe things such as:&lt;/p&gt;

&lt;p&gt;name: client-onboarding&lt;br&gt;
steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;verb: crm.create_contact&lt;/li&gt;
&lt;li&gt;verb: document.generate&lt;/li&gt;
&lt;li&gt;verb: email.send&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the workflow is something that can potentially be versioned, inspected, shared, and executed by compatible environments.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenVerb Viewer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once .ov became a file format, another question appeared:&lt;/p&gt;

&lt;p&gt;What opens the file?&lt;/p&gt;

&lt;p&gt;That’s what led to OpenVerb Viewer.&lt;/p&gt;

&lt;p&gt;I’ve been building Viewer as a cross-platform application for interacting with .ov files, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;workflow visualization&lt;/li&gt;
&lt;li&gt;graph views&lt;/li&gt;
&lt;li&gt;strict validation&lt;/li&gt;
&lt;li&gt;inspection&lt;/li&gt;
&lt;li&gt;offline verb simulation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One way I think about it:&lt;/p&gt;

&lt;p&gt;If .ov is the portable workflow, Viewer is the reader.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenVerb Studio&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Viewer handles inspection.&lt;/p&gt;

&lt;p&gt;Studio explores creation and execution.&lt;/p&gt;

&lt;p&gt;The workflow I’m building toward is:&lt;/p&gt;

&lt;p&gt;Describe workflow&lt;br&gt;
      ↓&lt;br&gt;
AI generates .ov&lt;br&gt;
      ↓&lt;br&gt;
Inspect&lt;br&gt;
      ↓&lt;br&gt;
Provide inputs&lt;br&gt;
      ↓&lt;br&gt;
Execute&lt;br&gt;
      ↓&lt;br&gt;
Output&lt;br&gt;
      ↓&lt;br&gt;
Save&lt;/p&gt;

&lt;p&gt;That creates an interesting bridge between natural-language AI and deterministic workflow infrastructure.&lt;/p&gt;

&lt;p&gt;AI helps create the workflow.&lt;/p&gt;

&lt;p&gt;OpenVerb provides the structure around executing it.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenVerb CRM&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ve also been building applications on top of the execution model.&lt;/p&gt;

&lt;p&gt;One example is OpenVerb CRM.&lt;/p&gt;

&lt;p&gt;A request such as:&lt;/p&gt;

&lt;p&gt;"Create a contact for Sarah Chen at Atlas Engineering."&lt;/p&gt;

&lt;p&gt;can become:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "verb": "crm.create_contact",&lt;br&gt;
  "input": {&lt;br&gt;
    "first_name": "Sarah",&lt;br&gt;
    "last_name": "Chen",&lt;br&gt;
    "company": "Atlas Engineering"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;That request can then move through validation, policy, execution, and receipt generation.&lt;/p&gt;

&lt;p&gt;The CRM isn’t just another OpenVerb package.&lt;/p&gt;

&lt;p&gt;It’s an example of what software looks like when its capabilities are designed around structured AI execution.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OpenVerb GIS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My background is in GIS and land surveying, so I also started applying the architecture to geospatial software.&lt;/p&gt;

&lt;p&gt;Imagine a GIS environment exposing:&lt;/p&gt;

&lt;p&gt;gis.create_project&lt;br&gt;
gis.add_layer&lt;br&gt;
gis.query_features&lt;br&gt;
gis.transform&lt;br&gt;
gis.export&lt;/p&gt;

&lt;p&gt;Now an AI doesn’t need arbitrary control over the entire GIS interface.&lt;/p&gt;

&lt;p&gt;It requests defined geospatial capabilities.&lt;/p&gt;

&lt;p&gt;Natural Language&lt;br&gt;
      ↓&lt;br&gt;
GIS Verb&lt;br&gt;
      ↓&lt;br&gt;
Schema&lt;br&gt;
      ↓&lt;br&gt;
Policy&lt;br&gt;
      ↓&lt;br&gt;
GIS Executor&lt;br&gt;
      ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;That’s the idea behind OpenVerb GIS.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Broader Developer Ecosystem&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OpenVerb has continued expanding into supporting packages and experiments.&lt;/p&gt;

&lt;p&gt;The ecosystem now includes work around:&lt;/p&gt;

&lt;p&gt;Runtime&lt;br&gt;
Policy&lt;br&gt;
SDK&lt;br&gt;
CLI&lt;br&gt;
Core&lt;br&gt;
IDE&lt;br&gt;
CRM&lt;br&gt;
GIS&lt;br&gt;
Pulse&lt;br&gt;
Stdlib&lt;br&gt;
Markdown&lt;br&gt;
.ov&lt;br&gt;
Viewer&lt;br&gt;
Studio&lt;/p&gt;

&lt;p&gt;And OpenVerb isn’t limited to TypeScript.&lt;/p&gt;

&lt;p&gt;I’ve also been building the Python side of the ecosystem, including:&lt;/p&gt;

&lt;p&gt;OpenVerb Core&lt;br&gt;
Fellowship&lt;/p&gt;

&lt;p&gt;The goal isn’t to force developers into one giant framework.&lt;/p&gt;

&lt;p&gt;It’s to make the architecture modular.&lt;/p&gt;

&lt;p&gt;Use the pieces you need.&lt;/p&gt;

&lt;p&gt;Extend the parts relevant to your application.&lt;/p&gt;

&lt;p&gt;Build new verbs.&lt;/p&gt;

&lt;p&gt;Build new executors.&lt;/p&gt;

&lt;p&gt;Build new tooling.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Toward a Universal Execution Layer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The larger architecture I’m exploring looks something like this:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          AI / AGENT / COPILOT
                   │
                   ▼
              OPENVERB
                   │
      ┌────────────┼────────────┐
      ▼            ▼            ▼
     CRM          GIS         EMAIL
      │            │            │
    VERBS        VERBS        VERBS
      │            │            │
      └────────────┼────────────┘
                   ▼
          POLICY + EXECUTION
                   │
                   ▼
                RECEIPT
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Models can change.&lt;/p&gt;

&lt;p&gt;Agents can change.&lt;/p&gt;

&lt;p&gt;Applications can change.&lt;/p&gt;

&lt;p&gt;The execution contract remains understandable.&lt;/p&gt;

&lt;p&gt;That’s why I’ve increasingly thought about OpenVerb as a potential universal runner for AI actions.&lt;/p&gt;

&lt;p&gt;Applications provide capabilities.&lt;/p&gt;

&lt;p&gt;Models provide intelligence.&lt;/p&gt;

&lt;p&gt;OpenVerb sits between intelligence and execution.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The Ecosystem Is Still Growing&lt;/p&gt;

&lt;p&gt;What began as the OpenVerb Protocol has expanded into:&lt;/p&gt;

&lt;p&gt;Protocol → Framework → Runtime → Policy → SDK → CLI → .ov → Viewer → Studio → CRM → GIS → IDE → Pulse → Stdlib → Python → Fellowship&lt;/p&gt;

&lt;p&gt;But all of those projects revolve around the same underlying idea:&lt;/p&gt;

&lt;p&gt;AI needs an execution layer.&lt;/p&gt;

&lt;p&gt;As AI systems move from generating answers toward performing real work, I think we’ll need infrastructure for defining capabilities, validating requests, enforcing policies, executing actions, and proving what happened.&lt;/p&gt;

&lt;p&gt;That’s what I’m building with OpenVerb.&lt;/p&gt;

&lt;p&gt;⚡ OpenVerb&lt;br&gt;
&lt;a href="https://openverb.dev" rel="noopener noreferrer"&gt;https://openverb.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 NPM&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/openverb" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/openverb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re building agents, copilots, automation systems, developer tools, or AI infrastructure, I’d love to hear what you think — and especially what you’d build on top of an open execution layer.&lt;/p&gt;

&lt;h1&gt;
  
  
  OpenVerb #AI #AIAgents #OpenSource #AIInfrastructure #DeveloperTools #Automation #TypeScript #Python
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>⚡ OpenVerb Hackathon: Build AI That Actually Takes Action</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Wed, 12 Aug 2026 14:31:32 +0000</pubDate>
      <link>https://dev.to/openverb/openverb-hackathon-build-ai-that-actually-takes-action-4pol</link>
      <guid>https://dev.to/openverb/openverb-hackathon-build-ai-that-actually-takes-action-4pol</guid>
      <description>&lt;p&gt;AI is getting very good at telling us what to do.&lt;/p&gt;

&lt;p&gt;The next challenge is letting AI actually do it — without giving an agent uncontrolled access to everything.&lt;/p&gt;

&lt;p&gt;That’s the idea behind the OpenVerb Hackathon.&lt;/p&gt;

&lt;p&gt;I’m inviting developers, students, AI engineers, open-source contributors, founders, and anyone interested in agent infrastructure to build something using OpenVerb.&lt;/p&gt;

&lt;p&gt;What is OpenVerb?&lt;/p&gt;

&lt;p&gt;OpenVerb is an open execution layer for AI actions.&lt;/p&gt;

&lt;p&gt;Applications expose capabilities as structured verbs:&lt;/p&gt;

&lt;p&gt;email.send&lt;br&gt;
crm.create_contact&lt;br&gt;
calendar.create_event&lt;br&gt;
gis.add_layer&lt;br&gt;
file.organize&lt;/p&gt;

&lt;p&gt;Instead of letting an AI generate arbitrary commands, the execution path can be structured:&lt;/p&gt;

&lt;p&gt;Intent&lt;br&gt;
  ↓&lt;br&gt;
Verb&lt;br&gt;
  ↓&lt;br&gt;
Schema&lt;br&gt;
  ↓&lt;br&gt;
Policy&lt;br&gt;
  ↓&lt;br&gt;
Executor&lt;br&gt;
  ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;The model figures out what it wants to do.&lt;/p&gt;

&lt;p&gt;OpenVerb provides infrastructure around how that action is represented, validated, authorized, executed, and recorded.&lt;/p&gt;

&lt;p&gt;What Can You Build?&lt;/p&gt;

&lt;p&gt;I’m intentionally keeping the hackathon broad.&lt;/p&gt;

&lt;p&gt;🤖 Build an Agent&lt;/p&gt;

&lt;p&gt;Give an agent explicitly defined capabilities instead of unrestricted access to an application.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;research.search&lt;br&gt;
document.create&lt;br&gt;
email.send&lt;br&gt;
calendar.create_event&lt;/p&gt;

&lt;p&gt;Then use OpenVerb policies to control what the agent can actually execute.&lt;/p&gt;

&lt;p&gt;🧩 Build an Integration&lt;/p&gt;

&lt;p&gt;Connect an existing application or API to OpenVerb.&lt;/p&gt;

&lt;p&gt;Create verbs for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Notion&lt;/li&gt;
&lt;li&gt;GIS platforms&lt;/li&gt;
&lt;li&gt;CRMs&lt;/li&gt;
&lt;li&gt;developer tools&lt;/li&gt;
&lt;li&gt;productivity software&lt;/li&gt;
&lt;li&gt;hardware&lt;/li&gt;
&lt;li&gt;your own API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting question is:&lt;/p&gt;

&lt;p&gt;What capabilities should this application expose to AI?&lt;/p&gt;

&lt;p&gt;🛠️ Build Developer Tools&lt;/p&gt;

&lt;p&gt;The OpenVerb ecosystem itself creates opportunities for tooling.&lt;/p&gt;

&lt;p&gt;You could build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a verb debugger&lt;/li&gt;
&lt;li&gt;schema generator&lt;/li&gt;
&lt;li&gt;visual policy editor&lt;/li&gt;
&lt;li&gt;receipt explorer&lt;/li&gt;
&lt;li&gt;verb registry browser&lt;/li&gt;
&lt;li&gt;workflow visualizer&lt;/li&gt;
&lt;li&gt;testing framework&lt;/li&gt;
&lt;li&gt;new executor&lt;/li&gt;
&lt;li&gt;development environment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📄 Build With .ov&lt;/p&gt;

&lt;p&gt;One of the newer parts of OpenVerb is the .ov workflow format.&lt;/p&gt;

&lt;p&gt;The idea is to make AI-generated workflows portable:&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
  ↓&lt;br&gt;
Generate workflow&lt;br&gt;
  ↓&lt;br&gt;
Save .ov&lt;br&gt;
  ↓&lt;br&gt;
Inspect&lt;br&gt;
  ↓&lt;br&gt;
Execute&lt;br&gt;
  ↓&lt;br&gt;
Share&lt;br&gt;
  ↓&lt;br&gt;
Reuse&lt;/p&gt;

&lt;p&gt;Instead of an automation disappearing inside a chat session, it becomes an artifact.&lt;/p&gt;

&lt;p&gt;That means you could build a .ov generator, editor, runner, library, marketplace, converter, visualizer — or something completely different.&lt;/p&gt;

&lt;p&gt;🗺️ Build Something Unexpected&lt;/p&gt;

&lt;p&gt;This is probably what I’m most excited about.&lt;/p&gt;

&lt;p&gt;Use OpenVerb for GIS.&lt;/p&gt;

&lt;p&gt;Robotics.&lt;/p&gt;

&lt;p&gt;Music.&lt;/p&gt;

&lt;p&gt;Research.&lt;/p&gt;

&lt;p&gt;Education.&lt;/p&gt;

&lt;p&gt;Business automation.&lt;/p&gt;

&lt;p&gt;Accessibility.&lt;/p&gt;

&lt;p&gt;Developer infrastructure.&lt;/p&gt;

&lt;p&gt;Games.&lt;/p&gt;

&lt;p&gt;Scientific workflows.&lt;/p&gt;

&lt;p&gt;Land surveying.&lt;/p&gt;

&lt;p&gt;Or a use case nobody involved with OpenVerb has considered yet.&lt;/p&gt;

&lt;p&gt;A Simple Example&lt;/p&gt;

&lt;p&gt;Imagine the user says:&lt;/p&gt;

&lt;p&gt;“Add Sarah Chen from Atlas Engineering to my CRM.”&lt;/p&gt;

&lt;p&gt;The model could translate that into:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "verb": "crm.create_contact",&lt;br&gt;
  "input": {&lt;br&gt;
    "first_name": "Sarah",&lt;br&gt;
    "last_name": "Chen",&lt;br&gt;
    "company": "Atlas Engineering"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;OpenVerb can then validate the request.&lt;/p&gt;

&lt;p&gt;Policy determines whether the operation is permitted.&lt;/p&gt;

&lt;p&gt;The appropriate executor performs the action.&lt;/p&gt;

&lt;p&gt;A receipt records the result.&lt;/p&gt;

&lt;p&gt;Natural Language&lt;br&gt;
      ↓&lt;br&gt;
Structured Intent&lt;br&gt;
      ↓&lt;br&gt;
crm.create_contact&lt;br&gt;
      ↓&lt;br&gt;
Validate&lt;br&gt;
      ↓&lt;br&gt;
Policy&lt;br&gt;
      ↓&lt;br&gt;
Execute&lt;br&gt;
      ↓&lt;br&gt;
Receipt&lt;/p&gt;

&lt;p&gt;That’s the pattern I want developers to experiment with.&lt;/p&gt;

&lt;p&gt;🛡️ The Trust Problem&lt;/p&gt;

&lt;p&gt;The hackathon isn’t only about whether an agent can perform an action.&lt;/p&gt;

&lt;p&gt;I want projects to explore whether it should.&lt;/p&gt;

&lt;p&gt;Take:&lt;/p&gt;

&lt;p&gt;email.send&lt;/p&gt;

&lt;p&gt;A useful implementation should be able to think about questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who is the recipient?&lt;/li&gt;
&lt;li&gt;Is this agent allowed to send email?&lt;/li&gt;
&lt;li&gt;Does this action require confirmation?&lt;/li&gt;
&lt;li&gt;Are certain domains prohibited?&lt;/li&gt;
&lt;li&gt;What information can be included?&lt;/li&gt;
&lt;li&gt;How do we prove what was actually sent?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As agents become more capable, these questions become infrastructure problems.&lt;/p&gt;

&lt;p&gt;That’s why schemas, policies, executors, and receipts are important parts of OpenVerb.&lt;/p&gt;

&lt;p&gt;What I’m Looking For&lt;/p&gt;

&lt;p&gt;The biggest project won’t necessarily win.&lt;/p&gt;

&lt;p&gt;I’d rather see three beautifully designed verbs than 100 poorly controlled tools.&lt;/p&gt;

&lt;p&gt;Projects should focus on four things:&lt;/p&gt;

&lt;p&gt;Creativity — Apply OpenVerb somewhere interesting.&lt;/p&gt;

&lt;p&gt;Execution — Make the AI actually accomplish something.&lt;/p&gt;

&lt;p&gt;Structure — Define clear capabilities and interfaces.&lt;/p&gt;

&lt;p&gt;Trust — Think about validation, policies, permissions, and receipts.&lt;/p&gt;

&lt;p&gt;The Ecosystem&lt;/p&gt;

&lt;p&gt;OpenVerb has grown beyond the original protocol.&lt;/p&gt;

&lt;p&gt;The ecosystem includes work around:&lt;/p&gt;

&lt;p&gt;Protocol&lt;br&gt;
Framework&lt;br&gt;
Runtime&lt;br&gt;
Policy&lt;br&gt;
SDK&lt;br&gt;
CLI&lt;br&gt;
Core&lt;br&gt;
.ov&lt;br&gt;
Viewer&lt;br&gt;
Studio&lt;br&gt;
CRM&lt;br&gt;
GIS&lt;br&gt;
IDE&lt;br&gt;
Pulse&lt;br&gt;
Stdlib&lt;br&gt;
Markdown&lt;br&gt;
Python Core&lt;br&gt;
Fellowship&lt;/p&gt;

&lt;p&gt;You don’t need to use everything.&lt;/p&gt;

&lt;p&gt;Choose the part that makes sense for your project.&lt;/p&gt;

&lt;p&gt;Or build something that extends the ecosystem itself.&lt;/p&gt;

&lt;p&gt;Why I’m Doing This&lt;/p&gt;

&lt;p&gt;I’ve spent a lot of time thinking about what OpenVerb could become.&lt;/p&gt;

&lt;p&gt;But that’s also a limitation.&lt;/p&gt;

&lt;p&gt;I know what I would build with it.&lt;/p&gt;

&lt;p&gt;An open protocol becomes much more interesting when someone else looks at the same primitives and says:&lt;/p&gt;

&lt;p&gt;“Wait — I could use this for something completely different.”&lt;/p&gt;

&lt;p&gt;That’s what I want this hackathon to uncover.&lt;/p&gt;

&lt;p&gt;Build. Share. Execute.&lt;/p&gt;

&lt;p&gt;Full dates, rules, registration, judging, prizes, and submission details will be announced separately.&lt;/p&gt;

&lt;p&gt;For now, start thinking about one question:&lt;/p&gt;

&lt;p&gt;What would you build if AI could reliably take action?&lt;/p&gt;

&lt;p&gt;⚡ OpenVerb&lt;br&gt;
&lt;a href="https://openverb.dev" rel="noopener noreferrer"&gt;https://openverb.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📦 NPM&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/openverb" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/openverb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re interested in participating, contributing, mentoring, judging, sponsoring, or partnering with the OpenVerb Hackathon, reach out.&lt;/p&gt;

&lt;p&gt;Don’t just make AI talk. Make it act.&lt;/p&gt;

&lt;h1&gt;
  
  
  OpenVerb #AI #AIAgents #Hackathon #OpenSource #AIInfrastructure #DeveloperTools #Automation #TypeScript #Pyth
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>The Missing Piece of AI Automation: Portable Workflow Files (.ov)</title>
      <dc:creator>Roman </dc:creator>
      <pubDate>Fri, 07 Aug 2026 14:13:16 +0000</pubDate>
      <link>https://dev.to/openverb/the-missing-piece-of-ai-automation-portable-workflow-files-ov-47fj</link>
      <guid>https://dev.to/openverb/the-missing-piece-of-ai-automation-portable-workflow-files-ov-47fj</guid>
      <description>&lt;p&gt;Every major AI model today can generate text.&lt;/p&gt;

&lt;p&gt;Many can call tools.&lt;/p&gt;

&lt;p&gt;Some can execute functions.&lt;/p&gt;

&lt;p&gt;But very few can produce something you truly own.&lt;/p&gt;

&lt;p&gt;That’s the problem I’ve been thinking about while building OpenVerb.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;AI conversations disappear. Workflows shouldn’t.&lt;/p&gt;

&lt;p&gt;Imagine spending an hour building an automation with an AI assistant.&lt;/p&gt;

&lt;p&gt;Tomorrow you want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run it again,&lt;/li&gt;
&lt;li&gt;edit it,&lt;/li&gt;
&lt;li&gt;review it,&lt;/li&gt;
&lt;li&gt;send it to a coworker,&lt;/li&gt;
&lt;li&gt;store it in Git,&lt;/li&gt;
&lt;li&gt;or execute it from another application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most AI platforms make this surprisingly difficult because the automation is trapped inside a conversation.&lt;/p&gt;

&lt;p&gt;The workflow isn’t portable.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;What if AI generated documents instead?&lt;/p&gt;

&lt;p&gt;Instead of generating another block of text, what if AI generated a structured execution document?&lt;/p&gt;

&lt;p&gt;That’s the idea behind .ov files.&lt;/p&gt;

&lt;p&gt;A .ov file is a portable workflow that describes what should happen, not just what the AI said.&lt;/p&gt;

&lt;p&gt;Think of it as the equivalent of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PDF for documents&lt;/li&gt;
&lt;li&gt;Markdown for notes&lt;/li&gt;
&lt;li&gt;Docker for containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…but for AI execution.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Example&lt;/p&gt;

&lt;p&gt;version: "1.0"&lt;br&gt;
name: New Client Onboarding&lt;br&gt;
actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;verb: crm.create_contact
params:
  name: "John Doe"
  email: "&lt;a href="mailto:john@example.com"&gt;john@example.com&lt;/a&gt;"&lt;/li&gt;
&lt;li&gt;verb: email.send
params:
  to: "&lt;a href="mailto:john@example.com"&gt;john@example.com&lt;/a&gt;"
  subject: "Welcome!"
  template: "welcome"&lt;/li&gt;
&lt;li&gt;verb: file.create_folder
params:
  path: "/Clients/John Doe"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI doesn’t execute these actions.&lt;/p&gt;

&lt;p&gt;It simply generates the workflow.&lt;/p&gt;

&lt;p&gt;An OpenVerb-compatible runtime can then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validate it,&lt;/li&gt;
&lt;li&gt;collect missing inputs,&lt;/li&gt;
&lt;li&gt;enforce policies,&lt;/li&gt;
&lt;li&gt;execute each verb,&lt;/li&gt;
&lt;li&gt;produce receipts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why not just use function calling?&lt;/p&gt;

&lt;p&gt;Function calling is useful, but it’s usually tied to a particular model, SDK, or provider.&lt;/p&gt;

&lt;p&gt;A portable execution document separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reasoning&lt;/li&gt;
&lt;li&gt;execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model decides what should happen.&lt;/p&gt;

&lt;p&gt;The runtime decides how it happens.&lt;/p&gt;

&lt;p&gt;That makes workflows reusable across applications instead of being locked inside one AI ecosystem.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;Why this matters&lt;/p&gt;

&lt;p&gt;Portable workflow files unlock possibilities that conversations can’t.&lt;/p&gt;

&lt;p&gt;Imagine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Version-controlling automations with Git.&lt;/li&gt;
&lt;li&gt;Reviewing AI-generated workflows before execution.&lt;/li&gt;
&lt;li&gt;Sharing workflows with teammates.&lt;/li&gt;
&lt;li&gt;Publishing workflow libraries.&lt;/li&gt;
&lt;li&gt;Executing the same automation across multiple applications.&lt;/li&gt;
&lt;li&gt;Building marketplaces of reusable AI workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once workflows become files, they become assets.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;The OpenVerb vision&lt;/p&gt;

&lt;p&gt;OpenVerb isn’t trying to build another chatbot.&lt;/p&gt;

&lt;p&gt;It’s an attempt to build an open execution layer for AI.&lt;/p&gt;

&lt;p&gt;The long-term vision is an ecosystem where applications speak a common language of verbs and portable execution documents, allowing AI-generated workflows to move freely between compatible tools instead of remaining locked inside proprietary platforms.&lt;/p&gt;

&lt;p&gt;The web became powerful because of open standards.&lt;/p&gt;

&lt;p&gt;I believe AI automation needs them too.&lt;/p&gt;

&lt;p&gt;⸻&lt;/p&gt;

&lt;p&gt;I’m curious:&lt;/p&gt;

&lt;p&gt;If AI could export every automation as a portable workflow file, what would you build with it?&lt;/p&gt;

&lt;h1&gt;
  
  
  ai #automation #opensource #programming #webdev #softwareengineering #developertools #buildinpublic
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
