# PRD — cognitive_behaviour_therapy

Evidence date: 2026-10-18.

Source: `git@bitbucket.org:overdrive/cognitive_behaviour_therapy.git` at `836e710` (`master`, 2022-10-05).

Provenance labels used below: **Documented Requirement**, **Implemented Behaviour**, **Inferred Behaviour**, **Planned Behaviour**, **Unknown**.

There is no product requirements document in the source repository. Requirements below are recovered from the HTML, the menu, the sitemap, and the download folders. Assumptions are marked.

The scan-host path in the onboarding task was not on this machine. The clone tip matches the commit named when the task was created.

## Product purpose

**Implemented Behaviour.** `index.htm` states that cognitive-behaviour-therapy.co.za promotes cognitive-behaviour therapy and rational emotive behaviour therapy in South Africa. The home page says the site is for the general public and for professionals who want to learn about CBT, find training and seminars, read questions and answers, locate a cognitive-behaviour therapist in South Africa, and follow associated links.

The organisation named in the footer is **The Centre for Cognitive-Behaviour Therapy**.

**Unknown / Requires Confirmation:** legal entity, whether the practice still trades under that name, and whether the live domain still serves this tree.

No success metric or audience-size target is written in the repository.

## Users and roles

| User | What the repository shows | Provenance |
|---|---|---|
| Public visitor | Reads pages. No login page and no session exist | **Implemented Behaviour** |
| Prospective client | Uses `contact.htm` (telephone, fax, address, email) and the "Ask a therapist" mailto | **Implemented Behaviour** |
| Training applicant | Downloads a practicum application PDF and is told to attach proof of degree or licence | **Implemented Behaviour** on `training.htm`. How the completed form is accepted is **Inferred** (email or fax), because the 2020 page does not name a submission address |
| Professional member | `ABCT.htm` invites registered mental health professionals to a bimonthly meeting and a paid annual membership | **Implemented Behaviour** as 2016 copy |
| Webmaster | `sitemap.htm` links `mailto:info@snow-media.co.za` labelled WEBMASTER | **Implemented Behaviour** |
| Editor with a CMS login | No admin, no users, no roles | Not present |

There is no authenticated role. Anyone who can open the files can read every HTML page and every document in `docs/`, `dl/`, `PDF/`, and `emailer/`.

## Information architecture

**Implemented Behaviour** in `sitemap.xml` (host `http://www.cognitive-behaviour-therapy.co.za`, home `changefreq` weekly, home `priority` 1; other URLs have no priority or change frequency):

| URL path | Page |
|---|---|
| `/` | Home (`index.htm`) |
| `/meet_the_team.htm` | Team |
| `/jaco_rossouw.htm` | Jaco Rossouw biography |
| `/bradley_drake.htm` | Bradley Drake biography |
| `/faq.htm` | FAQ |
| `/training.htm` | Local training |
| `/contact.htm` | Contact |
| `/links.htm` | Related links |
| `/references.htm` | References |
| `/ask_a_therapist.htm` | Ask a therapist |
| `/sitemap.htm` | HTML sitemap |
| `/disorders_anger.htm` | Anger |
| `/disorders_anxiety.htm` | Anxiety overview |
| `/disorders_anxiety_panic.htm` | Panic |
| `/disorders_anxiety_phobias.htm` | Specific phobias |
| `/disorders_anxiety_socialphobias.htm` | Social phobia |
| `/disorders_anxiety_obsessivecompulsive.htm` | OCD |
| `/disorders_anxiety_posttraumaticstress.htm` | PTSD |
| `/disorders_anxiety_general.htm` | GAD |

The DHTML menu (`scripts/menu_array.js`) shows Home, Meet our team, FAQ, Disorders (Anger, Anxiety), Training opportunities (local training, recently held courses), Contact us, Related links, and References. Anxiety subtype pages are not menu items. They are linked from `disorders_anxiety.htm` and from `sitemap.htm`.

Header shortcuts on the Dreamweaver template point at anchors on `faq2.htm` (what CBT is, conceptual schema, targets, irrational beliefs, finding a therapist, modern treatment). `faq2.htm` is not in `sitemap.xml`.

Other HTML files exist and are not in `sitemap.xml`. See `features.md` for which of them are linked.

## Functional requirements

### FR-001 — Public brochure pages

Requirement: A visitor can open the home page and the pages listed in `sitemap.xml` and read static HTML.

Who: Public visitor.

Trigger: HTTP GET of the file.

Inputs: The URL only.

Expected behaviour: The server returns the HTML file. The page shows the shared header, menu, footer, and that page's body. There is no server-side rendering in this repository.

Outputs: HTML encoded as `iso-8859-1` on the templated pages.

Validation: None in the repository. A missing file is the web server's 404. No custom 404 page is in the tree.

Error conditions: Unknown. No error pages were found.

Dependencies: A web server that maps the URL path to these files. Not specified in Git.

Implementation: **Implemented** as static files.

Confidence: High for the file list. Low for what the live host returns.

Evidence: `sitemap.xml`, root `*.htm`, `Templates/tmpx.dwt`.

### FR-002 — Primary navigation

Requirement: The visitor can move between the main sections from a menu that drops down for Disorders and Training.

Who: Public visitor.

Trigger: Page load runs `scripts/mmenu.js` against the menu defined in `scripts/menu_array.js`.

Inputs: None.

Expected behaviour: Top items link to `index.htm`, `meet_the_team.htm`, `faq.htm`, `contact.htm`, `links.htm`, and `references.htm`. Disorders opens Anger and Anxiety. Training opens `training.htm` and `training_recently_held_courses.htm`. Anger and Anxiety items jump to anchors on the disorder pages.

Outputs: Client-side menu markup written into the page.

Validation: None.

Error conditions: If JavaScript is disabled, the menu script does not run. A non-script fallback menu was not found. **Inferred Behaviour.**

Dependencies: `scripts/menu_array.js`, `scripts/mmenu.js`, `images/arrow_menu.jpg`.

Implementation: **Implemented**.

Confidence: High.

Evidence: `scripts/menu_array.js`.

### FR-003 — Disorder information

Requirement: The site explains anger (definition, aggression, treatment) and anxiety (what it is, disorders, CBT perspective, treatment components), and has a page each for panic, specific phobias, social phobia, OCD, PTSD, and generalised anxiety.

Who: Public visitor.

Trigger: Menu, in-page links, or the HTML sitemap.

Inputs: None.

Expected behaviour: Static educational copy. The anxiety overview links to the six subtype pages.

Outputs: HTML.

Validation: None.

Error conditions: None in code.

Dependencies: The HTML files and images under `images/` (`pic_4anger.jpg`, `pic_5anxiety.jpg`, and others).

Implementation: **Implemented**.

Confidence: High that the pages exist. The clinical copy was not treated as a testable rule.

Evidence: `disorders_anger.htm`, `disorders_anxiety.htm`, the six `disorders_anxiety_*.htm` files, `sitemap.htm`.

A depression heading image exists (`images/hd_disorders_depression.jpg`, `images/pic_6depression.jpg`). There is no `disorders_depression.htm`. Depression is named on the home page as a problem CBT is used for. A depression section page is **not implemented**.

### FR-004 — Team profiles

Requirement: The visitor can read short profiles of Jaco Rossouw and Bradley Drake, and open a longer biography for each.

Who: Public visitor.

Trigger: Menu item "Meet our team", then "Read more" links.

Inputs: None.

Expected behaviour: `meet_the_team.htm` shows both profiles. `jaco_rossouw.htm` and `bradley_drake.htm` are the longer pages. Photographs are `images/jacorossouw.jpg` and `images/bradley_drake.jpg`.

Outputs: HTML.

Validation: None.

Error conditions: None in code.

Dependencies: Those three pages and the two photographs.

Implementation: **Implemented**.

Confidence: High.

Evidence: `meet_the_team.htm`.

### FR-005 — Contact the practice

Requirement: The visitor can see a telephone number, a fax number, a street address, and an email link for the practice.

Who: Public visitor.

Trigger: Open `contact.htm`, or use the footer on a templated page.

Inputs: None on the site. Email opens the visitor's mail program.

Expected behaviour: `contact.htm` shows Jaco Rossouw and Bradley Drake, telephone `+27 (0)21 5587198`, fax `+27 (0)21 5587425`, address 67 Visagie Street, Monte Vista, 7460, South Africa, and `mailto:reception@centreforcbt.org` with subject "Web Enquiry". The same telephone, fax, site URL, and email are in the shared footer. A map image is `images/map.jpg`. The page does not embed a map service.

Outputs: HTML, then an external mail client.

Validation: None. The site does not check that the mail was sent.

Error conditions: If the visitor has no mail client, the mailto link does nothing the site can detect.

Dependencies: The visitor's mail client. No mail server configuration is in the repository.

Implementation: **Implemented** as displayed contact details. Delivery of email is outside the site.

Confidence: High for the text on the page. Whether those details are still correct is **Unknown / Requires Confirmation**. The email signatures use a different telephone. See `business-rules.md`.

Evidence: `contact.htm` footer and address block.

### FR-006 — Ask a therapist

Requirement: A visitor with a question about CBT, REBT, or a related issue can email the practice from the site. The page says one question and answer will be posted on the website per month, and that confidentiality is ensured.

Who: Public visitor. The mailto is addressed as a question to Bradley Drake and Jaco Rossouw.

Trigger: Left-column button (`images/therapist_button.gif` on the home page) or a direct open of `ask_a_therapist.htm`.

Inputs: The visitor's email. Subject preset to "Ask a Therapist - from Website".

Expected behaviour: The browser opens a mailto to `reception@centreforcbt.org`. The page shows a disclaimer: the feature and the website are educational and are not professional advice, and someone who needs care should see a general practitioner, psychologist, or psychiatrist, or use the contact page.

Outputs: Mailto link. No question is stored in the repository.

Validation: None.

Error conditions: None in code.

Dependencies: Mail client.

Implementation: **Implemented** as a mailto and a disclaimer. A monthly archive of answered questions is **not implemented** on the page. The page body after the disclaimer is empty. **Inferred Behaviour:** answers, if any were posted, are not in this tree.

Confidence: High.

Evidence: `ask_a_therapist.htm`, `index.htm`.

### FR-007 — Mailing-list request

Requirement: A visitor can ask to be added to a mailing list.

Who: Public visitor.

Trigger: "Join our mailing list" on templated pages, and "E-NEWSLETTER SIGNUP" on `sitemap.htm`.

Inputs: Email. Subject preset to "Please add me to your emailing list".

Expected behaviour: Mailto to `reception@centreforcbt.org`. No form fields, no double opt-in, and no list provider script are in the pages.

Outputs: Email in the visitor's mail client.

Validation: None.

Error conditions: None in code.

Dependencies: A person reading `reception@centreforcbt.org`. **Inferred Behaviour.**

Implementation: **Implemented** as a mailto. A mailing-list product is **not implemented** in this repository. `13January2012/mailchimp.htm` is a saved HTML mailout, not an integration.

Confidence: High.

Evidence: shared left column; `sitemap.htm`.

### FR-008 — Local training advertisement

Requirement: The site advertises primary and advanced practicums in rational emotive and cognitive behaviour therapy, associated with the Albert Ellis Institute, and offers application forms.

Who: Psychologists, psychiatrists, social workers, graduate students, and other helping professionals. The page states the audience. The site does not check it.

Trigger: Training menu, or the training banner on the home page (`images/20180904_banner.png` linking to `training.htm`).

Inputs: None until the visitor downloads a PDF.

Expected behaviour on `training.htm`:

- Dates stated as 28 February to 1 March 2020, Cape Milner Hotel, Tamboerskloof, Cape Town.
- Faculty named: Kristene Doyle, Bradley Drake, Jaco Rossouw.
- Eligibility and fees as written on the page (see `business-rules.md`).
- Links to Mailchimp-hosted PDFs for the NYC cost comparison, primary content, advanced content, and the two 2020 application forms.
- A pointer to `links.htm` for international training centres and conferences.

Outputs: HTML and outbound PDF links.

Validation: The site does not validate applications, payments, or eligibility.

Error conditions: If a Mailchimp URL is withdrawn, the link fails. Local copies of the 2020 application and content PDFs also exist under `dl/2019/12/`. The live page does not link those local copies.

Dependencies: Mailchimp gallery host; Albert Ellis Institute is named in the copy and linked elsewhere, not called as an API.

Implementation: **Implemented** as a static advertisement. Online registration and payment are **not implemented**.

Confidence: High for the page. Whether the 2020 event is still the page that should be public is **Unknown / Requires Confirmation**.

Evidence: `training.htm`, `dl/2019/12/`.

### FR-009 — Training archive

Requirement: Older courses remain reachable as separate HTML pages and as files under `docs/`, `PDF/`, and `emailer/`.

Who: Public visitor, if they have the URL or a link from another page.

Trigger: Training menu item "Recently held courses" opens `training_recently_held_courses.htm`. Other year pages are not in the current menu.

Inputs: None.

Expected behaviour: The archive page describes past workshops and links to older outlines and forms. `training_recently_held_courses.htm` links to `certificates.htm` and `albertellis.htm`.

Outputs: HTML and file downloads.

Validation: None.

Error conditions: Several older links use absolute `http://www.cognitive-behaviour-therapy.co.za/...` URLs. If the host layout changes, those links break even when the file is still in Git.

Dependencies: The document folders.

Implementation: **Implemented**. Currency of each archived page is the date in its own copy, not a status flag.

Confidence: High.

Evidence: `training_recently_held_courses.htm`, `training1.htm`, `training2.htm`, `training_backup.htm`, `training-cbt.htm`, `training-PTSD.htm`, `certificates.htm`, `world-congress-2010.htm`.

### FR-010 — Professional meeting membership

Requirement: A registered mental health professional can read about the bimonthly meeting and download a 2016 membership form. The page says the completed form and proof of payment go to the practice secretary by fax or email.

Who: The page says any registered mental health professional interested in CBT. The site does not check registration.

Trigger: Open `ABCT.htm`. It is not a menu item. `training1.htm` and `training2.htm` link a banner to it. Whether the current `training.htm` links it was not found in the home or menu.

Inputs: The downloaded form, completed outside the site.

Expected behaviour: The page describes meetings from 18:30 to 20:30 on the second Wednesday of every second month, hosted at the Cape Milner Hotel, with HPCSA CPD points stated as 2 for audience members and 4 for presenters. Annual fee stated as R800. Submit to Tracy at fax `021 5587198` or `reception@centreforcbt.org`. Downloads: `PDF/201603/2016_BMABCT_Membership_Application_Form.doc` and `PDF/201603/Meeting_Schedule_20160512.doc`.

Outputs: HTML and document links.

Validation: None on the site.

Error conditions: The fax number in this paragraph is the same digits as the site telephone, not the footer fax. See `business-rules.md`.

Dependencies: Someone at the practice processing fax or email. **Inferred Behaviour.**

Implementation: **Implemented** as a 2016 information page. No membership database.

Confidence: High for the copy. Whether the meeting still runs is **Unknown / Requires Confirmation**.

Evidence: `ABCT.htm`.

### FR-011 — Related links and references

Requirement: The visitor can open a list of external CBT-related websites and a references page.

Who: Public visitor.

Trigger: Menu.

Inputs: None.

Expected behaviour: `links.htm` lists outbound links, including the Albert Ellis Institute, Alcoholics Anonymous, the American Psychiatric Association, the APA help centre, ADAA, ABCT, the Beck Institute, Behavioral Tech, BABCP, the Centre for the Treatment and Study of Anxiety at the University of Pennsylvania, a DBT self-help site, Health24, the International Association of Cognitive Psychotherapy, the LeDoux lab, NIMH, an Oxford "Treatments That Work" series page, Panorama Medi-Clinic (`gomemory.co.za`), schema therapy, SADAG, and the Trichotillomania Learning Center. `references.htm` is a bibliography page.

Outputs: HTML. External sites open in a new window where `target="_blank"` is set.

Validation: None. Link health is not checked in the repository.

Error conditions: Third-party sites may have moved. Not tested from this investigation.

Dependencies: Those external sites.

Implementation: **Implemented**.

Confidence: High that the links are in the file. Low that each URL still resolves.

Evidence: `links.htm`, `references.htm`.

### FR-012 — Webmaster contact

Requirement: `sitemap.htm` offers a webmaster mailto.

Who: Public visitor.

Trigger: HTML sitemap, row labelled WEBMASTER.

Inputs: Email. Subject preset to "CBT Enquiry".

Expected behaviour: Mailto `info@snow-media.co.za`. The same webmaster link appears on several disorder pages (`evidence.htm` and the anxiety subtype pages include it in the left column). The main template's left column on `index.htm` does not include the webmaster link; it includes the mailing list and the sitemap.

Outputs: Mailto.

Validation: None.

Error conditions: None in code.

Dependencies: That mailbox. Whether Snow Media still maintains the site is **Unknown / Requires Confirmation**.

Implementation: **Implemented**.

Confidence: High.

Evidence: `sitemap.htm`, `evidence.htm`.

### FR-013 — Expandable page sections and image overlay

Requirement: Some pages can show and hide extra text, and can open images in an overlay.

Who: Public visitor with JavaScript.

Trigger: `js/morelinks.js` runs when an element with id `content` is available. It looks for elements with class `more` and inserts "Read more" / "Hide this Information". Lightbox scripts are included from the template.

Inputs: A click.

Expected behaviour: Class toggles in the browser. No server call.

Outputs: Changed visibility.

Validation: None.

Error conditions: `morelinks.js` depends on YUI (`YAHOO.util`). If those scripts fail to load, the control does not initialise.

Dependencies: `js/yahoo-min.js`, `js/event-min.js`, `js/dom-min.js`, `js/morelinks.js`, `css/readmore.css`. Lightbox: `js/prototype.js`, `js/scriptaculous.js`, `js/lightbox.js`, `css/lightbox.css`.

Implementation: **Implemented** as included libraries. `training.htm` contains `<div id="content">`. Not every page was checked for a `more` block.

Confidence: Medium.

Evidence: `js/morelinks.js`, template script tags in `index.htm`.

## Major workflows

### Read about CBT and the practice

1. Visitor opens the home page.
2. Header links go to `faq2.htm` anchors. The menu goes to FAQ, disorders, team, training, contact, links, or references.
3. Team page links to the two biographies.
4. Anxiety page links to the six disorder pages.

No account and no saved progress.

### Ask a question or join the mailing list

1. Visitor chooses "Ask a therapist" or "Join our mailing list".
2. The mail client opens with the reception address and a preset subject.
3. Nothing in the repository records the message or publishes an answer.

### Apply for a practicum

1. Visitor opens `training.htm`.
2. Visitor reads eligibility, the 16-person cap, and the 2019/2020 fees.
3. Visitor downloads an application PDF from a Mailchimp URL (a copy is also in `dl/2019/12/`).
4. The page requires proof of degree or licence with the form.
5. Submission and payment happen outside the website. The 2020 page does not print bank details or a return email address.

### Join the professional meeting (2016 page)

1. Visitor opens `ABCT.htm`.
2. Visitor downloads the membership form and the meeting schedule.
3. The page tells them to send the form and proof of payment to Tracy by fax or email.

## Integrations

| System | Purpose | Trigger | Direction | Auth | Response | Failure |
|---|---|---|---|---|---|---|
| Visitor mail client | Enquiries, mailing list, ask-a-therapist | Click a `mailto:` | Out of the site | None | Not visible to the site | Link does nothing useful if no mail client |
| StatCounter | Page hit counter, invisible (`sc_invisible=1`) | Page load | Browser to `www.statcounter.com` over HTTP | Project id in the page. Security string not recorded here | Counter script | If blocked, the page still shows. `noscript` leaves an empty `div` |
| Google site verification | File `google6187686757bc4227.html` contains a `google-site-verification` token line | Hosted file, not a user action | Google fetches the file | None in repo | Static file | **Unknown** whether Search Console still uses it |
| Mailchimp file gallery | 2020 practicum PDFs | Click on `training.htm` | Browser downloads from `gallery.mailchimp.com` | None in repo | PDF | Broken link if the file is removed |
| Cape Milner Hotel site | Venue link | Click | Outbound | None | Their website | Their site |
| Albert Ellis Institute and the other `links.htm` sites | Reading list | Click | Outbound | None | Their websites | Their sites |

`googlee9d76de06cf317a6.html` is an empty document titled "Untitled Document". It is not a verification token file. What it is for is **Unknown**.

No payment gateway, SMS gateway, calendar API, or identity provider is referenced.

## Constraints

- Static files only. Behaviour that needs a server (saved questions, paid registration, membership records) is a document or an email, not a feature of this codebase.
- Templated pages declare `iso-8859-1`.
- Footer copyright is hardcoded to 2011 on the pages that were read, including `training.htm`'s era of content and the 2022 email edit.
- Contact data is duplicated in every page footer, in `contact.htm`, in `ABCT.htm`, and in `signatures/`. They do not all match.
- `sitemap.xml` is a hand-maintained subset of the HTML files. It can drift from the real tree. It already omits `faq2.htm` and the training archive pages.
- Secrets: the StatCounter security string sits in client-side HTML. It is omitted from this PRD. No passwords or API keys were found.

## Planned behaviour

The home page says the site is "intended to become an interactive tool". **Inferred Behaviour** from that sentence: interaction beyond what is built was a hope at the time of writing. Nothing in Git after the 2022 import schedules that work.

The ask-a-therapist page says answers will be posted monthly. That publishing step is not in the repository. Treat the sentence as copy, not as an implemented archive.

No other planned work is documented.
