What Southern California preschools ask
Dashboard first. This front page ties together acquisition benchmarks, diligence status, market/provider coverage, TAM proxy status, key findings, 30-day plan progress, and AI/search readiness. It is broader than a comps sheet, but it is still source-backed and mostly a for-sale listing and acquisition-market summary. These are asking prices, not sale prices — actual transaction values in small-business M&A are private and almost never disclosed.
Asking price scales with licensed capacity, not with claimed earnings
Listings rarely disclose revenue or EBITDA, so a multiple-of-earnings benchmark cannot be built from this data. Asking price per licensed slot can. Use it to set an opening acquisition offer 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.
Acquisition asking price per licensed slot
Click any column header to sort. Filters stack. The stat strip recalculates against whatever subset is showing. Asking price per licensed slot means acquisition asking price divided by licensed capacity. It is not tuition.
| Listing | Status | Region | Real estate included | ZIP code | Address | Asking price | Licensed capacity | Asking price / licensed 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. These are seed research records, not QA/demo rows.
Competitor tuition — LA & San Gabriel Valley
What schools actually charge parents, separate from acquisition asking prices. This is the tuition that decides whether a premium 1:6 program is viable, and it never appears in a broker listing.
Why blocked Upwards pages are not crawled
Do not crawl blocked Upwards map/search URLs or faceted pages with latitude/longitude parameters. Allowed canonical/static provider pages, readable source pages, pasted text, and manual entry are fair game to review or import. If the page is blocked to automated crawling, it stays blocked even if the content is otherwise useful.
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 tuition / month | Half-day tuition / month | 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 records: two market-average rows and two school-level rows. If a source page or review text is allowed and terms-safe, also capture what parents praise or complain about alongside the price, ratio, and age band.
Diligence rubric
Answer from documents, not impressions. Each answer moves the acquisition 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. This math stays deterministic in the browser, not LLM-generated.
Save or reload this deal
When signed in through the local server, Save writes the deal and answered rubric fields through backend APIs. In static mode, or if the server is unavailable, it still downloads a file you can reload later.
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
Normal = searchable and may be used in AI answers. No AI = searchable locally if appropriate but excluded from hosted LLM payloads. Private = excluded from hosted LLM payloads and treated as sensitive.
Ask across your notes
When the local server is running with a server-side LLM key, this searches notes, findings, local records, and submitted working state before answering in context. Good for "what did directors say about infant margins" or "which brokers mentioned TK pressure."
Where notes actually live
When you run npm run local and sign in, new notes are written through the local server into SQLite. If you are signed out, new notes stay in this browser session unless you export them. A deployed Worker can still be used later for hosted flows.
If the local server or Worker is unavailable, already-saved records stay where they were written, but fresh edits may need export until the endpoint is back. Keep the file export as the backup copy.
Market DB — locations, offerings, parent tuition
Track schools and childcare providers separately from acquisition comps. This is demand and supply intelligence, not deal valuation. Every parent-tuition figure needs an evidence level and a confirmed period.
Upwards rule
Allowed canonical/static Upwards pages, the published LLM index, pasted text, and manual entry are acceptable sources to review. Do not crawl blocked or faceted map/search URLs with latitude or longitude parameters. Review extracted fields before saving, and treat phone/tour evidence as strongest.
| Provider | City | Zip / area | Type | Ages | Features | Parent tuition | Period | Evidence | Source |
|---|
Import Upwards by zip or city
Uses the local server or Worker to fetch allowed Upwards canonical pages. Zip imports use Upwards' clean ?search= redirect, not blocked latitude/longitude map URLs. The server-side LLM may summarize the batch, but 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.
TAM / Heat Map
Read-only comparison of Evan's LA-area preschool market definitions. Scores are deterministic proxy math from stored market observations; they are not LLM-generated, live census imports, enrollment forecasts, revenue estimates, or acquisition recommendations.
Fixture/proxy data warning
This v1 tab uses local ACS-style, NCES-style, and CDSS-style fixture data unless the backend later imports documented official snapshots. Missing values are shown as missing or not scored; they are not treated as zero.
| Ranked market | Deterministic proxy score | Confidence | Rough under-5 demand base | Licensed providers | Licensed slots | Source vintage | Warnings |
|---|
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; when a backend is available, it 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.
Live RSS still routes through a Cloudflare Worker, which can also hold the server-side LLM key for summaries in a hosted setup. Code is in worker.js. If that Worker fails, the curated items still render — the feed just doesn't update.