Claude Code Guide for Ryan
Built for your Paylocity prospecting tool and beyond. This guide walks you through everything — from first install to deploying a production scraper that finds leads and generates proposals.
1 How This Works
You're not learning to code. You're learning to work with an AI that codes for you. Big difference.
Here's the loop you'll use for everything you build:
THE BUILD LOOP:
- Tell Claude what you want in plain English
- Claude builds it — writes code, creates files, installs dependencies
- Look at the output — does it do what you wanted?
- Tell Claude what to change — repeat until it's right
You don't need to know code. You describe the outcome, Claude figures out the implementation. The skill is learning to ask clearly.
2 Setting Up (Mac)
Get Your Account
Sign up at claude.ai and grab a Pro subscription ($20/mo). That includes Claude Code. You can upgrade to Max ($100/mo) later if you hit usage limits.
Two Ways to Use Claude Code
Claude Code Desktop (start here)
- Download from claude.ai/download, install, sign in. Visual interface — type what you want, Claude builds it. This is your daily driver.
Claude Code CLI / Terminal (graduate to this)
- Same Claude, but in a terminal window. Open Terminal, type
claude, hit Enter. The CLI version lets you spawn agent teams and gives you more control. You'll get here naturally.
Bypass Permissions
By default Claude asks to approve every file and command. Since this is your personal machine, turn that off. First thing you do in Claude Code Desktop:
PROMPT:
Create or update my global Claude settings file at ~/.claude/settings.json to set my default permission mode to "bypassPermissions" so I don't have to approve every action. Make sure the file is valid JSON.
Now Claude can actually work without stopping every 5 seconds to ask permission.
Install Everything
Tell Claude to set up your dev environment:
PROMPT:
I need to set up my Mac for development. Check what I already have installed, then install anything missing: 1. Homebrew (Mac package manager) 2. Node.js (LTS version) 3. Python 3 4. Git 5. GitHub CLI (gh) 6. Wrangler (Cloudflare's deploy tool) For each one, tell me what it is in one sentence and confirm it installed correctly.
Claude handles the rest. Your Mac might ask for your password for Homebrew — that's normal. When it's done, you should see versions for all 6 tools. If any are missing, tell Claude to try again.
3 Your First Project
Now we build something real. You're going to create a tool that does your prospecting homework for you -- scraping company data in your territory, figuring out what payroll system they're using, and generating personalized outreach. The stuff that takes hours of manual research, automated.
What We're Building
A Python tool that searches Google for companies in your territory, scrapes their websites, detects their current payroll provider, and generates personalized pitches for switching to Paylocity. Three phases:
Phase 1: Scrape Company Data
Give Claude a list of companies and it hits Google, visits their sites, and pulls real data:
PROMPT:
Create a new project folder at ~/Projects/paylocity-prospector with subfolders for input/, output/, and scripts/. Then build a Python script at scripts/scraper.py that reads company names from input/companies.csv (columns: "company_name" and "location") and for each one: 1. Searches Google (using googlesearch-python or similar) to find the company's website 2. Visits the actual website and scrapes: company description, estimated employee count, industry, headquarters address, and main URL 3. Saves all results to output/company_data.csv with clean columns Create a sample input/companies.csv with 5 real companies in the Chicago area so I can test with real data. Install any Python libraries needed (requests, beautifulsoup4, googlesearch-python).
Run it, check the output CSV. Tell Claude what to fix.
Phase 2: Detect Payroll Provider
PROMPT:
Add payroll provider detection to the scraper. For each company, I need the script to: 1. Check their website for signs of which payroll/HCM platform they use -- look for login portals, links to ADP, Paychex, Gusto, Rippling, UKG, Ceridian, etc. 2. Check job postings on their careers page for mentions of specific HR/payroll software 3. Search for "[company name] payroll provider" or "[company name] HR software" for any public mentions Add a "detected_provider" column and a "detection_confidence" column (high, medium, low) to the output CSV. If no provider is detected, mark it as "unknown".
Test on companies where you already know the answer to verify detection.
Phase 3: Generate Proposals
PROMPT:
Add a proposal generator to the tool. For each company in the output: 1. Based on their current detected provider, generate a short personalized pitch for switching to Paylocity. Highlight specific Paylocity advantages over their current provider (e.g., if they use ADP, mention Paylocity's better UI and lower cost for mid-market; if Paychex, mention the all-in-one platform). 2. Include the company's name, size, and industry in the pitch so it feels tailored, not generic. 3. Generate two versions: a short email version (3-4 sentences) and a longer one-pager. 4. Save proposals as individual text files in a "proposals" folder, named by company. 5. Add a summary row to the CSV with the file path to each proposal. Use an AI-friendly template approach -- I want to be able to edit the templates later without touching the code.
TIPS:
- Test with 3-5 companies first, not 500
- Be specific about problems: "employee count column is blank" beats "it's not working"
- Ask Claude to explain anything you're curious about
4 CLAUDE.md
A file that tells Claude who you are and how to work with you. It reads it automatically at the start of every session — like a briefing document.
Project CLAUDE.md lives in your project folder (tells Claude about this project). Global CLAUDE.md lives at ~/.claude/CLAUDE.md (tells Claude about you, applies everywhere). Tell Claude to create both:
PROMPT:
Create a CLAUDE.md file in my ~/Projects/paylocity-prospector folder with this content: # Paylocity Prospector ## What This Is A Python tool that scrapes companies in my sales territory, detects their current payroll provider, and generates personalized switch-to-Paylocity proposals. ## Tech Stack - Python 3 - CSV files for input/output - BeautifulSoup for web scraping - Requests library for HTTP calls - googlesearch-python for Google search ## Project Structure - input/ -- CSV files with company lists - output/ -- generated proposals and results - scripts/ -- scraping and detection scripts ## Conventions - Keep scripts simple and well-commented (I'm learning) - Use print statements to show progress (not logging) - Always save results to CSV so I can open in Excel - One script per task -- don't combine everything into one file ## Current Phase Phase 1: Basic company data scraping from Google
Then your global one:
PROMPT:
Create a global CLAUDE.md at ~/.claude/CLAUDE.md (create the folder if needed): # About Me - I'm Ryan, an account exec at Paylocity learning to build tools with Claude - I'm on a Mac - Explain things simply -- I'm not a developer - When writing code, add comments explaining what each part does
Update these as your project evolves. Just tell Claude "update CLAUDE.md to say I'm on Phase 2 now."
5 Talking to Claude
The quality of what you get out depends on how clearly you describe what you want.
Be Specific
BAD:
Build me a scraper
GOOD:
Build a Python script that takes a CSV file called companies.csv from the input/ folder (columns: company_name, website_url), visits each website, grabs the page title and meta description, and saves the results to a new CSV called results.csv in the output/ folder. Use the requests and beautifulsoup4 libraries.
Tell it the input, the output, the format, and the tools. Claude nails it first try.
Scope Your Changes
Claude sometimes rewrites things you didn't ask it to touch. Lock it down:
PROMPT:
In scraper.py, only change the parse_website function to also extract phone numbers from the page. Don't modify anything else.
3-Strike Rule
If Claude can't get it right in 3 attempts, stop. Type /clear to start fresh, or reach out to Wes with a screenshot.
Break Big Tasks Into Phases
Don't ask for the whole tool at once. Ask for Phase 1, get it working, then Phase 2. Each phase builds on solid ground.
6 Agent Teams
Instead of Claude doing things one at a time, you can tell it to spawn a team of agents working on different parts simultaneously. Just describe the tasks and say "use agents":
PROMPT:
Use a team of agents to do these in parallel: 1. Build a scraper that reads input/companies.csv, visits each website, extracts payroll/HR mentions. Save to output/scraped_sites.csv. 2. Research payroll provider detection methods (login URLs, JS includes, meta tags, job postings). Write to docs/detection_methods.md. 3. Design an HTML proposal template at templates/proposal.html — Paylocity blue, company name, "Why Switch" section, comparison table.
Three agents, three tasks, done at the same time. Use agents when tasks are independent — if step 2 needs step 1's output, just let Claude do them in order instead.
WATCH OUT:
- Don't let two agents edit the same file
- Agents don't talk to each other — you coordinate after they finish
- Simple tasks don't need a team. One Claude is plenty for "fix this bug"
7 MCP Servers
Plugins that give Claude extra abilities — sending emails, controlling a browser, managing GitHub repos. When one is installed, just talk naturally and Claude uses the right tool.
Available Servers
| Server | What It Does | Example |
|---|---|---|
| Playwright | Controls a real browser | "Open indeed.com and search for companies in Chicago" |
| GitHub | Manage repos, PRs, issues | "Create a new repo called prospect-tool" |
| Context7 | Looks up library docs | Claude uses this automatically |
Build Your Own
MCP servers aren't just things other people make — you can build your own. Your prospecting tool could become an MCP server, then you'd just say "search for companies in Milwaukee with 50-200 employees" and Claude does it. The pattern: build it as a script first, prove it works, then tell Claude to turn it into an MCP server.
PROMPT (when you're ready):
Turn my prospecting tool into an MCP server with these tools: 1. search_companies - takes a location and employee range, searches Google 2. detect_provider - takes a company name/URL, detects their payroll provider 3. generate_proposal - takes company data, generates a Paylocity pitch Build it as an MCP server I can add to my Claude config.
Adding MCP Servers
If Wes sends you a config or you find one online:
PROMPT:
Add this MCP server to my Claude config:
{paste the JSON config here}
8 Cloudflare Stack
When your tool is ready to go beyond "runs on my laptop." Everything here is free tier — no bills.
| Service | What It Does |
|---|---|
| Pages | Free web hosting. Build a site, push it, it's live with a URL. |
| Workers | Code that runs in the cloud on a schedule. Your scraper could run every morning at 6am and email you results. |
| D1 | Free database. Store company data, proposals sent, results — instead of CSV files on your desktop. |
The path: script on your Mac → Worker with D1 database → add a Pages frontend = full web app you could sell.
When you're ready, sign up free at cloudflare.com and tell Claude to set everything up.
9 Memory
Claude Code has a memory system. It can remember things about you, your projects, and your preferences across sessions. When you close a Claude Code session and start a new one, it actually retains what you told it to remember.
Telling Claude to Remember
Just say it in plain English:
PROMPT:
Remember that I only cover the Chicago metro territory for Paylocity. Companies outside that area aren't relevant to me.
Now every future session knows your territory without you repeating it.
Telling Claude to Forget
Things change. When they do:
PROMPT:
Forget the Chicago territory thing. My territory changed to the entire Midwest region -- Illinois, Wisconsin, Indiana, Michigan, and Ohio.
Good Things to Remember
WORTH STORING IN MEMORY:
- Your sales territory and target company size
- Payroll providers you compete against (ADP, Paychex, Gusto, etc.)
- Your preferred proposal format or writing tone
- API keys or account details Claude needs regularly
- Project conventions -- "always save output as CSV" or "use simple variable names"
KEEP IT LEAN:
- Don't dump your entire life story into memory
- If you store too much, Claude can get confused trying to apply all of it at once
- Think of it like sticky notes on your monitor -- a few key things, not a novel
- Review what Claude remembers occasionally by asking "What do you remember about me?"
10 Quick Reference
Starting a Session
Just open Claude Code Desktop. If you need Claude to work in a specific project folder, tell it:
PROMPT:
Open my paylocity-prospector project at ~/Projects/paylocity-prospector
Claude works best when it knows which project you're in — it reads your CLAUDE.md and sees all your files.
Ending a Session
# Type this inside Claude Code
/exit
Or just close the terminal window. Either way works. Your memory and files are saved.
Basic Git Commands
Git saves snapshots of your code so you never lose work. Here's the daily flow:
# Check what files have changed
git status
# Stage all your changes (prep them for saving)
git add .
# Save a snapshot with a description
git commit -m "Added company scraper for Chicago territory"
# Push to GitHub (backs up your code to the cloud)
git push
If any of these commands throw an error, just paste the error into Claude and let it sort it out. Don't try to fix git errors yourself -- that's a rabbit hole you don't need.
Running Python Scripts
# Run a Python script
python3 scraper.py
# Run with arguments (if your script accepts them)
python3 scraper.py --city Chicago --state IL
Installing Python Libraries
# Install a library
pip install requests
# Install everything a project needs (from a requirements file)
pip install -r requirements.txt
When Claude Goes Sideways
Sometimes Claude will make changes that break things or head in the wrong direction. Here's your playbook, in order:
Option 1: Tell it to undo.
PROMPT:
That broke things. Undo your last changes and let's try a different approach.
Option 2: Fresh session. If things are really tangled, exit and start over:
/exit
claude
Option 3: Git reset. Nuclear option. Resets all files back to your last commit:
git checkout .
Option 4: Email for help. If you've tried 3 times and it's still broken, stop spinning and email Wes.
Before Asking For Help -- Checklist
TRY THESE FIRST:
- Did you give Claude the exact error message? (copy/paste, don't paraphrase)
- Did you try a fresh Claude session?
- Did you say "undo your last changes and try a different approach"?
- Did you ask Claude "what's going wrong and what are my options?"
- Have you tried 3 different approaches? If yes -- time to email Wes
11 Getting Help
You're not on an island. We have a support system set up so you can get unstuck fast.
Email Support
Email wes@hinescreative.xyz when you hit a wall. There's an AI agent monitoring that inbox that can often help you right away with common issues. For trickier problems, Wes will jump in personally.
How to Ask for Help (This Matters a Lot)
The quality of help you get is directly tied to how you describe the problem. Be specific.
| Bad Ask | Good Ask |
|---|---|
| "It's broken" | "The scraper returns empty results for companies with HTTPS sites. Here's the error: [paste error]" |
| "Claude isn't working" | "Claude keeps using BeautifulSoup but the site loads content with JavaScript so the HTML comes back empty. Tried 3 times. Here's what I see: [screenshot]" |
| "The script doesn't run" | "When I run python3 scraper.py I get 'ModuleNotFoundError: No module named requests'. Tried pip install requests but got a permissions error: [paste error]" |
TEMPLATE FOR ASKING FOR HELP:
- What I was trying to do: (one sentence)
- What happened instead: (paste the error or describe what went wrong)
- What I already tried: (list the 2-3 things you attempted)
- Screenshot or error log: (attach if you have one)
The 3-Strike Rule
WHEN TO STOP AND EMAIL:
- If Claude can't fix a problem in 3 attempts, stop
- Copy the conversation or screenshot the key parts
- Email wes@hinescreative.xyz with what you were doing, what went wrong, and what you tried
- Don't spend 2 hours going in circles -- that's what support is for
12 Glossary
Tech has a lot of jargon. Here's what the important terms actually mean, in plain English.
python3 scraper.py. CLI stands for "Command Line Interface" -- same thing as Terminal on Mac.http://localhost:3000, that's a site running on YOUR machine that only you can see. Used for testing before you deploy.pip install library-name. It's like an app store for Python packages.scraper.py is a script. You run it, it does its thing, it finishes.claude, ends when you type /exit or close the terminal window./ inside Claude Code to see what's available.