What Southern California preschools ask
Computed live from the comps table. These are asking prices, not sale prices — actual transaction values in small-business M&A are private and almost never disclosed.
Price scales with licensed capacity, not with claimed earnings
Listings rarely disclose revenue or EBITDA, so a multiple-of-earnings benchmark can't be built from this data. Price per licensed slot can. Use it to set an opening range, then let the diligence rubric move it.
Four findings that stop a deal outright
- Open CDSS Type A citation or pending administrative action
- Lease term shorter than the loan term with no extension option
- Director departing with no qualified replacement identified
- Business currently closed — no active license to inherit
What this data can't tell you
- Sale prices — only asking prices are published
- Revenue, EBITDA, or SDE — almost never listed
- Actual enrollment — disclosed on roughly a third of listings
- Tuition rates — never in listings. That's what the Competition tab is for.
Asking price per licensed slot
Click any column header to sort. Filters stack. The stat strip recalculates against whatever subset is showing.
| Listing | Status | Region | Asking | Capacity | $ / slot | Enrolled | Features | Source |
|---|
Add a listing
Paste the listing text and the fields fill themselves. Correct anything wrong, then add.
Pasting a URL won't work. Browsers block cross-site fetches, so no static page can read a broker site. Copying the text takes eight seconds and never breaks.
Base set captured July 2026 from California Preschool Brokers. No per-listing permalinks exist on that page, so source links point to the page. Statuses reflect the July capture.
Competitor pricing — LA & San Gabriel Valley
What schools actually charge parents. This is the number that decides whether a premium 1:6 program is viable, and it never appears in a broker listing.
Why this isn't scraped from Upwards
Upwards blocks automated access in its robots.txt — an explicit instruction not to crawl. I won't scrape it and won't build you a scraper for it. Beyond the terms question, aggregator listings frequently carry stale or estimated rates, so the data would be weak even if it were fair game.
The better source is already in your plan. Week 1 is six phone quotes and three tours. That produces verified, current, first-party pricing with the TK question asked directly — data no aggregator has. Log it here as you collect it.
| School | City | Full day | Half day | Ratio | Ages | Waitlist | Evidence | Link |
|---|
Log a school
Fill this in after each call or tour. Evidence matters as much as the number — a rate you confirmed by phone is worth more than an aggregator average.
Seeded with four researched data points. Everything else comes from your own calls.
Diligence rubric
Answer from documents, not impressions. Each answer moves the offer range and may raise a flag. The weights are editable judgment calls — argue with them.
Deal inputs
Kill switches
Tick anything confirmed true. Any single one stops the deal regardless of every other answer.
Model the financing
Carries the price and EBITDA above into a full capital stack.
Save or reload this deal
This page has no memory. Save downloads one file holding every answer and number on this tab. Reload puts it back — that's how your partner picks up where you left off.
Financing model
Populated from the Diligence tab. Lenders underwrite EBITDA after a market-rate manager — with no ECE background on your side, that director salary is a real cost, not an addback.
Deal & structure
Bank / SBA loan
Operating assumptions
Findings
Durable lessons that should survive any single deal. Anything that changed how you'd underwrite belongs here, with its source and what it changes. Red left border means it reversed or complicated earlier advice — those are the most valuable and the easiest to lose.
Add a finding
Findings belong in the repo, not in one person's browser — commit findings.json so you and your partner share one knowledge base under version control.
Notes
Everything you hear on a call, a tour, or from a broker. Raw and timestamped. Findings are the distilled conclusions; this is the evidence they came from.
Before you paste anything
Two things do not belong in a notes database that an LLM reads: children's names or any roster data, and seller financials under NDA. Free LLM tiers frequently reserve the right to train on inputs. Summarize rosters as counts and age bands. Keep NDA'd P&Ls in your own files and record only the conclusions here.
Add a note
Ask across your notes
Once the Worker is deployed, this searches every note and finding and answers in context. Good for "what did directors say about infant margins" or "which brokers mentioned TK pressure."
Where notes actually live
In this preview they sit in memory — save to a file before you close the tab. On the deployed site the Worker writes them to Cloudflare D1, a real shared database, so you and your partner see the same record. Setup is in worker.js.
If the Worker ever goes down your notes are still safe in D1 — you just can't reach them until it's back. The file export is the belt-and-braces copy. Use it weekly.
Market DB — locations, offerings, pricing
Track schools and childcare providers separately from acquisition comps. This is demand/supply intelligence, not deal valuation. Every price needs an evidence level.
Upwards rule
The canonical https://upwards.com/childcare-near-me page and published LLM index are acceptable sources to review. Do not crawl faceted map/search URLs with latitude or longitude parameters. Paste text or add a canonical URL, then review extracted fields before saving.
| Provider | City | Zip / area | Type | Ages | Features | Price | Evidence | Source |
|---|
Import Upwards by zip or city
Uses the Worker to fetch allowed Upwards canonical pages. Zip imports use Upwards' clean ?search= redirect, not latitude/longitude map URLs. LLM summarizes the result; provider fields still come from source-visible page data.
Add a provider
Use this for Upwards, school websites, phone quotes, tours, and pasted provider pages. Keep roster details out.
30 days, three motions a week
This fixes the actual constraint. You can't yet tell a good preschool from a bad one by walking into it, and no software solves that.
California preschool & TK watch
Curated items pinned at top with source links. Add useful links as you find them; on the deployed site the Worker can fetch and summarize allowed pages.
Add a link
Feeds to wire up
Verified endpoints, ordered by how much signal they carry for this thesis:
edsource.org/feed/atom · deepest CA early-ed policy reportingCalMatters education —
calmatters.org/category/education/feed/ · the TK closure researchLAist —
laist.com/rss-feed · LA County education and local policyL.A. Parent —
laparent.com/feed · demand-side signal; what parents are shopping forCDSS licensing updates have no RSS — check the CCLD provider page manually.
Feeds route through a Cloudflare Worker, which also holds the LLM key for summaries. Code is in worker.js. If the Worker fails, the curated items still render — the feed just doesn't update. Graceful, not catastrophic.