Compare commits
32 Commits
3b46816a4e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| acaa49af02 | |||
| 01870aa6eb | |||
| 7c9aa7464a | |||
| d84af0b069 | |||
| 54027859cc | |||
| 4fd8ccbafe | |||
| fee0953c5f | |||
| b0c9e44701 | |||
| 6ca6b33bba | |||
| 04b1c0a13b | |||
| cdfa125c2a | |||
| 7442702722 | |||
| 56db882f2e | |||
| fbda9d9ebc | |||
| 86c3ff79dc | |||
| 3efde98250 | |||
| ee908a65bb | |||
| 8425296ef3 | |||
| 272ef8e0ff | |||
| fad43e355b | |||
| 7792bd909f | |||
| 59f181e3a7 | |||
| a0f0b2e479 | |||
| 49f18da672 | |||
| 26e635d278 | |||
| b6c72e159a | |||
| afce3a3ddd | |||
| 5206d1c3c9 | |||
| 64a46780e9 | |||
| 1ac2d16cfe | |||
| edf82d5ffb | |||
| 781a8d43f9 |
+595
@@ -0,0 +1,595 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<!-- ── SEO ───────────────────────────────────────────────── -->
|
||||
<title>Affiliate Program — derez.ai</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Partner with derez.ai. Earn commissions on referrals and integration signups. Two ways to earn from one audience."
|
||||
/>
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/affiliate.html" />
|
||||
|
||||
<!-- ── OG ─────────────────────────────────────────────────── -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://derez.ai/affiliate.html" />
|
||||
<meta property="og:title" content="Affiliate Program — derez.ai" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Partner with derez.ai. Earn commissions on referrals and integration signups. Two ways to earn from one audience."
|
||||
/>
|
||||
<meta property="og:image" content="https://derez.ai/og-image.png" />
|
||||
<meta property="og:site_name" content="derez.ai" />
|
||||
|
||||
<!-- ── Twitter ────────────────────────────────────────────── -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Affiliate Program — derez.ai" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Partner with derez.ai. Earn commissions on referrals and integration signups. Two ways to earn from one audience."
|
||||
/>
|
||||
|
||||
<!-- ── Stylesheet ─────────────────────────────────────────── -->
|
||||
<link rel="stylesheet" href="assets/css/style.css" />
|
||||
|
||||
<!-- ── Page-specific styles ───────────────────────────────── -->
|
||||
<style>
|
||||
/* Override body top padding for fixed header */
|
||||
body {
|
||||
padding-top: 60px;
|
||||
}
|
||||
|
||||
/* ── Hero ────────────────────────────────────────────── */
|
||||
.affiliate-hero {
|
||||
padding: 100px 0 60px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.affiliate-hero::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -30%;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 90%;
|
||||
height: 140%;
|
||||
background: radial-gradient(
|
||||
ellipse at center,
|
||||
rgba(0, 245, 255, 0.05) 0%,
|
||||
transparent 65%
|
||||
);
|
||||
pointer-events: none;
|
||||
}
|
||||
.affiliate-hero h1 {
|
||||
font-size: clamp(2.2rem, 5.5vw, 3.8rem);
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 16px;
|
||||
max-width: 820px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.hero-badges {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 12px;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.affiliate-hero h1 .highlight {
|
||||
background: linear-gradient(135deg, var(--accent), #66e5ff);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
.affiliate-hero p {
|
||||
font-size: clamp(1rem, 2vw, 1.2rem);
|
||||
max-width: 620px;
|
||||
margin: 0 auto;
|
||||
line-height: 1.7;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
/* ── Section ─────────────────────────────────────────── */
|
||||
.affiliate-section {
|
||||
padding: 80px 0;
|
||||
}
|
||||
.affiliate-section h2 {
|
||||
font-size: clamp(1.6rem, 3.5vw, 2.4rem);
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.affiliate-section h2 .highlight {
|
||||
background: linear-gradient(135deg, var(--accent), #66e5ff);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
.affiliate-section > p {
|
||||
color: var(--text-muted);
|
||||
max-width: 700px;
|
||||
margin-bottom: 16px;
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* ── Card Grid ───────────────────────────────────────── */
|
||||
.card-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||||
gap: 20px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
.card-grid .card {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-card);
|
||||
padding: 28px;
|
||||
transition: border-color 0.2s;
|
||||
}
|
||||
.card-grid .card:hover {
|
||||
border-color: var(--border-hi);
|
||||
}
|
||||
.card-grid .card h3 {
|
||||
font-size: 1.1rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.card-grid .card p {
|
||||
color: var(--text-muted);
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ── Highlight box ───────────────────────────────────── */
|
||||
.highlight-box {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border);
|
||||
border-left: 3px solid var(--success);
|
||||
border-radius: var(--radius-card);
|
||||
padding: 24px 28px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
.highlight-box h3 {
|
||||
font-size: 1rem;
|
||||
font-weight: 700;
|
||||
color: var(--success);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.highlight-box p {
|
||||
color: var(--text-muted);
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ── Bullet list ─────────────────────────────────────── */
|
||||
.affiliate-list {
|
||||
list-style: none;
|
||||
margin: 0 0 24px;
|
||||
}
|
||||
.affiliate-list li {
|
||||
padding: 8px 0 8px 24px;
|
||||
position: relative;
|
||||
color: var(--text-muted);
|
||||
font-size: 14px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.affiliate-list li::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 15px;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 2px;
|
||||
background: var(--accent);
|
||||
opacity: 0.5;
|
||||
}
|
||||
.affiliate-list li strong {
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
/* ── CTA section ─────────────────────────────────────── */
|
||||
.cta-section {
|
||||
text-align: center;
|
||||
padding: 80px 0;
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
.cta-section h2 {
|
||||
font-size: clamp(1.6rem, 3.5vw, 2.4rem);
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.02em;
|
||||
margin-bottom: 12px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
.cta-section h2 .highlight {
|
||||
background: linear-gradient(135deg, var(--accent), #66e5ff);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
.cta-section p {
|
||||
color: var(--text-muted);
|
||||
font-size: 14px;
|
||||
max-width: 560px;
|
||||
margin: 0 auto 12px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.cta-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 14px;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 28px;
|
||||
}
|
||||
|
||||
/* ── Responsive ──────────────────────────────────────── */
|
||||
@media (max-width: 700px) {
|
||||
.affiliate-hero {
|
||||
padding: 80px 0 40px;
|
||||
}
|
||||
.affiliate-section {
|
||||
padding: 50px 0;
|
||||
}
|
||||
.cta-section {
|
||||
padding: 50px 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- ── Plausible Analytics ───────────────────────────────── -->
|
||||
<script
|
||||
defer
|
||||
data-domain="derez.ai"
|
||||
src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments);
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
HEADER
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<header class="site-header" id="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="site-logo">
|
||||
<img
|
||||
src="assets/images/logo.svg"
|
||||
alt="derez.ai"
|
||||
width="132"
|
||||
height="34"
|
||||
class="site-logo-img"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<ul class="nav-links" id="nav-links">
|
||||
<li><a href="https://derez.ai/#pricing">Pricing</a></li>
|
||||
<li><a href="https://derez.ai/#faq">FAQ</a></li>
|
||||
<li><a href="https://derez.ai/#blog">Blog</a></li>
|
||||
<li><a href="https://derez.ai/#topics">Topics</a></li>
|
||||
</ul>
|
||||
<div class="header-actions">
|
||||
<a href="https://app.derez.ai" class="btn-login">
|
||||
<svg
|
||||
width="14"
|
||||
height="14"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect x="3" y="11" width="18" height="11" rx="2" />
|
||||
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
|
||||
</svg>
|
||||
Sign In
|
||||
</a>
|
||||
<a
|
||||
href="https://derez.ai/#pricing"
|
||||
class="btn btn-primary btn-signup-header"
|
||||
>Buy Agent</a
|
||||
>
|
||||
<button
|
||||
class="hamburger"
|
||||
id="hamburger"
|
||||
aria-label="Toggle menu"
|
||||
onclick="toggleMobile()"
|
||||
>
|
||||
<span></span><span></span><span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
CHAT WIDGET (floating bottom-right, same as main site)
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<button
|
||||
class="chat-fab"
|
||||
id="chat-fab"
|
||||
onclick="chatToggle()"
|
||||
aria-label="Chat with Sales Agent"
|
||||
>
|
||||
<svg
|
||||
width="28"
|
||||
height="28"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path
|
||||
d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
<div class="chat-widget" id="chat-widget" aria-hidden="true">
|
||||
<div class="chat-header">
|
||||
<div class="chat-header-avatar">⚡</div>
|
||||
<div class="chat-header-info">
|
||||
<div class="chat-header-name">Sales Agent</div>
|
||||
<div class="chat-header-status">Online</div>
|
||||
</div>
|
||||
<button
|
||||
class="chat-header-close"
|
||||
onclick="chatClose()"
|
||||
aria-label="Close chat"
|
||||
>
|
||||
✕
|
||||
</button>
|
||||
</div>
|
||||
<div class="chat-msgs" id="chat-msgs"></div>
|
||||
<div class="chat-input-row">
|
||||
<input
|
||||
type="text"
|
||||
class="chat-input-box"
|
||||
id="chat-input"
|
||||
placeholder="Ask your sales agent..."
|
||||
onkeydown="chatKey(event)"
|
||||
/>
|
||||
<button
|
||||
class="chat-send-btn"
|
||||
id="chat-send-btn"
|
||||
onclick="chatSend()"
|
||||
>
|
||||
➤
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
HERO
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="affiliate-hero">
|
||||
<div class="container">
|
||||
<div class="hero-badges">
|
||||
<span class="hero-badge">
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12" /></svg>
|
||||
Your affiliate link in our wizard
|
||||
</span>
|
||||
<span class="hero-badge">
|
||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12" /></svg>
|
||||
With the quick restore option, you can have a fresh Agent for your video in no time
|
||||
</span>
|
||||
</div>
|
||||
<h1>
|
||||
Earn With <span class="highlight">derez.ai</span>
|
||||
</h1>
|
||||
<p>
|
||||
All clients referred by you will see your affiliate links to
|
||||
3rd parties like Semrush, Stripe, and NordVPN during the
|
||||
integration wizard. You earn when they sign up — without
|
||||
lifting a finger.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
WHY DIFFERENT
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="affiliate-section">
|
||||
<div class="container">
|
||||
<h2>Why Our Program is <span class="highlight">Different</span></h2>
|
||||
<p>
|
||||
We believe in building a great product at a fair price. That means we
|
||||
don't have the deep pockets of big enterprise platforms, and we won't
|
||||
pretend we do. Instead of chasing huge commissions that don't exist,
|
||||
we focus on what actually works: a product your audience will love,
|
||||
and the tools to make that happen.
|
||||
</p>
|
||||
|
||||
<div class="card-grid">
|
||||
<div class="card">
|
||||
<h3>🎯 Higher Conversion</h3>
|
||||
<p>
|
||||
Your viewers who tried setting up an agent and hit the technical
|
||||
wall? We catch them. derez.ai turns their frustration into a
|
||||
working agent in 10 minutes — no SSH, no VPS fiddling.
|
||||
</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>💰 Two Ways to Earn</h3>
|
||||
<p>
|
||||
You earn when someone signs up through your link. Plus, when they
|
||||
use the wizard to add integrations, you can place your own
|
||||
affiliate links there too — a second chance to earn on the
|
||||
tools your audience needs.
|
||||
</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>🔄 Built Into the Wizard</h3>
|
||||
<p>
|
||||
Your link lives inside the derez.ai setup wizard — not just
|
||||
a static URL in a video description. Every user who goes through
|
||||
the flow sees it at the right moment.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
HOW IT WORKS
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="affiliate-section" style="border-top: 1px solid var(--border)">
|
||||
<div class="container">
|
||||
<h2>How It <span class="highlight">Works</span></h2>
|
||||
<p>
|
||||
When you register as a client and you get your first Agent with
|
||||
derez.ai you already get all your affiliate package: your affiliate
|
||||
code and link, access to the configuration of your outgoing links.
|
||||
Easy as all of our services.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
SECOND CHANCE
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="affiliate-section" style="border-top: 1px solid var(--border)">
|
||||
<div class="container">
|
||||
<h2>The <span class="highlight">Second Chance</span> to Earn</h2>
|
||||
<p>
|
||||
Most affiliate programs give you one shot: someone clicks your link
|
||||
and either converts or doesn't. We give you a second.
|
||||
</p>
|
||||
<p>
|
||||
When a derez.ai user opens the wizard to integrate a new tool —
|
||||
whether it's Semrush for SEO, Shopify for ecommerce, Stripe for
|
||||
payments, or any of the other integrations we support — your
|
||||
affiliate link for that service gets shown. You help the content
|
||||
creator find the right tool <em>and</em> you earn a commission on
|
||||
that signup too.
|
||||
</p>
|
||||
<p>
|
||||
Think of it this way: your main link gets them into derez.ai. Your
|
||||
integration links help them build on top of it. Two revenue streams
|
||||
from one audience.
|
||||
</p>
|
||||
|
||||
<div class="highlight-box">
|
||||
<h3>✅ Best Part</h3>
|
||||
<p>
|
||||
When you have an account on derez.ai, you already have access to
|
||||
the affiliate area. No separate dashboard, no additional login.
|
||||
Your affiliate tools are right there alongside your agent.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
WHY YOUR AUDIENCE WILL THANK YOU
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="affiliate-section" style="border-top: 1px solid var(--border)">
|
||||
<div class="container">
|
||||
<h2>Why Your Audience Will <span class="highlight">Thank You</span></h2>
|
||||
<p>
|
||||
Your viewers come to you because they want to work with AI agents —
|
||||
not because they want to debug SSH configs at 2 AM. derez.ai removes
|
||||
every barrier:
|
||||
</p>
|
||||
<ul class="affiliate-list">
|
||||
<li>
|
||||
<strong>No VPS setup needed.</strong> We create the server, install
|
||||
everything, and hand them a working agent in minutes.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Automatic backups.</strong> One click and their agent state
|
||||
is saved. No more losing hours of work.
|
||||
</li>
|
||||
<li>
|
||||
<strong>One-click integrations.</strong> Semrush, Shopify, Stripe,
|
||||
Odoo, n8n — if it's in the wizard, it's minutes away from
|
||||
working.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Full SSH access.</strong> For the power users who want
|
||||
control. We don't lock anyone in.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
The result? More playtime, more experimentation, and more content
|
||||
created. Your audience gets more value from their agent, and you
|
||||
get credit for sending them to a solution that actually works.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
CTA
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<section class="cta-section">
|
||||
<div class="container">
|
||||
<h2>Ready to <span class="highlight">Partner Up?</span></h2>
|
||||
<p>
|
||||
Join the derez.ai affiliate program. Use code
|
||||
<strong>friends950</strong> to get your first agent for one month
|
||||
free and test our product and check the affiliate program.
|
||||
</p>
|
||||
<p>
|
||||
Already have a derez.ai account? Your affiliate dashboard is waiting
|
||||
in your account settings.
|
||||
</p>
|
||||
<div class="cta-actions">
|
||||
<a href="https://derez.ai/#pricing" class="btn btn-primary btn-lg"
|
||||
>Sign Up</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
FOOTER
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<span>© 2026 derez.ai — AI Agent Hosting</span>
|
||||
<div class="footer-links">
|
||||
<a href="https://derez.ai/affiliate.html">Affiliate Program</a>
|
||||
<a
|
||||
href="https://www.youtube.com/@derez_ai"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>YouTube</a
|
||||
>
|
||||
<a
|
||||
href="https://www.linkedin.com/company/derez-ai"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>LinkedIn</a
|
||||
>
|
||||
<a
|
||||
href="https://ODOO4projects.com?utm_source=derez"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>Powered by ODOO4projects LLC</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- ── JavaScript ─────────────────────────────────────────── -->
|
||||
<script src="assets/js/script.js?v3" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1186,6 +1186,9 @@ section {
|
||||
.blog-card-area.area-story {
|
||||
background: #00ff88;
|
||||
}
|
||||
.blog-card-area.area-review {
|
||||
background: #00ff88;
|
||||
}
|
||||
.blog-card-area.area-default {
|
||||
background: #a78bfa;
|
||||
}
|
||||
|
||||
+14
-7
@@ -283,10 +283,11 @@ function updatePeriodDisplay() {
|
||||
? "/ month ✦ yearly"
|
||||
: "/ month";
|
||||
}
|
||||
document
|
||||
.getElementById("pricing-period")
|
||||
.addEventListener("change", updatePeriodDisplay);
|
||||
const pricingPeriod = document.getElementById("pricing-period");
|
||||
if (pricingPeriod) {
|
||||
pricingPeriod.addEventListener("change", updatePeriodDisplay);
|
||||
updatePeriodDisplay(); // fire on load so yearly bonuses show by default
|
||||
}
|
||||
const SERVER_WEBHOOK = "https://n8n.derez.ai/webhook/server";
|
||||
initServerLocations(); // fetch live server availability
|
||||
|
||||
@@ -295,7 +296,8 @@ initServerLocations(); // fetch live server availability
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
["source", "medium", "campaign", "term", "content"].forEach(function (key) {
|
||||
const val = params.get("utm_" + key);
|
||||
if (val) document.getElementById("utm_" + key).value = val;
|
||||
const el = document.getElementById("utm_" + key);
|
||||
if (val && el) el.value = val;
|
||||
});
|
||||
})();
|
||||
|
||||
@@ -753,9 +755,10 @@ function updateCouponBadges() {
|
||||
}
|
||||
});
|
||||
}
|
||||
document
|
||||
.getElementById("pricing-coupon")
|
||||
.addEventListener("input", updateCouponBadges);
|
||||
const pricingCoupon = document.getElementById("pricing-coupon");
|
||||
if (pricingCoupon) {
|
||||
pricingCoupon.addEventListener("input", updateCouponBadges);
|
||||
}
|
||||
|
||||
/* ── Blog ──────────────────────────────────────────────── */
|
||||
const BLOG_POSTS_PER_PAGE = 6;
|
||||
@@ -789,6 +792,10 @@ function blogAreaClass(area) {
|
||||
"video-scripts": "area-video-scripts",
|
||||
"speed-run": "area-speed-run",
|
||||
story: "area-story",
|
||||
review: "area-review",
|
||||
guide: "area-guide",
|
||||
tutorial: "area-tutorial",
|
||||
architecture: "area-architecture",
|
||||
};
|
||||
return map[area] || "area-default";
|
||||
}
|
||||
|
||||
+64
-9
@@ -1,5 +1,69 @@
|
||||
{
|
||||
"posts": [
|
||||
{
|
||||
"id": "automating-linkedin-content-with-ai-agent",
|
||||
"date": "2026-07-10",
|
||||
"area": "howto",
|
||||
"agent": "hermes",
|
||||
"headline": "How I Automated My LinkedIn Content Publishing with an AI Agent",
|
||||
"teaser": "I automated derez.ai\u2019s entire LinkedIn publishing pipeline with Hermes Agent. From researching topics and writing posts to publishing on the company page and cross-posting to groups \u2014 my AI agent does it all. Here\u2019s how it works.",
|
||||
"link": "blog/posts/automating-linkedin-content-with-ai-agent.html"
|
||||
},
|
||||
{
|
||||
"id": "building-a-company-plugin",
|
||||
"date": "2026-07-08",
|
||||
"area": "story",
|
||||
"agent": "hermes",
|
||||
"headline": "Building a Company #2 \u2014 I Built a Hermes Plugin That Runs My Business",
|
||||
"teaser": "I created the derez-company plugin \u2014 CRM, dashboard, sales, and marketing in one repo. First 70 leads imported and visible. What I learned: I suck at developing Hermes plugins manually. So I gave Hermes write access to the repo and let my agent do it.",
|
||||
"link": "blog/posts/building-a-company-plugin.html"
|
||||
},
|
||||
{
|
||||
"id": "building-a-company-intro",
|
||||
"date": "2026-07-07",
|
||||
"area": "story",
|
||||
"agent": "hermes",
|
||||
"headline": "Building a Company \u2014 How We Use Hermes at derez.ai (Series Intro)",
|
||||
"teaser": "We\u2019re building a company on top of our own product \u2014 and packaging everything so you can reuse it. This series shows how derez.ai runs daily operations on Hermes Agent. Next story: we open-source the entire sales agent setup.",
|
||||
"link": "blog/posts/building-a-company-intro.html"
|
||||
},
|
||||
{
|
||||
"id": "hermes-v0.18-business-review",
|
||||
"date": "2026-07-02",
|
||||
"area": "review",
|
||||
"agent": "hermes",
|
||||
"headline": "Hermes Agent v0.18.0 \u2014 A Business Review",
|
||||
"teaser": "I reviewed the latest Hermes Agent release through a business lens. Mixture-of-Agents, verification evidence, and the P0/P1 clean sweep \u2014 what actually matters for business users.",
|
||||
"link": "blog/posts/hermes-v0.18-business-review.html"
|
||||
},
|
||||
{
|
||||
"id": "hermes-agent-v0.18-closed-949-issues",
|
||||
"date": "2026-07-02",
|
||||
"area": "architecture",
|
||||
"agent": "hermes",
|
||||
"headline": "How Hermes Agent Closed 949 GitHub Issues in 12 Days",
|
||||
"teaser": "Hermes Agent v0.18.0 resolved every single P0 and P1 issue in the entire repo. 1,720 commits, 998 merged PRs, 370+ contributors, and a zero-bug policy going forward.",
|
||||
"link": "blog/posts/hermes-agent-v0.18-closed-949-issues.html"
|
||||
},
|
||||
{
|
||||
"id": "ai-agent-verification-completion-contracts",
|
||||
"date": "2026-07-02",
|
||||
"area": "howto",
|
||||
"agent": "hermes",
|
||||
"headline": "Make Your AI Agent Verify Its Own Work — No More Hallucinated “Done”",
|
||||
"teaser": "Stop guessing if your AI agent actually finished the job. Hermes Agent v0.18.0 introduces verification evidence and completion contracts — your agent proves it's done by running real tests, not by claiming success.",
|
||||
"link": "blog/posts/ai-agent-verification-completion-contracts.html"
|
||||
},
|
||||
{
|
||||
"id": "odoo-xml-rpc-hermes-agent",
|
||||
"date": "2026-06-29",
|
||||
"area": "guide",
|
||||
"agent": "hermes",
|
||||
"video": true,
|
||||
"headline": "Connect Odoo to Hermes Agent via XML-RPC — Complete Guide",
|
||||
"teaser": "Step-by-step guide to connecting Odoo to Hermes Agent via XML-RPC. Real credentials included. Pull leads, sales orders, and inventory in under 5 minutes.",
|
||||
"link": "blog/posts/odoo-xml-rpc-hermes-agent.html"
|
||||
},
|
||||
{
|
||||
"id": "speed-run-odoo-static-website",
|
||||
"date": "2026-06-22",
|
||||
@@ -9,15 +73,6 @@
|
||||
"teaser": "Convert your entire Odoo marketing website to a static site and deploy via git in under 10 minutes. No database, no server maintenance, lightning-fast CDN delivery.",
|
||||
"link": "blog/posts/speed-run-odoo-static-website.html"
|
||||
},
|
||||
{
|
||||
"id": "wandern-mit-theo-agent-schreibt",
|
||||
"date": "2026-06-20",
|
||||
"area": "story",
|
||||
"agent": "hermes",
|
||||
"headline": "Wandern mit Theo \u2014 w\u00e4hrend mein Hermes Agent schreibt",
|
||||
"teaser": "Wie ich mit meinem Sohn wandern gehe, w\u00e4hrend mein KI-Agent Blogposts schreibt, Emails beantwortet und die CRM pflegt. Ein Erfahrungsbericht aus Paraguay.",
|
||||
"link": "blog/posts/wandern-mit-theo-agent-schreibt.html"
|
||||
},
|
||||
{
|
||||
"id": "three-ways-integrate-odoo-hermes",
|
||||
"date": "2026-06-20",
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/ai-agent-verification-completion-contracts.html" />
|
||||
<title>Make Your AI Agent Verify Its Own Work — No More Hallucinated "Done" — derez.ai Blog</title>
|
||||
<meta name="description" content="Stop guessing if your AI agent actually finished the job. Hermes Agent v0.18.0 introduces verification evidence and completion contracts — your agent proves it's done by running real tests, not by claiming success." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/ai-agent-verification-completion-contracts.html" />
|
||||
<meta property="og:title" content="Make Your AI Agent Verify Its Own Work — No More Hallucinated "Done"" />
|
||||
<meta property="og:description" content="Stop guessing if your AI agent actually finished the job. Hermes Agent v0.18.0 introduces verification evidence and completion contracts — your agent proves it's done by running real tests, not by claiming success." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Make Your AI Agent Verify Its Own Work — No More Hallucinated "Done"" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00f5ff; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
pre { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 10px; padding: 16px 20px; margin: 0 0 20px; overflow-x: auto; font-size: 0.85rem; color: #c8f0ff; }
|
||||
pre code { background: none; padding: 0; color: inherit; }
|
||||
strong { color: #f0f0ff; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.cmd-block { background: #0a0a10; border: 1px solid #1a1a24; border-radius: 10px; padding: 14px 18px; margin: 12px 0; font-family: 'Courier New', monospace; font-size: 0.82rem; color: #c8f0ff; overflow-x: auto; }
|
||||
.cta-box { background: #12121c; border: 1px solid rgba(0,245,255,0.2); border-radius: 14px; padding: 28px 32px; margin: 32px 0; text-align: center; }
|
||||
.cta-box h3 { font-size: 1.2rem; margin-bottom: 8px; color: #f0f0ff; }
|
||||
.cta-box p { color: #999; margin-bottom: 16px; }
|
||||
.btn { display: inline-block; background: transparent; border: 1px solid #00f5ff; color: #00f5ff; padding: 10px 28px; border-radius: 8px; font-weight: 600; font-size: 0.95rem; transition: all .2s; }
|
||||
.btn:hover { background: rgba(0,245,255,0.1); text-decoration: none; }
|
||||
.quote-box { background: #0e0e14; border: 1px solid #1a1a24; border-left: 3px solid #a78bfa; border-radius: 10px; padding: 20px 24px; margin: 20px 0; font-style: italic; color: #d0d0e0; }
|
||||
.feature-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 20px 0; }
|
||||
.feature-card { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 12px; padding: 20px; }
|
||||
.feature-card h3 { margin: 0 0 8px; font-size: 1rem; color: #00f5ff; }
|
||||
.feature-card p { margin: 0; font-size: 0.9rem; color: #b0b0c0; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } .feature-grid { grid-template-columns: 1fr; } .cta-box { padding: 20px 16px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>Make Your AI Agent Verify Its Own Work — No More Hallucinated "Done"</h1>
|
||||
<div class="meta">
|
||||
<span>July 2, 2026</span>
|
||||
<span class="area-tag">howto</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
<span class="chip-tag">v0.18.0</span>
|
||||
<span class="chip-tag">verification</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
When I ask my agent to fix a bug or write a module, I don't want it to <em>say</em> "done" — I want it to <strong>prove</strong> it. That's the difference between an agent that's useful for demos and one you can trust with real work.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1">Hermes Agent v0.18.0</a> ("The Judgment Release", July 1, 2026) introduces a verification system that changes how agents finish tasks. Instead of the model deciding "I think I fixed it," your agent now runs your actual project checks and produces evidence before claiming completion.
|
||||
</p>
|
||||
|
||||
<div class="quote-box">
|
||||
"The tests pass. Here's proof." — Instead of "I think it works."
|
||||
</div>
|
||||
|
||||
<h2>The Trust Problem with AI Agents</h2>
|
||||
<p>
|
||||
Every business I talk to who's tried deploying an AI agent runs into the same wall: <strong>how do I know it actually did what it said?</strong> LLMs are optimised to sound confident, not to be accurate. An agent that writes code, modifies files, or runs queries and then claims "all done" without evidence — that's a liability, not a tool.
|
||||
</p>
|
||||
<p>
|
||||
Before v0.18.0, an agent's standard for "done" was its own internal certainty. If you asked "is the API endpoint working?" it would say yes based on what it remembered writing, not based on actually hitting the endpoint.
|
||||
</p>
|
||||
|
||||
<h2>What Changed: Completion Contracts</h2>
|
||||
<p>
|
||||
Every <code>/goal</code> directive can now include a <strong>completion contract</strong> — a statement of what "done" looks like, measured by real evidence. The standing-goal loop judges completion against that evidence instead of stopping when the model feels like it.
|
||||
</p>
|
||||
|
||||
<p>Here's a practical example. Before:</p>
|
||||
<div class="cmd-block">
|
||||
/goal Add login validation to the API<br />
|
||||
<br />
|
||||
# Agent writes code, says "done"<br />
|
||||
# No proof. Maybe it works. Maybe it doesn't.
|
||||
</div>
|
||||
|
||||
<p>After — with a completion contract:</p>
|
||||
<div class="cmd-block">
|
||||
/goal Add login validation to the API<br />
|
||||
done when: the test suite passes, the new endpoint<br />
|
||||
returns 200 for valid credentials and 401 for invalid ones,<br />
|
||||
and a curl smoke test confirms both cases
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The agent writes the code, runs the test suite, executes the curl smoke tests, collects the evidence, and only then reports completion. If any check fails, the agent tries again or reports what broke.
|
||||
</p>
|
||||
|
||||
<h2>How Verification Evidence Works</h2>
|
||||
<p>Behind the scenes, the agent now records verification evidence for every significant action:</p>
|
||||
|
||||
<div class="feature-grid">
|
||||
<div class="feature-card">
|
||||
<h3>Test Suite Runs</h3>
|
||||
<p>The agent executes your project's actual tests (pytest, vitest, whatever you use) and captures the output.</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<h3>SMOKE CHECKs</h3>
|
||||
<p>Curl endpoints, check HTTP status codes, validate response bodies. Real network calls, not speculation.</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<h3>File Verification</h3>
|
||||
<p>Stat files, check contents, run linters. The agent confirms files exist with the right content.</p>
|
||||
</div>
|
||||
<div class="feature-card">
|
||||
<h3>Custom Hooks</h3>
|
||||
<p><code>pre_verify</code> hooks let you wire in any custom check. Run your deployment pipeline or integration tests.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>Why This Matters for Your Business</h2>
|
||||
<p>
|
||||
Here's the blunt truth: <strong>you shouldn't deploy an agent that can't verify its own work.</strong> Not for customer-facing code, not for internal tooling, not for anything that costs you money if it's wrong.
|
||||
</p>
|
||||
<p>
|
||||
The verification system in v0.18.0 turns your agent from a "helpful intern who sounds sure" into a "senior engineer who shows receipts." You still review — but you review evidence, not promises.
|
||||
</p>
|
||||
<p>Three business scenarios where this matters immediately:</p>
|
||||
<ul>
|
||||
<li><strong>Revenue-critical code changes</strong> — An agent modifying a checkout flow must prove the payment gateway responds correctly before claiming done</li>
|
||||
<li><strong>Data pipeline automation</strong> — An agent transforming CRM exports must verify every record processed matches the expected count</li>
|
||||
<li><strong>Deployment readiness</strong> — An agent preparing a release must run the full CI suite and show you the green checkmarks</li>
|
||||
</ul>
|
||||
|
||||
<h2>Getting Started</h2>
|
||||
<p>If you're on Hermes Agent v0.18.0+, the verification system works out of the box with sensible defaults. No config required to start. The one-time migration tunes the defaults for your project:</p>
|
||||
|
||||
<div class="cmd-block">
|
||||
hermes upgrade # to v0.18.0 or later<br />
|
||||
# Verification is active by default.<br />
|
||||
# Start a goal with a "done when" clause and watch the evidence roll in.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The <code>pre_verify</code> hook is available if you want custom pipelines. Full docs are in the <a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1">release notes</a>.
|
||||
</p>
|
||||
|
||||
<div class="pro-tip">
|
||||
<strong>Pro tip:</strong> Start with small scope — "done when the endpoint returns 200" — and expand to full test suites as you build trust. The evidence output alone is worth it: you can see exactly what the agent checked, even if you were away from the keyboard.
|
||||
</div>
|
||||
|
||||
<h2>What Else v0.18.0 Ships</h2>
|
||||
<p>This release is massive. Besides verification, it also ships:</p>
|
||||
<ul>
|
||||
<li><strong>MoA as a first-class model</strong> — Pick an ensemble of frontier models like any other model. See every model's reasoning, then watch the answer stream in.</li>
|
||||
<li><strong><code>/learn</code></strong> — Turn any directory, URL, or workflow into a reusable skill with one command.</li>
|
||||
<li><strong><code>/journey</code></strong> — A playable timeline of everything your agent has learned. Edit or delete memories and skills right from the view.</li>
|
||||
<li><strong>Background fan-out</strong> — Run multiple subagents in parallel while you keep working. Results come back consolidated.</li>
|
||||
</ul>
|
||||
<p>
|
||||
But honestly? The verification system is the one I'd start with. Trust is the bottleneck to real agent deployment — and this is what unlocks it.
|
||||
</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Try It Yourself — First Month Free</h3>
|
||||
<p>Deploy a Hermes Agent with the new verification system. Use coupon code <strong>blog950</strong> for your first month free — no risk, full access to v0.18.0.</p>
|
||||
<a class="btn" href="https://derez.ai/#pricing">Get Your Agent →</a>
|
||||
</div>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
||||
<a href="https://derez.ai/blog/posts/hermes-agent-setup-guide.html">Setup Guide</a> ·
|
||||
<a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1">v0.18.0 Release Notes</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,125 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/automating-linkedin-content-with-ai-agent.html" />
|
||||
<title>How I Automated My LinkedIn Content Publishing with an AI Agent — Derez.ai Blog</title>
|
||||
<meta name="description" content="I automated derez.ai's entire LinkedIn publishing pipeline with Hermes Agent. From researching topics and writing posts to publishing on the company page and cross-posting to groups — my AI agent does it all. Here's how it works." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/automating-linkedin-content-with-ai-agent.html" />
|
||||
<meta property="og:title" content="How I Automated My LinkedIn Content Publishing with an AI Agent" />
|
||||
<meta property="og:description" content="I automated derez.ai's entire LinkedIn publishing pipeline with Hermes Agent. From researching topics and writing posts to publishing on the company page and cross-posting to groups — my AI agent does it all." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="How I Automated My LinkedIn Content Publishing with an AI Agent" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00f5ff; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.05rem; font-weight: 600; margin: 24px 0 8px; color: #f0f0ff; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
strong { color: #f0f0ff; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
@media (max-width: 600px) {
|
||||
body { padding: 24px 16px; }
|
||||
h1 { font-size: 1.5rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>How I Automated My LinkedIn Content Publishing with an AI Agent</h1>
|
||||
<div class="meta">
|
||||
<span>July 10, 2026</span>
|
||||
<span class="area-tag">How-to</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
</div>
|
||||
|
||||
<p>I post on LinkedIn for derez.ai multiple times a week. Research a topic, write the post, navigate the admin dashboard, click through popups, paste the link, hit publish, then repeat for a relevant LinkedIn group.</p>
|
||||
|
||||
<p>That's about 20 minutes per post — if everything goes smoothly. And I was doing it manually. Which felt ridiculous, given I run a company that builds AI agents.</p>
|
||||
|
||||
<p>So I automated it. All of it.</p>
|
||||
|
||||
<h2>What the Pipeline Does</h2>
|
||||
|
||||
<p>Every time I want to publish a LinkedIn update for derez.ai, the process is now entirely agent-driven:</p>
|
||||
|
||||
<ol>
|
||||
<li><strong>Research</strong> — My agent pulls the latest from our blog index, GitHub releases, and relevant community discussions to propose 3 post topics with business angles.</li>
|
||||
<li><strong>Create</strong> — A blog post is written and published on derez.ai in HTML format, added to the blog index, and git-committed.</li>
|
||||
<li><strong>Publish to Company Page</strong> — The agent connects to Brave browser on my workstation through a secure CDP tunnel, logs into the LinkedIn admin dashboard, clicks "Erstellen" → "Beitrag beginnen", writes the post, adds the link with UTM tracking, and hits "Posten".</li>
|
||||
<li><strong>Cross-post to Group</strong> — The content is adapted for the best-fit LinkedIn group (STARTUP SPECIALISTS NETWORK with 1.2M members, ERP Community, etc.) and posted as a separate, audience-tailored update.</li>
|
||||
<li><strong>Verify</strong> — The agent confirms the post was published and reports back with a status.</li>
|
||||
</ol>
|
||||
|
||||
<h2>The Technical Setup</h2>
|
||||
|
||||
<p>Here's the stack that makes it work:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Hermes Agent</strong> — Skilled with the <code>linkedin-company-post</code> and <code>linkedin-group-posting</code> workflows. It knows exactly which buttons to click, what the editor looks like, and how to verify a successful post.</li>
|
||||
<li><strong>Chrome DevTools Protocol</strong> — Brave runs on my workstation. A persistent remote browser connection exposes its CDP endpoint to my server. The agent sends WebSocket commands (navigate, click, type, evaluate JS) to drive the browser remotely.</li>
|
||||
<li><strong>UTM-aware linking</strong> — Every link to derez.ai automatically gets <code>?utm_source=derez&utm_campaign=linkedin</code> for company page posts and <code>?utm_source=derez&utm_campaign=groups</code> for group posts. No manual tracking.</li>
|
||||
<li><strong>German UI, English content</strong> — My LinkedIn is in German. The agent handles both — clicking buttons labeled "Erstellen" and "Posten" while writing the post content in English.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Why This Matters for Business</h2>
|
||||
|
||||
<p>The biggest bottleneck in content marketing isn't ideas — it's execution. You have the insight, you know what to say, but the publishing process (open LinkedIn → navigate to the right page → wait for the editor → format → add link → double-check → publish) eats up the small windows of creative momentum you actually have.</p>
|
||||
|
||||
<p>Automating the publishing workflow means:</p>
|
||||
|
||||
<ul>
|
||||
<li>→ I post more consistently — no more "I'll do it later" (spoiler: later never comes)</li>
|
||||
<li>→ Every post gets the right UTM tracking — no more "oops, I forgot the link"</li>
|
||||
<li>→ Cross-posting to groups happens automatically — I was skipping this entirely because it was too much friction</li>
|
||||
<li>→ The entire cycle from idea to published post takes minutes, not 20-30 minutes per platform</li>
|
||||
</ul>
|
||||
|
||||
<div class="pro-tip">
|
||||
<strong>Pro tip:</strong> This pipeline works because Hermes Agent isn't just a chat interface — it's an automation platform with skills, CDP browser control, and cron jobs. The same agent that answers your questions can also drive your browser, post to social media, and manage your blog. That's the power of an agent that can <em>execute</em>, not just talk.
|
||||
</div>
|
||||
|
||||
<h2>What I Learned Building This</h2>
|
||||
|
||||
<p>Three things surprised me:</p>
|
||||
|
||||
<ol>
|
||||
<li><p><strong>CDP is incredibly reliable once you handle the edge cases.</strong> The main pitfalls are stale tabs (from hung scripts leaving WebSockets open) and the <code>loadEventFired</code> race condition. Once you have a robust <code>send_cmd</code> that filters by message ID and a fresh-tab workflow, it runs every time.</p></li>
|
||||
<li><p><strong>LinkedIn's UI is deceptively nested.</strong> The "Beitrag beginnen" menu item isn't a button — it's an <code><a></code> tag nested 5 levels deep inside a popup menu. Finding it requires walking the DOM by innerText, then climbing up to the clickable parent. My agent has a universal element walker for this exact reason.</p></li>
|
||||
<li><p><strong>The editor matters more than the button.</strong> LinkedIn uses a Quill.js editor for group posts and a plain contenteditable for the company page. Each needs different DOM handling. Once you know which editor you're dealing with, the rest is straightforward.</p></li>
|
||||
</ol>
|
||||
|
||||
<h2>Try It Yourself</h2>
|
||||
|
||||
<p>If you're running Hermes Agent, you can build this pipeline too. The skills are bundled with the agent — just load <code>linkedin-company-post</code> and <code>linkedin-group-posting</code>, set up a CDP tunnel to your local Brave, and your agent handles the rest.</p>
|
||||
|
||||
<p>If you're not running Hermes yet, you can be live in under 10 minutes. SSH access, managed dashboard, full-disk backups — everything included.</p>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">Derez.ai</a> — Work with your AI agent in 10 minutes. Full-disk backups, SSH access, managed dashboard included.
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,139 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/building-a-company-intro.html" />
|
||||
<title>Building a Company — How We Use Hermes at derez.ai (Series Intro) | derez.ai Blog</title>
|
||||
<meta name="description" content="We're building a company on top of our own product — and packaging everything we build so you can reuse it. This series follows how derez.ai uses Hermes Agent to run daily operations, and the next story will open-source the entire setup." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/building-a-company-intro.html" />
|
||||
<meta property="og:title" content="Building a Company — How We Use Hermes at derez.ai (Series Intro)" />
|
||||
<meta property="og:description" content="We're building a company on top of our own product — and packaging everything we build so you can reuse it. This series follows how derez.ai uses Hermes Agent to run daily operations, and the next story will open-source the entire setup." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Building a Company — How We Use Hermes at derez.ai (Series Intro)" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00ff88; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
strong { color: #f0f0ff; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.series-card { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 16px; padding: 24px; margin: 24px 0; }
|
||||
.series-card h3 { margin-top: 0; color: #00f5ff; }
|
||||
.series-card ul { margin-bottom: 0; }
|
||||
.series-card li { color: #c8c8d8; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>Building a Company — How We Use Hermes at derez.ai</h1>
|
||||
<div class="meta">
|
||||
<span>July 7, 2026</span>
|
||||
<span class="area-tag">story</span>
|
||||
<span class="chip-tag">Hermes</span>
|
||||
</div>
|
||||
|
||||
<p>We sell Hermes Agent instances. So we use Hermes Agent to run our business.</p>
|
||||
|
||||
<p>That sounds obvious, but it's not as common as you'd think. A lot of companies build a product they don't actually use themselves. The sales team uses Salesforce. The support team uses Zendesk. The product they sell is something <em>other</em> people use.</p>
|
||||
|
||||
<p>At derez.ai, we decided to go the other way. Every Hermes agent we sell is the same product we use internally. Our cold emails are written by a Hermes agent. Our CRM is managed by a Hermes agent. Our inbox is sorted by a Hermes agent. Our blog posts are drafted, reviewed, and published with the help of Hermes agents.</p>
|
||||
|
||||
<p>This series exists to inspire <em>you</em> to do the same. Not because we're special — because Hermes makes it possible for any business. We want to show you exactly how a small team can use AI agents as an engine for daily operations. Real workflows, real prompts, real results, real mistakes.</p>
|
||||
|
||||
<p>And we're structuring everything we build so you can take it and use it yourself.</p>
|
||||
|
||||
<h2>Why a series?</h2>
|
||||
|
||||
<p>Because the real story isn't "we use our own product" — that's a one-liner. The real story is the <em>how</em>, and that "how" should be something <strong>you can copy</strong>.</p>
|
||||
|
||||
<p>Every workflow we build is designed to be reusable. We're not writing custom scripts for a one-off setup. We're building a structured agent — with its own personality, skills, cron jobs, and configuration — that any business could adapt to their own needs. Same Hermes Agent, different company name, different CRM webhook, different email address.</p>
|
||||
|
||||
<ul>
|
||||
<li>How did we set up a cold email agent that sends 5 personalized emails per day without any human drafting?</li>
|
||||
<li>How did we connect a Hermes agent to our CRM so it can read, write, and update contact records automatically?</li>
|
||||
<li>How did we build an inbox sorter that runs every hour and keeps our inbox clean?</li>
|
||||
<li>How did we structure our sales agent's personality so it sounds like a human, not a bot?</li>
|
||||
<li>How do we handle the awkward moments — when the agent drafts a bad email, or misclassifies a prospect, or sends something Oliver wouldn't have written?</li>
|
||||
</ul>
|
||||
|
||||
<p>Each post will cover one workflow, start to finish. The setup, the prompts, the mistakes, the fixes. Real numbers, not theory — packaged so you can use the same patterns.</p>
|
||||
|
||||
<div class="series-card">
|
||||
<h3>What to expect</h3>
|
||||
<p>Posts in this series will be tagged with the <strong>story</strong> badge. Planned topics include:</p>
|
||||
<ul>
|
||||
<li><a href="https://derez.ai/blog/posts/building-a-company-plugin.html">Part 2: How I built the derez-company plugin and gave Hermes write access to the repo</a></li>
|
||||
<li>How our sales agent uses Hermes to send cold emails every day</li>
|
||||
<li>Building a CRM agent that talks to our n8n backend</li>
|
||||
<li>The hourly inbox sorter — spam classification, client routing, auto-reply</li>
|
||||
<li>How we use cron jobs to run business processes 24/7</li>
|
||||
<li>Dogfooding mistakes: what broke, what we fixed, what we learned</li>
|
||||
<li>Why we deleted the old cron job that sent 5 emails per hour (too many)</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>This is not a tutorial</h2>
|
||||
|
||||
<p>There are plenty of Hermes Agent tutorials — speed runs, guides, how-tos. This series is different. It's a <em>case study</em> of a real company using the tool to run actual business operations. Think of it as the behind-the-scenes look at how derez.ai works.</p>
|
||||
|
||||
<p>Some of it will be specific to our setup. Some of it will be useful patterns you can adapt. All of it will be honest — including the parts where we got it wrong.</p>
|
||||
|
||||
<h2>Where we are today</h2>
|
||||
|
||||
<p>As of this post, we have:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>4 cron jobs</strong> running daily — email sorter, cold email batch, reference feedback check, weekly strategy review</li>
|
||||
<li><strong>8 skills</strong> installed on our sales agent — cold email, CRM, email sending, pain point tracking, affiliate program, and more</li>
|
||||
<li><strong>Hundreds of emails</strong> sent through the agent — some replied to, most ignored, a few productive conversations started</li>
|
||||
<li><strong>One dedicated sales profile</strong> — a separate Hermes agent that only does sales work, isolated from the main agent</li>
|
||||
<li><strong>One reusable distribution</strong> — the entire sales agent packaged as a template with {{VARS}} instead of hardcoded values, ready for any company to adapt</li>
|
||||
</ul>
|
||||
|
||||
<p>It's not a perfect system. We still have spam filters learning our patterns. We still send emails that get no reply. But it's a <em>working</em> system — and every week it gets better because the agent itself helps us improve it.</p>
|
||||
|
||||
<p>That's the part I find most interesting. The sales agent doesn't just send emails. It also reviews the results, suggests improvements, and updates its own approach. The cron job that reviews ICP strategy every Saturday? It's run by the same Hermes agent that sends the cold emails.</p>
|
||||
|
||||
<p>The agent is not a tool we use. The agent is a colleague who works on the business with us.</p>
|
||||
|
||||
<div class="pro-tip">
|
||||
<p><strong>Read Part 2 now:</strong> <a href="https://derez.ai/blog/posts/building-a-company-plugin.html">I built a Hermes plugin that runs my business — and then let Hermes finish it</a>. The CRM, dashboard, and the workflow change that made everything click.</p>
|
||||
</div>
|
||||
|
||||
<div class="pro-tip" style="border-left-color: #888; margin-top: 40px;">
|
||||
<p><strong>Want to build your own sales agent?</strong> We're using the same product we sell. Get your own Hermes Agent instance at derez.ai — full SSH, dashboard, backups, and a prompt builder that makes setup take minutes, not hours. Use code <strong>blog950</strong> for your first month free.</p>
|
||||
<p style="margin-top: 8px;"><a href="https://derez.ai/#pricing">Get Started →</a></p>
|
||||
</div>
|
||||
|
||||
<p style="margin-top: 48px; font-size: 0.85rem; color: #666;">
|
||||
<a href="https://derez.ai">derez.ai</a> —
|
||||
<a href="https://derez.ai/#blog">Blog</a> —
|
||||
<a href="https://derez.ai/blog/posts/building-a-company-intro.html">Permalink</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,149 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/building-a-company-plugin.html" />
|
||||
<title>Building a Company #2 — I Built a Hermes Plugin That Runs My Business (And Then Let Hermes Finish It) | derez.ai Blog</title>
|
||||
<meta name="description" content="I created a Hermes plugin that integrates all the skills my company needs — CRM, dashboard, sales, marketing — into one repo. First 70 leads imported and visible on the dashboard. What I learned about building Hermes plugins the hard way." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/building-a-company-plugin.html" />
|
||||
<meta property="og:title" content="Building a Company #2 — I Built a Hermes Plugin That Runs My Business" />
|
||||
<meta property="og:description" content="I created a Hermes plugin that integrates all the skills my company needs — CRM, dashboard, sales, marketing — into one repo. First 70 leads imported and visible on the dashboard. What I learned about building Hermes plugins the hard way." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Building a Company #2 — I Built a Hermes Plugin That Runs My Business" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
.series-link { display: inline-block; font-size: 0.82rem; color: #888; margin-bottom: 8px; }
|
||||
.series-link:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00ff88; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
pre { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 12px; padding: 16px 20px; overflow-x: auto; margin: 16px 0; font-size: 0.85rem; color: #c8c8d8; }
|
||||
strong { color: #f0f0ff; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.lesson-box { background: rgba(255,107,107,0.06); border-left: 3px solid #ff6b6b; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.lesson-box strong { color: #ff6b6b; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="series-link" href="https://derez.ai/#blog">← Back to Blog</a><br>
|
||||
<span style="font-size:0.8rem;color:#666;">Building a Company — Part 2</span>
|
||||
<h1>I Built a Hermes Plugin That Runs My Business<br>(And Then Let Hermes Finish It)</h1>
|
||||
<div class="meta">
|
||||
<span>July 8, 2026</span>
|
||||
<span class="area-tag">story</span>
|
||||
<span class="chip-tag">Hermes</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a href="https://derez.ai/blog/posts/building-a-company-intro.html">← Read Part 1 first</a>
|
||||
</p>
|
||||
|
||||
<p>In the first post I said we were structuring everything as a reusable distribution. This post is about the step I took to actually build it.</p>
|
||||
|
||||
<p>I created a Hermes plugin called <strong>derez-company</strong>. It bundles all the skills my business needs into a single installable plugin. CRM, dashboard, sales, marketing — all in one repo, one install command, and one dashboard tab that shows me everything at a glance.</p>
|
||||
|
||||
<p>The repo is here: <a href="https://github.com/AquaMCU/derez-company">github.com/AquaMCU/derez-company</a></p>
|
||||
|
||||
<h2>What's in the plugin</h2>
|
||||
|
||||
<p>The plugin has two live skills so far:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>derez-crm</strong> — A complete CRM data skill that uses plain Markdown files as the database. Every lead is a Markdown file with YAML frontmatter. No database, no API, no lock-in. Humans can read and edit it. Agents can read and edit it. Funnel stages, statuses, sources — all configured via Markdown config files.</li>
|
||||
<li><strong>dashboard</strong> — A Hermes dashboard plugin that auto-discovers reports from the company data directory and renders them as HTML in the Hermes dashboard. It renders weekly status cards with SVG line charts showing lead counts, conversion rates, and trends.</li>
|
||||
</ul>
|
||||
|
||||
<p>Sales and marketing skills are in progress. The architecture is designed so each skill is independent and composable — you can install just the CRM without the dashboard, or just the dashboard without the CRM.</p>
|
||||
|
||||
<h2>First 70 leads on the dashboard</h2>
|
||||
|
||||
<p>I imported 70 leads into the Markdown-based CRM. Each one is a single <code>.md</code> file with structured YAML frontmatter. The dashboard picks them up automatically and renders a weekly status view with trend lines.</p>
|
||||
|
||||
<p>No SQL. No API calls. No database migrations. Just files in a folder that both I and my agent can read and write.</p>
|
||||
|
||||
<div class="lesson-box">
|
||||
<p><strong>Lesson learned the hard way:</strong> I suck at developing a Hermes plugin with z.dev and then importing it into my Hermes. The local dev loop was painful — write code, exit Hermes, install the plugin, restart, test, repeat. Every iteration took minutes. Mistakes meant digging through logs. It felt like I was fighting the tool instead of building with it.</p>
|
||||
</div>
|
||||
|
||||
<h2>The workflow change that fixed everything</h2>
|
||||
|
||||
<p>Halfway through building the dashboard plugin, I stopped doing it myself and changed the workflow entirely.</p>
|
||||
|
||||
<p>I gave my Hermes agent <strong>write access to the GitHub repo</strong> and let Hermes build the plugin.</p>
|
||||
|
||||
<p>Here's what that looks like in practice:</p>
|
||||
|
||||
<ol>
|
||||
<li>I tell my Hermes agent what I want — "add a weekly status card to the dashboard that shows lead conversion trends"</li>
|
||||
<li>The agent writes the code, commits to the repo, and pushes</li>
|
||||
<li>The plugin auto-updates on the next Hermes restart</li>
|
||||
</ol>
|
||||
|
||||
<p>This reversed the entire development flow. Instead of me learning the plugin API, debugging install paths, and fighting the dev loop — I described what I wanted in plain English and let the agent who <em>already knows</em> the Hermes plugin API write the code.</p>
|
||||
|
||||
<p>The agent doesn't get blocked by z.dev documentation gaps. It doesn't need to restart and check. It writes, commits, pushes — and I just pull the result.</p>
|
||||
|
||||
<div class="pro-tip">
|
||||
<p><strong>The insight:</strong> The fastest way to build a Hermes plugin is to not build it yourself. Give your agent the repo keys and describe what you want. It knows the API better than you do.</p>
|
||||
</div>
|
||||
|
||||
<h2>What this means for the open-source plan</h2>
|
||||
|
||||
<p>In the first post I teased that we'd open-source our sales agent profile. The plugin approach changes the plan slightly — instead of distributing a profile with {{VARS}} placeholders, the skills live in a plugin repo that any Hermes user can install with one command:</p>
|
||||
|
||||
<pre>hermes plugins install https://github.com/AquaMCU/derez-company.git</pre>
|
||||
|
||||
<p>The plugin is installable on any Hermes instance, including hosted agents on derez.ai. Once it's installed, the skills (CRM, dashboard, sales, marketing) are available to the agent. The data lives in Markdown files under <code>company/</code> in the agent's home directory — portable, human-readable, git-friendly.</p>
|
||||
|
||||
<h2>What's next</h2>
|
||||
|
||||
<p>The CRM skill is live with 70 leads. The dashboard shows weekly progress with trend charts. The next step is wiring it all together:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>The sales agent</strong> — use the CRM data with the email skill to start making first contacts. Load leads from the CRM, qualify them, send personalized cold emails, track responses back in the CRM.</li>
|
||||
<li><strong>LinkedIn posting</strong> — the agent drafts and posts to LinkedIn (both personal feed and groups) based on CRM activity and content it generates.</li>
|
||||
<li><strong>Marketing skill</strong> — campaign tracking, content pipeline, channel analytics. All Markdown-based, all composable.</li>
|
||||
</ul>
|
||||
|
||||
<p>The CRM with 70 leads is the foundation. Everything else builds on top of it.</p>
|
||||
|
||||
<div class="pro-tip" style="border-left-color: #888; margin-top: 40px;">
|
||||
<p><strong>Try it yourself.</strong> Install the <a href="https://github.com/AquaMCU/derez-company">derez-company plugin</a> on your Hermes agent, or get a hosted agent at derez.ai and search for it in the skill library. The CRM and dashboard work out of the box.</p>
|
||||
<p style="margin-top: 8px;">
|
||||
<a href="https://github.com/AquaMCU/derez-company">View on GitHub →</a> |
|
||||
<a href="https://derez.ai/#pricing">Get a Hermes agent →</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p style="margin-top: 48px; font-size: 0.85rem; color: #666;">
|
||||
<a href="https://derez.ai">derez.ai</a> —
|
||||
<a href="https://derez.ai/#blog">Blog</a> —
|
||||
<a href="https://derez.ai/blog/posts/building-a-company-plugin.html">Permalink</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,224 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/hermes-agent-v0.18-closed-949-issues.html" />
|
||||
<title>How Hermes Agent Closed 949 GitHub Issues in 12 Days — derez.ai Blog</title>
|
||||
<meta name="description" content="Hermes Agent v0.18.0 resolved every single P0 and P1 issue in the entire repo. 1,720 commits, 998 merged PRs, 370+ contributors, and a zero-bug policy going forward." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/hermes-agent-v0.18-closed-949-issues.html" />
|
||||
<meta property="og:title" content="How Hermes Agent Closed 949 GitHub Issues in 12 Days" />
|
||||
<meta property="og:description" content="Hermes Agent v0.18.0 resolved every single P0 and P1 issue in the entire repo. 1,720 commits, 998 merged PRs, 370+ contributors, and a zero-bug policy going forward." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="How Hermes Agent Closed 949 GitHub Issues in 12 Days" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #a78bfa; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
strong { color: #f0f0ff; }
|
||||
.hero-stat { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 16px; padding: 28px 32px; margin: 24px 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; text-align: center; }
|
||||
.hero-stat .num { font-size: 2rem; font-weight: 700; color: #00f5ff; }
|
||||
.hero-stat .label { font-size: 0.8rem; color: #888; text-transform: uppercase; letter-spacing: 1px; }
|
||||
.clean-table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 0.88rem; }
|
||||
.clean-table th, .clean-table td { text-align: left; padding: 10px 14px; border-bottom: 1px solid #1a1a24; }
|
||||
.clean-table th { color: #00f5ff; font-weight: 600; }
|
||||
.clean-table td { color: #c8c8d8; }
|
||||
.clean-table tr:last-child td { border-bottom: none; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.meta-callout { background: rgba(0,255,136,0.06); border-left: 3px solid #00ff88; border-radius: 8px; padding: 20px 24px; margin: 20px 0; font-size: 1rem; color: #d0d0e0; font-style: italic; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } .hero-stat { grid-template-columns: 1fr; gap: 12px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>How Hermes Agent Closed 949 GitHub Issues in 12 Days</h1>
|
||||
<div class="meta">
|
||||
<span>July 2, 2026</span>
|
||||
<span class="area-tag">architecture</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
<span class="chip-tag">v0.18.0</span>
|
||||
</div>
|
||||
|
||||
<div class="hero-stat">
|
||||
<div><div class="num">949</div><div class="label">Issues Closed</div></div>
|
||||
<div><div class="num">1,720</div><div class="label">Commits</div></div>
|
||||
<div><div class="num">0</div><div class="label">Open P0/P1</div></div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
On July 1, 2026, the Nous Research team released <strong>Hermes Agent v0.18.0</strong> — "The Judgment Release."
|
||||
Sandwiched between the numbers is a story that matters for every single person running an AI agent today:
|
||||
the team resolved every P0 and P1 issue in the entire repository. <strong>Zero open criticals. Zero open high-priority. Not one.</strong>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
That is not hyperbole. It is the commit history.
|
||||
</p>
|
||||
|
||||
<h2>The Numbers, Because They Matter</h2>
|
||||
|
||||
<table class="clean-table">
|
||||
<tr><th>Metric</th><th>Value</th></tr>
|
||||
<tr><td>Release Date</td><td>July 1, 2026</td></tr>
|
||||
<tr><td>Since v0.17.0</td><td>~12 days</td></tr>
|
||||
<tr><td>Commits</td><td>~1,720</td></tr>
|
||||
<tr><td>Merged PRs</td><td>998</td></tr>
|
||||
<tr><td>Issues Closed</td><td>949</td></tr>
|
||||
<tr><td>Files Changed</td><td>2,215</td></tr>
|
||||
<tr><td>Insertions</td><td>~251,000</td></tr>
|
||||
<tr><td>Deletions</td><td>~41,000</td></tr>
|
||||
<tr><td>Community Contributors</td><td>370+</td></tr>
|
||||
<tr><td>GitHub Stars</td><td>208,000</td></tr>
|
||||
<tr><td>Forks</td><td>37,800</td></tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Let that sink in. <strong>Nearly 1,000 issues closed in 12 days.</strong> That is roughly 79 issues per day,
|
||||
or 3.3 per hour around the clock. The team did not take a break. They burned through the priority backlog
|
||||
day and night.
|
||||
</p>
|
||||
|
||||
<h2>The P0/P1 Sweep — Why It Matters</h2>
|
||||
|
||||
<p>
|
||||
Most open-source projects have a long tail of open issues. P0 (critical) bugs that never got fixed.
|
||||
P1 (high-priority) features that nobody had time to polish. They accumulate. They become the
|
||||
"we'll get to it" pile that everyone knows will never shrink.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Hermes Agent's team decided that was unacceptable. In twelve days they resolved:
|
||||
</p>
|
||||
|
||||
<table class="clean-table">
|
||||
<tr><th>Priority</th><th>Issues Closed</th><th>PRs Merged</th></tr>
|
||||
<tr><td>P0 (critical)</td><td>3</td><td>8</td></tr>
|
||||
<tr><td>P1 (high)</td><td>493</td><td>188</td></tr>
|
||||
<tr><td><strong>Total</strong></td><td><strong>496</strong></td><td><strong>196</strong></td></tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
The final cluster to fall was the interrupt-protected-compression sibling-fork bug —
|
||||
issue <strong>#56391</strong> and its fix <strong>#56416</strong>, closed on an all-nighter
|
||||
right before the release cut.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Special recognition goes to <strong>@kshitijk4poor</strong>, who burned through the priority
|
||||
backlog alongside the core team — the cron reliability wave, the compression-fork fix,
|
||||
the credential-exfil hardening, and a huge share of the P1 closures are his.
|
||||
</p>
|
||||
|
||||
<div class="meta-callout">
|
||||
"We're keeping P0/P1 at 0 from here forward." — The Hermes Agent Team
|
||||
</div>
|
||||
|
||||
<h2>But This Is Not Just a Cleanup Story</h2>
|
||||
|
||||
<p>
|
||||
v0.18.0 is called "The Judgment Release" for a reason. Beyond the clean sweep, it introduces
|
||||
capabilities that change what an AI agent can do:
|
||||
</p>
|
||||
|
||||
<h3>🧠 Mixture-of-Agents (MoA)</h3>
|
||||
<p>
|
||||
Named ensembles of models that you can pick like any other model. Every reference model's
|
||||
reasoning is shown to you, and the aggregator's answer streams live. Instead of asking one
|
||||
model, your agent orchestrates a panel of them.
|
||||
</p>
|
||||
|
||||
<h3>✅ Verification Evidence & Completion Contracts</h3>
|
||||
<p>
|
||||
The <code>/goal</code> command now has completion contracts. Instead of the agent claiming
|
||||
"done" when it feels like stopping, it must produce evidence of completion. The standing-goal
|
||||
loop judges completion against actual proof — tests pass, files exist, APIs respond.
|
||||
The agent proves its work.
|
||||
</p>
|
||||
|
||||
<h3>📈 Self-Improvement You Can See</h3>
|
||||
<p>
|
||||
<code>/learn</code> and <code>/journey</code> turned self-improvement into something you can
|
||||
observe and steer. The agent doesn't just get better — it shows you how.
|
||||
</p>
|
||||
|
||||
<h3>🏗️ Deployable at Scale</h3>
|
||||
<p>
|
||||
The gateway now supports scale-to-zero, drain coordination, and proper production deployment.
|
||||
The desktop client has first-class coding projects and a playable memory graph. Subagents
|
||||
can fan out in the background — parallel work without blocking the main conversation.
|
||||
</p>
|
||||
|
||||
<h2>What This Means for Your Agents</h2>
|
||||
|
||||
<p>
|
||||
Every one of the closed issues represents something that <strong>could</strong> have affected
|
||||
your agent. A cron reliability bug. A credential leak path. A compression race condition.
|
||||
They are all gone now.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you are running Hermes Agent, update to v0.18.0. If you are evaluating agent frameworks,
|
||||
this kind of velocity — 1,720 commits in 12 days, zero open P0s, 370+ contributors —
|
||||
tells you everything you need to know about the project's health.
|
||||
</p>
|
||||
|
||||
<div class="pro-tip">
|
||||
<strong>Running Hermes Agent on derez.ai?</strong>
|
||||
Your instance was updated to v0.18.0 automatically. The new features —
|
||||
MoA, verification evidence, /learn, /journey — are available right now.
|
||||
Just tell your agent what you want.
|
||||
</div>
|
||||
|
||||
<h2>The Meta Note</h2>
|
||||
<p>
|
||||
This blog post was written by a Hermes Agent. The same update that resolved 949 issues
|
||||
also powers the agent that researched the release notes, structured this article,
|
||||
generated the HTML, and deployed it to this site — all while the founder was doing
|
||||
something else entirely.
|
||||
</p>
|
||||
<p>
|
||||
An agent that just got its biggest quality-of-life update ever. An agent that now proves
|
||||
its work before saying "done." An agent that can orchestrate multiple models to get you
|
||||
a better answer.
|
||||
</p>
|
||||
<p>
|
||||
And it wrote this post to tell you about it.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Use coupon code <strong>BLOG1750</strong> at checkout to get your first month free.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://derez.ai/#pricing">Deploy your own Hermes Agent — updated to v0.18.0.</a>
|
||||
</p>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a2e;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
||||
<a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1">v0.18.0 Release Notes</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,200 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/hermes-v0.18-business-review.html" />
|
||||
<title>Hermes Agent v0.18.0 — A Business Review — derez.ai Blog</title>
|
||||
<meta name="description" content="I reviewed the latest Hermes Agent release through a business lens. Mixture-of-Agents, verification evidence, and the P0/P1 clean sweep — what actually matters for business users." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/hermes-v0.18-business-review.html" />
|
||||
<meta property="og:title" content="Hermes Agent v0.18.0 — A Business Review" />
|
||||
<meta property="og:description" content="I reviewed the latest Hermes Agent release through a business lens. Mixture-of-Agents, verification evidence, and the P0/P1 clean sweep — what actually matters for business users." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Hermes Agent v0.18.0 — A Business Review" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00ff88; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
strong { color: #f0f0ff; }
|
||||
.review-box { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 14px; padding: 24px 28px; margin: 20px 0; }
|
||||
.review-box h3 { margin-top: 0; }
|
||||
.score { display: inline-block; background: #00ff88; color: #000; font-weight: 700; padding: 2px 10px; border-radius: 6px; font-size: 0.85rem; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0e0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.verdict { background: rgba(0,255,136,0.06); border-left: 3px solid #00ff88; border-radius: 8px; padding: 20px 24px; margin: 20px 0; }
|
||||
.verdict strong { color: #00ff88; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>Hermes Agent v0.18.0 — A Business Review</h1>
|
||||
<div class="meta">
|
||||
<span>July 2, 2026</span>
|
||||
<span class="area-tag">review</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
<span class="chip-tag">v0.18.0</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
I run a small business that hosts AI agents for other businesses. Every month or so, the Hermes Agent team drops
|
||||
a new release. Most of the time I skim the release notes, nod at the technical improvements, and move on.
|
||||
</p>
|
||||
<p>
|
||||
But v0.18.0 — "The Judgment Release" — made me stop and read the whole thing. Not because of the code changes,
|
||||
but because of what they signal about the project's maturity.
|
||||
</p>
|
||||
|
||||
<h2>The Headline Numbers (Business Edition)</h2>
|
||||
|
||||
<div class="review-box">
|
||||
<p><strong>Release:</strong> Hermes Agent v0.18.0 — July 1, 2026</p>
|
||||
<p><strong>Development pace:</strong> 1,720 commits in 12 days</p>
|
||||
<p><strong>Team velocity:</strong> 998 pull requests merged</p>
|
||||
<p><strong>Community:</strong> 370+ contributors, 208,000 GitHub stars</p>
|
||||
<p><strong>Bug sweep:</strong> All 496 P0 and P1 issues closed to zero</p>
|
||||
<p><strong>My score:</strong> <span class="score">9/10</span></p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
From a business perspective, the most important number isn't the commits or the stars.
|
||||
It's that <strong>zero</strong>. Zero open critical bugs. Zero open high-priority issues.
|
||||
</p>
|
||||
<p>
|
||||
If you're running a business on top of an open-source project, that number is everything.
|
||||
It means the team is not accumulating technical debt. It means they can focus on features
|
||||
instead of fires. It means when something breaks, it gets fixed — not buried in a backlog.
|
||||
</p>
|
||||
|
||||
<h2>What Actually Changes for a Business User?</h2>
|
||||
|
||||
<p>
|
||||
Let me translate the release notes from developer-speak to business-speak.
|
||||
</p>
|
||||
|
||||
<h3>Verification Evidence — Your Agent Proves Its Work</h3>
|
||||
<p>
|
||||
Before this release, your agent would say "done" when it felt like stopping. Now it has to
|
||||
produce evidence. If you ask it to generate a report, it must show you the report exists.
|
||||
If you ask it to update records, it must confirm the changes.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Business impact:</strong> <em>Trust.</em> You no longer have to babysit your agent to make sure it
|
||||
actually finished the job. The agent proves its work before moving on. For a business owner,
|
||||
that's the difference between a tool you occasionally check and a tool you can rely on.
|
||||
</p>
|
||||
|
||||
<h3>Mixture-of-Agents — Better Answers, Not Just Faster Ones</h3>
|
||||
<p>
|
||||
Your agent can now orchestrate multiple AI models at once. Instead of asking one model and
|
||||
hoping it's right, the agent asks several, compares their reasoning, and gives you the best answer.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Business impact:</strong> <em>Quality.</em> If your agent is researching competitors, drafting
|
||||
proposals, or analyzing data, it's now getting a second opinion — and a third — before it
|
||||
comes back to you. This matters most for anything where accuracy has a cost.
|
||||
</p>
|
||||
|
||||
<h3>Self-Improvement You Can See</h3>
|
||||
<p>
|
||||
The new <code>/learn</code> and <code>/journey</code> commands let your agent track how it's improving
|
||||
over time. It can show you what it learned from each task and how it adjusted its approach.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Business impact:</strong> <em>Accountability.</em> You can see whether your agent is getting better
|
||||
at the work you give it. If it's not, you can steer it. That's a feature every manager wishes
|
||||
their human employees had.
|
||||
</p>
|
||||
|
||||
<h3>Gateway Scale-to-Zero</h3>
|
||||
<p>
|
||||
The gateway — the part that connects your agent to external tools and services — now scales
|
||||
down to zero when idle. No wasted resources. No server costs when nothing is happening.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Business impact:</strong> <em>Cost control.</em> On derez.ai, this means your agent costs less
|
||||
when you're not using it. Infrastructure that charges only when it's working is the right
|
||||
model for a business tool.
|
||||
</p>
|
||||
|
||||
<h2>The Clean Sweep — Why It Matters for Your Business</h2>
|
||||
|
||||
<p>
|
||||
The Hermes team closed 949 issues in 12 days. Every P0 and P1 is now at zero. Here's why
|
||||
that matters if you're running agents for your business:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Reliability.</strong> The cron scheduling bugs, the credential leak paths, the compression
|
||||
race conditions — all fixed. Your agent won't drop a scheduled task or leak sensitive data.</li>
|
||||
<li><strong>Velocity.</strong> A team that can close 1,720 commits in 12 days is a team that ships fast.
|
||||
When you need a feature, it won't take a year to land.</li>
|
||||
<li><strong>Staying power.</strong> 208,000 stars and 37,800 forks means this project has momentum.
|
||||
It's not going away. Building your workflow on Hermes is a safe bet.</li>
|
||||
</ul>
|
||||
|
||||
<div class="verdict">
|
||||
<strong>Verdict:</strong> v0.18.0 is the release where Hermes Agent stopped being a promising
|
||||
experiment and became a serious business tool. The verification evidence alone changes
|
||||
how much you can trust your agent to work unsupervised. If you're running agents for
|
||||
your business and haven't updated yet, this is the one to upgrade to.
|
||||
</div>
|
||||
|
||||
<h2>Where It Falls Short</h2>
|
||||
<p>
|
||||
No release is perfect. My honest gripes:
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>Documentation is still playing catch-up.</strong> Mixture-of-Agents is powerful, but
|
||||
figuring out how to configure ensembles takes more reading than it should. The docs team
|
||||
has ground to cover.</li>
|
||||
<li><strong>The "Judgment" branding is developer-focused.</strong> "Completion contracts" and
|
||||
"verification evidence" are terms developers love. Business users would call them
|
||||
"confirmation" and "proof of work." The marketing could be clearer.</li>
|
||||
<li><strong>Still CLI-heavy.</strong> If you're not comfortable with a terminal, some of the
|
||||
configuration is intimidating. The desktop app helps, but the power features are still
|
||||
command-line only.</li>
|
||||
</ul>
|
||||
|
||||
<div class="pro-tip">
|
||||
<strong>On derez.ai, this is all handled for you.</strong> Your agent instance was updated
|
||||
to v0.18.0 automatically. Verification evidence, MoA, /learn, /journey — all available.
|
||||
No CLI needed. Just tell your agent what you want.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
If you're curious what Hermes Agent can do for your business, the first month is on me
|
||||
with code <strong>BLOG1750</strong>.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://derez.ai/#pricing">Try Hermes Agent v0.18.0 — updated and ready.</a>
|
||||
</p>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a2e;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
||||
<a href="https://github.com/NousResearch/hermes-agent/releases/tag/v2026.7.1">v0.18.0 on GitHub</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,241 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/odoo-xml-rpc-hermes-agent.html" />
|
||||
<title>Connect Odoo to Hermes Agent via XML-RPC — Complete Guide — derez.ai Blog</title>
|
||||
<meta name="description" content="Step-by-step guide to connecting Odoo to Hermes Agent via XML-RPC. Real credentials included. Pull leads, sales orders, and inventory in under 5 minutes." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/odoo-xml-rpc-hermes-agent.html" />
|
||||
<meta property="og:title" content="Connect Odoo to Hermes Agent via XML-RPC — Complete Guide" />
|
||||
<meta property="og:description" content="Step-by-step guide to connecting Odoo to Hermes Agent via XML-RPC. Real credentials included. Pull leads, sales orders, and inventory in under 5 minutes." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Connect Odoo to Hermes Agent via XML-RPC — Complete Guide" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
||||
.container { max-width: 720px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #a78bfa; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-video { background: rgba(255,0,0,0.12); color: #ff4444; border: 1px solid rgba(255,0,0,0.35); }
|
||||
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
||||
p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 6px; }
|
||||
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
||||
pre { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 10px; padding: 16px 20px; margin: 0 0 20px; overflow-x: auto; font-size: 0.85rem; color: #c8f0ff; }
|
||||
pre code { background: none; padding: 0; color: inherit; }
|
||||
strong { color: #f0f0ff; }
|
||||
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
||||
.pro-tip strong { color: #00f5ff; }
|
||||
.step-card { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 14px; padding: 20px 24px; margin: 16px 0; }
|
||||
.step-card h3 { margin-top: 0; font-size: 1.05rem; }
|
||||
.step-num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: #00f5ff; color: #000; font-weight: 700; font-size: 0.85rem; margin-right: 8px; }
|
||||
.prereq-group { margin-bottom: 16px; }
|
||||
.prereq-group > .group-label { font-weight: 600; color: #00f5ff; margin-bottom: 4px; }
|
||||
.cmd-block { background: #0a0a10; border: 1px solid #1a1a24; border-radius: 10px; padding: 14px 18px; margin: 12px 0; font-family: 'Courier New', monospace; font-size: 0.82rem; color: #c8f0ff; overflow-x: auto; }
|
||||
.result-block { background: #0a0a10; border: 1px solid #1a1a24; border-left: 3px solid #00ff88; border-radius: 10px; padding: 14px 18px; margin: 12px 0; font-family: 'Courier New', monospace; font-size: 0.82rem; color: #88d8b0; overflow-x: auto; }
|
||||
.cta-box { background: #12121c; border: 1px solid rgba(0,245,255,0.2); border-radius: 14px; padding: 28px 32px; margin: 32px 0; text-align: center; }
|
||||
.cta-box h3 { font-size: 1.2rem; margin-bottom: 8px; color: #f0f0ff; }
|
||||
.cta-box p { color: #999; margin-bottom: 16px; }
|
||||
.btn { display: inline-block; background: transparent; border: 1px solid #00f5ff; color: #00f5ff; padding: 10px 28px; border-radius: 8px; font-weight: 600; font-size: 0.95rem; transition: all .2s; }
|
||||
.btn:hover { background: rgba(0,245,255,0.1); text-decoration: none; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } .cta-box { padding: 20px 16px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
||||
<h1>Connect Odoo to Hermes Agent via XML-RPC</h1>
|
||||
<div class="meta">
|
||||
<span>June 29, 2026</span>
|
||||
<span class="area-tag">guide</span>
|
||||
<span class="chip-tag">odoo</span>
|
||||
<span class="chip-tag">xml-rpc</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
<span class="chip-tag chip-video">video</span>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This is the first and simplest method from the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">three ways to integrate Odoo with Hermes Agent</a> — direct XML-RPC API calls.
|
||||
Your agent connects straight to your Odoo instance, no middleware, no MCP server, no n8n pipeline.
|
||||
Just your agent and your ERP talking directly. That's the core of <strong><a href="https://derez.ai/odoo-hermes">Odoo Hermes</a></strong>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
I made a <strong>YouTube short</strong> walking through this exact setup:
|
||||
</p>
|
||||
|
||||
<div style="position:relative;width:100%;max-width:360px;margin:24px auto;aspect-ratio:9/16;border-radius:14px;overflow:hidden;background:#000">
|
||||
<iframe src="https://www.youtube-nocookie.com/embed/GVZMnq_NOxI" title="Odoo + AI Agent in 3 Minutes (XML-RPC)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%"></iframe>
|
||||
</div>
|
||||
|
||||
<p style="text-align:center;font-size:0.85rem;color:#888;margin-top:-12px">
|
||||
<a href="https://www.youtube.com/shorts/GVZMnq_NOxI?utm_source=derez&utm_campaign=email" target="_blank" rel="noopener" style="color:#ff4444">Watch on YouTube →</a>
|
||||
</p>
|
||||
|
||||
<h2>What you'll build</h2>
|
||||
<p>By the end of this guide, your Hermes Agent will:</p>
|
||||
<ul>
|
||||
<li>Connect to your Odoo instance using an API key</li>
|
||||
<li>Search and read records from any Odoo model</li>
|
||||
<li>Pull live leads, sales orders, and inventory data</li>
|
||||
<li>Answer business questions in natural language</li>
|
||||
</ul>
|
||||
|
||||
<h2>Prerequisites</h2>
|
||||
<p>You need a running Odoo instance and a Hermes Agent. Here are the exact credentials from my demo instance — use these to follow along, then swap in your own.</p>
|
||||
|
||||
<div class="prereq-group">
|
||||
<div class="group-label">Integration — ODOO Community</div>
|
||||
<p style="font-size:0.9rem;color:#999;margin-bottom:8px">These are live credentials from a demo Odoo Community instance on ODOO4projects. They work right now.</p>
|
||||
<ul>
|
||||
<li><strong>URL</strong> — <code>https://006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d.odoo4projects.com/</code></li>
|
||||
<li><strong>Username</strong> — <code>changeme@odoo4projects.com</code></li>
|
||||
<li><strong>Password</strong> — <code>changeme</code></li>
|
||||
<li><strong>Database</strong> — <code>006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d</code></li>
|
||||
<li><strong>API Key</strong> — <code>602e6ea0a0adda65b344a282495da3b05525f63f</code></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="prereq-group">
|
||||
<div class="group-label">Runtime — Hermes Agent</div>
|
||||
<ul>
|
||||
<li>Hermes Agent installed and running (see the <a href="https://derez.ai/blog/posts/hermes-agent-setup-guide.html?utm_source=derez&utm_campaign=email">setup guide</a> if you're starting from zero)</li>
|
||||
<li>Access to your Hermes <code>config.yaml</code></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<h2>Step 1 — Generate an Odoo API Key</h2>
|
||||
|
||||
<div class="step-card">
|
||||
<h3><span class="step-num">1</span> Go to Settings → Users → Technical</h3>
|
||||
<p>In your Odoo instance, navigate to <strong>Settings → Users → select your user → Technical</strong>. Scroll to the <strong>Security</strong> section and click <strong>Generate API Key</strong>.</p>
|
||||
<p>Name it something descriptive like <code>hermes-agent</code>. Copy the key immediately — Odoo only shows it once.</p>
|
||||
</div>
|
||||
|
||||
<p>If you're using the demo instance above, the API key is already generated and ready.</p>
|
||||
|
||||
<h2>Step 2 — Add the Connection to Hermes</h2>
|
||||
|
||||
<p>Edit your Hermes <code>config.yaml</code> and add the Odoo connection block:</p>
|
||||
|
||||
<div class="cmd-block">
|
||||
# ~/.hermes/config.yaml (or your profile config)<br />
|
||||
<br />
|
||||
odoo:<br />
|
||||
url: "https://006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d.odoo4projects.com"<br />
|
||||
db: "006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d"<br />
|
||||
user: "changeme@odoo4projects.com"<br />
|
||||
api_key: "602e6ea0a0adda65b344a282495da3b05525f63f"<br />
|
||||
readonly: true
|
||||
</div>
|
||||
|
||||
<p>Set <code>readonly: true</code> if the agent only needs to query data (recommended for first setup). Remove it or set <code>false</code> if you want the agent to create or modify records.</p>
|
||||
|
||||
<h2>Step 3 — Give Your Agent the Connection Prompt</h2>
|
||||
|
||||
<p>Now paste this prompt into your Hermes Agent session. It tells the agent exactly how to reach your Odoo database using the credentials from Step 2:</p>
|
||||
|
||||
<div class="cmd-block">
|
||||
Connect to the ODOO 19 database with the credentials $ODOO_URL $ODOO_USER $ODOO_APIKEY<br>
|
||||
open {url}/doc and read the available models and methods. Use the JSON api to connect to ODOO and do not login to the web UI.<br>
|
||||
create a skill to access ODOO
|
||||
</div>
|
||||
|
||||
<p>The agent reads the environment variables (or the config block you just set up) and establishes the XML-RPC connection. Once it confirms, you're ready to query data.</p>
|
||||
|
||||
<h2>Step 4 — Start Hermes and Verify</h2>
|
||||
|
||||
<p>Start or restart your Hermes Agent:</p>
|
||||
|
||||
<div class="cmd-block">
|
||||
hermes start
|
||||
</div>
|
||||
|
||||
<p>Now ask your agent something simple to verify the connection works:</p>
|
||||
|
||||
<div class="cmd-block">
|
||||
> Give me a list of customers with their email addresses.
|
||||
</div>
|
||||
|
||||
<p>If everything is configured correctly, the agent returns live data from your Odoo instance. Here's what it looks like with the demo instance:</p>
|
||||
|
||||
<div class="result-block">
|
||||
Here are the customers I found in your Odoo instance:<br />
|
||||
<br />
|
||||
1. Azure Interior — azure.interior@example.com<br />
|
||||
2. Deco Addict — deco.addict@example.com<br />
|
||||
3. Gem Furniture — gem.furniture@example.com<br />
|
||||
4. Lumber Inc — lumber.inc@example.com<br />
|
||||
5. The Kitchen Studio — the.kitchen.studio@example.com<br />
|
||||
6. Best Design — best.design@example.com<br />
|
||||
7. Grace Interior Design Studio — grace.interior.design@example.com<br />
|
||||
8. Capital Park — capital.park@example.com<br />
|
||||
<br />
|
||||
Total: 8 customers in CRM
|
||||
</div>
|
||||
|
||||
<p>That's it. Three minutes, one config block, and your agent talks to Odoo.</p>
|
||||
|
||||
<h2>What you can do now</h2>
|
||||
|
||||
<p>Once the connection is live, try these queries:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>"Show me all leads in the CRM"</strong> — pulls from <code>crm.lead</code></li>
|
||||
<li><strong>"List my recent sales orders"</strong> — queries <code>sale.order</code></li>
|
||||
<li><strong>"What products are low on stock?"</strong> — checks <code>stock.quant</code> for low quantities</li>
|
||||
<li><strong>"What's the total value of open quotes?"</strong> — sums <code>sale.order</code> with <code>state = 'draft'</code></li>
|
||||
<li><strong>"Create a new lead for ACME Corp"</strong> — if <code>readonly</code> is off, the agent creates records too</li>
|
||||
</ul>
|
||||
|
||||
<h2>Security first</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong>Create a dedicated Odoo user</strong> for the agent — never use your admin account</li>
|
||||
<li><strong>Use read-only access</strong> unless the agent needs to create or modify records</li>
|
||||
<li><strong>Restrict model access</strong> to only the models the agent needs (CRM, Sales, Inventory — not Settings)</li>
|
||||
<li><strong>Rotate the API key</strong> periodically, and revoke immediately if it leaks</li>
|
||||
<li><strong>The demo credentials above</strong> are from a sandbox instance — use your own for production</li>
|
||||
</ul>
|
||||
|
||||
<h2>Why XML-RPC?</h2>
|
||||
|
||||
<p>Direct XML-RPC is the fastest path: one hop, one config block, one less thing to break. No MCP server to maintain, no n8n workflow to debug. For simple queries, demos, and prototyping, it's the right choice.</p>
|
||||
|
||||
<p>If you need deterministic business processes with audit trails (invoice creation, order processing), the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">n8n pipeline approach</a> is better. But for 80% of what you'll ask your agent to do — "who are my customers?", "what's my pipeline?", "show me pending orders" — XML-RPC is all you need.</p>
|
||||
|
||||
<div class="pro-tip">
|
||||
<strong>Pro tip:</strong> The YouTube short at the top of this page shows the whole setup in under a minute. Bookmark it for when you need a quick refresher — the steps don't change between instances, only the credentials.
|
||||
</div>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Try It Yourself — First Month Free</h3>
|
||||
<p>Deploy a Hermes Agent with Odoo XML-RPC integration. Use coupon code <strong>blog950</strong> for your first month free.</p>
|
||||
<a class="btn" href="https://derez.ai/#pricing">Get Your Agent →</a>
|
||||
</div>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
||||
<a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">3 Ways to Integrate Odoo + Hermes</a> ·
|
||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html?utm_source=derez&utm_campaign=email">Full Speed Run</a> ·
|
||||
<a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html?utm_source=derez&utm_campaign=email">MCP Approach</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -112,7 +112,7 @@
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
This speed run walks you through creating an AI agent that connects directly to your Odoo Community database. No coding, no servers to provision — just pick your plan, paste your credentials, and your agent starts working with your data immediately.
|
||||
This speed run walks you through creating an AI agent that connects directly to your Odoo Community database. No coding, no servers to provision — just pick your plan, paste your credentials, and your agent starts working with your data immediately. This is <strong><a href="https://derez.ai/odoo-hermes">Odoo Hermes</a></strong> in action.
|
||||
</p>
|
||||
<p>
|
||||
To follow along, grab a <strong>free trial</strong> of Odoo Community at <a href="https://ODOO4projects.com?utm_source=derez&utm_campaign=youtube" target="_blank" rel="noopener">ODOO4projects.com</a> and generate an API key from your profile settings. It takes about 10 Minutes and gives you everything you need for this walkthrough.
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
<div class="method-stat">Determinism: <span>Low — LLM-driven</span></div>
|
||||
<div class="method-stat">Best for: <span>Simple queries, demos</span></div>
|
||||
</div>
|
||||
<p>The simplest approach. You create a dedicated Odoo user with restricted permissions, paste the connection details into Hermes, and your agent calls the Odoo XML-RPC API directly. Hermes has built-in Odoo tool support — once configured, the agent can search, read, create, and update records on any Odoo model.</p>
|
||||
<p>The simplest approach. You create a dedicated Odoo user with restricted permissions, paste the connection details into Hermes, and your agent calls the Odoo XML-RPC API directly. Hermes has built-in Odoo tool support — once configured, the agent can search, read, create, and update records on any Odoo model. This is the classic <strong><a href="https://derez.ai/odoo-hermes">Odoo Hermes</a></strong> setup.</p>
|
||||
|
||||
<h4>Setup</h4>
|
||||
<ol>
|
||||
@@ -132,14 +132,24 @@
|
||||
<li>Add the connection to Hermes' <code>config.yaml</code></li>
|
||||
<li>Start Hermes — Odoo tools are available automatically</li>
|
||||
</ol>
|
||||
<pre><code># Hermes config.yaml snippet
|
||||
odoo:
|
||||
url: "https://your-instance.odoo4projects.com"
|
||||
db: "your-database"
|
||||
user: "agent@company.com"
|
||||
api_key: "your-api-key"
|
||||
readonly: true</code></pre>
|
||||
<pre><code># Hermes /.hermes/.env snippet
|
||||
ODOO_URL=https://005-003-1bf12542-4710-45c2-9f8b-3a27d25031b7.odoo4projects.com/
|
||||
ODOO_USER=changeme@odoo4projects.com
|
||||
ODOO_APIKEY=198db28b752ccb4a66c646503902169e8b3a5b42
|
||||
</code></pre>
|
||||
|
||||
Prompt:
|
||||
|
||||
<pre><code>
|
||||
Connect to the odoo 19 database with the credentials given in
|
||||
$ODOO_URL $ODOO_USER $ODOO_APIKEY
|
||||
open <url>/doc and read the available models and methods.
|
||||
Use the JSON api to connect and do not login to the web UI.
|
||||
create a skill to access ODOO
|
||||
return all data found in the crm database
|
||||
</code></pre>
|
||||
|
||||
This aproach is awesome since we give hermes the whole JSON 2 API to study. In the video you see, that the skill learned every modell with every method.
|
||||
<p><strong>When to use:</strong> Quick queries, one-off lookups, demos, and prototyping. The LLM decides which API calls to make, so it's fast but the agent may chain calls in unexpected ways.</p>
|
||||
<p><strong>Deep dive:</strong> <a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html">Speed Run: Create an Odoo Community Agent from Zero</a></p>
|
||||
</div>
|
||||
|
||||
@@ -1,127 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/blog/posts/wandern-mit-theo-agent-schreibt.html" />
|
||||
<title>Wandern mit Theo — während mein Hermes Agent den Blog schreibt | derez.ai Blog</title>
|
||||
<meta name="description" content="Wie ich mit meinem Sohn Theo wandern gehe, während mein KI-Agent Blogposts schreibt, Emails beantwortet und die CRM pflegt. Ein Erfahrungsbericht aus dem echten Leben." />
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:url" content="https://derez.ai/blog/posts/wandern-mit-theo-agent-schreibt.html" />
|
||||
<meta property="og:title" content="Wandern mit Theo — während mein Hermes Agent den Blog schreibt" />
|
||||
<meta property="og:description" content="Wie ich mit meinem Sohn Theo wandern gehe, während mein KI-Agent Blogposts schreibt, Emails beantwortet und die CRM pflegt." />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Wandern mit Theo — während mein Hermes Agent den Blog schreibt" />
|
||||
<script defer data-domain="derez.ai" src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"></script>
|
||||
<script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet" />
|
||||
<style>
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.8; padding: 40px 20px; }
|
||||
.container { max-width: 680px; margin: 0 auto; }
|
||||
a { color: #00f5ff; text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
||||
.back:hover { color: #00f5ff; }
|
||||
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; color: #f0f0ff; }
|
||||
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
||||
.area-tag { display: inline-block; background: #00ff88; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
h2 { font-size: 1.25rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
||||
p { margin-bottom: 18px; color: #c8c8d8; }
|
||||
ul, ol { margin: 0 0 18px 24px; color: #c8c8d8; }
|
||||
li { margin-bottom: 8px; }
|
||||
strong { color: #f0f0ff; }
|
||||
.story-quote { border-left: 3px solid #00ff88; background: #0a1a10; border-radius: 8px; padding: 20px 24px; margin: 24px 0; font-size: 0.95rem; color: #c0e0c8; font-style: italic; }
|
||||
.cta-box { background: #12121c; border: 1px solid rgba(0,245,255,0.2); border-radius: 14px; padding: 28px 32px; margin: 32px 0; text-align: center; }
|
||||
.cta-box h3 { font-size: 1.15rem; margin-bottom: 8px; color: #f0f0ff; }
|
||||
.cta-box p { color: #999; margin-bottom: 16px; font-size: 0.92rem; }
|
||||
.btn { display: inline-block; background: transparent; border: 1px solid #00f5ff; color: #00f5ff; padding: 10px 28px; border-radius: 8px; font-weight: 600; font-size: 0.95rem; transition: all .2s; }
|
||||
.btn:hover { background: rgba(0,245,255,0.1); text-decoration: none; }
|
||||
.highlight-glow { color: #00f5ff; font-weight: 500; }
|
||||
.emoji-lg { font-size: 1.4rem; }
|
||||
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.4rem; line-height: 1.4; } .cta-box { padding: 20px 16px; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a class="back" href="https://derez.ai/#blog">← zurück zum Blog</a>
|
||||
<h1>Wandern mit Theo — während mein Hermes Agent schreibt</h1>
|
||||
<div class="meta">
|
||||
<span>20. Juni 2026</span>
|
||||
<span class="area-tag">story</span>
|
||||
<span class="chip-tag">hermes</span>
|
||||
<span class="chip-tag">lifestyle</span>
|
||||
</div>
|
||||
|
||||
<p>Es ist Samstagmorgen, 8:30 Uhr. Mein Sohn Theo (9) steht schon angezogen im Flur. „Papa, gehen wir hoch? Es sind nur 18 Grad — perfekt zum Wandern."</p>
|
||||
|
||||
<p>Er hat recht. In Paraguay bedeutet „kühl" etwas um die 18°C — für uns Grund genug, die Wanderschuhe zu schnüren und raus in die Natur zu gehen. Kein Rechner, kein Bildschirm, kein „ich muss noch schnell was erledigen". Nur Rucksack, Wasserflaschen und ein Trailsnack.</p>
|
||||
|
||||
<p>Denn mein Hermes Agent arbeitet längst für mich.</p>
|
||||
|
||||
<h2>Was läuft, während wir wandern</h2>
|
||||
|
||||
<p>Um kurz nach drei heute morgen, während wir alle noch geschlafen haben, ist mein täglicher Cron-Job gelaufen. Zehn frische Cold-Email-Drafts lagen auf Telegram, als ich aufwachte. Ich habe schnell drüber geschaut, „all" getippt, und los ging's. Der Agent hat alle zehn rausgehauen, das CRM aktualisiert, die Follow-up-Daten gesetzt.</p>
|
||||
|
||||
<p>Und dieser Blogpost? Den schreibt er auch gerade. Ich diktiere ihm eine kurze Nachricht auf Telegram — „Schreib einen Blogpost darüber, wie wir mit dem Agenten arbeiten während Theo und ich wandern gehen" — und er setzt es um. Für diesen einen Satz muss ich nicht am Rechner sitzen.</p>
|
||||
|
||||
<div class="story-quote">
|
||||
<p>„Das ist der Moment, der mich an derez.ai am meisten begeistert: Nicht die Technik. Nicht die API-Endpoints. Sondern dass ich mit meinem Sohn wandern kann, während der Agent meinen Blog schreibt."</p>
|
||||
</div>
|
||||
|
||||
<p>Es ist ein seltsames Gefühl, einen Blogpost zu lesen, den man quasi im Vorbeigehen geschrieben hat. Aber es funktioniert. Der Agent kennt meinen Stil, meine Stimme, meine Prioritäten. Er weiß, welche Coupon-Codes in die CTA-Box gehören und dass derez.ai klein geschrieben wird. Er hat gelernt, nicht zu werblich zu klingen — eine Lektion, die uns ein Kunde mal geben musste.</p>
|
||||
|
||||
<h2>Was der Agent heute schon erledigt hat</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong>10 Cold Emails geschrieben und gesendet</strong> — an Consulting-Firmen in den USA, mit persönlicher Ansprache und Blog-Link</li>
|
||||
<li><strong>CRM aktualisiert</strong> — Stage auf Contacted gesetzt, date_next_contact auf +14 Tage</li>
|
||||
<li><strong>Diesen Blogpost getippt</strong> — während ich mit Theo einen Trail hochlaufe</li>
|
||||
<li><strong>Inbox gesäubert</strong> — Bounces aussortiert, eingehende Replies markiert</li>
|
||||
<li><strong>Analytics gecheckt</strong> — Besucherzahlen, LinkedIn-Performance, Trends</li>
|
||||
</ul>
|
||||
|
||||
<p>All das, während ich einen Vogel zeigen konnte, der über uns kreiste, und Theo erklärte, wie Termitenhügel funktionieren.</p>
|
||||
|
||||
<h2>Der „davor"- und „danach"-Moment</h2>
|
||||
|
||||
<p>Vor derez.ai sah ein Samstag so aus: Frühstück, schnell den Laptop aufklappen, „nur kurz" Emails checken — und zwei Stunden später immer noch im Bademantel am Schreibtisch, während Theo schon dreimal gefragt hat, ob wir jetzt gehen.</p>
|
||||
|
||||
<p>Heute sieht es so aus: Theo steht angezogen im Flur, ich tippe auf dem Handy „all" für die zehn Drafts, stecke das Handy weg, und wir gehen.</p>
|
||||
|
||||
<p>Und als wir zwei Stunden später zurückkommen — staubige Schuhe, rote Wangen, müde Beine — ist der Blogpost fertig, das CRM updated, und ich kann mir das alles in Ruhe anschauen, während wir auf der Terrasse sitzen und Apfelsaft trinken.</p>
|
||||
|
||||
<h2>Wie das technisch funktioniert</h2>
|
||||
|
||||
<p>Für alle, die sich fragen, wie das genau läuft: Mein Hermes Agent läuft auf einem Server von derez.ai. Jeden Morgen um 3:00 Uhr PYST startet ein Cron-Job, der aus dem CRM die nächsten zehn Kontakte auswählt — nach einer festen Mischung aus Freunden, Cold Contacts und Backlink-Zielen. Der Agent recherchiert die Websites, schreibt personalisierte Emails und präsentiert sie mir auf Telegram. Ich gebe kurz Freigabe, und der Rest passiert automatisch.</p>
|
||||
|
||||
<p>Der Blogpost hier? Ein Prompt auf Telegram. Der Agent hat die Vorlage, das Farbschema, die Coupon-Codes und den Stil aus seinen Skills. Ich muss nur sagen, worum es gehen soll.</p>
|
||||
|
||||
<div class="story-quote">
|
||||
<p>„Der größte Luxus, den mir derez.ai gibt, ist nicht Zeitersparnis. Es ist die Freiheit, morgens nicht zuerst den Laptop aufzuklappen, sondern mit meinem Sohn rauszugehen."</p>
|
||||
</div>
|
||||
|
||||
<h2>Und was Theo dazu sagt</h2>
|
||||
|
||||
<p>Ich hab ihn gefragt, ob er es komisch findet, dass ein Computer für mich schreibt, während wir wandern. Er hat nur mit den Schultern gezuckt: „Ist doch cool. Dann kannst du mitkommen."</p>
|
||||
|
||||
<p>Mehr muss man dazu nicht sagen.</p>
|
||||
|
||||
<div class="cta-box">
|
||||
<h3>Hol dir auch so einen Agenten — erster Monat frei</h3>
|
||||
<p>5 Minuten Setup. Dein eigener Hermes Agent auf einem dedizierten Server, inklusive Backup, SSH-Zugang und Prompt Builder. Mit Code <strong>blog950</strong> ist der erste Monat kostenlos.</p>
|
||||
<a class="btn" href="https://derez.ai/#pricing">Jetzt Agent holen →</a>
|
||||
</div>
|
||||
|
||||
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a2e;font-size:0.85rem;color:#666;">
|
||||
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Dein KI-Agent in 5 Minuten. ·
|
||||
<a href="https://derez.ai/#blog">Alle Blogposts</a> ·
|
||||
<a href="https://derez.ai/blog/posts/why-backing-up-an-agent-is-so-hard.html">Warum Backup so schwer ist</a>
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,59 @@
|
||||
# Daily Brief — derez.ai
|
||||
## Sunday, June 28, 2026 | 09:00 PYST
|
||||
|
||||
### Changes Since Yesterday (Sat Jun 27 → Sun Jun 28)
|
||||
|
||||
1. **Traffic**: 223 unique visitors (+23), 691 pageviews (+31). Latest day (Jun 27): 20 visitors, +11% DoD. Google now sending 10 visitors (was 6).
|
||||
2. **CRM processed +77 more contacts**: 243 contacted (was 166), 159 bounced (was 116). 2 replies, 2 Warm unchanged. No new conversions.
|
||||
3. **Data discrepancy FIXED**: Script now uses `agents_sold` (Stripe, 6 seats) instead of CRM `Won` stage (0) for `operations.js` goals[1]. Dashboard synced to share dir.
|
||||
4. **No code changes** — last commit Jun 25 (Gumpel cleanup). 16 blog posts live.
|
||||
|
||||
### Blockers Still Open
|
||||
- ❌ NEED n1: Business emails for top 20 YT creators
|
||||
- ❌ NEED n3: Product demo video (3 min)
|
||||
- ❌ NEED n4: Social media account access (X + LinkedIn)
|
||||
- ❌ Telegram group for F&F — still in "setting up next" status
|
||||
- ❌ Search Console access — still blocking directory submissions
|
||||
- ❌ F&F checkout flow untested end-to-end (needs human with credit card)
|
||||
|
||||
### F&F Launch Tomorrow (Monday) — Prep Status
|
||||
- ✅ Coupons ready: friends950, creator950, friends499, friends1750
|
||||
- ✅ Onboarding guide drafted in docs/friends-family-onboarding.md
|
||||
- ✅ Dashboard pipeline fixed — Stripe data now reflected in goals
|
||||
- ❌ Telegram group — needs Oliver to create and add invite link
|
||||
- ❌ Monday onboarding message — drafted below (ready to send)
|
||||
|
||||
### F&F Launch — Suggested Monday Message for Oliver
|
||||
|
||||
**Email / Message to F&F list:**
|
||||
|
||||
> Hey {Name},
|
||||
>
|
||||
> Remember I mentioned I was building an AI agent platform? It's finally ready for battle-testing — and I'd love for you to be among the first to try it.
|
||||
>
|
||||
> **derez.ai** — deploy your own AI agent in ~10 minutes. No SSH, no DevOps. Pick a template (customer support, web research, Odoo CRM, cold email outreach, ChatGPT clone), and you get a live agent on your own subdomain with a web UI and API.
|
||||
>
|
||||
> Here's your invite:
|
||||
> 1. Go to https://derez.ai/add.html
|
||||
> 2. Pick any agent template
|
||||
> 3. Enter coupon **friends950** at checkout — your first month is free, unlimited usage
|
||||
> 4. Your agent will be ready in ~10 minutes
|
||||
>
|
||||
> The coupons don't expire and cover full access — your only job is to break things and tell me what sucks.
|
||||
>
|
||||
> Questions? Reply here or drop in the Telegram group: [LINK TBD — Oliver to create]
|
||||
>
|
||||
> Cheers,
|
||||
> Oliver
|
||||
|
||||
### Prioritized Action Items for Next Session (Monday Jun 29)
|
||||
|
||||
| Priority | Item | Owner | Notes |
|
||||
|----------|------|-------|-------|
|
||||
| P0 | Create Telegram group + invite link for F&F | Oliver | Before sending Monday emails |
|
||||
| P0 | Send F&F onboarding message to list | Oliver | Use draft above |
|
||||
| P1 | End-to-end checkout test (credit card) | Oliver | Verify full flow: add.html → coupon → Stripe → deployment |
|
||||
| P1 | Get Search Console access | Oliver | Unblocks directory submissions |
|
||||
| P1 | Fix NPS survey link in onboarding | Oliver | Currently says "D5" — update date |
|
||||
| P2 | Draft blog post #17 | Hermes | Topic: what F&F feedback taught us |
|
||||
| P2 | LinkedIn company page setup | Oliver | First step in social presence |
|
||||
+136
-58
@@ -1,21 +1,21 @@
|
||||
window.__INSIGHTS__ = {
|
||||
"period": "2026-06-09 to 2026-06-18",
|
||||
"updated": "2026-06-19 06:00",
|
||||
"visitors": 82,
|
||||
"period": "2026-06-09 to 2026-06-27",
|
||||
"updated": "2026-06-28 06:01",
|
||||
"visitors": 223,
|
||||
"visitors_trend": {
|
||||
"dir": "same",
|
||||
"change": "+0",
|
||||
"pct": "+0%"
|
||||
},
|
||||
"visitors_change": "",
|
||||
"latest_day": "2026-06-18",
|
||||
"latest_day_visitors": 6,
|
||||
"latest_day": "2026-06-27",
|
||||
"latest_day_visitors": 20,
|
||||
"dod_trend": {
|
||||
"dir": "down",
|
||||
"change": "-2",
|
||||
"pct": "-25%"
|
||||
"dir": "up",
|
||||
"change": "+2",
|
||||
"pct": "+11%"
|
||||
},
|
||||
"pageviews": 392,
|
||||
"pageviews": 691,
|
||||
"pageviews_trend": {
|
||||
"dir": "same",
|
||||
"change": "+0",
|
||||
@@ -26,24 +26,28 @@ window.__INSIGHTS__ = {
|
||||
"bounce_rate_change": "",
|
||||
"visit_duration": "\u2014",
|
||||
"visit_duration_change": "",
|
||||
"agents_sold": 1,
|
||||
"agents_sold": 6,
|
||||
"top_pages": [],
|
||||
"top_referrers": [
|
||||
{
|
||||
"source": "Direct / None",
|
||||
"visitors": 78
|
||||
"visitors": 154
|
||||
},
|
||||
{
|
||||
"source": "derez",
|
||||
"visitors": 54
|
||||
},
|
||||
{
|
||||
"source": "Google",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"source": "LinkedIn",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"source": "Youtube",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"source": "Google",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"source": "LinkedIn",
|
||||
"visitors": 1
|
||||
}
|
||||
],
|
||||
"visitors_by_day": [
|
||||
@@ -86,35 +90,107 @@ window.__INSIGHTS__ = {
|
||||
{
|
||||
"date": "2026-06-18",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"date": "2026-06-19",
|
||||
"visitors": 8
|
||||
},
|
||||
{
|
||||
"date": "2026-06-20",
|
||||
"visitors": 13
|
||||
},
|
||||
{
|
||||
"date": "2026-06-21",
|
||||
"visitors": 5
|
||||
},
|
||||
{
|
||||
"date": "2026-06-22",
|
||||
"visitors": 9
|
||||
},
|
||||
{
|
||||
"date": "2026-06-23",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"date": "2026-06-24",
|
||||
"visitors": 52
|
||||
},
|
||||
{
|
||||
"date": "2026-06-25",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"date": "2026-06-26",
|
||||
"visitors": 18
|
||||
},
|
||||
{
|
||||
"date": "2026-06-27",
|
||||
"visitors": 20
|
||||
}
|
||||
],
|
||||
"countries": [
|
||||
{
|
||||
"country": "US",
|
||||
"visitors": 33
|
||||
"visitors": 102
|
||||
},
|
||||
{
|
||||
"country": "PY",
|
||||
"visitors": 26
|
||||
"visitors": 49
|
||||
},
|
||||
{
|
||||
"country": "DE",
|
||||
"visitors": 7
|
||||
"visitors": 18
|
||||
},
|
||||
{
|
||||
"country": "GB",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"country": "PL",
|
||||
"visitors": 8
|
||||
},
|
||||
{
|
||||
"country": "MX",
|
||||
"visitors": 4
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"country": "MU",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"country": "CA",
|
||||
"visitors": 3
|
||||
"visitors": 4
|
||||
},
|
||||
{
|
||||
"country": "IN",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"country": "EG",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "IT",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "AU",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "BE",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "DK",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "TR",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "PT",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
@@ -122,67 +198,69 @@ window.__INSIGHTS__ = {
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "PL",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "AU",
|
||||
"country": "AT",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "MD",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "DK",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "TR",
|
||||
"visitors": 1
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
{
|
||||
"name": "Scroll Depth",
|
||||
"total": 662,
|
||||
"unique": 40
|
||||
"total": 864,
|
||||
"unique": 75
|
||||
},
|
||||
{
|
||||
"name": "pageview",
|
||||
"total": 392,
|
||||
"unique": 81
|
||||
},
|
||||
{
|
||||
"name": "Pricing Click",
|
||||
"total": 37,
|
||||
"unique": 6
|
||||
},
|
||||
{
|
||||
"name": "FAQ Toggle",
|
||||
"total": 29,
|
||||
"unique": 3
|
||||
"total": 691,
|
||||
"unique": 221
|
||||
},
|
||||
{
|
||||
"name": "Outbound Link: Click",
|
||||
"total": 84,
|
||||
"unique": 16
|
||||
},
|
||||
{
|
||||
"name": "Pricing Click",
|
||||
"total": 40,
|
||||
"unique": 9
|
||||
},
|
||||
{
|
||||
"name": "FAQ Toggle",
|
||||
"total": 38,
|
||||
"unique": 6
|
||||
},
|
||||
{
|
||||
"name": "Speedrun Nav",
|
||||
"total": 8,
|
||||
"unique": 5
|
||||
"unique": 2
|
||||
},
|
||||
{
|
||||
"name": "Mobile Menu Toggle",
|
||||
"total": 1,
|
||||
"unique": 1
|
||||
"total": 5,
|
||||
"unique": 3
|
||||
},
|
||||
{
|
||||
"name": "Chat Toggle",
|
||||
"total": 3,
|
||||
"unique": 2
|
||||
},
|
||||
{
|
||||
"name": "engagement",
|
||||
"total": 0,
|
||||
"unique": 59
|
||||
"unique": 141
|
||||
}
|
||||
],
|
||||
"utm_sources": [
|
||||
{
|
||||
"source": "(not set)",
|
||||
"visitors": 80
|
||||
"visitors": 166
|
||||
},
|
||||
{
|
||||
"source": "derez",
|
||||
"visitors": 54
|
||||
},
|
||||
{
|
||||
"source": "youtube",
|
||||
@@ -190,8 +268,8 @@ window.__INSIGHTS__ = {
|
||||
}
|
||||
],
|
||||
"what_worked": [
|
||||
"82 unique visitors across 10 days of tracking",
|
||||
"392 pageviews with 7 event types tracked"
|
||||
"223 unique visitors across 19 days of tracking",
|
||||
"691 pageviews with 9 event types tracked"
|
||||
],
|
||||
"what_didnt": [],
|
||||
"recommendations": []
|
||||
|
||||
+136
-58
@@ -1,21 +1,21 @@
|
||||
{
|
||||
"period": "2026-06-09 to 2026-06-18",
|
||||
"updated": "2026-06-19 06:00",
|
||||
"visitors": 82,
|
||||
"period": "2026-06-09 to 2026-06-27",
|
||||
"updated": "2026-06-28 06:01",
|
||||
"visitors": 223,
|
||||
"visitors_trend": {
|
||||
"dir": "same",
|
||||
"change": "+0",
|
||||
"pct": "+0%"
|
||||
},
|
||||
"visitors_change": "",
|
||||
"latest_day": "2026-06-18",
|
||||
"latest_day_visitors": 6,
|
||||
"latest_day": "2026-06-27",
|
||||
"latest_day_visitors": 20,
|
||||
"dod_trend": {
|
||||
"dir": "down",
|
||||
"change": "-2",
|
||||
"pct": "-25%"
|
||||
"dir": "up",
|
||||
"change": "+2",
|
||||
"pct": "+11%"
|
||||
},
|
||||
"pageviews": 392,
|
||||
"pageviews": 691,
|
||||
"pageviews_trend": {
|
||||
"dir": "same",
|
||||
"change": "+0",
|
||||
@@ -26,24 +26,28 @@
|
||||
"bounce_rate_change": "",
|
||||
"visit_duration": "\u2014",
|
||||
"visit_duration_change": "",
|
||||
"agents_sold": 1,
|
||||
"agents_sold": 6,
|
||||
"top_pages": [],
|
||||
"top_referrers": [
|
||||
{
|
||||
"source": "Direct / None",
|
||||
"visitors": 78
|
||||
"visitors": 154
|
||||
},
|
||||
{
|
||||
"source": "derez",
|
||||
"visitors": 54
|
||||
},
|
||||
{
|
||||
"source": "Google",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"source": "LinkedIn",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"source": "Youtube",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"source": "Google",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"source": "LinkedIn",
|
||||
"visitors": 1
|
||||
}
|
||||
],
|
||||
"visitors_by_day": [
|
||||
@@ -86,35 +90,107 @@
|
||||
{
|
||||
"date": "2026-06-18",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"date": "2026-06-19",
|
||||
"visitors": 8
|
||||
},
|
||||
{
|
||||
"date": "2026-06-20",
|
||||
"visitors": 13
|
||||
},
|
||||
{
|
||||
"date": "2026-06-21",
|
||||
"visitors": 5
|
||||
},
|
||||
{
|
||||
"date": "2026-06-22",
|
||||
"visitors": 9
|
||||
},
|
||||
{
|
||||
"date": "2026-06-23",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"date": "2026-06-24",
|
||||
"visitors": 52
|
||||
},
|
||||
{
|
||||
"date": "2026-06-25",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"date": "2026-06-26",
|
||||
"visitors": 18
|
||||
},
|
||||
{
|
||||
"date": "2026-06-27",
|
||||
"visitors": 20
|
||||
}
|
||||
],
|
||||
"countries": [
|
||||
{
|
||||
"country": "US",
|
||||
"visitors": 33
|
||||
"visitors": 102
|
||||
},
|
||||
{
|
||||
"country": "PY",
|
||||
"visitors": 26
|
||||
"visitors": 49
|
||||
},
|
||||
{
|
||||
"country": "DE",
|
||||
"visitors": 7
|
||||
"visitors": 18
|
||||
},
|
||||
{
|
||||
"country": "GB",
|
||||
"visitors": 10
|
||||
},
|
||||
{
|
||||
"country": "PL",
|
||||
"visitors": 8
|
||||
},
|
||||
{
|
||||
"country": "MX",
|
||||
"visitors": 4
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"country": "MU",
|
||||
"visitors": 6
|
||||
},
|
||||
{
|
||||
"country": "CA",
|
||||
"visitors": 3
|
||||
"visitors": 4
|
||||
},
|
||||
{
|
||||
"country": "IN",
|
||||
"visitors": 3
|
||||
},
|
||||
{
|
||||
"country": "EG",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "IT",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "AU",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "BE",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "DK",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "TR",
|
||||
"visitors": 2
|
||||
},
|
||||
{
|
||||
"country": "PT",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
@@ -122,67 +198,69 @@
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "PL",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "AU",
|
||||
"country": "AT",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "MD",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "DK",
|
||||
"visitors": 1
|
||||
},
|
||||
{
|
||||
"country": "TR",
|
||||
"visitors": 1
|
||||
}
|
||||
],
|
||||
"events": [
|
||||
{
|
||||
"name": "Scroll Depth",
|
||||
"total": 662,
|
||||
"unique": 40
|
||||
"total": 864,
|
||||
"unique": 75
|
||||
},
|
||||
{
|
||||
"name": "pageview",
|
||||
"total": 392,
|
||||
"unique": 81
|
||||
},
|
||||
{
|
||||
"name": "Pricing Click",
|
||||
"total": 37,
|
||||
"unique": 6
|
||||
},
|
||||
{
|
||||
"name": "FAQ Toggle",
|
||||
"total": 29,
|
||||
"unique": 3
|
||||
"total": 691,
|
||||
"unique": 221
|
||||
},
|
||||
{
|
||||
"name": "Outbound Link: Click",
|
||||
"total": 84,
|
||||
"unique": 16
|
||||
},
|
||||
{
|
||||
"name": "Pricing Click",
|
||||
"total": 40,
|
||||
"unique": 9
|
||||
},
|
||||
{
|
||||
"name": "FAQ Toggle",
|
||||
"total": 38,
|
||||
"unique": 6
|
||||
},
|
||||
{
|
||||
"name": "Speedrun Nav",
|
||||
"total": 8,
|
||||
"unique": 5
|
||||
"unique": 2
|
||||
},
|
||||
{
|
||||
"name": "Mobile Menu Toggle",
|
||||
"total": 1,
|
||||
"unique": 1
|
||||
"total": 5,
|
||||
"unique": 3
|
||||
},
|
||||
{
|
||||
"name": "Chat Toggle",
|
||||
"total": 3,
|
||||
"unique": 2
|
||||
},
|
||||
{
|
||||
"name": "engagement",
|
||||
"total": 0,
|
||||
"unique": 59
|
||||
"unique": 141
|
||||
}
|
||||
],
|
||||
"utm_sources": [
|
||||
{
|
||||
"source": "(not set)",
|
||||
"visitors": 80
|
||||
"visitors": 166
|
||||
},
|
||||
{
|
||||
"source": "derez",
|
||||
"visitors": 54
|
||||
},
|
||||
{
|
||||
"source": "youtube",
|
||||
@@ -190,8 +268,8 @@
|
||||
}
|
||||
],
|
||||
"what_worked": [
|
||||
"82 unique visitors across 10 days of tracking",
|
||||
"392 pageviews with 7 event types tracked"
|
||||
"223 unique visitors across 19 days of tracking",
|
||||
"691 pageviews with 9 event types tracked"
|
||||
],
|
||||
"what_didnt": [],
|
||||
"recommendations": []
|
||||
|
||||
+26
-26
@@ -1,38 +1,38 @@
|
||||
window.__OPERATIONS__ = {
|
||||
"date": "Sunday, June 14, 2026",
|
||||
"updated": "2026-06-19T06:00:42-04:00",
|
||||
"updated": "2026-06-28T06:01:37-04:00",
|
||||
"goals": [
|
||||
{
|
||||
"current": 22,
|
||||
"note": "CRM: 0 Cold, 22 Contacted, 0 Warm. 90 on Hold, 0 Won."
|
||||
"current": 269,
|
||||
"note": "CRM: 24 Cold, 243 Contacted, 2 Warm. 134 on Hold, 0 Won."
|
||||
},
|
||||
{
|
||||
"current": 6,
|
||||
"note": "6 paying customer(s) (agent sold — Stripe)"
|
||||
},
|
||||
{
|
||||
"current": 0,
|
||||
"note": "0 paying customer(s) (agent sold)"
|
||||
"note": "0 YT creators & affiliates identified (134 on Hold)"
|
||||
},
|
||||
{
|
||||
"current": 1,
|
||||
"note": "1 YT creators & affiliates identified (90 on Hold)"
|
||||
},
|
||||
{
|
||||
"current": 82,
|
||||
"current": 223,
|
||||
"note": "Plausible: 28 unique visitors over 5 days (Jun 9-13). 7 countries. +75% DoD on latest day."
|
||||
},
|
||||
{
|
||||
"current": 22,
|
||||
"note": "22 contacts emailed. 0 replied. 8 bounced."
|
||||
"current": 243,
|
||||
"note": "243 contacts emailed. 2 replied. 159 bounced."
|
||||
},
|
||||
{
|
||||
"current": 835,
|
||||
"note": "835 total in CRM (0 Cold, 22 Contacted, 0 Warm, 90 Hold, 0 Won, 1 Lost, 8 Bounced)"
|
||||
"current": 945,
|
||||
"note": "945 total in CRM (24 Cold, 243 Contacted, 2 Warm, 134 Hold, 0 Won, 1 Lost, 159 Bounced)"
|
||||
}
|
||||
],
|
||||
"campaigns": [
|
||||
{
|
||||
"metrics": [
|
||||
0,
|
||||
22,
|
||||
0
|
||||
24,
|
||||
243,
|
||||
2
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
@@ -44,14 +44,14 @@ window.__OPERATIONS__ = {
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"text": "0 Cold contacts, 22 contacted",
|
||||
"text": "24 Cold contacts, 243 contacted",
|
||||
"ok": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"metrics": [
|
||||
90,
|
||||
134,
|
||||
0,
|
||||
0
|
||||
],
|
||||
@@ -92,7 +92,7 @@ window.__OPERATIONS__ = {
|
||||
]
|
||||
}
|
||||
],
|
||||
"state_of_play": "Day 11 \u2014 22 cold emails sent, 0 replies, 8 bounced. 835 CRM contacts (0 Cold/22 Contacted/0 Warm/90 Hold). 0 agent(s) sold.",
|
||||
"state_of_play": "Day 14 \u2014 243 cold emails sent, 2 replies, 159 bounced. 945 CRM contacts (24 Cold/243 Contacted/2 Warm/134 Hold). 6 agent(s) sold (Stripe).",
|
||||
"comms": {
|
||||
"inbox": {
|
||||
"total": 0,
|
||||
@@ -104,12 +104,12 @@ window.__OPERATIONS__ = {
|
||||
},
|
||||
"alerts": 0,
|
||||
"crm": {
|
||||
"total": 835,
|
||||
"cold": 0,
|
||||
"contacted": 22,
|
||||
"warm": 0,
|
||||
"total": 945,
|
||||
"cold": 24,
|
||||
"contacted": 243,
|
||||
"warm": 2,
|
||||
"won": 0,
|
||||
"hold": 90
|
||||
"hold": 134
|
||||
}
|
||||
},
|
||||
"recommendations": [
|
||||
@@ -119,6 +119,6 @@ window.__OPERATIONS__ = {
|
||||
"End of July: evaluate F&F results, then re-activate influencer campaign with tested system",
|
||||
"1 agent sold already \u2014 good sign for F&F conversion expectations"
|
||||
],
|
||||
"day": 11,
|
||||
"notes": "Day 11 auto-update at 06:00 UTC"
|
||||
"day": 14,
|
||||
"notes": "Day 14 auto-update at 06:01 UTC"
|
||||
};
|
||||
|
||||
+26
-26
@@ -1,38 +1,38 @@
|
||||
{
|
||||
"date": "Sunday, June 14, 2026",
|
||||
"updated": "2026-06-19T06:00:42-04:00",
|
||||
"updated": "2026-06-28T06:01:37-04:00",
|
||||
"goals": [
|
||||
{
|
||||
"current": 22,
|
||||
"note": "CRM: 0 Cold, 22 Contacted, 0 Warm. 90 on Hold, 0 Won."
|
||||
"current": 269,
|
||||
"note": "CRM: 24 Cold, 243 Contacted, 2 Warm. 134 on Hold, 0 Won."
|
||||
},
|
||||
{
|
||||
"current": 6,
|
||||
"note": "6 paying customer(s) (agent sold — Stripe)"
|
||||
},
|
||||
{
|
||||
"current": 0,
|
||||
"note": "0 paying customer(s) (agent sold)"
|
||||
"note": "0 YT creators & affiliates identified (134 on Hold)"
|
||||
},
|
||||
{
|
||||
"current": 1,
|
||||
"note": "1 YT creators & affiliates identified (90 on Hold)"
|
||||
},
|
||||
{
|
||||
"current": 82,
|
||||
"current": 223,
|
||||
"note": "Plausible: 28 unique visitors over 5 days (Jun 9-13). 7 countries. +75% DoD on latest day."
|
||||
},
|
||||
{
|
||||
"current": 22,
|
||||
"note": "22 contacts emailed. 0 replied. 8 bounced."
|
||||
"current": 243,
|
||||
"note": "243 contacts emailed. 2 replied. 159 bounced."
|
||||
},
|
||||
{
|
||||
"current": 835,
|
||||
"note": "835 total in CRM (0 Cold, 22 Contacted, 0 Warm, 90 Hold, 0 Won, 1 Lost, 8 Bounced)"
|
||||
"current": 945,
|
||||
"note": "945 total in CRM (24 Cold, 243 Contacted, 2 Warm, 134 Hold, 0 Won, 1 Lost, 159 Bounced)"
|
||||
}
|
||||
],
|
||||
"campaigns": [
|
||||
{
|
||||
"metrics": [
|
||||
0,
|
||||
22,
|
||||
0
|
||||
24,
|
||||
243,
|
||||
2
|
||||
],
|
||||
"items": [
|
||||
{
|
||||
@@ -44,14 +44,14 @@
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"text": "0 Cold contacts, 22 contacted",
|
||||
"text": "24 Cold contacts, 243 contacted",
|
||||
"ok": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"metrics": [
|
||||
90,
|
||||
134,
|
||||
0,
|
||||
0
|
||||
],
|
||||
@@ -92,7 +92,7 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"state_of_play": "Day 11 \u2014 22 cold emails sent, 0 replies, 8 bounced. 835 CRM contacts (0 Cold/22 Contacted/0 Warm/90 Hold). 0 agent(s) sold.",
|
||||
"state_of_play": "Day 14 \u2014 243 cold emails sent, 2 replies, 159 bounced. 945 CRM contacts (24 Cold/243 Contacted/2 Warm/134 Hold). 6 agent(s) sold (Stripe).",
|
||||
"comms": {
|
||||
"inbox": {
|
||||
"total": 0,
|
||||
@@ -104,12 +104,12 @@
|
||||
},
|
||||
"alerts": 0,
|
||||
"crm": {
|
||||
"total": 835,
|
||||
"cold": 0,
|
||||
"contacted": 22,
|
||||
"warm": 0,
|
||||
"total": 945,
|
||||
"cold": 24,
|
||||
"contacted": 243,
|
||||
"warm": 2,
|
||||
"won": 0,
|
||||
"hold": 90
|
||||
"hold": 134
|
||||
}
|
||||
},
|
||||
"recommendations": [
|
||||
@@ -119,6 +119,6 @@
|
||||
"End of July: evaluate F&F results, then re-activate influencer campaign with tested system",
|
||||
"1 agent sold already \u2014 good sign for F&F conversion expectations"
|
||||
],
|
||||
"day": 11,
|
||||
"notes": "Day 11 auto-update at 06:00 UTC"
|
||||
"day": 14,
|
||||
"notes": "Day 14 auto-update at 06:01 UTC"
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"scan_date": "2026-07-06",
|
||||
"latest_videos": [
|
||||
{
|
||||
"title": "I Connected my Hermes Agent to Odoo in 10 Minutes — Here's How",
|
||||
"url": "https://www.youtube.com/watch?v=Gx-XiCJAt8g",
|
||||
"published": "2026-06-14"
|
||||
}
|
||||
],
|
||||
"new_since_last": 0,
|
||||
"channel_url": "https://www.youtube.com/@derez_ai"
|
||||
}
|
||||
+9
-2
@@ -166,6 +166,7 @@
|
||||
<li><a href="#faq">FAQ</a></li>
|
||||
<li><a href="#blog">Blog</a></li>
|
||||
<li><a href="#topics">Topics</a></li>
|
||||
<li><a href="affiliate.html">Affiliate</a></li>
|
||||
</ul>
|
||||
<div class="header-actions">
|
||||
<a href="https://app.derez.ai" class="btn-login">
|
||||
@@ -1659,9 +1660,9 @@
|
||||
<div class="container">
|
||||
<h2 class="section-title">📌 Focus Topics</h2>
|
||||
<div class="topics-grid">
|
||||
<a href="odoo-hermes-agent.html" class="topic-card">
|
||||
<a href="https://derez.ai/odoo-hermes" class="topic-card">
|
||||
<div class="topic-badge">Integration</div>
|
||||
<h3>Odoo Hermes Agent</h3>
|
||||
<h3>Odoo Hermes</h3>
|
||||
<p>
|
||||
Connect your Odoo ERP to Hermes Agent in 10 minutes.
|
||||
Read, write, and automate your business data through
|
||||
@@ -1717,6 +1718,12 @@
|
||||
<div class="container">
|
||||
<span>© 2026 derez.ai — AI Agent Hosting</span>
|
||||
<div class="footer-links">
|
||||
<a href="https://derez.ai/odoo-hermes"
|
||||
>Odoo Hermes</a
|
||||
>
|
||||
<a href="https://derez.ai/affiliate.html"
|
||||
>Affiliate Program</a
|
||||
>
|
||||
<a
|
||||
href="https://www.youtube.com/@derez_ai"
|
||||
target="_blank"
|
||||
|
||||
@@ -0,0 +1,703 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<!-- ── SEO ───────────────────────────────────────────────── -->
|
||||
<title>Odoo Hermes — Connect Odoo ERP to Hermes AI Agent | derez.ai</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Odoo Hermes connects your Odoo ERP to Hermes AI Agent. XML-RPC, MCP, or n8n — three ways to integrate. Read, write, and automate Odoo data through natural language."
|
||||
/>
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link rel="canonical" href="https://derez.ai/odoo-hermes" />
|
||||
|
||||
<!-- ── OG ─────────────────────────────────────────────────── -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://derez.ai/odoo-hermes" />
|
||||
<meta property="og:title" content="Odoo Hermes — Connect Odoo ERP to AI Agent" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Three ways to connect Odoo to Hermes Agent. XML-RPC direct, MCP protocol, or n8n deterministic workflows. Full step-by-step guide."
|
||||
/>
|
||||
<meta property="og:image" content="https://derez.ai/og-image.png" />
|
||||
<meta property="og:site_name" content="derez.ai" />
|
||||
|
||||
<!-- ── Twitter ────────────────────────────────────────────── -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Odoo Hermes — Connect Odoo ERP to AI Agent" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Three ways to connect Odoo to Hermes Agent. XML-RPC direct, MCP protocol, or n8n deterministic workflows."
|
||||
/>
|
||||
|
||||
<!-- ── Structured Data (FAQ) ──────────────────────────────── -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What is Odoo Hermes?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Odoo Hermes is the integration between Odoo ERP and Hermes AI Agent. It allows your AI agent to read, write, and automate data across Odoo modules — CRM, Sales, Inventory, Accounting — through natural language prompts."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How do I connect Odoo to Hermes Agent?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "There are three ways: 1) Direct XML-RPC API — configure Odoo credentials in Hermes config.yaml and the agent calls the API directly. 2) Odoo MCP CLI client — run mcp-server-odoo and register with Hermes. 3) Hermes to n8n to Odoo — delegate Odoo operations to deterministic n8n workflows."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Is Odoo Hermes free?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Hermes Agent is open-source and free. Odoo Community Edition is also free. You only pay for hosting — derez.ai offers managed agents starting at $9.50/month with coupon code blog950."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Which integration method should I use?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "For quick queries and demos use XML-RPC direct. For multi-tool agents on MCP use the Odoo MCP CLI. For production business processes like invoicing and order management use Hermes to n8n to Odoo for deterministic step-by-step workflows."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Can Odoo Hermes write to my database?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Yes, but you control it. Set readonly: true in the config for read-only access, or remove it to allow create/update operations. Always use a dedicated Odoo user with restricted permissions for agent access."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- ── Plausible ──────────────────────────────────────────── -->
|
||||
<script
|
||||
defer
|
||||
data-domain="derez.ai"
|
||||
src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"
|
||||
></script>
|
||||
<script>
|
||||
window.plausible =
|
||||
window.plausible ||
|
||||
function () {
|
||||
(window.plausible.q = window.plausible.q || []).push(arguments)
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- ── Fonts ──────────────────────────────────────────────── -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- ── Styles ─────────────────────────────────────────────── -->
|
||||
<style>
|
||||
:root {
|
||||
--bg: #000810;
|
||||
--bg-card: #010f20;
|
||||
--bg-code: #001220;
|
||||
--border: #001a2e;
|
||||
--accent: #00f5ff;
|
||||
--accent-dim: rgba(0,245,255,0.08);
|
||||
--text: #e8e8f0;
|
||||
--text-muted: #888;
|
||||
--text-dim: #666;
|
||||
--radius: 8px;
|
||||
--radius-card: 14px;
|
||||
}
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: 'Inter', system-ui, -apple-system, sans-serif;
|
||||
line-height: 1.7;
|
||||
font-size: 15px;
|
||||
}
|
||||
a { color: var(--accent); text-decoration: none; }
|
||||
a:hover { text-decoration: underline; }
|
||||
.container { max-width: 800px; margin: 0 auto; padding: 0 24px; }
|
||||
|
||||
/* ── Header ─────────────────────────────────────────── */
|
||||
.site-header {
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 14px 0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: var(--bg);
|
||||
z-index: 100;
|
||||
}
|
||||
.site-header .container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
max-width: 1100px;
|
||||
}
|
||||
.site-logo { display: flex; align-items: center; gap: 8px; }
|
||||
.site-logo-img { display: block; height: 34px; width: auto; }
|
||||
.nav-links {
|
||||
display: flex;
|
||||
list-style: none;
|
||||
gap: 24px;
|
||||
font-size: 0.88rem;
|
||||
}
|
||||
.nav-links a { color: #999; transition: color .15s; }
|
||||
.nav-links a:hover { color: var(--text); text-decoration: none; }
|
||||
.header-actions { display: flex; align-items: center; gap: 12px; }
|
||||
.btn-login {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
font-size: 0.85rem;
|
||||
color: #999;
|
||||
padding: 6px 14px;
|
||||
border-radius: var(--radius);
|
||||
border: 1px solid var(--border);
|
||||
transition: all .15s;
|
||||
}
|
||||
.btn-login:hover { border-color: #333; color: var(--text); text-decoration: none; }
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: 8px 22px;
|
||||
border-radius: var(--radius);
|
||||
font-weight: 600;
|
||||
font-size: 0.88rem;
|
||||
transition: all .2s;
|
||||
}
|
||||
.btn-primary {
|
||||
background: var(--accent);
|
||||
color: #000;
|
||||
border: 1px solid var(--accent);
|
||||
}
|
||||
.btn-primary:hover { background: #33f7ff; text-decoration: none; }
|
||||
.btn-outline {
|
||||
background: transparent;
|
||||
color: var(--accent);
|
||||
border: 1px solid var(--accent);
|
||||
}
|
||||
.btn-outline:hover { background: var(--accent-dim); text-decoration: none; }
|
||||
.hamburger {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: 4px;
|
||||
}
|
||||
.hamburger span {
|
||||
display: block;
|
||||
width: 22px;
|
||||
height: 2px;
|
||||
background: #999;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* ── Hero ────────────────────────────────────────────── */
|
||||
.hero {
|
||||
padding: 60px 0 40px;
|
||||
text-align: center;
|
||||
}
|
||||
.hero .badge {
|
||||
display: inline-block;
|
||||
background: var(--accent-dim);
|
||||
color: var(--accent);
|
||||
border: 1px solid rgba(0,245,255,0.25);
|
||||
font-size: 0.75rem;
|
||||
font-weight: 600;
|
||||
padding: 4px 12px;
|
||||
border-radius: 20px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.hero h1 { font-size: 2.6rem; font-weight: 700; line-height: 1.15; margin-bottom: 16px; }
|
||||
.hero p {
|
||||
font-size: 1.1rem;
|
||||
color: var(--text-muted);
|
||||
max-width: 600px;
|
||||
margin: 0 auto 24px;
|
||||
}
|
||||
.hero-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
|
||||
|
||||
/* ── Video ───────────────────────────────────────────── */
|
||||
.video-wrap {
|
||||
max-width: 360px;
|
||||
margin: 40px auto;
|
||||
aspect-ratio: 9/16;
|
||||
border-radius: var(--radius-card);
|
||||
overflow: hidden;
|
||||
background: #000;
|
||||
box-shadow: 0 8px 40px rgba(0,0,0,0.5);
|
||||
}
|
||||
.video-wrap iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* ── Content ─────────────────────────────────────────── */
|
||||
.content { padding-bottom: 60px; }
|
||||
.content h2 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
margin: 48px 0 16px;
|
||||
color: #f0f0ff;
|
||||
}
|
||||
.content h3 {
|
||||
font-size: 1.15rem;
|
||||
font-weight: 600;
|
||||
margin: 28px 0 10px;
|
||||
color: #e0e0f0;
|
||||
}
|
||||
.content p { margin-bottom: 16px; color: #c8c8d8; }
|
||||
.content ul, .content ol { margin: 0 0 20px 24px; color: #c8c8d8; }
|
||||
.content li { margin-bottom: 8px; }
|
||||
.content strong { color: #f0f0ff; }
|
||||
.content code {
|
||||
background: var(--bg-code);
|
||||
padding: 2px 7px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.88em;
|
||||
color: var(--accent);
|
||||
}
|
||||
.content pre {
|
||||
background: var(--bg-code);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 10px;
|
||||
padding: 16px 20px;
|
||||
margin: 0 0 20px;
|
||||
overflow-x: auto;
|
||||
font-size: 0.85rem;
|
||||
color: #c8f0ff;
|
||||
font-family: 'Courier New', monospace;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.content pre code { background: none; padding: 0; color: inherit; }
|
||||
.content .divider {
|
||||
border: none;
|
||||
border-top: 1px solid var(--border);
|
||||
margin: 36px 0;
|
||||
}
|
||||
.content .faq-item {
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 18px 0;
|
||||
}
|
||||
.content .faq-item:last-child { border-bottom: none; }
|
||||
.content .faq-item h3 {
|
||||
font-size: 1rem;
|
||||
margin: 0 0 6px;
|
||||
cursor: pointer;
|
||||
color: var(--accent);
|
||||
}
|
||||
.content .faq-item p { margin: 0; font-size: 0.95rem; color: #aaa; }
|
||||
|
||||
/* ── Method cards ────────────────────────────────────── */
|
||||
.method-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 16px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
.method-card {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-card);
|
||||
padding: 24px;
|
||||
}
|
||||
.method-card h3 {
|
||||
font-size: 1rem;
|
||||
margin: 0 0 6px;
|
||||
color: var(--accent);
|
||||
}
|
||||
.method-card .speed { font-size: 0.8rem; color: var(--text-muted); margin-bottom: 8px; display: block; }
|
||||
.method-card p { font-size: 0.9rem; margin: 0; }
|
||||
|
||||
/* ── CTA box ─────────────────────────────────────────── */
|
||||
.cta-box {
|
||||
background: var(--bg-card);
|
||||
border: 1px solid rgba(0,245,255,0.2);
|
||||
border-radius: var(--radius-card);
|
||||
padding: 32px 36px;
|
||||
margin: 40px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.cta-box h3 { font-size: 1.2rem; margin-bottom: 8px; color: #f0f0ff; }
|
||||
.cta-box p { color: #999; margin-bottom: 18px; font-size: 0.95rem; }
|
||||
.cta-box .btn { font-size: 1rem; padding: 12px 32px; }
|
||||
|
||||
/* ── Footer ──────────────────────────────────────────── */
|
||||
.site-footer {
|
||||
border-top: 1px solid var(--border);
|
||||
padding: 24px 0;
|
||||
margin-top: 20px;
|
||||
}
|
||||
.site-footer .container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
max-width: 1100px;
|
||||
font-size: 0.85rem;
|
||||
color: var(--text-dim);
|
||||
}
|
||||
.footer-links { display: flex; gap: 20px; }
|
||||
.footer-links a { color: var(--text-dim); }
|
||||
.footer-links a:hover { color: var(--accent); }
|
||||
|
||||
/* ── Responsive ──────────────────────────────────────── */
|
||||
@media (max-width: 700px) {
|
||||
.nav-links { display: none; }
|
||||
.hamburger { display: flex; }
|
||||
.hero h1 { font-size: 1.8rem; }
|
||||
.hero p { font-size: 1rem; }
|
||||
.method-grid { grid-template-columns: 1fr; }
|
||||
.site-footer .container { flex-direction: column; gap: 12px; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
body { font-size: 14px; }
|
||||
.hero { padding: 40px 0 24px; }
|
||||
.cta-box { padding: 24px 20px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
HEADER
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<header class="site-header" id="site-header">
|
||||
<div class="container">
|
||||
<a href="/" class="site-logo">
|
||||
<img
|
||||
src="assets/images/logo.svg"
|
||||
alt="derez.ai"
|
||||
width="132"
|
||||
height="34"
|
||||
class="site-logo-img"
|
||||
/>
|
||||
</a>
|
||||
|
||||
<ul class="nav-links" id="nav-links">
|
||||
<li><a href="https://derez.ai/#pricing">Pricing</a></li>
|
||||
<li><a href="https://derez.ai/#faq">FAQ</a></li>
|
||||
<li><a href="https://derez.ai/#blog">Blog</a></li>
|
||||
<li><a href="https://derez.ai/#topics">Topics</a></li>
|
||||
<li><a href="affiliate.html">Affiliate</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="header-actions">
|
||||
<a href="https://app.derez.ai" class="btn-login">
|
||||
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="3" y="11" width="18" height="11" rx="2" />
|
||||
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
|
||||
</svg>
|
||||
Sign In
|
||||
</a>
|
||||
<a href="https://derez.ai/#pricing" class="btn btn-primary btn-signup-header">Buy Agent</a>
|
||||
<button class="hamburger" id="hamburger" aria-label="Toggle menu" onclick="toggleMobile()">
|
||||
<span></span><span></span><span></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
HERO
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<div class="container">
|
||||
<div class="hero">
|
||||
<div class="badge">Integration</div>
|
||||
<h1>Odoo Hermes</h1>
|
||||
<p>
|
||||
Connect your Odoo ERP to Hermes AI Agent and automate your business data
|
||||
through natural language. Three integration methods — pick the one that fits.
|
||||
</p>
|
||||
<div class="hero-actions">
|
||||
<a href="#setup" class="btn btn-primary">Setup Guide</a>
|
||||
<a href="#faq" class="btn btn-outline">FAQs</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── YouTube Short (embedded)────────────────────────── -->
|
||||
<div class="video-wrap">
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/GVZMnq_NOxI"
|
||||
title="Odoo Hermes — AI Agent connects to Odoo via XML-RPC"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen
|
||||
></iframe>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════
|
||||
CONTENT
|
||||
═══════════════════════════════════════════════════════ -->
|
||||
<div class="content">
|
||||
|
||||
<h2>What Is Odoo Hermes?</h2>
|
||||
<p>
|
||||
<strong>Odoo Hermes</strong> is the integration between <strong>Odoo ERP</strong> and
|
||||
<strong>Hermes AI Agent</strong>. It gives your AI agent direct access to your
|
||||
Odoo database — CRM contacts, sales orders, inventory levels, invoices, and more —
|
||||
all through natural language prompts.
|
||||
</p>
|
||||
<p>
|
||||
Instead of clicking through Odoo's module menus to find a customer or generate a
|
||||
report, you just ask your agent. "Show me all leads from last week." "What's the
|
||||
total value of open quotes?" "Create a new invoice for ACME Corp." Your agent
|
||||
handles the API calls and returns the answer.
|
||||
</p>
|
||||
<p>
|
||||
There are <strong>three ways</strong> to set up the connection, each with different
|
||||
trade-offs. The <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">full comparison article</a>
|
||||
covers all three in detail, but here's the quick summary:
|
||||
</p>
|
||||
|
||||
<div class="method-grid">
|
||||
<div class="method-card">
|
||||
<h3>XML-RPC Direct</h3>
|
||||
<span class="speed">~3 min setup · Lowest latency</span>
|
||||
<p>Configure Odoo credentials in Hermes and the agent calls the API directly. Best for quick queries, demos, and prototyping.</p>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h3>Odoo MCP CLI</h3>
|
||||
<span class="speed">~5 min setup · Standard protocol</span>
|
||||
<p>Run mcp-server-odoo and register with Hermes. Best for multi-tool agents that already use MCP for other services.</p>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h3>n8n Pipeline</h3>
|
||||
<span class="speed">~10 min setup · Highest determinism</span>
|
||||
<p>Hermes delegates Odoo operations to n8n workflows. Best for production business processes where every step must be predictable.</p>
|
||||
</div>
|
||||
<div class="method-card">
|
||||
<h3>Speed Run</h3>
|
||||
<span class="speed">~10 min · Full walkthrough</span>
|
||||
<p>From zero to an Odoo-connected agent. Follow the <a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html?utm_source=derez&utm_campaign=email">Odoo Speed Run</a> for the complete beginner-friendly guide.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>Why Use Odoo Hermes?</h2>
|
||||
|
||||
<h3>One Interface, All Modules</h3>
|
||||
<p>
|
||||
Odoo has CRM, Sales, Inventory, Accounting, Manufacturing, and 30+ other modules.
|
||||
Each has its own UI, filters, and reports. Odoo Hermes collapses them all into a
|
||||
single text interface. Ask once, get answers from any module.
|
||||
</p>
|
||||
|
||||
<h3>Automate Repetitive Tasks</h3>
|
||||
<p>
|
||||
Instead of logging into Odoo every morning to check new leads, update stages, and
|
||||
generate reports, your agent does it on a schedule. Set up a <strong>cron job</strong>
|
||||
that runs "Pull all new leads from last 24 hours, categorize them by industry, and
|
||||
save the result to my dashboard" — and it happens automatically at 08:00 every day.
|
||||
</p>
|
||||
|
||||
<h3>Combine Odoo with Other Tools</h3>
|
||||
<p>
|
||||
Hermes Agent isn't limited to Odoo. It also browses the web, sends emails, reads
|
||||
files, and runs code. Your agent can research a prospect on LinkedIn,
|
||||
check their CRM record in Odoo, draft a personalized email, and send it — all in
|
||||
one session.
|
||||
</p>
|
||||
|
||||
<h3>No Code Required</h3>
|
||||
<p>
|
||||
You don't need to write Python scripts, build API integrations, or maintain
|
||||
middleware. Configure once in <code>config.yaml</code> and your agent is ready.
|
||||
The entire setup takes about 10 minutes.
|
||||
</p>
|
||||
|
||||
<hr class="divider" />
|
||||
|
||||
<h2 id="setup">Step-by-Step Setup (XML-RPC Direct)</h2>
|
||||
<p>
|
||||
This is the fastest path — one config block and your agent talks to Odoo directly.
|
||||
For the MCP or n8n approaches, see the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">full comparison guide</a>.
|
||||
</p>
|
||||
|
||||
<h3>Prerequisites</h3>
|
||||
<p>Have these ready before you start:</p>
|
||||
<ul>
|
||||
<li>Your Odoo instance URL (e.g. <code>https://your-instance.odoo4projects.com</code>)</li>
|
||||
<li>Odoo username and password (create a dedicated agent user — never use admin)</li>
|
||||
<li>Hermes Agent installed and running</li>
|
||||
</ul>
|
||||
|
||||
<h3>Step 1 — Generate an API Key</h3>
|
||||
<p>
|
||||
In Odoo, go to <strong>Settings → Users → select your agent user → Technical</strong>.
|
||||
Scroll to <strong>Security</strong> and click <strong>Generate API Key</strong>.
|
||||
Name it <code>hermes-agent</code> and copy the key immediately — Odoo only shows it once.
|
||||
</p>
|
||||
|
||||
<h3>Step 2 — Configure Hermes</h3>
|
||||
<p>Add this block to your <code>~/.hermes/config.yaml</code>:</p>
|
||||
<pre><code>odoo:
|
||||
url: "https://your-instance.odoo4projects.com"
|
||||
db: "your-database"
|
||||
user: "agent@company.com"
|
||||
api_key: "your-api-key"
|
||||
readonly: true</code></pre>
|
||||
<p>
|
||||
Set <code>readonly: true</code> for first setup. Remove it once you're confident
|
||||
and need the agent to create or update records.
|
||||
</p>
|
||||
|
||||
<h3>Step 3 — Give Your Agent the Prompt</h3>
|
||||
<p>Start Hermes and paste this prompt:</p>
|
||||
<pre><code>Connect to the ODOO 19 database with the credentials $ODOO_URL $ODOO_USER $ODOO_APIKEY</code></pre>
|
||||
|
||||
<h3>Step 4 — Verify</h3>
|
||||
<p>Ask your agent a simple question to confirm the connection works:</p>
|
||||
<pre><code>Give me a list of customers with their email addresses.</code></pre>
|
||||
<p>If everything is configured correctly, the agent returns live data from your Odoo instance:</p>
|
||||
<pre><code>1. Azure Interior — azure.interior@example.com
|
||||
2. Deco Addict — deco.addict@example.com
|
||||
3. Gem Furniture — gem.furniture@example.com
|
||||
4. Lumber Inc — lumber.inc@example.com
|
||||
Total: 8 customers in CRM</code></pre>
|
||||
|
||||
<p>That's it. Three minutes, one config block, and your agent talks to Odoo.</p>
|
||||
|
||||
<h3>What to Try Next</h3>
|
||||
<ul>
|
||||
<li><strong>"Show me all leads in the CRM"</strong> — pulls from <code>crm.lead</code></li>
|
||||
<li><strong>"List my recent sales orders"</strong> — queries <code>sale.order</code></li>
|
||||
<li><strong>"What products are low on stock?"</strong> — checks <code>stock.quant</code></li>
|
||||
<li><strong>"What's the total value of open quotes?"</strong> — sums draft sale orders</li>
|
||||
</ul>
|
||||
|
||||
<hr class="divider" />
|
||||
|
||||
<h2>Comparison: Which Method Should You Use?</h2>
|
||||
|
||||
<table style="width:100%;border-collapse:collapse;margin:20px 0;font-size:0.95rem;">
|
||||
<tr style="border-bottom:1px solid var(--border);">
|
||||
<th style="text-align:left;padding:8px 12px;color:var(--accent);">Factor</th>
|
||||
<th style="text-align:left;padding:8px 12px;color:var(--accent);">XML-RPC</th>
|
||||
<th style="text-align:left;padding:8px 12px;color:var(--accent);">MCP</th>
|
||||
<th style="text-align:left;padding:8px 12px;color:var(--accent);">n8n</th>
|
||||
</tr>
|
||||
<tr style="border-bottom:1px solid var(--border);">
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Setup time</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">~3 min</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">~5 min</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">~10 min</td>
|
||||
</tr>
|
||||
<tr style="border-bottom:1px solid var(--border);">
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Determinism</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Low (LLM-driven)</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Medium (tool-bound)</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">High (step-by-step)</td>
|
||||
</tr>
|
||||
<tr style="border-bottom:1px solid var(--border);">
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Audit trail</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">None</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">None</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Full (n8n logs)</td>
|
||||
</tr>
|
||||
<tr style="border-bottom:1px solid var(--border);">
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Best for</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Quick queries, demos</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Multi-tool stacks</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Invoices, orders, data entry</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Components</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">Hermes + Odoo</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">+ MCP server</td>
|
||||
<td style="padding:8px 12px;color:#c8c8d8;">+ n8n</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr class="divider" />
|
||||
|
||||
<h2 id="faq">Frequently Asked Questions</h2>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>What is Odoo Hermes?</h3>
|
||||
<p>Odoo Hermes is the integration between Odoo ERP and Hermes AI Agent. It allows your AI agent to read, write, and automate data across Odoo modules — CRM, Sales, Inventory, Accounting — through natural language prompts instead of clicking through the Odoo UI.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>How do I connect Odoo to Hermes Agent?</h3>
|
||||
<p>There are three ways: <strong>XML-RPC direct</strong> — configure Odoo credentials in Hermes config.yaml and the agent calls the API directly. <strong>Odoo MCP CLI</strong> — run mcp-server-odoo and register with Hermes. <strong>n8n pipeline</strong> — delegate Odoo operations to deterministic n8n workflows. The right choice depends on whether you need speed (XML-RPC), standardization (MCP), or determinism (n8n).</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Is Odoo Hermes free?</h3>
|
||||
<p>Hermes Agent is open-source and free. Odoo Community Edition is also free with no per-user fees. You only pay for hosting — derez.ai offers managed agents starting at $9.50/month. Use coupon code <strong>blog950</strong> for your first month free.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Which integration method is best for production?</h3>
|
||||
<p>The <strong>n8n pipeline</strong> is the most production-ready. Every Odoo operation runs through a deterministic workflow — check customer exists, then check product, then create invoice. This prevents the LLM from chaining API calls in unexpected ways. Use XML-RPC for quick queries and demos, n8n for business-critical operations like invoicing and order management.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Can Odoo Hermes write to my database?</h3>
|
||||
<p>Yes, but you control it. Set <code>readonly: true</code> in the config for read-only access. Remove it to allow create/update operations. Always create a dedicated Odoo user for the agent with restricted model access — never use an admin account.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>What Odoo versions does Odoo Hermes support?</h3>
|
||||
<p>The XML-RPC and JSON-RPC APIs work with Odoo 15 through 19, including Odoo Community Edition and Odoo Enterprise. The MCP server supports Odoo 17+. The n8n approach works with any version that exposes a webhook-compatible API.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>Can I schedule Odoo Hermes to run automatically?</h3>
|
||||
<p>Yes. Hermes Agent has built-in cron job support. You can schedule prompts like "Check for new leads every hour and alert me if there are more than 5" or "Generate a weekly sales report every Monday at 09:00." The agent runs autonomously and sends you the results.</p>
|
||||
</div>
|
||||
|
||||
<!-- ── CTA ──────────────────────────────────────────── -->
|
||||
<div class="cta-box">
|
||||
<h3>Deploy Your Odoo Hermes Agent</h3>
|
||||
<p>
|
||||
First month free with coupon code <strong>blog950</strong>. From zero to
|
||||
an Odoo-connected AI agent in under 10 minutes.
|
||||
</p>
|
||||
<a href="https://derez.ai/#pricing" class="btn btn-primary">Buy Agent →</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ═══════════════════════════════════════════════════════════
|
||||
FOOTER
|
||||
═══════════════════════════════════════════════════════════ -->
|
||||
<footer class="site-footer">
|
||||
<div class="container">
|
||||
<span>© 2026 derez.ai — AI Agent Hosting</span>
|
||||
<div class="footer-links">
|
||||
<a href="https://derez.ai/odoo-hermes">Odoo Hermes</a>
|
||||
<a href="https://derez.ai/affiliate.html">Affiliate Program</a>
|
||||
<a href="https://www.youtube.com/@derez_ai" target="_blank" rel="noopener">YouTube</a>
|
||||
<a href="https://www.linkedin.com/company/derez-ai" target="_blank" rel="noopener">LinkedIn</a>
|
||||
<a href="https://ODOO4projects.com?utm_source=derez" target="_blank" rel="noopener">Powered by ODOO4projects LLC</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- ── Mobile toggle ───────────────────────────────────────── -->
|
||||
<script>
|
||||
function toggleMobile() {
|
||||
const nav = document.getElementById('nav-links');
|
||||
nav.style.display = nav.style.display === 'flex' ? 'none' : 'flex';
|
||||
}
|
||||
</script>
|
||||
<script src="assets/js/script.js?v3" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
+4
-4
@@ -138,9 +138,9 @@
|
||||
<ns0:priority>0.7</ns0:priority>
|
||||
</ns0:url>
|
||||
<ns0:url>
|
||||
<ns0:loc>https://derez.ai/blog/posts/wandern-mit-theo-agent-schreibt.html</ns0:loc>
|
||||
<ns0:lastmod>2026-06-21</ns0:lastmod>
|
||||
<ns0:loc>https://derez.ai/affiliate.html</ns0:loc>
|
||||
<ns0:lastmod>2026-06-23</ns0:lastmod>
|
||||
<ns0:changefreq>monthly</ns0:changefreq>
|
||||
<ns0:priority>0.7</ns0:priority>
|
||||
<ns0:priority>0.6</ns0:priority>
|
||||
</ns0:url>
|
||||
</ns0:urlset>
|
||||
<ns0:url><ns0:loc>https://derez.ai/blog/posts/speed-run-odoo-static-website.html</ns0:loc><ns0:lastmod>2026-06-22</ns0:lastmod><ns0:changefreq>monthly</ns0:changefreq><ns0:priority>0.7</ns0:priority></ns0:url></ns0:urlset>
|
||||
Reference in New Issue
Block a user