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

ServerWhat It DoesExample
PlaywrightControls a real browser"Open indeed.com and search for companies in Chicago"
GitHubManage repos, PRs, issues"Create a new repo called prospect-tool"
Context7Looks up library docsClaude 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.

ServiceWhat It Does
PagesFree web hosting. Build a site, push it, it's live with a URL.
WorkersCode that runs in the cloud on a schedule. Your scraper could run every morning at 6am and email you results.
D1Free 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.

API
A way for two programs to talk to each other. When your scraper pulls data from a website, it might use that site's API. Think of it like a drive-through window -- you make a request, you get data back.
API Key
A password that lets your code access an API. Keep these secret. Don't paste them in public chats or commit them to GitHub.
Build
The process of converting your source code into something that can run or be deployed. Like compiling a rough draft into the final version.
CLI / Terminal
The text-based interface where you type commands. That black (or white) window where you type python3 scraper.py. CLI stands for "Command Line Interface" -- same thing as Terminal on Mac.
Claude Code
The tool you're learning right now. An AI coding assistant that runs in your terminal, reads your files, writes code, and runs commands. It's Claude with hands.
CLAUDE.md
A special file in your project folder that gives Claude standing instructions. Like a cheat sheet it reads every time it starts. "Always use Python 3" or "My target market is mid-size companies in Chicago."
Cloudflare
A company that provides free internet infrastructure. We use three of their products -- Pages, Workers, and D1.
Cloudflare Pages
Free website hosting. Push your code up, get a live URL back.
Cloudflare Workers
Small programs that run in the cloud on Cloudflare's servers. No server to set up or manage yourself.
Cloudflare D1
A free cloud database. Stores your data (company lists, proposal history, etc.) in an organized, searchable way.
Commit
A saved snapshot of your code at a specific point in time. Like a save point in a video game. You can always go back to any commit if things go wrong.
CSV
A simple spreadsheet file format. Stands for "Comma-Separated Values." You can open them in Excel or Google Sheets. Your scraper will probably output prospect lists as CSV files.
Database
An organized collection of data you can search, filter, and update. Like a super-powered spreadsheet that code can talk to programmatically.
Deploy
Taking your code from "works on my laptop" to "live on the internet." When you deploy your prospecting tool, it can run without your laptop being open.
Environment Variable
A secret value stored outside your code files. Used for API keys, passwords, and config that changes between your laptop and the cloud. Keeps sensitive stuff out of your actual code.
Git
A version control system. It tracks every change you make to your code so you can undo mistakes, see what changed, and never lose work. Think of it as unlimited undo history for your entire project.
GitHub
A website that stores your git repos in the cloud. It's your code's backup and home base. Also where teams collaborate.
Localhost
Your own computer acting as a temporary web server. When you see http://localhost:3000, that's a site running on YOUR machine that only you can see. Used for testing before you deploy.
MCP Server
A plugin for Claude Code that gives it extra abilities -- like sending emails, controlling a browser, or managing code repos. Wes sets these up for you.
Memory
Claude Code's ability to remember things you tell it across sessions. You say "remember X" and it stores that for future conversations.
Node.js
A way to run JavaScript outside of a web browser. Some tools you'll install (like Wrangler) are built with it. You don't need to learn Node -- just have it installed so those tools work.
pip
The tool that installs Python libraries. Need a new library? Run pip install library-name. It's like an app store for Python packages.
Python
The programming language you're using for your prospecting tool. Beginner-friendly and great for scraping, data processing, and automation.
Repo (Repository)
A project folder tracked by git. Contains all your code, its full history, and config files. When someone says "the repo" they mean "the project."
Script
A file of code that performs a specific task. Your scraper.py is a script. You run it, it does its thing, it finishes.
Session
One continuous conversation with Claude Code. Starts when you type claude, ends when you type /exit or close the terminal window.
Skill
A reusable Claude Code capability triggered with a slash command. Type / inside Claude Code to see what's available.
Terminal
Same as CLI. The text command window on your Mac. Open it with Cmd+Space, type "Terminal", hit Enter.
Virtual Environment (venv)
An isolated sandbox for your Python project's libraries. Keeps one project's stuff separate from another. Claude will set this up for you -- just know it exists so you're not confused when you see "(venv)" in your terminal prompt.
Web Scraping
Using code to automatically pull data from websites. Your prospecting tool will scrape company sites to detect what payroll provider they use. It's like copy-pasting info from a website, but automated and at scale.
Wrangler
Cloudflare's command-line tool. Used to deploy Workers, set up D1 databases, and push sites to Pages. You install it once and Claude handles the commands from there.

Task Checklist

0/0
Saved locally