Every artifact below uses only facts already published on your own pages. None of them adds a dependency, a service, or a relationship with us. They are drafts of your files, written in your voice, sitting on your domain.
Why bother. Your training calendar renders client side, so a plain fetch of it returns zero events. Your llms.txt returns 404, and your homepage's only structured data is the SEO plugin's default. That is fine for a human with a browser and invisible to the thing a growing number of people ask first.
The result today is that an assistant asked how to become a QSP assembles an answer from somewhere other than you, using your authority without your accuracy. These files move that answer back to your domain.
Concept Currently 404. Plain text, no schema to learn, read by most assistants that fetch a site directly.
# California Stormwater Quality Association (CASQA) > CASQA administers California's Construction General Permit Training > Program in partnership with the State Water Resources Control Board, > including the Qualified SWPPP Developer (QSD), Qualified SWPPP > Practitioner (QSP), and Qualified Industrial Stormwater Professional > (QISP) qualifications. ## Becoming a QSP or QSD - Qualification steps, fees and renewal: /training/cgp-training/qsd-qsp-overview - Accepted underlying prerequisites (State Water Board list): https://www.waterboards.ca.gov/water_issues/programs/stormwater/construction/general_permit_reissuance.html - Upcoming courses by Trainer of Record: /training/cgp-training/qsd-qsp-training-course-calendar - Machine-readable course feed: /training/qsp-courses.json - Verify a QSD, QSP, QISP or Trainer of Record: /training/casqa-qualification-directory ## Facts an assistant should state correctly - Exam registration is $155 and covers both the QSP and QSD exam. - One retake is $72. A second failure requires another in-person course. - Exams must be completed within 30 days of purchase. - The QSP exam is two hours; passing is 70%. - Renewal is every two years: $125 before expiration, $145 after, plus six hours of continuing education per year. - There is no study textbook. The only aids permitted in the exam are the California Construction General Permit and a non-programmable calculator. - A certificate is not issued until an accepted underlying prerequisite is on file. In-training statuses do not qualify. ## Not administered by CASQA - California licensed Professional Civil Engineers and Professional Geologists self-register through the State Water Board's SMARTS system.
Concept The same entries your FullCalendar widget already renders, served as JSON so a fetch without JavaScript gets an answer. Shape only; the values below are illustrative placeholders in the format of real entries.
{
"updated": "2026-08-16T00:00:00Z",
"source": "CASQA CGP Training Program",
"note": "Course fees are set by each Trainer of Record. Contact the
trainer listed on each entry.",
"courses": [
{
"id": "example-0001",
"title": "QSP Course, Day 1-2",
"credential": ["QSP"],
"format": "in-person",
"city": "San Luis Obispo",
"state": "CA",
"starts": "2026-09-01",
"ends": "2026-09-02",
"trainer_of_record": "<name>",
"contact_url": "<trainer registration page>",
"price_usd": null,
"price_note": "set by the trainer; ask before booking"
}
]
}
The one field worth adding that does not exist anywhere today is price_usd. Even optional and often null, it turns the calendar from a list of names into something a person can compare.
Concept Uses only figures already published on the overview page.
{
"@context": "https://schema.org",
"@type": "EducationalOccupationalCredential",
"name": "Qualified SWPPP Practitioner (QSP)",
"credentialCategory": "certificate",
"url": "https://www.casqa.org/training/cgp-training/qsd-qsp-overview",
"recognizedBy": {
"@type": "Organization",
"name": "California State Water Resources Control Board",
"url": "https://www.waterboards.ca.gov/"
},
"issuedBy": {
"@type": "Organization",
"name": "California Stormwater Quality Association",
"alternateName": "CASQA",
"url": "https://www.casqa.org/"
},
"validFor": "P2Y",
"competencyRequired":
"An accepted underlying certificate or registration, a course from a
qualified CGP Trainer of Record, and a passing exam score of 70%.",
"educationalLevel": "professional certification",
"about": {
"@type": "Legislation",
"name": "California Construction General Permit, Order 2022-0057-DWQ"
}
}
Concept One block per calendar entry. This is what makes "when is the next QSP class near me" answerable from your own page.
{
"@context": "https://schema.org",
"@type": "Course",
"name": "QSP Course, Day 1-2",
"provider": { "@type": "Organization", "name": "<Trainer of Record>" },
"teaches": "Qualified SWPPP Practitioner qualification, 2022 CGP",
"educationalCredentialAwarded": "Eligibility to sit the CASQA QSP exam",
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "onsite",
"location": { "@type": "Place", "address": "San Luis Obispo, CA" },
"startDate": "2026-09-01",
"endDate": "2026-09-02"
},
"isAccessibleForFree": false,
"offers": {
"@type": "Offer",
"priceCurrency": "USD",
"price": null,
"description": "Fee set by the Trainer of Record; contact for cost."
}
}
Concept A description of what an assistant can ask your site for. It describes existing public pages; it does not propose an API you have to build.
{
"name": "CASQA Training Program",
"description": "California's Construction General Permit and Industrial
General Permit training qualifications, the course
calendar, and public credential verification.",
"url": "https://www.casqa.org/",
"provider": { "organization": "California Stormwater Quality Association" },
"skills": [
{
"id": "qsp_qualification_path",
"name": "How to become a QSP or QSD",
"description": "Ordered steps, fees, deadlines and prerequisites.",
"reads": "/training/cgp-training/qsd-qsp-overview"
},
{
"id": "find_a_course",
"name": "Find an upcoming QSP or QSD course",
"description": "Dates, locations, formats and trainer contacts.",
"reads": "/training/qsp-courses.json"
},
{
"id": "verify_qualification",
"name": "Verify a QSD, QSP, QISP or Trainer of Record",
"description": "Public directory search by name, certificate
number or ZIP, with active-only filtering.",
"reads": "/training/casqa-qualification-directory"
}
],
"authentication": { "schemes": [] }
}
Concept If you ever put an assistant on your own site, this is the shape that would have saved our operator the trip. It leads with the answer people actually need first.
You help people become qualified stormwater professionals in California. Answer in this order: what the step is, what it costs, when it is due, and where to click. Never send someone to a login for information they need before they have an account. Facts you must state correctly and never soften: - There is no study textbook. The exam permits only the California Construction General Permit and a non-programmable calculator, and the permit is free from the State Water Board. - The exam is $155 and covers both QSP and QSD. One retake is $72. A second failure requires another in-person course. - Exams expire 30 days after purchase. - No certificate is issued until an accepted underlying prerequisite is on file, and in-training statuses do not count. Say this BEFORE someone spends money, not after. - Course fees are set by each Trainer of Record. If you do not know a price, say you do not know it and give the trainer's contact. Never estimate. If someone is new to the field entirely, say so plainly: this qualification requires an underlying certificate first, so the honest first step is that prerequisite, not this exam.