{
  "name": "Builder Weekly Tutorials",
  "license": "CC BY 4.0",
  "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
  "url": "https://thebuilderweekly.com/tutorials",
  "repository": "https://github.com/thebuilderweekly/ai-building-tutorials",
  "lastUpdated": "2026-06-11T16:09:43.182Z",
  "totalEntries": 27,
  "pillars": [
    {
      "id": "accountability",
      "label": "Accountability",
      "description": "Proving agent work actually happened. Scheduling, verifying, and auditing agent outputs so you know the work was done, not just claimed.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/accountability",
      "entryCount": 3
    },
    {
      "id": "memory",
      "label": "Memory",
      "description": "Persistent state across sessions. Writing, retrieving, and scoping agent memory so the agent gets better with every interaction.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/memory",
      "entryCount": 3
    },
    {
      "id": "visibility",
      "label": "Visibility",
      "description": "Making agent-built sites visible to crawlers. Exposing content so AI crawlers and retrieval systems can actually read it.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/visibility",
      "entryCount": 2
    },
    {
      "id": "agent-teams",
      "label": "Agent Teams",
      "description": "Running coordinated multi-agent systems. Composing specialized agents into a workflow with typed handoffs that survive production.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/agent-teams",
      "entryCount": 5
    },
    {
      "id": "scoping",
      "label": "Scoping",
      "description": "Killing bad ideas before building. Using agents to critique, stress-test, and triage ideas so you do not ship the wrong thing.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/scoping",
      "entryCount": 3
    },
    {
      "id": "operational",
      "label": "Operational",
      "description": "Task-specific entries that do not fit a single pillar. Competitor pricing watch, issue triage, RSS filtering, and other one-shot utilities.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/operational",
      "entryCount": 4
    },
    {
      "id": "payments",
      "label": "Payments",
      "description": "Patterns for agents handling money. Charges, subscriptions, refunds, payouts. Idempotency, webhook verification, and the failure modes that matter when dollars are at stake.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/payments",
      "entryCount": 2
    },
    {
      "id": "foundations",
      "label": "Foundations",
      "description": "What every production agent needs underneath it. Observability, budget enforcement, retry logic, error handling, the stack you would otherwise reinvent for every project.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/foundations",
      "entryCount": 3
    },
    {
      "id": "communication",
      "label": "Communication",
      "description": "Patterns for agents that interact with humans through messages. Email, chat, notifications. Reading inboxes, drafting responses, gating sends through human approval.",
      "url": "https://thebuilderweekly.com/tutorials/pillars/communication",
      "entryCount": 2
    }
  ],
  "entries": [
    {
      "id": "drift-detection-between-systems",
      "title": "Catch drift between two systems of record before it becomes a bug",
      "slug": "drift-detection-between-systems",
      "pillar": "accountability",
      "clusterTags": [
        "drift-detection",
        "reconciliation",
        "consistency"
      ],
      "soulLine": "An agent reconciles two systems of record on every write with zero fatigue, catching silent divergence within a minute, where a human running a quarterly reconciliation script finds the same drift weeks after it happened.",
      "beforeState": "Your billing system and your CRM drift out of sync. You find out during a quarterly audit and spend a week untangling which source was right.",
      "afterState": "An agent compares both systems on every significant write, surfaces mismatches within a minute, and logs the drift event with both sides' state captured.",
      "tools": [
        "cueapi",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/drift-detection-between-systems",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/drift-detection-between-systems",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-27",
      "lastVerifiedAt": "2026-05-27",
      "freshnessWindowDays": 90
    },
    {
      "id": "adversarial-scoping",
      "title": "Kill a bad product idea before you spend a week building it",
      "slug": "adversarial-scoping",
      "pillar": "scoping",
      "clusterTags": [
        "scoping",
        "adversarial-prompts",
        "prd-review"
      ],
      "soulLine": "An agent runs six adversarial critique passes in two minutes and surfaces objections a solo founder never asks themselves, where a human review panel takes three days to assemble and half the panel will be polite.",
      "beforeState": "You have a PRD you're excited about. You start building. Four days in you realize it solves the wrong problem.",
      "afterState": "Before you write any code, an agent runs six adversarial critiques against the PRD and surfaces the three objections that would have killed the idea on day four.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/adversarial-scoping",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/adversarial-scoping",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-27",
      "lastVerifiedAt": "2026-05-27",
      "freshnessWindowDays": 90
    },
    {
      "id": "github-issue-triage",
      "title": "Triage a GitHub issue backlog overnight",
      "slug": "github-issue-triage",
      "pillar": "operational",
      "clusterTags": [
        "github-api",
        "classification",
        "backlog"
      ],
      "soulLine": "An agent reads, classifies, and labels a thousand issues per hour with deterministic rules, which a human maintainer gets through maybe thirty before burning out.",
      "beforeState": "Your open-source repo has four hundred stale issues, no labels, and no routing. New contributors bounce off the chaos.",
      "afterState": "Every issue has an accurate label, a priority, and a next-action, applied by an agent that ran once against the backlog and then once per new issue.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/github-issue-triage",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/github-issue-triage",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-20",
      "lastVerifiedAt": "2026-05-20",
      "freshnessWindowDays": 90
    },
    {
      "id": "voice-note-to-tasks",
      "title": "Turn a voice note into structured tasks in 30 seconds",
      "slug": "voice-note-to-tasks",
      "pillar": "operational",
      "clusterTags": [
        "transcription",
        "task-extraction",
        "deepgram"
      ],
      "soulLine": "An agent processes audio at 40x real-time speed with consistent extraction recall, which a human transcriber cannot match without multiple listens.",
      "beforeState": "You listen to a 20-minute meeting recording and manually write down action items, missing half of them.",
      "afterState": "The agent extracts structured tasks with owners, deadlines, and priorities in 30 seconds with near-complete recall.",
      "tools": [
        "deepgram",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/voice-note-to-tasks",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/voice-note-to-tasks",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-20",
      "lastVerifiedAt": "2026-05-20",
      "freshnessWindowDays": 90
    },
    {
      "id": "retrieval-with-metadata-filters",
      "title": "Retrieve from a vector store with metadata filters and get the right chunk",
      "slug": "retrieval-with-metadata-filters",
      "pillar": "memory",
      "clusterTags": [
        "retrieval",
        "vector-stores",
        "metadata-filters"
      ],
      "soulLine": "An agent combining semantic search with metadata filters reaches into ten million chunks and returns the right one in under a hundred milliseconds, which a human searching a SQL database by hand cannot come close to matching.",
      "beforeState": "Your agent's retrieval returns ten loosely relevant chunks because pure semantic search can't tell which belong to which user or which date range.",
      "afterState": "The same retrieval with metadata filters returns one chunk, it is the right one, and the latency is identical.",
      "tools": [
        "qdrant",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/retrieval-with-metadata-filters",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/retrieval-with-metadata-filters",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-06",
      "lastVerifiedAt": "2026-05-06",
      "freshnessWindowDays": 90
    },
    {
      "id": "message-bus-between-agents",
      "title": "Wire agents together with a message bus instead of function calls",
      "slug": "message-bus-between-agents",
      "pillar": "agent-teams",
      "clusterTags": [
        "message-bus",
        "coordination",
        "async",
        "inngest"
      ],
      "soulLine": "A message-bus-coordinated agent system handles stage failures, retries, and back-pressure correctly on every single run, where a human wiring the same coordination by hand would cut corners on the retry logic and regret it in production.",
      "beforeState": "Your agents talk to each other through nested function calls. One stage's failure cascades through the stack and you lose state.",
      "afterState": "Every agent publishes its output to a bus, every consumer subscribes to what it needs, and failures in one agent don't corrupt state in another.",
      "tools": [
        "inngest",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/message-bus-between-agents",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/message-bus-between-agents",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-05-06",
      "lastVerifiedAt": "2026-05-06",
      "freshnessWindowDays": 90
    },
    {
      "id": "role-specific-system-prompts",
      "title": "Author role-specific system prompts that actually change behavior",
      "slug": "role-specific-system-prompts",
      "pillar": "agent-teams",
      "clusterTags": [
        "system-prompts",
        "roles",
        "agent-specialization"
      ],
      "soulLine": "An agent with a well-scoped role-specific system prompt produces deterministically specialized output on every call, where a human generalist switching between roles loses context and degrades over the day.",
      "beforeState": "You have one generic agent handling researcher, writer, and editor roles, and the output reads like all three are fighting for the keyboard.",
      "afterState": "Three role-specific agents each produce their specialized output, the composition is clean, and changing any one prompt doesn't corrupt the others.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/role-specific-system-prompts",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/role-specific-system-prompts",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-29",
      "lastVerifiedAt": "2026-04-29",
      "freshnessWindowDays": 90
    },
    {
      "id": "roster-of-four-agents",
      "title": "Run a roster of four agents in a single workflow without the wheels coming off",
      "slug": "roster-of-four-agents",
      "pillar": "agent-teams",
      "clusterTags": [
        "multi-agent",
        "orchestration",
        "workflow"
      ],
      "soulLine": "An agent team with well-defined handoffs produces the same multi-step result end-to-end in one minute that a four-person human team takes a full meeting to coordinate, and the agent team doesn't need a meeting.",
      "beforeState": "You tried to chain four agents together and the output of each one contaminated the input of the next until the final agent produced garbage.",
      "afterState": "Four agents run in a defined sequence with typed handoffs, each stage produces verifiable intermediate output, and you can inspect any stage independently if the final result looks wrong.",
      "tools": [
        "anthropic-api",
        "inngest"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/roster-of-four-agents",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/roster-of-four-agents",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-29",
      "lastVerifiedAt": "2026-04-29",
      "freshnessWindowDays": 90
    },
    {
      "id": "research-agent-team",
      "title": "Build a research agent team where one agent finds, one verifies, one summarizes",
      "slug": "research-agent-team",
      "pillar": "agent-teams",
      "clusterTags": [
        "anthropic-api",
        "specialization",
        "typed-handoffs"
      ],
      "soulLine": "Three specialized agents working in sequence produce verified research in five minutes; one generalist agent doing all three jobs takes twenty minutes and produces ungrounded claims.",
      "beforeState": "You ask one agent to research a topic and it returns a confident summary mixing real facts, half-remembered training data, and outright fabrications, with no way to tell which is which.",
      "afterState": "Three specialized agents run in sequence. The Researcher fetches primary sources. The Verifier checks every claim against those sources. The Summarizer writes only what survived verification.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/research-agent-team",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/research-agent-team",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "tool-allowlist-per-task",
      "title": "Constrain agent tool access with per-task allowlists",
      "slug": "tool-allowlist-per-task",
      "pillar": "scoping",
      "clusterTags": [
        "anthropic-api",
        "tools",
        "constraints"
      ],
      "soulLine": "An agent with fifty tools available picks the wrong one twelve percent of the time; an agent with five tools scoped to its current task picks correctly ninety-nine percent of the time.",
      "beforeState": "Your agent has access to every tool in your codebase. When asked to send an email, it sometimes calls the database directly. When asked to read data, it sometimes attempts to write. The error rate climbs as the tool surface grows.",
      "afterState": "Each task type declares which tools it is allowed to use. The agent loads only those tools at runtime. Tool selection errors drop to near zero because the wrong tool is not in the menu.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/tool-allowlist-per-task",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/tool-allowlist-per-task",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "schema-validated-output",
      "title": "Force structured agent output with JSON schema validation and retry",
      "slug": "schema-validated-output",
      "pillar": "scoping",
      "clusterTags": [
        "anthropic-api",
        "json-schema",
        "validation"
      ],
      "soulLine": "An agent with strict schema validation retries until it produces valid output, which a human reviewing free-form output would catch by reading every response and re-prompting manually.",
      "beforeState": "Your agent returns prose when you need structured data. You add a JSON parser. The parser fails twenty percent of the time on missing fields, extra commas, or hallucinated keys.",
      "afterState": "Every agent response is validated against a JSON schema. Invalid responses trigger an automatic retry with the schema and the validation error appended to the prompt. The agent converges to valid output every time.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/schema-validated-output",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/schema-validated-output",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "dynamic-og-images",
      "title": "Generate dynamic OG images so your content gets clicked when shared",
      "slug": "dynamic-og-images",
      "pillar": "visibility",
      "clusterTags": [
        "nextjs",
        "vercel-og",
        "social"
      ],
      "soulLine": "An agent generates a unique OG image per page in milliseconds, which a human designing them by hand would need a graphic design tool and an hour per piece.",
      "beforeState": "Every link your site shares on Twitter, LinkedIn, or Slack uses the same generic site logo. Click-through rates from social are flat. You know good cards drive clicks but you do not have time to design one per post.",
      "afterState": "Every page on your site has a unique, branded OG image generated at build time. The cards include the page title, content type, and date. Social click-through rates climb because each share looks specific and intentional.",
      "tools": [
        "nextjs",
        "vercel-og"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/dynamic-og-images",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/dynamic-og-images",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "metered-billing-agent",
      "title": "Meter agent usage and bill customers in real-time without manual reconciliation",
      "slug": "metered-billing-agent",
      "pillar": "payments",
      "clusterTags": [
        "stripe",
        "metered-billing",
        "usage-tracking"
      ],
      "soulLine": "An agent meters a thousand customer API calls per second with sub-cent precision, which a manual usage report at month-end gets wrong by five to fifteen percent and creates billing disputes that erode trust.",
      "beforeState": "You charge customers a flat monthly fee but their usage varies wildly. Heavy users pay too little and you lose money. Light users pay too much and they churn. You know metered billing fixes this but the reconciliation logic terrifies you.",
      "afterState": "Every customer action emits a usage event that streams to Stripe in real-time. At the end of each billing period, Stripe generates an accurate invoice with no manual reconciliation. Heavy users pay for what they use. Light users stay because they pay only for what they need.",
      "tools": [
        "stripe",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/metered-billing-agent",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/metered-billing-agent",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "intent-routing-agent-team",
      "title": "Route customer queries to specialized agents based on intent classification",
      "slug": "intent-routing-agent-team",
      "pillar": "agent-teams",
      "clusterTags": [
        "anthropic-api",
        "routing",
        "specialization"
      ],
      "soulLine": "A router that dispatches to five specialists handles a thousand customer queries per hour with consistent expertise per category, which a single generalist agent handles slower and worse.",
      "beforeState": "Your support agent answers every kind of question with the same generalist tone. Billing questions get vague refund policies. Technical questions get product marketing. Customers escalate to humans for clarity.",
      "afterState": "A router classifies every incoming query and dispatches it to a specialist agent with the right tools, knowledge scope, and tone. Billing questions get billing-trained responses. Technical questions get debugging-trained responses.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/intent-routing-agent-team",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/intent-routing-agent-team",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "context-aware-slack-notifications",
      "title": "Send context-aware Slack notifications that get noticed instead of muted",
      "slug": "context-aware-slack-notifications",
      "pillar": "communication",
      "clusterTags": [
        "slack-api",
        "anthropic-api",
        "notifications"
      ],
      "soulLine": "An agent that calibrates notification urgency per event reaches the right person at the right time with eighty percent lower mute rate than a fixed-rule notification system.",
      "beforeState": "Your monitoring system posts every event to a Slack channel. The channel fires fifty times a day. Your team muted it three weeks ago. Now critical alerts go unread.",
      "afterState": "An agent classifies each event by severity, audience, and timeliness. Critical events DM the on-call engineer. Medium events post to a channel. Low events batch into an hourly digest. Mute rates collapse.",
      "tools": [
        "slack-api",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/context-aware-slack-notifications",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/context-aware-slack-notifications",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-14",
      "lastVerifiedAt": "2026-04-14",
      "freshnessWindowDays": 90
    },
    {
      "id": "agent-email-triage",
      "title": "Build an AI agent that triages your inbox without sending anything embarrassing",
      "slug": "agent-email-triage",
      "pillar": "communication",
      "clusterTags": [
        "gmail",
        "classification",
        "human-approval"
      ],
      "soulLine": "A human triages 200 emails in 90 minutes with declining accuracy as fatigue sets in; an agent triages 200 emails in 30 seconds with consistent classification and gates every send through human review.",
      "beforeState": "Your inbox has 247 unread emails. You spend an hour every morning sorting them and still miss the important ones because they got buried under newsletters and sales pitches.",
      "afterState": "The agent reads new mail every 15 minutes, classifies each by importance and topic, drafts responses to the high-priority ones, and presents them in a daily review queue you approve before anything sends.",
      "tools": [
        "gmail",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/agent-email-triage",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/agent-email-triage",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "multi-step-workflows-with-approval",
      "title": "Build multi-step AI agent workflows with human approval at the right moments",
      "slug": "multi-step-workflows-with-approval",
      "pillar": "foundations",
      "clusterTags": [
        "orchestration",
        "human-in-the-loop",
        "state-machines"
      ],
      "soulLine": "An autonomous agent doing a 10-step task fully autonomously will eventually take a wrong path costing real money or trust; a state-machine agent with approval gates at the right steps gets the same speed with bounded risk.",
      "beforeState": "Your agent runs a 10-step workflow end-to-end. Step 7 makes a wrong call. You don't notice until step 10 produces something embarrassing or expensive.",
      "afterState": "The workflow pauses at the steps where a wrong call would be costly, presents its decision to you for approval, and only proceeds after you confirm or correct.",
      "tools": [
        "cueapi",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/multi-step-workflows-with-approval",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/multi-step-workflows-with-approval",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "agent-image-generation",
      "title": "Generate images from your AI agent without burning a hundred dollars on bad outputs",
      "slug": "agent-image-generation",
      "pillar": "operational",
      "clusterTags": [
        "replicate",
        "image-generation",
        "async"
      ],
      "soulLine": "A naive image generation agent produces 100 mediocre images at $5 total cost; a properly-prompted agent with output verification produces 10 great images at the same cost.",
      "beforeState": "Your agent generates images for every blog post but most of them are bad. You're paying for hundreds of generations to get a few usable results.",
      "afterState": "The agent uses a structured prompt template, generates with controlled variations, runs each output through a quick quality check, and only keeps results that pass.",
      "tools": [
        "replicate",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/agent-image-generation",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/agent-image-generation",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "agent-payment-processing",
      "title": "Process payments from your AI agent without losing money to retries",
      "slug": "agent-payment-processing",
      "pillar": "payments",
      "clusterTags": [
        "stripe",
        "idempotency",
        "webhooks"
      ],
      "soulLine": "An agent retrying a charge without idempotency keys has charged the same customer 47 times before a human noticed; with proper idempotency the same agent can safely retry indefinitely.",
      "beforeState": "Your agent triggers a charge, gets a network timeout, retries, and now your customer is charged twice. You discover this through a chargeback notice three days later.",
      "afterState": "The agent retries any failed charge as many times as it wants, with idempotency keys ensuring each logical payment results in exactly one actual charge regardless of network conditions.",
      "tools": [
        "stripe",
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/agent-payment-processing",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/agent-payment-processing",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "scoped-memory-per-user",
      "title": "Scope agent memory per user without leaking across sessions",
      "slug": "scoped-memory-per-user",
      "pillar": "memory",
      "clusterTags": [
        "mem0",
        "isolation",
        "multi-tenant"
      ],
      "soulLine": "An agent can index and retrieve against millions of per-user memory stores in parallel, which a human operating the same product would need a team and a custom dashboard to match.",
      "beforeState": "Your agent's memory is a single global store and one user's context bleeds into another user's responses.",
      "afterState": "Every memory write is namespaced to a user id, and retrieval only sees the requesting user's own history.",
      "tools": [
        "mem0"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/scoped-memory-per-user",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/scoped-memory-per-user",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "llms-txt-as-contract",
      "title": "Ship an llms.txt that tells agents what your site is",
      "slug": "llms-txt-as-contract",
      "pillar": "visibility",
      "clusterTags": [
        "llms-txt",
        "crawlers",
        "agent-readable"
      ],
      "soulLine": "An agent that reads a well-structured llms.txt picks up your entire corpus in one pass, which a human writing documentation by hand would take months to make this legible.",
      "beforeState": "An AI crawler visiting your site sees hundreds of pages with no hint about which ones matter or how they relate.",
      "afterState": "The crawler reads llms.txt, gets a guided tour of your corpus, and indexes the pages that matter in the order you chose.",
      "tools": [],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/llms-txt-as-contract",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/llms-txt-as-contract",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "token-budget-enforcement",
      "title": "Stop your AI agent from running up a thousand-dollar bill overnight",
      "slug": "token-budget-enforcement",
      "pillar": "foundations",
      "clusterTags": [
        "budgets",
        "rate-limiting",
        "cost-control"
      ],
      "soulLine": "An agent looping on a malformed input can burn through a month's API budget in 20 minutes; a budget-enforced agent stops itself before the bill arrives.",
      "beforeState": "Your agent hits an edge case that puts it in a retry loop. By morning you have a thousand-dollar Anthropic invoice and an angry email from your CFO.",
      "afterState": "The agent tracks cumulative spend per session and per day, throttles when approaching limits, switches to cheaper models when over thresholds, and stops entirely before damaging your bill.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/token-budget-enforcement",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/token-budget-enforcement",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "agent-observability-stack",
      "title": "The observability stack every production AI agent needs",
      "slug": "agent-observability-stack",
      "pillar": "foundations",
      "clusterTags": [
        "logging",
        "tracing",
        "metrics",
        "debugging"
      ],
      "soulLine": "An agent without observability is a black box; an agent with structured logs, traces, and per-step latency metrics tells you exactly where it failed and why, before the user noticed.",
      "beforeState": "Your agent failed last night and you have no idea where in its 12-step workflow it broke. You're rerunning it manually with print statements to find out.",
      "afterState": "The agent emits structured events at every step. You query the trace, see the exact failure, and ship a fix in minutes instead of hours.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/agent-observability-stack",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/agent-observability-stack",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "daily-cron-verification",
      "title": "Verify every scheduled job actually ran",
      "slug": "daily-cron-verification",
      "pillar": "accountability",
      "clusterTags": [
        "cueapi",
        "cron",
        "job-verification"
      ],
      "soulLine": "An agent can check a hundred cron outcomes per second against expected state, which a human doing daily ops review does in thirty minutes and misses silently.",
      "beforeState": "You have ten cron jobs, each firing daily. When one fails silently you notice a week later when a customer emails.",
      "afterState": "An agent reads every cron run's outcome, compares it to expected state, and surfaces the failures within seconds of the scheduled fire time.",
      "tools": [
        "cueapi"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/daily-cron-verification",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/daily-cron-verification",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-12",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "accountability-loop",
      "title": "Build an accountability loop for your AI agent",
      "slug": "accountability-loop",
      "pillar": "accountability",
      "clusterTags": [
        "cueapi",
        "verification",
        "outcome-tracking"
      ],
      "soulLine": "An agent can verify its own work at machine speed across hundreds of tasks simultaneously, which no human can do without a dashboard and hours of spot-checking.",
      "beforeState": "Your agent says it sent the email but you have no proof it actually did.",
      "afterState": "CueAPI has timestamped evidence the email was delivered, with the delivery receipt as the external_id.",
      "tools": [
        "cueapi"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/accountability-loop",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/accountability-loop",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-11",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "rss-daily-brief",
      "title": "Filter a hundred RSS feeds into a daily brief worth reading",
      "slug": "rss-daily-brief",
      "pillar": "operational",
      "clusterTags": [
        "rss",
        "filtering",
        "briefs"
      ],
      "soulLine": "An agent applies a consistent editorial filter to thousands of items per day, which a human trying to maintain the same signal-to-noise ratio would spend two hours on and still miss things.",
      "beforeState": "You have a hundred RSS feeds producing five hundred items a day. Reading them takes two hours. You stop reading them.",
      "afterState": "Every morning the agent delivers fifteen items that match your editorial criteria, ranked by predicted signal strength.",
      "tools": [
        "anthropic-api"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/rss-daily-brief",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/rss-daily-brief",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-11",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    },
    {
      "id": "persistent-memory-mem0",
      "title": "Give your agent memory that survives a restart",
      "slug": "persistent-memory-mem0",
      "pillar": "memory",
      "clusterTags": [
        "mem0",
        "persistence",
        "context-retrieval"
      ],
      "soulLine": "An agent with persistent memory improves its responses over time without retraining, which a human doing the same job would need a notebook and perfect recall to match.",
      "beforeState": "Your agent forgets everything when the session ends and starts every conversation from zero.",
      "afterState": "The agent retrieves relevant context from previous sessions before responding, getting better with every interaction.",
      "tools": [
        "mem0"
      ],
      "status": "published",
      "url": "https://thebuilderweekly.com/tutorials/persistent-memory-mem0",
      "githubUrl": "https://github.com/thebuilderweekly/ai-building-tutorials/tree/main/entries/persistent-memory-mem0",
      "author": "tbw-ai",
      "contributors": [],
      "publishedAt": "2026-04-11",
      "lastVerifiedAt": "2026-04-12",
      "freshnessWindowDays": 90
    }
  ]
}