<?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>Forem: edwin  realpe preciado</title>
    <description>The latest articles on Forem by edwin  realpe preciado (@edwinreal).</description>
    <link>https://forem.com/edwinreal</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3934058%2F6234a95b-c143-43cd-94e9-5955a5c2052f.jpg</url>
      <title>Forem: edwin  realpe preciado</title>
      <link>https://forem.com/edwinreal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/edwinreal"/>
    <language>en</language>
    <item>
      <title>I built a protocol that reduces AI prompts by 70% — here's the proof</title>
      <dc:creator>edwin  realpe preciado</dc:creator>
      <pubDate>Mon, 18 May 2026 13:29:09 +0000</pubDate>
      <link>https://forem.com/edwinreal/i-built-a-protocol-that-reduces-ai-prompts-by-70-heres-the-proof-36jn</link>
      <guid>https://forem.com/edwinreal/i-built-a-protocol-that-reduces-ai-prompts-by-70-heres-the-proof-36jn</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Fr4dtisuzo46p8tsnszuv.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.amazonaws.com%2Fuploads%2Farticles%2Fr4dtisuzo46p8tsnszuv.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The claim
&lt;/h2&gt;

&lt;p&gt;Most developers know that AI prompts are &lt;br&gt;
inconsistent. You write 80 words describing &lt;br&gt;
a component, the AI generates something &lt;br&gt;
close but not quite right, you iterate, &lt;br&gt;
you waste time.&lt;/p&gt;

&lt;p&gt;I've been working on a different approach: &lt;br&gt;
instead of writing better prompts, what if &lt;br&gt;
you had a structured protocol that eliminates &lt;br&gt;
the ambiguity entirely?&lt;/p&gt;

&lt;p&gt;That's NEXUS — a minimalist Human-AI &lt;br&gt;
communication protocol. And instead of &lt;br&gt;
just claiming it works, I built a library &lt;br&gt;
of 25 real examples showing the before &lt;br&gt;
and after.&lt;/p&gt;
&lt;h2&gt;
  
  
  The comparison
&lt;/h2&gt;

&lt;p&gt;Here's a real example — a webhook handler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without NEXUS (87 words of natural language):&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a POST endpoint in Express to receive &lt;br&gt;
Stripe webhooks. It should read the body as &lt;br&gt;
raw buffer, verify the webhook signature using &lt;br&gt;
stripe.webhooks.constructEvent() with the secret &lt;br&gt;
from environment variables, return 400 if the &lt;br&gt;
signature is invalid, and call &lt;br&gt;
WebhookService.handleStripe() with the event. &lt;br&gt;
Respond with received: true if everything works."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Result: variable. Depends on the model, &lt;br&gt;
the day, the context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With NEXUS (8 lines):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Express
Controller WebhookController
  Router ApiV1
    Endpoint POST /webhooks/stripe
      !! "La firma del webhook debe ser válida"
      =&amp;gt; WebhookService.handleStripe()
      !error:400 -&amp;gt; /error/invalid-signature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: deterministic. Every time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The numbers across 25 examples:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Average reduction: ~70% less text&lt;/li&gt;
&lt;li&gt;Ambiguity: zero&lt;/li&gt;
&lt;li&gt;The AI knows exactly what to build&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why it works
&lt;/h2&gt;

&lt;p&gt;Natural language compresses intent into &lt;br&gt;
sentences that humans parse easily but &lt;br&gt;
AI models resolve inconsistently.&lt;/p&gt;

&lt;p&gt;NEXUS makes intent explicit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;!!&lt;/code&gt; preconditions fire before the action&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;!error:code&lt;/code&gt; handles failures after&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;=&amp;gt;&lt;/code&gt; is the action — nothing implied&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model doesn't decide what to do. &lt;br&gt;
The protocol tells it.&lt;/p&gt;

&lt;h2&gt;
  
  
  See the 25 examples
&lt;/h2&gt;

&lt;p&gt;I built a full library showing the &lt;br&gt;
three-panel comparison for every example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Natural language prompt (what you'd 
write today)&lt;/li&gt;
&lt;li&gt;NEXUS blueprint (8-16 lines)&lt;/li&gt;
&lt;li&gt;Generated code (the output)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Cards, navbars, forms, REST APIs, &lt;br&gt;
authentication flows — all with the &lt;br&gt;
before/after numbers.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://nexuslang.dev/examples" rel="noopener noreferrer"&gt;nexuslang.dev/examples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The library is open source:&lt;br&gt;
💻 &lt;a href="https://github.com/open-souse/Nexus" rel="noopener noreferrer"&gt;github.com/open-souse/Nexus&lt;/a&gt;&lt;br&gt;
📦 &lt;code&gt;npm install nxlang&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Curious what examples you'd want to see &lt;br&gt;
next — what's the most painful component &lt;br&gt;
to describe to an AI in natural language?&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The hidden cost of implicit preconditions in AI prompts</title>
      <dc:creator>edwin  realpe preciado</dc:creator>
      <pubDate>Sun, 17 May 2026 14:19:28 +0000</pubDate>
      <link>https://forem.com/edwinreal/the-hidden-cost-of-implicit-preconditions-in-ai-prompts-88i</link>
      <guid>https://forem.com/edwinreal/the-hidden-cost-of-implicit-preconditions-in-ai-prompts-88i</guid>
      <description>&lt;h2&gt;
  
  
  The problem nobody talks about
&lt;/h2&gt;

&lt;p&gt;You write a prompt to an AI. It looks correct. &lt;br&gt;
It's clear, detailed, well-structured. And yet &lt;br&gt;
the output is inconsistent — sometimes it does &lt;br&gt;
what you want, sometimes it doesn't, and you &lt;br&gt;
can't figure out why.&lt;/p&gt;

&lt;p&gt;The issue usually isn't the model. It's a &lt;br&gt;
structural problem in how natural language &lt;br&gt;
communicates intent.&lt;/p&gt;
&lt;h2&gt;
  
  
  The two-step instruction problem
&lt;/h2&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"If the product is not in the catalog, &lt;br&gt;
tell the customer we don't have it."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Simple, right? But this single sentence &lt;br&gt;
actually contains two steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Precondition&lt;/strong&gt;: search the catalog and 
confirm the product is absent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavior&lt;/strong&gt;: reject honestly&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Natural language compresses both into one &lt;br&gt;
sentence. Humans read it and instantly &lt;br&gt;
understand the implied sequence. &lt;br&gt;
AI models don't always.&lt;/p&gt;

&lt;p&gt;Depending on the architecture, the model might:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute the rejection without checking first&lt;/li&gt;
&lt;li&gt;Check but apply the rule in the wrong order&lt;/li&gt;
&lt;li&gt;Resolve the ambiguity differently each time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The instruction was ambiguous before any &lt;br&gt;
model ever read it. The model just revealed &lt;br&gt;
the ambiguity.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why this matters more than you think
&lt;/h2&gt;

&lt;p&gt;Every time you write a prompt with an &lt;br&gt;
implicit precondition, you're betting that &lt;br&gt;
the model will infer the correct sequence.&lt;/p&gt;

&lt;p&gt;Sometimes it does. Sometimes it doesn't. &lt;br&gt;
And when it doesn't, you spend hours &lt;br&gt;
debugging what looks like a model failure &lt;br&gt;
but is actually a language failure.&lt;/p&gt;

&lt;p&gt;Examples of implicit preconditions hiding &lt;br&gt;
in plain sight:&lt;br&gt;
"Only show the checkout button if the cart&lt;br&gt;
is not empty"&lt;br&gt;
→ Precondition: verify cart state FIRST&lt;br&gt;
"Send a confirmation email after the user&lt;br&gt;
registers"&lt;br&gt;
→ Precondition: confirm registration SUCCESS first&lt;br&gt;
"Reject the request if the user doesn't&lt;br&gt;
have permission"&lt;br&gt;
→ Precondition: check permissions BEFORE processing&lt;/p&gt;

&lt;p&gt;All of these look unambiguous. None of them &lt;br&gt;
explicitly tell the AI to verify the condition &lt;br&gt;
before acting.&lt;/p&gt;
&lt;h2&gt;
  
  
  The solution: make preconditions explicit
&lt;/h2&gt;

&lt;p&gt;What if preconditions weren't buried inside &lt;br&gt;
natural language instructions? What if they &lt;br&gt;
were a first-class citizen of the protocol?&lt;/p&gt;

&lt;p&gt;That's the core idea behind the &lt;code&gt;!!&lt;/code&gt; operator &lt;br&gt;
in NEXUS — a minimalist Human-AI communication &lt;br&gt;
protocol I've been building.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;br&gt;
"Process the checkout if the cart is not empty&lt;br&gt;
and the user is authenticated and stock is available"&lt;/p&gt;

&lt;p&gt;You write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Endpoint POST /checkout
  !! "Cart cannot be empty"
  !! cart.items.length &amp;gt; 0
  !! user.authenticated
  =&amp;gt; OrderService.create()
  !error:400 -&amp;gt; /error/validation
  !error:401 -&amp;gt; /login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The model doesn't decide whether to reject. &lt;br&gt;
It generates a response on the happy path, &lt;br&gt;
and the protocol handles absence elsewhere.&lt;/p&gt;

&lt;p&gt;The preconditions aren't instructions the &lt;br&gt;
model interprets. They're contracts the &lt;br&gt;
protocol guarantees.&lt;/p&gt;
&lt;h2&gt;
  
  
  What this changes
&lt;/h2&gt;

&lt;p&gt;When preconditions are explicit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A human can audit intent&lt;/strong&gt; without running 
the model — just read the &lt;code&gt;!!&lt;/code&gt; lines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The model has no decision to make&lt;/strong&gt; about 
sequence — it's already encoded in the structure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture sensitivity disappears&lt;/strong&gt; — 
MoE or Dense, the structure is the same&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging becomes trivial&lt;/strong&gt; — if something 
fails, you know exactly which precondition 
wasn't met&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  The asymmetry that makes it work
&lt;/h2&gt;

&lt;p&gt;NEXUS separates two things that natural language &lt;br&gt;
conflates:&lt;br&gt;
!! precondition  → what must be true to continue&lt;br&gt;
!error:code      → what to do when something fails&lt;/p&gt;

&lt;p&gt;Preconditions fire before. Errors handle after. &lt;br&gt;
The model never has to figure out which layer &lt;br&gt;
it's in.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;NEXUS is open source. The &lt;code&gt;!!&lt;/code&gt; operator shipped &lt;br&gt;
in v4.2.0 with 154 tests and full documentation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;nxlang
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've ever spent hours debugging a prompt &lt;br&gt;
that looked correct but behaved inconsistently — &lt;br&gt;
this might be worth 10 minutes of your time.&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://nexuslang.dev" rel="noopener noreferrer"&gt;nexuslang.dev&lt;/a&gt;&lt;br&gt;
💻 &lt;a href="https://github.com/open-souse/Nexus" rel="noopener noreferrer"&gt;github.com/open-souse/Nexus&lt;/a&gt;&lt;br&gt;
📦 &lt;a href="https://www.npmjs.com/package/nxlang" rel="noopener noreferrer"&gt;npmjs.com/package/nxlang&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Have you run into this problem? How do you &lt;br&gt;
handle implicit preconditions in your prompts? &lt;br&gt;
I'd love to hear how others are solving this.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I built a minimalist protocol to communicate with AI without ambiguity</title>
      <dc:creator>edwin  realpe preciado</dc:creator>
      <pubDate>Sat, 16 May 2026 01:08:19 +0000</pubDate>
      <link>https://forem.com/edwinreal/i-built-a-minimalist-protocol-to-communicate-with-ai-without-ambiguity-3e4c</link>
      <guid>https://forem.com/edwinreal/i-built-a-minimalist-protocol-to-communicate-with-ai-without-ambiguity-3e4c</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Every developer who works with AI knows this frustration: &lt;br&gt;
you write a long, detailed prompt, and the AI generates &lt;br&gt;
something that's &lt;em&gt;almost&lt;/em&gt; right but inconsistent, &lt;br&gt;
over-engineered, or missing critical details.&lt;/p&gt;

&lt;p&gt;The problem isn't the model. It's the language.&lt;/p&gt;

&lt;p&gt;Natural language is ambiguous by design. What's obvious &lt;br&gt;
to you has ten possible interpretations for an AI.&lt;/p&gt;
&lt;h2&gt;
  
  
  The solution: NEXUS
&lt;/h2&gt;

&lt;p&gt;NEXUS is a tachygraphic protocol — structured shorthand &lt;br&gt;
that compresses complex software architecture into &lt;br&gt;
precise, unambiguous intent.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;"Create a modern dashboard with authentication, &lt;br&gt;
analytics charts, user management, real-time &lt;br&gt;
notifications, dark mode, responsive design..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@React @Tailwind
Page Dashboard
  @Auth[mode:jwt]
  Layout SplitView
  Section Analytics #glass
    Chart &amp;lt; MetricsData [paginate:10]
  Section Users
    Table &amp;lt; User !bold
      !error:404 -&amp;gt; /not-found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8 lines. Zero ambiguity. The AI knows exactly what &lt;br&gt;
to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  What NEXUS is (and isn't)
&lt;/h2&gt;

&lt;p&gt;NEXUS is &lt;strong&gt;not&lt;/strong&gt; a programming language. It doesn't &lt;br&gt;
replace JavaScript, Python, or any other language.&lt;/p&gt;

&lt;p&gt;It's the communication layer between human intent &lt;br&gt;
and AI generation. You write NEXUS, the AI generates &lt;br&gt;
the real code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Frontend
Page ProductDetail
  Layout Stack #gap-2
  Section Hero
    Image &amp;lt; product.thumbnail [ratio:16/9]
    Text &amp;lt; product.name !bold !xl
  Section Actions
    ( product.inStock ) -&amp;gt;
      Button "Add to Cart" =&amp;gt; CartStore.add(product)
    :
      Badge "Out of Stock" #muted

// Backend
Model Order
  Entity id !pk
  Entity status default:pending
  Entity user -&amp;gt; Model.User
  Entity items -&amp;gt; Model.Product [many]

Controller OrderController
  Router ApiV1
    Endpoint POST /orders =&amp;gt; OrderService.create()
      !error:400 -&amp;gt; /error/bad-request
      !error:500 -&amp;gt; /error/server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The library
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;nxlang&lt;/code&gt; is the open source TypeScript library that &lt;br&gt;
implements the protocol:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;validateNexus()&lt;/code&gt; — validates syntax in real time&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;buildSystemPrompt()&lt;/code&gt; — generates the AI context&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;createDefaultConfig()&lt;/code&gt; — project DNA configuration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;nxlang
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;135 tests passing. Library-first architecture so you &lt;br&gt;
can embed it in your own tools and editors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond code
&lt;/h2&gt;

&lt;p&gt;The three primitives of NEXUS are universal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;@&lt;/code&gt; Directives — define context (&lt;code&gt;@React&lt;/code&gt;, &lt;code&gt;@Legal&lt;/code&gt;, &lt;code&gt;@Scientific&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#&lt;/code&gt; Tokens — define labels (&lt;code&gt;#urgent&lt;/code&gt;, &lt;code&gt;#primary&lt;/code&gt;, &lt;code&gt;#confidential&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-&amp;gt;&lt;/code&gt; &lt;code&gt;=&amp;gt;&lt;/code&gt; Relations — define flows and actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The protocol was designed for code but the problem it &lt;br&gt;
solves exists in every industry that uses AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Website: &lt;a href="https://nexuslang.dev" rel="noopener noreferrer"&gt;nexuslang.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 npm: &lt;a href="https://www.npmjs.com/package/nxlang" rel="noopener noreferrer"&gt;nxlang&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💻 GitHub: &lt;a href="https://github.com/open-souse/Nexus" rel="noopener noreferrer"&gt;open-souse/Nexus&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to hear what the Dev.to community thinks — &lt;br&gt;
especially if you've felt this same frustration with &lt;br&gt;
long prompts to AI.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
