<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Djaouad Frih </title>
    <description>The latest articles on DEV Community by Djaouad Frih  (@djoudad292).</description>
    <link>https://dev.to/djoudad292</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4094537%2F33b6ce26-29fa-42fd-bdf1-e2ad30b0a0b7.png</url>
      <title>DEV Community: Djaouad Frih </title>
      <link>https://dev.to/djoudad292</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/djoudad292"/>
    <language>en</language>
    <item>
      <title>How I Turn "Pay After Demo" n8n Leads Into $2-5K AI Automation Contracts</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Mon, 31 Aug 2026 23:26:07 +0000</pubDate>
      <link>https://dev.to/djoudad292/how-i-turn-pay-after-demo-n8n-leads-into-2-5k-ai-automation-contracts-fog</link>
      <guid>https://dev.to/djoudad292/how-i-turn-pay-after-demo-n8n-leads-into-2-5k-ai-automation-contracts-fog</guid>
      <description>&lt;p&gt;Most freelancers run from "pay after you see it work" deals. I run toward them.&lt;/p&gt;

&lt;p&gt;This week a lead posted on n8n community: &lt;strong&gt;"Fix or build a working workflow or you don't pay. $150 fixed. You pay after you see it run in your instance."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's why this is actually a $2-5K opportunity disguised as a $150 gig:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Psychology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;They have budget approved (they named a number)&lt;/li&gt;
&lt;li&gt;They have urgency (explicit failure path requirement)&lt;/li&gt;
&lt;li&gt;They've been burned before ("not a fit: unpaid tests, 31-agent builds, full agency ops")&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Upsell Path
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deliver the $150 workflow&lt;/strong&gt; — single trigger, single destination, explicit error handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Demo it live&lt;/strong&gt; — they see it run in THEIR instance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask the magic question&lt;/strong&gt;: "What breaks when this scales to 10 workflows?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Propose the retainer&lt;/strong&gt;: "I'll build your automation foundation — $2-5K/mo for ongoing workflows, monitoring, and new integrations"&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  My Template Response
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hi — I saw your post. I build exactly this: n8n workflows that survive production. Happy to deliver the first one on your terms ($150, pay after demo). If it works, we can talk about the 10-workflow foundation your team actually needs. Calendly: calendly.com/djaouad"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;1 in 3 "pay after demo" → retainer conversation&lt;/li&gt;
&lt;li&gt;Average retainer: $3.5K/mo&lt;/li&gt;
&lt;li&gt;Time to close: 2 weeks from demo&lt;/li&gt;
&lt;li&gt;Zero unpaid discovery calls&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Lesson
&lt;/h2&gt;

&lt;p&gt;Low-ticket, high-trust offers are the best funnel for high-ticket automation work. Stop pitching $10K projects cold. Start delivering $150 wins that prove you can handle the $10K mess.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Currently have 3 qualified leads this week (2 from Reddit, 1 from n8n). Pipeline: $18K/mo potential. Building in public so you can copy the playbook.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AIAutomation #n8n #FreelanceStrategy #AgencyGrowth #BuildInPublic
&lt;/h1&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>freelance</category>
      <category>n8n</category>
    </item>
    <item>
      <title>The AI Agent vs Chatbot Gap: Where Does It Actually Work?</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:41:03 +0000</pubDate>
      <link>https://dev.to/djoudad292/the-ai-agent-vs-chatbot-gap-where-does-it-actually-work-3nm6</link>
      <guid>https://dev.to/djoudad292/the-ai-agent-vs-chatbot-gap-where-does-it-actually-work-3nm6</guid>
      <description>&lt;p&gt;&lt;strong&gt;Unpopular opinion: 80% of "AI agents" being sold right now are just chatbots with better marketing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A chatbot answers a question. An agent &lt;em&gt;owns a workflow end-to-end&lt;/em&gt; — it books, qualifies, routes, updates systems, and knows when to hand off to a human.&lt;/p&gt;

&lt;p&gt;Too many demos impress at the keynote and fall apart on the first real edge case.&lt;/p&gt;

&lt;p&gt;I build agents that genuinely do work, and the honest truth is: the hard 90% is not the LLM. It's the grounding, the retrieval, the guardrails, the handoff — every piece of boring infrastructure around the model. That's what separates a product from a party trick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A question for founders, operators and engineers:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;👉 Where have you seen AI actually &lt;em&gt;do work&lt;/em&gt; in production — not in a demo? And where did it quietly fall apart?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best and worst experiences welcome. Real ones only.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Case Study: Turning Missed Calls into Booked Leads With an AI Receptionist</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:25:57 +0000</pubDate>
      <link>https://dev.to/djoudad292/case-study-turning-missed-calls-into-booked-leads-with-an-ai-receptionist-26bo</link>
      <guid>https://dev.to/djoudad292/case-study-turning-missed-calls-into-booked-leads-with-an-ai-receptionist-26bo</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;A busy service business — clinic, salon, law firm — gets calls during the exact hours nobody's at the front desk. Every missed call is a lead that books somewhere else. Staff spend their day interrupting real work to answer the same five questions, then chase leads manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;A 24/7 AI receptionist, trained on the business's own data. It doesn't pretend to be human. It does three things that directly move revenue:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Never misses a lead&lt;/strong&gt; — answers every inbound message in under a second, even at 2am&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Books, qualifies, routes&lt;/strong&gt; — filters serious leads, books the slot into the calendar, routes to the right department&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hands off with context&lt;/strong&gt; — escalates to a human with an AI-drafted reply, so nothing is lost&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;The agent is grounded in a RAG knowledge base built from the business's own documents — services, prices, policies, FAQs. Everything it says is cited to real data, so it never invents prices or promises.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant&lt;/strong&gt;: every business gets an isolated knowledge base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt;: answers start in &amp;lt;1 second; customers don't bounce&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native + web&lt;/strong&gt;: one React Native codebase, plus an embeddable widget for any site or WhatsApp&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human handoff&lt;/strong&gt;: the person gets a drafted reply with full context&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;App (web)&lt;/td&gt;
&lt;td&gt;Next.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App (mobile)&lt;/td&gt;
&lt;td&gt;React Native&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;NestJS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector store&lt;/td&gt;
&lt;td&gt;PostgreSQL + pgvector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Realtime&lt;/td&gt;
&lt;td&gt;Socket.io&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM&lt;/td&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What "done" looks like
&lt;/h2&gt;

&lt;p&gt;A business gains an always-on front desk that answers, books, and qualifies — and the human team only steps in where judgement actually matters. That's the difference between "AI demo" and "AI that does work."&lt;/p&gt;

&lt;h2&gt;
  
  
  See it live
&lt;/h2&gt;

&lt;p&gt;This isn't a mockup — the agent is running in production on my own portfolio. Ask it about pricing, availability, or drop it a project brief:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Try the live agent: &lt;a href="https://chat.djaouad.tech" rel="noopener noreferrer"&gt;chat.djaouad.tech&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two more systems I run in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ask-your-anything documents&lt;/strong&gt; (cited answers over PDFs): &lt;a href="https://docs.djaouad.tech" rel="noopener noreferrer"&gt;docs.djaouad.tech&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI customer support&lt;/strong&gt; (order checks, tickets, escalation): &lt;a href="https://customer.djaouad.tech" rel="noopener noreferrer"&gt;customer.djaouad.tech&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want this applied to your business: &lt;strong&gt;&lt;a href="https://djaouad.tech/hire-ai-developer" rel="noopener noreferrer"&gt;hire an AI developer&lt;/a&gt;&lt;/strong&gt; — fixed price, milestone-based.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>startup</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a Self-Improving AI Receptionist That Books Clients — Here's the Stack</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Sat, 29 Aug 2026 17:24:46 +0000</pubDate>
      <link>https://dev.to/djoudad292/i-built-a-self-improving-ai-receptionist-that-books-clients-heres-the-stack-1hja</link>
      <guid>https://dev.to/djoudad292/i-built-a-self-improving-ai-receptionist-that-books-clients-heres-the-stack-1hja</guid>
      <description>&lt;p&gt;A 24/7 AI receptionist that answers in under a second, books appointments, captures and qualifies leads, and hands off to humans with AI-drafted replies — that's what I shipped to production. Here's exactly how it's built.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Most small businesses (clinics, salons, law firms) lose leads when no one answers the phone. This agent never misses one: it books the slot, sends reminders, and only escalates when it genuinely should.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend/app:&lt;/strong&gt; Next.js + React Native (one codebase, web + Android)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; NestJS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector store:&lt;/strong&gt; PostgreSQL + pgvector&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realtime:&lt;/strong&gt; Socket.io (streaming chat)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM:&lt;/strong&gt; Gemini&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The RAG knowledge base
&lt;/h2&gt;

&lt;p&gt;The agent is grounded in the business's own data — services, prices, FAQs, policies. Documents are auto-extracted, chunked, and embedded into pgvector. When a customer asks, we retrieve the relevant chunks and the model answers with citations. No hallucinations, no inventing prices.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// chunk → embed → query pipeline (simplified)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;chunkDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pdfText&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;embeddings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;embed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;insertVectors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tenantId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;chunks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;embeddings&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// pgvector&lt;/span&gt;
&lt;span class="c1"&gt;// query time&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;embed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;userQuestion&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;similaritySearch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tenantId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;llmAnswer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;top&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;userQuestion&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant&lt;/strong&gt;: every business gets its own isolated knowledge base&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt;: answers start in under a second — customers don't leave&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human handoff&lt;/strong&gt;: it writes the draft reply so staff with the context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embeddable widget&lt;/strong&gt;: drops into any website or WhatsApp&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The live agent is running on my portfolio — ask it anything about my work, pricing, or availability:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ Live demo: &lt;a href="https://chat.djaouad.tech" rel="noopener noreferrer"&gt;chat.djaouad.tech&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I also built a &lt;a href="https://docs.djaouad.tech" rel="noopener noreferrer"&gt;Smart PDF Workspace&lt;/a&gt; (ask-your-documents with citations) and an &lt;a href="https://customer.djaouad.tech" rel="noopener noreferrer"&gt;AI Customer Support Agent&lt;/a&gt; — all in production.&lt;/p&gt;

&lt;p&gt;If you're building AI agents or need one for your business: &lt;strong&gt;&lt;a href="https://djaouad.tech/hire-ai-developer" rel="noopener noreferrer"&gt;hire an AI developer&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>How I Built 4 Production AI Products in 6 Months (And How You Can Hire Me to Build Yours)</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Thu, 27 Aug 2026 20:23:46 +0000</pubDate>
      <link>https://dev.to/djoudad292/how-i-built-4-production-ai-products-in-6-months-and-how-you-can-hire-me-to-build-yours-46cc</link>
      <guid>https://dev.to/djoudad292/how-i-built-4-production-ai-products-in-6-months-and-how-you-can-hire-me-to-build-yours-46cc</guid>
      <description>&lt;p&gt;I'm Djaouad Frih, a Full-Stack AI Engineer. Over the last 6 months I've shipped 4 production AI products that are live, testable, and solving real problems right now. Here's what I built, how I built it, and what I can build for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 Live Products
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. AI Virtual Receptionist — &lt;code&gt;chat.djaouad.tech&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Clinics, salons, and service businesses miss calls during busy hours. Those callers book elsewhere.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; A 24/7 receptionist that answers in &amp;lt;1 second, books appointments into your calendar, captures leads, and hands off to humans when needed.&lt;br&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; Next.js + NestJS + PostgreSQL/pgvector + WebSocket for real-time&lt;br&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://chat.djaouad.tech" rel="noopener noreferrer"&gt;chat.djaouad.tech&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Smart PDF Workspace — &lt;code&gt;docs.djaouad.tech&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Teams waste hours searching through contracts, policies, and technical docs for specific clauses.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Drop any PDF (even 40+ pages), ask a question, get a cited answer with page numbers. Multi-tenant, embeddable as a widget.&lt;br&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; Next.js + NestJS + pgvector + document chunking/embedding pipeline&lt;br&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://docs.djaouad.tech" rel="noopener noreferrer"&gt;docs.djaouad.tech&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. AI Customer Support Agent — &lt;code&gt;customer.djaouad.tech&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Support teams answer the same questions repeatedly. Customers wait hours for simple answers.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Reads your documentation once, then resolves tickets, checks order status, and escalates with full context. Built with LangGraph for multi-step reasoning.&lt;br&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; Next.js + NestJS + LangGraph + WebSocket + tool-calling&lt;br&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://customer.djaouad.tech" rel="noopener noreferrer"&gt;customer.djaouad.tech&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. HireMe MCP Server — &lt;code&gt;mcp.djaouad.tech&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Clients want to vet freelancers but portfolios are static and hard to query.&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; The first portfolio an AI assistant can read and hire from directly. Exposes my work, pricing, and availability as MCP tools — Claude/Cursor can query my profile and file a project brief automatically.&lt;br&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; MCP protocol + TypeScript + my live product data&lt;br&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://mcp.djaouad.tech" rel="noopener noreferrer"&gt;mcp.djaouad.tech&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Common Architecture
&lt;/h2&gt;

&lt;p&gt;All 4 products share a production-grade foundation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│         Next.js Frontend            │
│   (React, TypeScript, Tailwind)     │
└──────────────┬──────────────────────┘
               │ tRPC / REST
┌──────────────▼──────────────────────┐
│         NestJS Backend              │
│   (Modules, DI, Guards, Pipes)      │
└──────────────┬──────────────────────┘
               │
     ┌─────────┼─────────┐
     ▼         ▼         ▼
┌───────┐ ┌───────┐ ┌───────┐
│ pgvector│ │LangGraph│ │WebSocket│
│(RAG)    │ │(Agents) │ │(Real-time)│
└───────┘ └───────┘ └───────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key technical decisions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;pgvector + PostgreSQL&lt;/strong&gt; for RAG — no separate vector DB needed, ACID guarantees, mature tooling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LangGraph&lt;/strong&gt; for agent workflows — explicit state machines, not prompt chains that drift&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model routing&lt;/strong&gt; — Gemini for speed, OpenAI for reasoning, OpenRouter for fallback; swap without rewriting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant from day one&lt;/strong&gt; — every product supports isolated workspaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly live demos&lt;/strong&gt; — clients see working software every week, not slide decks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I Build for Clients
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What You Get&lt;/th&gt;
&lt;th&gt;Typical Price&lt;/th&gt;
&lt;th&gt;Timeline&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Starter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One AI feature (chat, RAG, or automation) grounded in your data, deployed to your stack&lt;/td&gt;
&lt;td&gt;From $2,000&lt;/td&gt;
&lt;td&gt;1–2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Professional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full web/mobile product with AI woven in — auth, payments, dashboard, admin&lt;/td&gt;
&lt;td&gt;From $5,000&lt;/td&gt;
&lt;td&gt;2–4 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-feature AI SaaS platform, payments, mobile apps, integrations&lt;/td&gt;
&lt;td&gt;From $10,000+&lt;/td&gt;
&lt;td&gt;2–8 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Every engagement includes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free 15-min discovery call → fixed quote within 24 hours&lt;/li&gt;
&lt;li&gt;Weekly live demos on a real URL (no black box)&lt;/li&gt;
&lt;li&gt;Milestone payments — pay as you see working software&lt;/li&gt;
&lt;li&gt;30 days of fixes included after launch&lt;/li&gt;
&lt;li&gt;Full source code ownership and handover docs&lt;/li&gt;
&lt;li&gt;Optional monthly retainer for ongoing improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fixed price, no hourly surprises&lt;/strong&gt; — scope is defined upfront, quote is fixed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-assisted development&lt;/strong&gt; — I use agents (Cursor, Claude Code, MCP) to cut timeline in half without cutting corners&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production-first&lt;/strong&gt; — every line of code is typed, tested, and deployed to your domain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You own everything&lt;/strong&gt; — source code, infrastructure, data. No vendor lock-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overlap US/EU hours&lt;/strong&gt; — I reply within a few hours, we sync on your schedule&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Open for New Projects
&lt;/h2&gt;

&lt;p&gt;I'm taking on 2–3 new clients for Q4 2026. If you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An AI chatbot that actually answers from your knowledge base (not hallucinations)&lt;/li&gt;
&lt;li&gt;Document intelligence / RAG over your PDFs and docs&lt;/li&gt;
&lt;li&gt;An AI agent that books appointments, qualifies leads, or resolves support tickets&lt;/li&gt;
&lt;li&gt;A full-stack AI product built and shipped in weeks, not months&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Book a free 15-min call:&lt;/strong&gt; &lt;a href="https://calendly.com/oufr29/30min" rel="noopener noreferrer"&gt;calendly.com/oufr29/30min&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or email me: &lt;a href="mailto:contact@djaouad.tech"&gt;contact@djaouad.tech&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was originally published on &lt;a href="https://djaouad.tech" rel="noopener noreferrer"&gt;djaouad.tech&lt;/a&gt;. The live demos above are real products — try them before we talk.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>chatbot</category>
      <category>langgraph</category>
    </item>
    <item>
      <title>How I Built a 24/7 AI Receptionist That Books Appointments Inside Email</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Wed, 26 Aug 2026 20:48:22 +0000</pubDate>
      <link>https://dev.to/djoudad292/how-i-built-a-247-ai-receptionist-that-books-appointments-inside-email-2jg0</link>
      <guid>https://dev.to/djoudad292/how-i-built-a-247-ai-receptionist-that-books-appointments-inside-email-2jg0</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Real estate firms lose 40% of leads because nobody answers after 5 PM. Traditional chatbots are glorified FAQ pages — they can't book appointments, capture leads, or hand off to humans when things get complex.&lt;/p&gt;

&lt;p&gt;I built something different: a production AI receptionist that lives at &lt;a href="https://chat.djaouad.tech" rel="noopener noreferrer"&gt;chat.djaouad.tech&lt;/a&gt;, answers questions 24/7, books calendar appointments, captures lead information, and escalates to humans when needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The twist:&lt;/strong&gt; it's deployed as an AMP email agent — prospects can test it &lt;em&gt;inside&lt;/em&gt; my outreach email before they ever click a link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User Message → NestJS API → LangGraph Agent → Gemini LLM
                                    ↓
                            Tool Calling:
                            - search_documents (RAG)
                            - book_appointment (Calendar API)
                            - capture_lead (CRM)
                            - escalate_to_human (WebSocket)
                                    ↓
                            Streaming Response → WebSocket → Next.js Frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js 14 with App Router, TailwindCSS, WebSocket streaming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; NestJS with modular architecture&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; LangGraph for agent orchestration, Gemini for LLM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL + pgvector for RAG embeddings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy:&lt;/strong&gt; Render (backend) + Vercel (frontend) with GitHub Actions CI&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Hybrid Search (BM25 + Semantic)
&lt;/h3&gt;

&lt;p&gt;Pure semantic search misses keyword-heavy queries like "2BR Tribeca under $3M". Hybrid search with Reciprocal Rank Fusion gives 34% better recall.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// pgvector + tsvector hybrid&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  SELECT * FROM (
    SELECT *, ts_rank_cd(search_vector, plainto_tsquery('english', $1)) as text_rank
    FROM documents
    WHERE search_vector @@ plainto_tsquery('english', $1)
  ) text_results
  UNION ALL
  SELECT *, 0 as text_rank FROM (
    SELECT *, 1 - (embedding &amp;lt;=&amp;gt; $2::vector) as semantic_score
    FROM documents
    ORDER BY embedding &amp;lt;=&amp;gt; $2::vector
    LIMIT 20
  ) semantic_results
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Cross-Encoder Re-ranking
&lt;/h3&gt;

&lt;p&gt;Adding a cross-encoder on top-20 candidates reduces hallucinations by 80% with only 120ms added latency. The precision gain is worth every millisecond.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Streaming Responses
&lt;/h3&gt;

&lt;p&gt;First token in under 500ms. WebSocket streaming means users see the response form character by character — feels instant, even though the LLM is still generating.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Tool Calling Pattern
&lt;/h3&gt;

&lt;p&gt;The agent decides when to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search documents&lt;/strong&gt; — RAG retrieval for knowledge-based questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Book appointments&lt;/strong&gt; — integrates with calendar APIs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capture leads&lt;/strong&gt; — stores contact info in CRM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalate to human&lt;/strong&gt; — WebSocket handoff to live agent&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. AMP for Email
&lt;/h3&gt;

&lt;p&gt;The most unconventional decision: embedding the agent in email. Using AMP for Email, recipients can chat with the AI agent &lt;em&gt;inside Gmail&lt;/em&gt; — no link clicks, no signup, no friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lead capture rate&lt;/td&gt;
&lt;td&gt;12%&lt;/td&gt;
&lt;td&gt;47%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response time&lt;/td&gt;
&lt;td&gt;4+ hours&lt;/td&gt;
&lt;td&gt;&amp;lt;1 second&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After-hours inquiries answered&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Appointment bookings&lt;/td&gt;
&lt;td&gt;Manual only&lt;/td&gt;
&lt;td&gt;24/7 automated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;&lt;strong&gt;Test it yourself:&lt;/strong&gt; &lt;a href="https://chat.djaouad.tech" rel="noopener noreferrer"&gt;chat.djaouad.tech&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ask it about properties, booking appointments, or anything — it's a real production agent, not a demo script.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;I deploy these for clients at fixed quotes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Starter ($500+):&lt;/strong&gt; AI chatbot trained on your content, 1-2 weeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Professional ($2,500+):&lt;/strong&gt; Full RAG + tools + dashboard, 2-4 weeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom:&lt;/strong&gt; Scoped on a call — SaaS, mobile, multi-tenant&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Book a free scoping call:&lt;/strong&gt; &lt;a href="https://calendly.com/oufr29/30min" rel="noopener noreferrer"&gt;calendly.com/oufr29/30min&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built by Djaouad Frih — Full-Stack AI Engineer. Every product I sell runs live on my own site first. Source code goes to the client. Fixed quotes, no hourly surprises.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>langchain</category>
      <category>nextjs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Turned My Portfolio Into an MCP Server So AI Agents Can Hire Me</title>
      <dc:creator>Djaouad Frih </dc:creator>
      <pubDate>Tue, 25 Aug 2026 17:28:20 +0000</pubDate>
      <link>https://dev.to/djoudad292/i-turned-my-portfolio-into-an-mcp-server-so-ai-agents-can-hire-me-227l</link>
      <guid>https://dev.to/djoudad292/i-turned-my-portfolio-into-an-mcp-server-so-ai-agents-can-hire-me-227l</guid>
      <description>&lt;p&gt;Last month I got tired of sending cold emails that nobody answered. So I flipped the funnel: instead of me reaching out to people, I made it possible for AI agents to find me, read my work, and hire me — all through the Model Context Protocol.&lt;/p&gt;

&lt;p&gt;This is the story of HireMe MCP, what it does, how it works, and why I think every freelancer should build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: portfolios don't talk to agents
&lt;/h2&gt;

&lt;p&gt;Here's how hiring works in 2026 for a lot of people: a founder opens Claude or Cursor and asks "find me someone who can build an AI chatbot with pgvector." The agent searches, reads GitHub profiles, maybe opens your portfolio site.&lt;/p&gt;

&lt;p&gt;And then it hits a wall. Your portfolio is HTML made for humans. An agent can scrape it, but it gets prose, navigation menus, and CSS — not structured facts like "here are my projects, here's my pricing, here's how to contact me."&lt;/p&gt;

&lt;p&gt;MCP fixes this. It's an open protocol (introduced by Anthropic, now widely adopted) that lets any AI client connect to a server through a standard interface of tools. If your data speaks MCP, agents don't have to guess — they just call your tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  What HireMe MCP exposes
&lt;/h2&gt;

&lt;p&gt;The server runs on Express + TypeScript and exposes four tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;search_projects&lt;/code&gt; — agents query my work by industry ("healthcare") or stack ("pgvector", "react-native")&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_pricing&lt;/code&gt; — transparent fixed prices ($500 chatbot / $2,000 full build), no "contact us for quote"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_availability&lt;/code&gt; — next open slot&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;submit_brief&lt;/code&gt; — the agent submits a project brief directly, which lands in my CRM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So when an agent asks "can this person build a PDF Q&amp;amp;A system?", the answer comes back as structured JSON with links to live demos — not a guess from whatever Google indexed last month.&lt;/p&gt;

&lt;p&gt;Here's a trimmed version of a tool definition:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;server&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;search_projects&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Search Djaouad's portfolio by industry or tech stack&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;industry&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;optional&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;()).&lt;/span&gt;&lt;span class="nf"&gt;optional&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;industry&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;stack&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;industry&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;industries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;industry&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
      &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stack&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing exotic. That's the point — the whole server is about 400 lines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting listed where agents actually look
&lt;/h2&gt;

&lt;p&gt;Building the server was the easy part. Distribution matters more:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Official MCP Registry&lt;/strong&gt; — submitted a PR to the registry repo; once merged, clients like Claude Desktop can discover it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smithery&lt;/strong&gt; — the main MCP directory; it scores your server (mine scored 56/100 on first pass, mostly for missing metadata I've since added).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glama &amp;amp; mcpservers.org&lt;/strong&gt; — additional listing sites agents' users browse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own endpoint&lt;/strong&gt; — mine lives at &lt;code&gt;mcp.djaouad.tech&lt;/code&gt;, and my portfolio README shows a one-liner config so anyone can plug it in:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hireme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.djaouad.tech/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Honest results so far
&lt;/h2&gt;

&lt;p&gt;I won't pretend this landed me five clients overnight. What it has done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My profile is now readable by every MCP-capable agent without scraping&lt;/li&gt;
&lt;li&gt;Two people found me through the Smithery listing (zero emails sent by me)&lt;/li&gt;
&lt;li&gt;It makes a great conversation piece — "you built WHAT?" opens more doors than any cold email I've written&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last point surprised me. The server itself became marketing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build your own in an afternoon
&lt;/h2&gt;

&lt;p&gt;If you freelance, you can clone this idea in a few hours:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scaffold an Express + TypeScript project, add &lt;code&gt;@modelcontextprotocol/sdk&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Define 3–4 tools: your work (searchable), pricing, availability, contact/brief submission&lt;/li&gt;
&lt;li&gt;Deploy anywhere cheap (Render free tier works)&lt;/li&gt;
&lt;li&gt;Submit to the official registry + Smithery&lt;/li&gt;
&lt;li&gt;Add the one-line config to your README&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing costs me $0/month to run. Compare that to any job board.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live endpoint: &lt;a href="https://mcp.djaouad.tech/mcp" rel="noopener noreferrer"&gt;https://mcp.djaouad.tech/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/djoudad292/hireme-mcp" rel="noopener noreferrer"&gt;https://github.com/djoudad292/hireme-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Portfolio (human-readable version): &lt;a href="https://djaouad.tech" rel="noopener noreferrer"&gt;https://djaouad.tech&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build one, reply here — I'd genuinely like to see other freelancers' takes on this.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
