Claude for DealersFollow along live
Spy then sell.
Build your market dashboard, step by step.
- This page
- rainelabs.io/live
- Stuck?
- Stop and watch the screen. Everything is on this page so you can finish tonight. Find Elijah at Power Hour, Friday 4 to 5 PM.
Start here
Paste this into Claude Code and it will work through this page with you.
Prompt APaste into Claude Code
Read https://rainelabs.io/live and set this up on my laptop, following the steps on the page in order. Stop and ask me whenever you need something only I can do, like logging in or pasting a key.
Claude will stop twice and wait for you: once to log in to Supabase, once for your service_role key. The steps below tell you what to do at each stop.
Step 0Best done before the session
Set up Claude Code
One pass through your terminal, once. After this, Claude does the work.
Part a: Install Claude Code
- Open your terminal. Mac: press Cmd+Space, type Terminal, press Enter. Windows: click Start, type PowerShell, press Enter.
- Windows only: install Git for Windows first from git-scm.com/downloads/win, then close PowerShell and open it again.
- Copy the install command for your laptop, paste it into the terminal, and press Enter.
MacTerminal
curl -fsSL https://claude.ai/install.sh | bashWindowsTerminal
irm https://claude.ai/install.ps1 | iexNever put sudo in front of the install command; it refuses to run that way. You need a Claude Pro, Max, Team or Enterprise plan to log in.
Part b: Open a NEW terminal window, then check it worked
- This is the part people miss. The installer only adds claude to terminal windows opened after it finished, so the window you installed in still will not find it.
- Close that terminal window and open a fresh one. Mac: Cmd+N in Terminal. Windows: open PowerShell again.
- In the new window, run these three commands one at a time. Each one should print a version number.
Mac and WindowsTerminal
claude --versionMac and WindowsTerminal
git --versionMacTerminal
python3 --versionWindowsTerminal
python --versionclaude --version prints a number followed by (Claude Code). If any of the three says not found or not recognized, fix that one now: Claude Code by redoing part a and opening another new window; Git from git-scm.com/downloads/win (Mac: run xcode-select --install and click Install in the pop-up); Python 3.11 from python.org/downloads, and on Windows tick Add Python to PATH on the first screen. Install first, then open another new terminal window and check again.
Part c: Make a folder for this project and go into it
- Copy the command for your laptop, paste it into the terminal, and press Enter.
MacTerminal
mkdir -p ~/spy-then-sell && cd ~/spy-then-sellWindowsTerminal
New-Item -ItemType Directory -Force $HOME\spy-then-sell | Out-Null; cd $HOME\spy-then-sellClaude works in whatever folder you start it in. For this project, always start it in spy-then-sell. Running this command a second time is safe.
Part d: Connect Supabase to Claude in this folder
- In the same terminal, paste this command and press Enter.
Mac and WindowsTerminal
claude mcp add --transport http supabase https://mcp.supabase.com/mcpIt prints two lines and asks you nothing. It writes to Claude's own settings, not to your folder, so your folder stays empty and ready for Step 1. You log in to Supabase itself in Step 3.
Part e: Start Claude and log in
- In the same terminal, paste this command and press Enter.
- First time only: pick a text style and press Enter. When asked how to log in, choose Claude account with subscription. Your browser opens: log in, click Authorize, then go back to the terminal.
- If it asks whether you trust the files in this folder, choose Yes and press Enter.
- Claude Code shows a warning about Bypass Permissions mode. Press the down arrow to choose Yes, I accept, then press Enter. Pressing Enter on its own exits. It only asks once.
- Leave this window open for the rest of the session.
Mac and WindowsTerminal
claude --dangerously-skip-permissionsThis lets Claude run commands and change files in this folder without stopping to ask you each time. Only use it in this project folder, and never type sudo in front of it.
You should see: Claude Code is open in the spy-then-sell folder and waiting for your message.
If it’s not working: If the terminal says claude is not found or not recognized, you are almost certainly still in the window you installed from: close it, open a brand new terminal window, and run claude --version there. Still not found: run the install command from part a again, then open another new window. Windows, if the install says running scripts is disabled on this system: use a normal PowerShell, not Run as administrator, and paste it again; if it is still blocked, run Set-ExecutionPolicy -Scope Process Bypass and then paste the install command again. Every new terminal window starts outside your folder, so redo part c before part d or part e.
Step 1
Get the code
Claude downloads the scraper and dashboard into your folder and installs what they need to run.
- Click into Claude Code.
- Copy Prompt 1, paste it into Claude Code, and press Enter.
- Wait for Claude to tell you it's done. It takes a few minutes. Leave the window open.
Prompt 1Paste into Claude Code
Clone https://github.com/esurratt4/LearnClaudeForDealers into this folder. Read CLAUDE.md and do the setup: create the Python virtual environment, install the requirements, and install the Playwright browser. Tell me when it's done.
You should see: Claude says the virtual environment, the requirements and the Playwright browser are installed.
If it’s not working: If Claude says python3 or git is not found, install the missing one (Python 3.11 from python.org/downloads, ticking Add Python to PATH on Windows; Git from git-scm.com/downloads/win, or on Mac run xcode-select --install and click Install). Then type /exit, close the terminal window, open a new one, redo Step 0 parts c and e, and paste Prompt 1 again. Pasting it again in the same window will not work: Claude cannot see a program that was installed after it started.
Step 2
Tour the files
Seven places in the project are all you need to know.
- Watch the screen while Elijah opens each one.
- config/dealers.yml
- Your dealers: your store and your competitors.
- .env
- Your keys. Claude fills it in during Step 5.
- sql/schema.sql
- The blueprint for your database tables.
- scraper/
- The code that reads dealer websites.
- dashboard/
- Your dashboard.
- CLAUDE.md
- Instructions Claude follows in this project.
- .github/workflows
- The daily schedule.
You should see: You know where your dealers, your keys and your dashboard live.
If it’s not working: Names that start with a dot (.env, .github) are hidden in Finder and File Explorer. That is normal; Claude can still see them.
Step 3
Log Claude in to Supabase
This lets Claude create and run your database for you, so you never have to work inside Supabase.
- In Claude Code, type /mcp and press Enter.
- Select supabase and press Enter.
- Choose Authenticate. Your browser opens.
- Log in to Supabase.
- Choose your organization, then click Authorize.
- Go back to Claude Code.
Type in Claude Code
/mcpYou should see: Claude Code shows supabase as Connected.
If it’s not working: If choosing Authenticate does not open a browser, copy the link Claude prints and paste it into your browser yourself. If supabase is in the list but still says Needs authentication, type /mcp and choose Authenticate again. If supabase is not in the list at all, Claude was started before part d of Step 0 or in a different folder: type /exit, run cd ~/spy-then-sell (Windows: cd $HOME\spy-then-sell), run the claude mcp add command from Step 0 part d, start Claude again with claude --dangerously-skip-permissions, and type /mcp.
Step 4
Create your database
Claude creates your Supabase project and builds the three tables that hold your vehicles, your price history and a log of every scrape.
- Paste Prompt 2 into Claude Code and press Enter.
- If Claude asks you to confirm anything about the new project, say yes.
- Wait. A new project takes a minute or two to get ready.
Prompt 2Paste into Claude Code
Use the Supabase MCP to create a new project called spy-then-sell in my organization. Wait until it's ready, then apply sql/schema.sql to it and confirm the vehicles, scraper_runs and price_history tables exist.
You should see: Claude confirms the vehicles, scraper_runs and price_history tables exist.
If it’s not working: If Supabase refuses to create the project, the free plan's two active projects are already in use. Claude lists your projects; tell it which old one to pause and it carries on.
Step 5
Connect your keys
The scraper and the dashboard need three values to reach your database. Claude gets two of them. You copy the secret one yourself.
Key
What it is
What it’s for
Secret?
Project URL
Claude gets it
What it is:Your database's address.
For:The scraper and the dashboard.
Not secret.
anon key
Claude gets it
What it is:A read-only key.
For:The dashboard. It can look, never change.
Not secret.
service_role key
You copy it from Supabase
What it is:Full write access to your database.
For:The scraper, which saves vehicles.
Secret. Only ever paste it into Claude Code on your own laptop. Never email, text or screenshot it.
Part a: Get your URL and anon key
- Paste Prompt 3 into Claude Code and press Enter.
- Click the link Claude gives you. Your project's API Keys page opens in Supabase.
Prompt 3Paste into Claude Code
Get my spy-then-sell project URL and legacy anon key from the Supabase MCP. Put the URL in .env, and the URL and anon key in the dashboard config. Then give me the direct link to the page where I copy my service_role key.
Part b: Copy your service_role key
- Copy Prompt 4, paste it into Claude Code, and do not press Enter yet.
- On the Supabase page Claude linked, click the Legacy API keys tab.
- Next to service_role, click Reveal, then Copy. The key starts with eyJ.
- Back in Claude Code, use the arrow keys to move to [paste], delete it, and paste your key (Cmd+V on Mac, Ctrl+V on Windows). Press Enter.
Prompt 4Paste into Claude Code
Here is my service_role key: [paste]. Put it in .env and run the doctor.
Replace every [bracket] with your own details before you press Enter.
You should see: The doctor shows PASS lines, including write access confirmed, and ends with RESULT: ready to scrape.
If it’s not working: If it says CANNOT WRITE, or your key starts with sb_, you copied the wrong key. Paste Prompt 4 into Claude Code again, then copy service_role from the Legacy API keys tab and paste it in place of [paste].
Step 6
Add your dealership and competitors
Pick competitors you actually lose deals to. That choice decides whether the dashboard is worth anything.
- Copy Prompt 5, paste it into Claude Code, and do not press Enter yet.
- Use the arrow keys to move to each [bracket], delete it, and type your store and two competitors. Copy each website address from your browser's address bar.
- Press Enter.
Prompt 5Paste into Claude Code
Set up config/dealers.yml. My store is [dealership name], [website], [city, state]. My competitors are [name, website, city, state] and [name, website, city, state]. Then run --detect and tell me what platform each site is on.
Replace every [bracket] with your own details before you press Enter.
You should see: Claude lists each of your dealers with a platform: DealerOn, Dealer Inspire, Dealer.com or generic.
If it’s not working: A site showing generic is not an error. Keep going; the test scrape in Step 7 shows whether it reads that site.
Step 7
Test scrape
A dry run reads real vehicles from your site and saves nothing, so you can check the data first.
- Paste Prompt 6 into Claude Code and press Enter.
Prompt 6Paste into Claude Code
Do a dry run on my store with a limit of 10 and tell me if the data looks right.
You should see: Claude shows up to 10 vehicles with a 17-character VIN, a year, make and model, and prices, and says nothing was written.
If it’s not working: If it finds 0 vehicles, check that the website in config/dealers.yml is your public inventory site. Tell Claude the correct address and paste Prompt 6 again.
Step 8
Real scrape
This saves real vehicles from every dealer into your database.
- Paste Prompt 7 into Claude Code and press Enter.
Prompt 7Paste into Claude Code
Run the scraper on all my dealers with a limit of 10. Then use the Supabase MCP to tell me how many vehicles are saved for each dealer.
You should see: Claude tells you how many vehicles are saved for each dealer.
If it’s not working: If one dealer fails, the others still save. Keep going with the room, and ask Claude to fix that dealer after the session.
Step 9
Open your dashboard
Your market on one screen.
- Paste Prompt 8 into Claude Code and press Enter.
- Open http://localhost:8000 in your browser.
- Filter by dealer, make and model.
- Look for what competitors stock that you don't, where your prices sit, and who has cut prices.
Prompt 8Paste into Claude Code
Start the dashboard and give me the link to open.
You should see: Your dashboard opens at localhost:8000 with vehicles from your store and your competitors.
If it’s not working: If the browser says the site can't be reached, the dashboard stopped running. Paste Prompt 8 again and leave Claude Code open.
Step 10
Make it yours
The dashboard is yours to change. Ask for anything; this is one example.
- Paste Prompt 9 into Claude Code, or ask for something you want to see.
- When Claude is done, refresh http://localhost:8000.
Prompt 9Paste into Claude Code
Add a chart to my dashboard comparing how many vehicles each dealer has in each $10,000 price range.
You should see: After a refresh, your change is on the dashboard.
If it’s not working: If the new chart is empty or missing, hard refresh the page (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows). Still empty: check Step 8 saved vehicles.
Step 11Can be done after the session
Run it every morning
GitHub runs the scraper for you every morning, whether or not your laptop is on.
- Paste Prompt 10 into Claude Code and press Enter.
- If Claude asks you to log in to GitHub, follow its steps and tell it when you're done.
- On github.com, open your new repo, click Actions, then Daily Inventory Scrape, and watch the test run.
Prompt 10Paste into Claude Code
Create a private GitHub repo for this project under my account and push it. Add SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY as repository secrets, turn on the Daily Inventory Scrape workflow, and start one test run.
You should see: The Daily Inventory Scrape run finishes with a green check, and it runs on its own every morning after that.
If it’s not working: If Claude cannot create the repo, create it yourself on github.com: click New, name it, choose Private, click Create repository, and give Claude the address. Then paste Prompt 10 again. If Claude says gh is not installed or not recognized, tell it that in those words: it can push with plain git instead and walk you through adding the two secrets by hand, in your repo under Settings, then Secrets and variables, then Actions.
Stuck?
Stop and watch the screen. Everything is on this page so you can finish tonight. Find Elijah at Power Hour, Friday 4 to 5 PM.