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:
- Overall Plan post – Building an AI web directory team
- Part 1: Building a Directory Prospector AI Agent
- Programmatically registering domain names
- Automated AI Directory Maker: Part 2
- Stop writing code: First Directory Launched
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:

- 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:

- 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
Here’s the FlowSpec for this agent:
{
"workflowTitle": "Directory Prospector",
"workflowDescription": "AI Directory Agent (Part 1): Gather and validate niche ideas, then find domain availability.",
"globalTransitions": {
"rerun": "default_rerun_logic",
"human_needed": "default_human_review"
},
"steps": [
{
"stepTitle": "Start",
"stepId": "start",
"stepDescription": "Capture initial input: user describes niche & picks best target idea.",
"action": "captureInitialInput",
"parameters": {
"userNicheDescription": "string"
},
"results": {
"selectedIdea": "string"
},
"transitions": {
"success": "ideate",
"fail": "fail_output"
}
},
{
"stepTitle": "Ideate",
"stepId": "ideate",
"stepDescription": "Generate first domain ideas using GPT.",
"action": "generateDomainIdeas",
"parameters": {
"prompt": "Generate domain ideas for the selected idea."
},
"results": {
"domainIdeas": "array of strings"
},
"transitions": {
"success": "explore_trends",
"fail": "fail_output"
}
},
{
"stepTitle": "Explore Trends",
"stepId": "explore_trends",
"stepDescription": "Analyze current trends for the chosen niche or idea list.",
"action": "exploreTrends",
"parameters": {
"domainIdeas": "array of strings"
},
"results": {
"trendAnalysis": "object or array of trend data"
},
"transitions": {
"success": "niche_research",
"fail": "fail_output"
}
},
{
"stepTitle": "Niche Research",
"stepId": "niche_research",
"stepDescription": "Gather deeper niche data and validate potential opportunities.",
"action": "performNicheResearch",
"parameters": {
"trendAnalysis": "object or array of trend data"
},
"results": {
"nicheInsights": "object with niche metrics and viability scores"
},
"transitions": {
"success": "search_engine_research",
"fail": "fail_output"
}
},
{
"stepTitle": "Search Engine Research",
"stepId": "search_engine_research",
"stepDescription": "Use GPT or external APIs to explore search volume, competition, and related keywords.",
"action": "searchEngineResearch",
"parameters": {
"nicheInsights": "object with niche metrics and viability scores"
},
"results": {
"searchData": "object with search volume, competition, and related keywords"
},
"transitions": {
"success": "make_decision",
"fail": "fail_output"
}
},
{
"stepTitle": "Make Decision",
"stepId": "make_decision",
"stepDescription": "Decide whether to proceed or abort based on research data.",
"action": "evaluateNicheViability",
"parameters": {
"searchData": "object with search volume, competition, etc."
},
"results": {
"decision": "boolean or string indicating proceed/fail"
},
"transitions": {
"success": "domain_prospecting",
"fail": "fail_output"
}
},
{
"stepTitle": "Domain Prospecting",
"stepId": "domain_prospecting",
"stepDescription": "Check domain availability or auctions for relevant domain names.",
"action": "domainProspecting",
"parameters": {
"domainIdeas": "array of strings"
},
"results": {
"availableDomains": "array of domain names",
"auctionDomains": "array of domain names"
},
"transitions": {
"success": "final_output",
"fail": "fail_output"
}
},
{
"stepTitle": "Final Output",
"stepId": "final_output",
"stepDescription": "Provide the final result with chosen domain or recommended next steps.",
"action": "outputResults",
"parameters": {
"availableDomains": "array of domain names",
"auctionDomains": "array of domain names"
},
"results": {
"chosenDomain": "string or null"
},
"transitions": {
"success": "end",
"fail": "fail_output"
}
},
{
"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 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:
- Designed initial high-level agent workflow
- Explored some key tools: n8n, RapidAPI, APIfy, etc.
- Posted a summary of the AI Directory Maker AI Team
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
AI Directory Maker Progress:
