<?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: Christopher Mburu</title>
    <description>The latest articles on DEV Community by Christopher Mburu (@christopher_mburu_7b7e0ba).</description>
    <link>https://dev.to/christopher_mburu_7b7e0ba</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%2F3853372%2F0427138c-df58-4c18-bd2a-dbd6a07824c1.jpg</url>
      <title>DEV Community: Christopher Mburu</title>
      <link>https://dev.to/christopher_mburu_7b7e0ba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christopher_mburu_7b7e0ba"/>
    <language>en</language>
    <item>
      <title>From AI Chatbots to AI Operators: Why Travel Doesn't Need Another Assistant</title>
      <dc:creator>Christopher Mburu</dc:creator>
      <pubDate>Mon, 13 Jul 2026 08:55:07 +0000</pubDate>
      <link>https://dev.to/christopher_mburu_7b7e0ba/from-ai-chatbots-to-ai-operators-why-travel-doesnt-need-another-assistant-gf</link>
      <guid>https://dev.to/christopher_mburu_7b7e0ba/from-ai-chatbots-to-ai-operators-why-travel-doesnt-need-another-assistant-gf</guid>
      <description>&lt;p&gt;&lt;em&gt;Most AI tools in travel can answer questions. Very few can actually do the work.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A delayed flight.&lt;br&gt;
A missed airport transfer.&lt;br&gt;
A hotel overbooked at midnight.&lt;br&gt;
A client changes destinations while already in transit.&lt;br&gt;
These aren't customer support problems.&lt;/em&gt;&lt;br&gt;
They're &lt;strong&gt;operations problems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yet much of today's AI conversation is still focused on building assistants that generate impressive responses instead of systems that execute reliable workflows.&lt;br&gt;
After spending the last several months building autonomous travel agents, I've become convinced that we're asking AI the wrong question.&lt;/p&gt;

&lt;p&gt;Instead of asking:&lt;br&gt;
&lt;em&gt;"Can AI answer this?"&lt;/em&gt;&lt;br&gt;
we should be asking:&lt;br&gt;
&lt;em&gt;"Can AI own this process from start to finish?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hidden Cost of Modern Travel Operations&lt;/strong&gt;&lt;br&gt;
Travel companies don't lose most of their time answering FAQs.&lt;br&gt;
They lose it managing fragmented information.&lt;/p&gt;

&lt;p&gt;A typical booking touches multiple systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRM&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;WhatsApp&lt;/li&gt;
&lt;li&gt;Supplier confirmations&lt;/li&gt;
&lt;li&gt;Flight updates&lt;/li&gt;
&lt;li&gt;Hotel vouchers&lt;/li&gt;
&lt;li&gt;Transfer schedules&lt;/li&gt;
&lt;li&gt;Customer preferences&lt;/li&gt;
&lt;li&gt;Internal spreadsheets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem isn't lack of data.&lt;br&gt;
It's that every piece of information lives somewhere different.&lt;br&gt;
Humans become the integration layer.&lt;br&gt;
That doesn't scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Shift: From AI Assistants to AI Operators&lt;/strong&gt;&lt;br&gt;
Most AI assistants work like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question
        ↓
Large Language Model
        ↓
Answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful?&lt;br&gt;
Absolutely.&lt;br&gt;
Finished?&lt;br&gt;
Not even close.&lt;br&gt;
An AI operator looks different:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Booking received
        ↓
Verify traveler profile
        ↓
Check supplier confirmations
        ↓
Monitor flights
        ↓
Detect risks
        ↓
Notify operations
        ↓
Rebook if required
        ↓
Update CRM
        ↓
Learn from outcome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice something?&lt;br&gt;
The user may never even talk to the AI.&lt;br&gt;
The work simply gets done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory Changes Everything&lt;/strong&gt;&lt;br&gt;
One capability I believe remains underrated is persistent operational memory.&lt;br&gt;
Most AI forgets everything after the conversation ends.&lt;br&gt;
Operations cannot.&lt;br&gt;
Imagine an agent remembering that a traveler:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;always prefers aisle seats,&lt;/li&gt;
&lt;li&gt;avoids overnight layovers,&lt;/li&gt;
&lt;li&gt;celebrates anniversaries while travelling,&lt;/li&gt;
&lt;li&gt;requires vegetarian meals,&lt;/li&gt;
&lt;li&gt;usually books airport transfers after landing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine it applying those preferences automatically across future bookings.&lt;br&gt;
No prompts.&lt;br&gt;
No repeated instructions.&lt;br&gt;
Just accumulated operational knowledge.&lt;br&gt;
That's where autonomous systems begin to create real value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building Hermes TravelOps&lt;/strong&gt;&lt;br&gt;
This idea led me to build &lt;a href="https://github.com/tourswithchris/hermes-travel-ops-native" rel="noopener noreferrer"&gt;&lt;strong&gt;Hermes TravelOps&lt;/strong&gt;&lt;/a&gt;—an autonomous operations agent for travel businesses.&lt;br&gt;
The goal wasn't another chatbot.&lt;br&gt;
The goal was something that behaves more like an experienced operations coordinator.&lt;br&gt;
An ideal operational agent should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;monitor bookings continuously,&lt;/li&gt;
&lt;li&gt;detect potential disruptions before customers notice,&lt;/li&gt;
&lt;li&gt;preserve organizational knowledge,&lt;/li&gt;
&lt;li&gt;coordinate multiple workflows,&lt;/li&gt;
&lt;li&gt;improve after every completed trip.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting engineering challenge isn't generating text.&lt;br&gt;
It's designing systems that remember, observe, decide, and execute safely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Hard Part Isn't AI&lt;/strong&gt;&lt;br&gt;
Ironically, the hardest part hasn't been prompting large language models.&lt;br&gt;
It's engineering everything around them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;state management,&lt;/li&gt;
&lt;li&gt;workflow orchestration,&lt;/li&gt;
&lt;li&gt;memory,&lt;/li&gt;
&lt;li&gt;event handling,&lt;/li&gt;
&lt;li&gt;recovery from failures,&lt;/li&gt;
&lt;li&gt;trust,&lt;/li&gt;
&lt;li&gt;human approval when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The intelligence isn't a single model.&lt;br&gt;
It's the architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where I Think Travel Tech Is Heading&lt;/strong&gt;&lt;br&gt;
Over the next few years, I expect travel companies to rely less on dashboards and more on autonomous operational systems.&lt;br&gt;
Instead of logging into ten different platforms every morning, operations teams may simply review:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Here's what happened overnight.&lt;br&gt;
Here are the issues already resolved.&lt;br&gt;
Here are the three decisions that still require human approval."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That changes the role of operations from reacting to supervising.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm Curious What Others Think&lt;/strong&gt;&lt;br&gt;
If you're building with AI or working in travel operations, I'd love your perspective.&lt;br&gt;
A few questions to start the discussion:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Where do you see the biggest operational bottleneck today?&lt;br&gt;
Would you trust an autonomous agent to handle customer bookings if every action were fully auditable?&lt;br&gt;
What's the biggest challenge you've encountered when moving from AI demos to production systems?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I'm especially interested in hearing from engineers, travel operators, and founders building systems that go beyond chat.&lt;br&gt;
The next generation of AI may not be the one that talks the best.&lt;br&gt;
It may be the one that quietly gets the work done.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
    <item>
      <title>From Hidden Data Loss to Reliable Bookings: Finishing Demic Ride with GitHub Copilot</title>
      <dc:creator>Christopher Mburu</dc:creator>
      <pubDate>Fri, 05 Jun 2026 12:33:35 +0000</pubDate>
      <link>https://dev.to/christopher_mburu_7b7e0ba/from-hidden-data-loss-to-reliable-bookings-finishing-demic-ride-with-github-copilot-2li3</link>
      <guid>https://dev.to/christopher_mburu_7b7e0ba/from-hidden-data-loss-to-reliable-bookings-finishing-demic-ride-with-github-copilot-2li3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Demic Ride is a corporate taxi dispatch and ride-hailing platform for Demic Tours Africa, built on Next.js, Supabase, and Tailwind, deployed on Render at &lt;a href="https://ride.demicafrica.com" rel="noopener noreferrer"&gt;ride.demicafrica.com&lt;/a&gt;. It handles passenger booking, automatic driver dispatch, live GPS tracking, and a pay-after-ride flow.&lt;/p&gt;

&lt;p&gt;The MVP was already live — but "live" hid a problem. A booking form that looked finished was silently throwing away data on every submission. Finishing this project meant catching the bug that nobody had noticed because it never produced an error.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://ride.demicafrica.com" rel="noopener noreferrer"&gt;ride.demicafrica.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Repo (challenge branch):&lt;/strong&gt; &lt;a href="https://github.com/Demic-Africa/demic-ride/tree/finish-up-athon" rel="noopener noreferrer"&gt;Demic-Africa/demic-ride @ finish-up-athon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfmnq60dg7jdlghkrctf.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%2Frfmnq60dg7jdlghkrctf.png" alt="Demic Ride booking form on the live site showing a failed submission with the error " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zankjwe6ucywe8sccwv.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%2F8zankjwe6ucywe8sccwv.png" alt="Booking success screen reading " width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqv4hztbin90mottpm1iw.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%2Fqv4hztbin90mottpm1iw.png" alt="Supabase bookings table showing a row with scheduled_date, scheduled_time, and notes columns now populated" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7at1qd6l8rzvshmpuzze.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%2F7at1qd6l8rzvshmpuzze.png" alt="Demic Ride Fleet Analytics dashboard showing four metric cards: Today's Bookings (0), Total Drivers (6), Weekly Bookings (1), and a status breakdown for Pending, Assigned, and Completed bookings. The dashboard renders live data from Supabase and was generated entirely by GitHub Copilot." width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Before vs After
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Schedule data was collected but not stored&lt;/li&gt;
&lt;li&gt;Missing database columns&lt;/li&gt;
&lt;li&gt;Weak validation around booking schedules&lt;/li&gt;
&lt;li&gt;Dispatch failures were not handled gracefully&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Schedule data persists correctly&lt;/li&gt;
&lt;li&gt;Database migrations are version controlled&lt;/li&gt;
&lt;li&gt;Validation prevents incomplete bookings&lt;/li&gt;
&lt;li&gt;Dispatch failures no longer break the booking workflow&lt;/li&gt;
&lt;li&gt;Analytics dashboard provides operational visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I changed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Added the missing columns&lt;/strong&gt; via a version-controlled migration (&lt;code&gt;scheduled_date&lt;/code&gt;, &lt;code&gt;scheduled_time&lt;/code&gt;, &lt;code&gt;notes&lt;/code&gt;). The schema had only ever lived in the Supabase dashboard, so this also put it into git for the first time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Added real validation&lt;/strong&gt; for date/time, with an inline error instead of a native &lt;code&gt;alert()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrapped dispatch in try/catch&lt;/strong&gt; so a failure now saves the booking and shows an honest "driver will be assigned shortly" state instead of a fake success.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;One honest note: the booking failure I first screenshotted turned out to be the Supabase project auto-pausing on the free tier, not a code bug — resuming it restored bookings. The real, code-level issue was the silent data loss above. I kept that distinction clear in my &lt;a href="https://github.com/Demic-Africa/demic-ride/blob/finish-up-athon/docs/FINISH_UP_ATHON.md" rel="noopener noreferrer"&gt;project journal&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;I used Copilot in two distinct ways, and I want to be precise about which was which.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As a reviewer&lt;/strong&gt; for the fixes above. I'd written the migration, validation, and error handling, then ran them past Copilot with my repo as context to check my work and confirm root cause. In one session I asked it to update the date/time validation — and it correctly told me the validation was already right, pointed at the exact line, and suggested a more granular per-field error pattern instead. In another it walked the booking-failure root cause and explained exactly why the missing columns caused silent data loss. Having an AI confirm or push back on a fix you've already made is underrated: it caught nothing catastrophic, but it tightened my reasoning and my dispatch error-handling pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As an author&lt;/strong&gt; for net-new code: the fleet analytics dashboard. This one Copilot built. I gave it my real &lt;code&gt;bookings&lt;/code&gt; and &lt;code&gt;drivers&lt;/code&gt; columns and asked for an admin analytics component using the app's existing styles. It generated the component; I corrected the one thing it guessed wrong (the driver-status query column), wired it into an &lt;code&gt;/admin/dashboard&lt;/code&gt; route, and it rendered live data on the first build.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example: Database Migration
&lt;/h3&gt;

&lt;p&gt;Prompt:&lt;/p&gt;

&lt;p&gt;"Generate a Supabase migration to add scheduled_date, scheduled_time, and notes columns using IF NOT EXISTS."&lt;/p&gt;

&lt;p&gt;Copilot Output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generated migration structure&lt;/li&gt;
&lt;li&gt;Suggested safe ALTER TABLE statements&lt;/li&gt;
&lt;li&gt;Explained rollback considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Outcome:&lt;/p&gt;

&lt;p&gt;The missing fields were added and booking schedule data now persists correctly.&lt;/p&gt;

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

&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/Demic-Africa/demic-ride/tree/finish-up-athon" rel="noopener noreferrer"&gt;https://github.com/Demic-Africa/demic-ride/tree/finish-up-athon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live Demo:&lt;br&gt;
&lt;a href="https://ride.demicafrica.com" rel="noopener noreferrer"&gt;https://ride.demicafrica.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>githubcopilot</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>Hermes TravelOps: An Agent That Learns From Every Trip</title>
      <dc:creator>Christopher Mburu</dc:creator>
      <pubDate>Sun, 31 May 2026 17:13:27 +0000</pubDate>
      <link>https://dev.to/christopher_mburu_7b7e0ba/hermes-travelops-an-agent-that-learns-from-every-trip-5805</link>
      <guid>https://dev.to/christopher_mburu_7b7e0ba/hermes-travelops-an-agent-that-learns-from-every-trip-5805</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hermes TravelOps Agent&lt;/strong&gt; — an autonomous travel operations manager built natively on Hermes Agent. It remembers each traveler's preferences without prompting, researches flights and hotels via web search, flags risks, and runs a post-trip debrief that rewrites its own memory so the &lt;em&gt;next&lt;/em&gt; trip plan is automatically different. No external backend: memory, skills, and scheduling are all Hermes's own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Travel coordinators repeat the same operational loop for every trip: research flights and hotels against a traveler's quirks, check visas, assemble an itinerary, monitor for disruptions, and — the part every tool ignores — &lt;em&gt;learn&lt;/em&gt; from how the trip actually went. Most AI travel tools answer a question and forget you. I wanted one that operates and remembers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture: Hermes IS the Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.hermes/
├── skills/
│   ├── travel-plan-request/SKILL.md   ← Multi-step planning
│   └── post-trip-debrief/SKILL.md     ← Learning loop
├── context/
│   └── TRAVEL_OPS_CONTEXT.md          ← Domain knowledge
├── memories/
│   └── MEMORY.md                      ← Persistent memory (FTS5)
└── SOUL.md                            ← Agent persona
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Hermes handles memory, web search, skill execution, and scheduling natively. It's model-agnostic — this demo runs on &lt;code&gt;gemini-3-flash-preview&lt;/code&gt; through Hermes's provider layer, and nothing in the project depends on which model sits underneath.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Demo data is seeded.&lt;/strong&gt; I loaded two traveler profiles and one prior-trip record into memory before recording, so the learning loop has history to work against. Trip dates are fixture data, not live calendar events. What the agent &lt;em&gt;does&lt;/em&gt; — recall, research, debrief, re-plan — is real and unscripted.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The Demo
&lt;/h2&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Command 1 — Plan a trip:&lt;/strong&gt; &lt;code&gt;Plan a trip for Sarah to Dubai next week&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Hermes loaded the planning skill, fired three web searches, and returned one recommendation with every stored preference already applied — without me restating any of them: Emirates EK720, window seat (enforced), vegetarian (matched), non-stop, Marriott Palm Jumeirah, WiFi 5/5, visa valid to 2027-03-15, ~$850, ending at "pending approval."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 2 — Visa check:&lt;/strong&gt; &lt;code&gt;Check visa for Sarah going to UAE&lt;/code&gt; → Valid, multi-entry, expiry 2027-03-15, no action required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 3 — Post-trip debrief:&lt;/strong&gt; &lt;code&gt;Sarah is back from Dubai. Emirates was 4/5 but the layover in DXB was 6 hours and she was frustrated.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This triggered the &lt;code&gt;post-trip-debrief&lt;/code&gt; skill. The memory tool fires repeatedly in the recording — including failed lookups before the write lands, which is what a real agent retrying looks like. It marked the 6hr layover "strictly unacceptable," added a directive to enforce direct Emirates flights for NBO-DXB, and wrote the lesson to memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 4 — Prove the memory changed:&lt;/strong&gt; &lt;code&gt;cat ~/.hermes/memories/MEMORY.md | grep -A2 "Sarah Chen"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The file now reads &lt;code&gt;max 3hr layover&lt;/code&gt; and carries the dated lesson. It changed because the agent rewrote it — no update script, no external database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command 5 — Re-plan, watch it apply what it learned:&lt;/strong&gt; &lt;code&gt;Plan another trip for Sarah to Dubai next month&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With zero prompting, the new plan enforced the constraint the debrief created: non-stop only, "EK720 selected explicitly to avoid the 6-hour layover friction reported in June," and Marriott Palm Jumeirah prioritized over Business Bay on a previously-logged WiFi rating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Uses Hermes Properly
&lt;/h2&gt;

&lt;p&gt;Build criterion #1 is "effective use of Hermes Agent's agentic capabilities." I used Hermes native memory (FTS5 + MEMORY.md) instead of a database, Hermes skills instead of custom orchestration, Hermes built-in web search instead of a bolted-on service, and a skill-driven post-trip loop that writes back to memory and changes future behavior. A handful of files, no infrastructure, model-swappable underneath.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/tourswithchris/hermes-travel-ops-native.git
&lt;span class="nb"&gt;cd &lt;/span&gt;hermes-travel-ops-native
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; skills/&lt;span class="k"&gt;*&lt;/span&gt; ~/.hermes/skills/
&lt;span class="nb"&gt;cp &lt;/span&gt;context/TRAVEL_OPS_CONTEXT.md ~/.hermes/context/
&lt;span class="nb"&gt;cp &lt;/span&gt;memories/&lt;span class="k"&gt;*&lt;/span&gt; ~/.hermes/memories/
&lt;span class="nb"&gt;cp &lt;/span&gt;SOUL.md ~/.hermes/
hermes chat
&lt;span class="c"&gt;# Then: Plan a trip for Sarah to Dubai next week&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Repo: &lt;a href="https://github.com/tourswithchris/hermes-travel-ops-native" rel="noopener noreferrer"&gt;https://github.com/tourswithchris/hermes-travel-ops-native&lt;/a&gt;&lt;/p&gt;




</description>
      <category>hermesagentchallenge</category>
      <category>devchallenge</category>
      <category>agents</category>
      <category>travel</category>
    </item>
  </channel>
</rss>
