Meet Riley: How I Built an AI Lead Scout on a Raspberry Pi Zero
Sebastian Kotarski
The Problem: I'm a Developer, Not a Marketer
I've been building SpaceCheck — an AI-powered platform that converts 2D furniture photos into photorealistic 3D augmented reality models. Retailers upload a photo of a sofa or a dining table, and SpaceCheck generates an AR-ready 3D model their customers can place in their living room using just their phone. No app download, no expensive 3D scanning studio. Just a photo in, AR model out.
The product works. The 3D generation pipeline is solid. Shopify and WooCommerce integrations are live. But here's the thing nobody tells you when you launch a SaaS as a solo developer: building the product is maybe 30% of the work. The other 70% is finding people who need it.
I'm not a marketer. I don't enjoy spending hours scrolling Reddit looking for furniture store owners asking about AR product visualization. I don't want to monitor Shopify community forums for merchants struggling with high return rates because their customers couldn't visualize how a couch would look in their space.
But those leads exist. Every day, someone on r/ecommerce asks how to add 3D product views to their store. A furniture retailer on Indie Hackers complains about spending thousands on 3D scanning that doesn't scale. A Shopify merchant posts about their 30% return rate on sofas because "it looked different in person." Those are my people — I just need to find them consistently without it consuming my entire day.
So I built Riley.
What Is Riley?
Riley is an autonomous AI agent that runs 24/7 on a Raspberry Pi Zero sitting on my desk. Every 2 hours, Riley searches the web for people and communities that match SpaceCheck's target audience — furniture retailers, e-commerce store owners, interior designers, and anyone struggling with the showroom-to-home visualization gap. When Riley finds a promising lead, it saves the data locally: the username, the source, a link to the post, context about what they're looking for, and a drafted pitch message.
Every morning at 8:00 AM, Riley sends me a formatted report to Discord with everything it found in the last 24 hours. I review the leads over coffee, decide which ones are worth reaching out to, and handle the actual human interaction myself.
Riley never contacts anyone. That's the critical rule. It's a scout, not a salesperson. It observes, it records, and it reports. I make all the decisions about who to engage and how.
The Stack
The entire setup costs me nothing to run beyond the Claude API usage (a few cents per search cycle):
- Raspberry Pi Zero ($15) — the hardware that runs 24/7 on my WiFi
- PicoClaw — an open-source AI agent framework written in Go, designed to run on minimal hardware
- Claude API — the LLM brain that powers the search and evaluation
- Discord Webhook — where Riley sends the daily reports
- systemd — keeps everything alive through reboots and crashes
No cloud server. No monthly hosting bill. Just a tiny board drawing a few watts of power.
How I Set It Up
Step 1: PicoClaw on the Pi
PicoClaw is a lightweight AI agent framework that's designed for exactly this kind of thing — running an LLM-powered agent on constrained hardware. It has a built-in cron scheduler, a skill system for extending capabilities, and it runs as a single Go binary.
I cloned the repo, grabbed the prebuilt armv6 binary from the releases page, and dropped it onto the Pi:
curl -L -o picoclaw.tar.gz \
https://github.com/sipeed/picoclaw/releases/download/v0.2.6/picoclaw_Linux_armv6.tar.gz
tar xzf picoclaw.tar.gz
sudo mv picoclaw /usr/local/bin/picoclaw
Step 2: The Configuration
PicoClaw uses a config.json to define which LLM to use, what tools are available, and how the agent behaves. The key parts:
{
"model_list": [
{
"model_name": "claude-sonnet",
"model": "anthropic/claude-sonnet-4-20250514",
"api_key": "sk-ant-...",
"api_base": "https://api.anthropic.com/v1"
}
],
"tools": {
"web": { "enabled": true },
"cron": { "enabled": true },
"exec": { "enabled": true },
"message": { "enabled": false }
}
}
Notice "message": { "enabled": false }. That's intentional. Riley physically cannot send messages to any platform. It can search the web and write to local files — that's it.
Step 3: The Agent Instructions
PicoClaw uses an AGENT.md file as the system prompt. This is where Riley's personality and rules live:
You are the **Passive Lead Scout** for SpaceCheck.
Your sole job is to find potential customers, partners, and communities
that would benefit from SpaceCheck — an AI-powered SaaS platform that
converts 2D furniture photos into photorealistic 3D augmented reality models.
Search across:
- r/ecommerce, r/shopify, r/furniture, r/entrepreneur, r/augmentedreality
- Shopify community forums, WooCommerce discussions
- Hacker News, Indie Hackers, Product Hunt
- Interior design and home staging communities
CRITICAL RULES:
- DO NOT message, reply to, DM, or contact ANY lead. Ever.
- DO NOT post on any platform on behalf of the user.
- ONLY save lead data to pending_leads.json.
The agent also knows what pain points to watch for: expensive 3D scanning, high furniture return rates, merchants wanting AR product views without technical expertise, people comparing tools like Threekit or Marxent.
Each lead gets saved in a structured format:
{
"user": "shopify_furniture_store",
"source": "Reddit r/shopify",
"url": "https://reddit.com/r/shopify/comments/...",
"context": "Furniture store owner asking how to add AR product previews without expensive 3D scanning",
"pitch": "SpaceCheck converts a single photo of your furniture into an AR model customers can place in their room. No app needed, works on any phone.",
"found_at": "2025-04-17T14:00:00Z"
}
The pitch field is a draft. Riley writes it, I edit it (or throw it away). It never gets sent automatically.
Step 4: The Discord Webhook Skill
PicoClaw has a skill system — self-contained packages that extend what the agent can do. I created a discord-webhook skill with a simple bash script:
#!/bin/bash
WEBHOOK_URL="https://discord.com/api/webhooks/..."
curl -s -H "Content-Type: application/json" \
-d "{\"content\": $ESCAPED_MESSAGE}" \
"$WEBHOOK_URL"
And a more advanced version that sends Discord embeds — formatted cards with fields for each lead, color-coded and timestamped. The daily report script reads pending_leads.json, builds an embed payload in Python, sends it via the webhook, and clears the file for the next cycle.
Step 5: The Cron Schedule
PicoClaw has a built-in cron engine. Two jobs:
# Search for leads every 2 hours
picoclaw cron add \
--name "Lead Search" \
--cron "0 */2 * * *" \
--message "Run your lead scouting cycle now..."
# Send daily Discord report at 08:00 AM
picoclaw cron add \
--name "Daily Report" \
--cron "0 8 * * *" \
--message "Run the daily lead report..."
The first job triggers Riley to search, evaluate, and save. The second job compiles everything into a Discord digest. Twelve search cycles per day, one report.
Step 6: Surviving Reboots
The final piece — making sure Riley runs forever without babysitting:
[Unit]
Description=PicoClaw Lead Scout Agent
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/picoclaw gateway
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl enable picoclaw — done. Power goes out? Pi restarts, WiFi connects, Riley picks up where it left off.
What the Daily Report Looks Like
Every morning at 8:00, I get a Discord notification that looks something like this:
Daily Lead Report — Thursday, 17 April 2025
Found 3 new lead(s) in the last 24 hours.
Lead #1 — @furniture_mike Source: Reddit r/shopify Context: Furniture store owner wants to add "try in your room" AR feature but says Threekit quotes were $50K+ Draft Pitch: SpaceCheck converts a single product photo into an AR model — starting at $15/model. Your customers can preview furniture in their room from your Shopify store...
Lead #2 — @homedecor_emma Source: Indie Hackers Context: Interior design platform founder asking about affordable 3D model generation from photos Draft Pitch: ...
Lead #3 — @ecom_returns Source: Reddit r/ecommerce Context: Thread about reducing furniture return rates — multiple people suggesting AR as a solution Draft Pitch: ...
I scan it in 2 minutes, click the links to see the original posts, and decide if any are worth engaging with. Most mornings it's 2-5 leads. Some days zero. Quality varies, but even one good lead per week makes this worthwhile when your product starts at $15 per 3D model.
What I Learned
1. The "No Contact" Rule Is Non-Negotiable
This was my first design decision and I'm glad I stuck with it. Automated outreach is spam. It doesn't matter how good the pitch is — if a bot is sending it, it's spam. Riley finds, I decide. That boundary keeps everything ethical and keeps the messages authentic when I do reach out.
2. A Raspberry Pi Zero Is Genuinely Enough
I was skeptical. The Pi Zero has 512MB of RAM and a single-core ARM6 CPU. But PicoClaw is a Go binary that uses maybe 30-50MB at idle, and the actual LLM inference happens on Anthropic's servers via the API. The Pi just needs to run the agent loop, make HTTP requests, and write JSON files. It handles that easily.
3. Niche-Specific Search Terms Are Everything
Generic searches like "e-commerce AR" return noise. What works is targeting specific pain points: "furniture return rate", "3D scanning expensive", "shopify 3D product viewer". I also have Riley watch for discussions around competitor tools like Threekit, Marxent, and Vntana — people comparing those tools are already in the market for a solution, and SpaceCheck's price point is dramatically different.
4. Structured Output Matters
Forcing Riley to save leads in a strict JSON schema (user, source, URL, context, pitch) makes everything downstream trivial. The daily report script is simple because the data is predictable. If I later want to build a web dashboard or push leads to a CRM, the data is already structured.
5. Cost Is Negligible
Each search cycle uses maybe 5-10 cents worth of Claude API calls. That's 12 cycles per day, so roughly $0.60-$1.20/day. For automated lead research running 24/7, that's nothing. The Pi itself draws about 1 watt — maybe $1/year in electricity. Compare that to hiring even a part-time marketing researcher.
Could You Build This?
Absolutely. The entire stack is open source except for the Claude API (which you could swap for any LLM provider). Here's what you need:
- A Raspberry Pi (any model) or really any always-on Linux machine
- PicoClaw installed
- An LLM API key (Claude, OpenAI, or even a local model)
- A Discord webhook (or Slack, Telegram — PicoClaw supports many channels)
- About an hour to configure the agent instructions and cron jobs
The key is the agent instructions. Be specific about what your product does, who your target audience is, what pain points to search for, and — most importantly — what the agent is NOT allowed to do. For SpaceCheck, that means Riley knows to look for furniture retailers struggling with 3D content, not just generic "AR" discussions. The more specific the instructions, the better the leads.
Riley isn't going to replace a marketing team. But for a solo developer who'd rather be building an AR pipeline than scrolling forums, having an AI do the research and serve up a curated report every morning is a genuine quality-of-life improvement.
The Pi is sitting on my desk right now, green LED blinking. Riley's working.
Tags
Share this article
Need Help With Your iOS Project?
I help startups and enterprises solve critical iOS, ARKit, and visionOS issues. From performance problems to app store rejections.