Experiment 1: AI Directory Maker

Read about my first AI agent team experiment for the ProfitSwarm challenge

The first experiment I’m making for this challenge is to make a team of AI Agents to invent, build, and market a web directory (AI Directory Maker).

New here? Welcome! This is the journey of building a 100% automated AI business in 2025. You’re jumping in after we’ve already kicked things off, so you might want to catch up first.

Check out these key posts to get the full story—and don’t forget to subscribe for updates and exclusive perks:

The Story So Far:

AI Directory Maker: The Plan

You can read the full scope in the overall AI directory agent post, but simply put, it’s to split the operations of this 100% AI business into 4 ‘agents’ (buckets of tasks), as follows:

4 Stages of building an online directory with AI (AI Directory Maker)
  • Directory Prospector – Generate & Validate ideas for new directory
  • Directory Builder – Build the directory (website & data), optimise the SEO
  • Directory Marketer – Initially launch the directory, then incrementally apply marketing to enhance it’s value over the long-term
  • Directory Manager –Deal with customer service requests (add/change/remove listings, check and report progress, help customers who have pre-sales questions etc.)

Part 1: AI Directory Prospector

This is the first ‘agent’ which will play the opening part in my AI agent team who are going to build web directories.

You can read about how I’ve set this first agent up in the Part 1 post here. In essence it’s built into a workflow requiring only a few components:

AI Directory Maker: AI Directory Prospector agent workflow
  • Workflow tool (Gumloop or n8n)
  • ProfitSwarm Architect API
    • Some middleman API calls (e.g. calling rapidapi for search engine data)
    • Some Browser agent runs (e.g. retrieving Google Trends data)
    • Some PHP routines (e.g. domain prospecting)

AI Directory Maker Agent 1: Directory Prospector

13th May: It’s Alive!!! Read about making Agent 1 live here.

Here’s the FlowSpec for this agent:

{
  "workflowTitle": "Directory Prospector (AI Directory Agent, part 1)",
  "workflowDescription": "This workflow takes a described niche, researches keyword opportunities, checks domain availability, and outputs a JSON project summary.",
  "globalTransitions": {
    "rerun": "default_rerun_logic",
    "human_needed": "default_human_review"
  },
  "steps": [
    {
      "stepTitle": "Start Input",
      "stepId": "start_input",
      "stepDescription": "Receive human input describing a niche (e.g. AI workflow tools).",
      "action": "captureNicheDescription",
      "parameters": {
        "inputType": "text"
      },
      "results": {
        "niche": "string"
      },
      "transitions": {
        "success": "ideate"
      }
    },
    {
      "stepTitle": "Ideate",
      "stepId": "ideate",
      "stepDescription": "Generate low-hanging-fruit keyword ideas using keyword data.",
      "action": "generateKeywords",
      "parameters": {
        "niche": "from start_input"
      },
      "results": {
        "ideas": "array of keyword ideas"
      },
      "transitions": {
        "success": "check_idea_viability",
        "fail": "no_viable_idea"
      }
    },
    {
      "stepTitle": "Search Engine Data API",
      "stepId": "search_api",
      "stepDescription": "Pull related terms and trend data using ProfitSwarm API.",
      "action": "fetchSearchTrends",
      "parameters": {
        "keywords": "from ideate"
      },
      "results": {
        "trendData": "object with trends and related terms"
      },
      "transitions": {
        "success": "check_idea_viability"
      }
    },
    {
      "stepTitle": "Idea Viability Check",
      "stepId": "check_idea_viability",
      "stepDescription": "Determine whether a legitimate idea exists based on keyword viability.",
      "action": "evaluateIdea",
      "parameters": {
        "ideas": "from ideate"
      },
      "results": {
        "viable": "boolean"
      },
      "transitions": {
        "success": "domain_prospecting",
        "fail": "no_viable_idea"
      }
    },
    {
      "stepTitle": "Domain Prospecting",
      "stepId": "domain_prospecting",
      "stepDescription": "Check 300+ domains to find the best available domain for the idea.",
      "action": "findDomains",
      "parameters": {
        "idea": "from check_idea_viability"
      },
      "results": {
        "domainChoices": "array of domains"
      },
      "transitions": {
        "success": "final_output"
      }
    },
    {
      "stepTitle": "Final Output",
      "stepId": "final_output",
      "stepDescription": "Return a complete JSON object with idea, keywords, audience, domains, and jargon.",
      "action": "outputProjectJSON",
      "parameters": {
        "idea": "from ideate",
        "keywords": "from search_api",
        "domains": "from domain_prospecting"
      },
      "results": {
        "projectJSON": "structured JSON object"
      },
      "transitions": {}
    },
    {
      "stepTitle": "No Viable Idea",
      "stepId": "no_viable_idea",
      "stepDescription": "Output an indication that no viable idea was found.",
      "action": "outputNoIdea",
      "parameters": {},
      "results": {
        "status": "no viable idea"
      },
      "transitions": {}
    }
  ]
}

AI Directory Maker Agent 2: Directory Builder

Here’s the FlowSpec for this agent:

{
    "workflowTitle": "Directory Builder",
    "workflowDescription": "AI Directory Agent (Part 2): Automatically set up a new directory site (domain, hosting, branding, deployment).",
    "globalTransitions": {
      "rerun": "default_rerun_logic",
      "human_needed": "default_human_review"
    },
    "steps": [
      {
        "stepTitle": "Retrieve Starting Data",
        "stepId": "retrieve_data",
        "stepDescription": "Gather inputs from the Prospector Agent (domain choice, niche info, etc.).",
        "action": "fetchBuilderInputs",
        "parameters": {
          "sourceAgent": "prospector",
          "requiredFields": ["chosenDomain", "nicheDetails"]
        },
        "results": {
          "chosenDomain": "string",
          "nicheDetails": "object"
        },
        "transitions": {
          "success": "register_domain",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Register Domain",
        "stepId": "register_domain",
        "stepDescription": "Register the chosen domain via Namecheap or another registrar.",
        "action": "registerDomain",
        "parameters": {
          "domainName": "chosenDomain"
        },
        "results": {
          "registrationStatus": "string"
        },
        "transitions": {
          "success": "setup_hosting",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Set Up Hosting, SSL, and Email",
        "stepId": "setup_hosting",
        "stepDescription": "Provision hosting, configure SSL certificates, and create email accounts.",
        "action": "configureHosting",
        "parameters": {
          "domainName": "chosenDomain",
          "hostingPlan": "string",
          "sslProvider": "string"
        },
        "results": {
          "hostingCredentials": "object",
          "sslConfigured": "boolean",
          "emailConfigured": "boolean"
        },
        "transitions": {
          "success": "branding",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Branding",
        "stepId": "branding",
        "stepDescription": "Generate or apply branding assets (logo, color palette, style guidelines).",
        "action": "applyBranding",
        "parameters": {
          "nicheDetails": "object",
          "brandPrompt": "Generate brand identity for this niche."
        },
        "results": {
          "brandingAssets": "object"
        },
        "transitions": {
          "success": "build_files",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Build Files",
        "stepId": "build_files",
        "stepDescription": "Create or configure directory website files (e.g., WP theme, plugins, or static site).",
        "action": "buildDirectorySite",
        "parameters": {
          "domainName": "chosenDomain",
          "brandingAssets": "object"
        },
        "results": {
          "siteFilesLocation": "string",
          "buildLogs": "array"
        },
        "transitions": {
          "success": "deploy_to_host",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Deploy to Host",
        "stepId": "deploy_to_host",
        "stepDescription": "Deploy the built directory site to the hosting environment (e.g., WP deploy bot).",
        "action": "deploySite",
        "parameters": {
          "siteFilesLocation": "string",
          "hostingCredentials": "object"
        },
        "results": {
          "deploymentStatus": "string"
        },
        "transitions": {
          "success": "connect_externals",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Connect Externals (Optional)",
        "stepId": "connect_externals",
        "stepDescription": "Connect external services like Google Analytics, Google Search Console, Stripe, or set up GAlerts.",
        "action": "connectExternalServices",
        "parameters": {
          "domainName": "chosenDomain",
          "services": ["GA", "GSC", "Stripe", "GAlerts"]
        },
        "results": {
          "connectionsStatus": "object"
        },
        "transitions": {
          "success": "final_output",
          "fail": "fail_output"
        }
      },
      {
        "stepTitle": "Final Output",
        "stepId": "final_output",
        "stepDescription": "Summarize success with a live site and any relevant access details.",
        "action": "reportSuccess",
        "parameters": {
          "domainName": "chosenDomain"
        },
        "results": {
          "liveSiteURL": "string",
          "adminAccessInfo": "object"
        },
        "transitions": {
          "success": "end"
        }
      },
      {
        "stepTitle": "Fail Output",
        "stepId": "fail_output",
        "stepDescription": "Handles any errors or dead ends by reporting failure.",
        "action": "reportFailure",
        "parameters": {},
        "results": {
          "errorMessage": "string"
        },
        "transitions": {
          "success": "end"
        }
      }
    ]
  }
  

AI Directory Maker Progress Updates

18th February 2025:

24th February 2025:

  • Wrote first ‘ProfitSwarm Architect API’
  • Tested Gumloop and Browser Use.
  • First tests of all endpoints, some need work (e.g. Niche Report needs more automating, Google Trends needs a new AI browser agent setup)
  • Posted about Directory Prospector Agent

25th February 2025:

  • Started exploring other Workflow tools
  • Settled on Relevance.AI to further explore for this
  • Built a working (75% finished) AI Directory Prospector!

11th March 2025:

  • Fought major registrar companies to let me use an API to register domain names
  • Eventually got my Architect API registering domain names
  • Prepared rest of the workflow/tooling for Directory Builder Agent (finalised agent workflow next week)

17th March 2025:

  • Converted agents into FlowSpec schema’s and included in this post
  • Converted FlowSpec’s into Todo lists and included in this post (below)
  • Built an AI Scraper Agent to populate each directory’s initial data (blend of scraper & AI inference)
  • Made a backup URL scraper for when AI fails
  • Made my Architect API run locally so I can have infinite timeouts
  • Experimented with Google’s new Gemini Flash 2.0
  • Made a Logo Generator AI agent (still needs human signoff)
  • Made an OG Meta Share image AI agent
  • Made a Palette picking AI agent
  • Completed initial AI branding agent
  • Vibe coded directory site templates
  • Wrote a site builder
  • Exposed all of the above via Architect API

1st April 2025:

  • Completed the AI Directory Builder (site builder part of agent)
  • 75% automated second agent!
  • First Directory Launched! (VibeGames.io)

4th April 2025:

  • Explored Lindy AI ahead of making the AI Directory Marketer agent

7th April 2025:

  • More work finalising the AI Directory Builder agent

28th April 2025:

  • Added Google Analytics powers to AI Agent
  • Rejigged the workflow to async add GA to new directories

5th May 2025:

  • Added Google Search Console powers to AI Agent
  • Rebuilt AI Directory Prospector in Make.com

12th May 2025:

27th May 2025:

  • Both Prospector and Builder Agents Workflows now work together
  • Made a Proto-Manager Agent to mediate between the human queue and automations
  • The ‘swarm’ have registered their first domain names
  • Made a ‘militarised zone’ for AI’s to build sites on my server
  • At this point I’m knee deep in nested automations

2nd May 2025:

  • Last week achieved proto-swarm, but it doesn’t feel like AI
  • Refining the flows for these first two ‘agents’
  • Exploring manager role AI options

9th May 2025:

  • Used AI Directory Prospector and AI Directory Builder to Make first formal directory site in 33 minutes: AI built this Directory

16th May 2025:

AI Directory Maker Progress:

AI Directory Maker Progress