Concept drafts · yours to paste, change, or throw away

Six files that let a machine answer "how do I become a QSP"

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.

1 · The front door for assistants/llms.txt

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.
2 · The course calendar, as data/training/qsp-courses.json

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.

3 · The credential, describedJSON-LD, any qualification page

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"
  }
}
4 · One course, describedJSON-LD, the calendar page

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."
  }
}
5 · The agent card/.well-known/agent-card.json

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": [] }
}
6 · The concierge linesystem prompt, one paragraph

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.
Read this before you paste anything
Provisioned by EcoWealth · Digital Provisioning Protocol · provenance‑sealed