Disclosure: AI-assisted drafting; founder reviewed facts against live site and official sources.
TL;DR
- Parents in Dublin need childcare that is registered and inspectable — not a vibe score invented by a directory.
- Tusla already publishes inspection reports. The useful engineering job is reliable deep-links keyed on the official service ID, not summarising findings into stars.
- Structured data (
schema.org/ChildCare) only helps if every property matches what the page actually shows. - Fees and vacancies are missing from the public register. Treating "unknown" as a first-class UI state is more honest than scraping stale prices.
- One brand link, at the end: crechefinder.com.
If you build a consumer product on top of a regulator's data, you eventually face a temptation: turn the official record into a score. Parents already ask "is this creche good?" A five-star badge feels like product. It is also, in most cases, an interpretation dressed up as fact.
This post is about the quieter choice we made while building a Dublin childcare search tool: link to the inspection reports, don't invent the rating. It is written for builders working with government data, local directories, or any domain where a wrong number can hurt someone.
What the official sources already give you
In Ireland, early years services must register with Tusla, the Child and Family Agency. Tusla publishes a Register of Early Years Services by County, updated monthly. Each row includes service type, capacity, and age profile.
Separately, Tusla publishes early years inspection reports, searchable by service name, Tusla number, or Eircode. Inspections are carried out against the Child Care Act 1991 (Early Childhood Care and Education Services) Regulations 2016.
That is a strong foundation. It is also incomplete for the two questions parents ask first: what will it cost, and is there a place. The register does not answer either. Fees and vacancies change often and only the provider knows them.
Ireland's National Childcare Scheme (NCS) reduces what parents pay. Citizens Information describes a universal subsidy that is not means-tested (€2.14 per hour, up to 45 hours a week, in 2026) and an income-assessed subsidy whose hourly rate depends on family income, the child's age and stage, and the number of children. The government pays the subsidy to the provider. To take part, a provider must be registered with Tusla and have a contract with the Department of Children, Disability and Equality.
None of that requires a star rating on a third-party website.
Why scoring inspection findings is a product smell
Inspection reports are regulatory documents. They record compliance against regulations at a point in time. They are not TripAdvisor reviews, and they are not a composite "quality score" that travels cleanly into a directory card.
If you invent a score, you create three problems:
- Interpretation risk. Two people can read the same finding and weight it differently. Your product would present one reading as if it were official.
- Staleness. A report from last year does not describe next month's room. Parents still need the source; a badge ages badly.
- Incentive distortion. Once scores exist, providers and directories start optimising for the badge. That is the wrong game when the real job is helping a parent read the primary source.
So we treat the Tusla number as the primary key, and each listing links out to that service's reports. The parent reads Tusla. We do not summarise the report into a number.
This is the same honesty rule that shows up in other open-data products: the most valuable feature is often the ability to say "here is the source" rather than "here is our grade."
Deep-linking is an engineering problem, not a marketing one
"Link to the report" sounds trivial until you do it at catalogue scale.
What we needed in practice:
- A stable key. The Tusla registration number is the only field that survives renames and address tweaks cleanly. Listing URLs are keyed on it so a service that changes trading name does not orphan inbound links.
- A join that can fail safely. Not every registered service has a fresh report available in the search UI at the moment a parent looks. The UI must allow "no report linked yet" without inventing one.
- Idempotent updates. Monthly register releases and report index changes should be diffs, not wipe-and-replace imports. A missing join on one run should not delete a previously good link without a human check.
The product lesson is boring and transferable: identity first, then presentation. If your entity key is fuzzy, every enrichment (reports, maps, fees) becomes a matching research project.
Structured data only for what the page shows
schema.org defines a ChildCare type. It is tempting to fill every property Google's docs mention. We only mark up what is visible on the page, in line with Google's LocalBusiness structured data guidelines.
That means:
- No invented aggregate ratings.
- No opening hours we have not confirmed.
- No "available for hire" claims that are really "enquire with the provider."
Google's spam policies are also a useful product brief here. Doorway-style city pages that funnel everyone to one generic URL are an anti-pattern. Area pages should exist where there are real services and something specific to say — not because you need a URL for every postal district.
Unknown is a feature
Fees and vacancies are the hard product problem. Scraping provider websites looks clever until half of them omit fees and the other half are out of date. Showing a wrong weekly price is worse than showing none.
So listings without confirmed fees say fees are on enquiry. Vacancies, when shown, carry when and by whom they were last reported. The NCS estimator on the site shows the universal-subsidy rule it used (€2.14/hour, capped hours) and points parents to the official NCS materials and calculator pathway described by Citizens Information for income-assessed amounts we do not pretend to know.
From an engineering view, three habits helped:
- Rules as data. Subsidy rates and hour caps live in config with a validity window, not as magic numbers scattered through templates. Citizens Information already flags announced future changes, so hard-coding "today" is a known future bug.
- Show the working. Print the rule next to the estimate. Disagreement becomes inspectable.
- Don't replace the authority. The product is a better interface to official data and a clearer path to enquire — not a substitute for Tusla or NCS.
What I'd tell another builder in a regulated niche
- Prefer deep links to the regulator over composite scores you cannot defend.
- Spend design time on empty and unknown states. They are the honest majority of the UI in many public-data products.
- Keep raw imports and cleaned records separate so you can re-parse when you find a bug.
- Use structured data as a mirror of the page, not as a second marketing channel.
- One strong entity key beats a clever NLP matcher you will fear touching six months later.
The live tool is crechefinder.com — a free search interface for registered childcare in Dublin, built on Tusla's public register, with costs explained in plain language and inspection reports left where they belong: with the regulator.
If you've shipped something similar in housing, health, or licensing data, I'd like to hear how you handled "we know the entity exists, but we refuse to invent the quality score."
Author bio: CrecheFinder is an independent search tool for registered childcare in Dublin, Ireland. Contact: cs@crechefinder.com.












