# Companion-video guide — Open a member community and handle its first report

**Learner manuscript:** [community course](../appmint-build-a-member-community.md). **Source captures:** [capture evidence](../assets/appmint-community/evidence.json). **Suggested delivery:** one owner-focused video of 10–12 minutes, plus a separate 12–15 minute developer lab. These are production instructions and narration, not a claim that a finished video has been recorded.

## The promise to make

“Create a useful place for your members to talk, understand what the moderator sees, and check that removing a post actually removes it for members.”

Show the finished conversation first. The viewer should understand why a community helps this business before seeing the settings form. Zara’s sketch and Kofi’s response make that concrete: the community retains useful advice about a real subject.

The main character is the community manager. Keep the owner video in Studio. The developer lab changes identity explicitly between Zara, Kofi and Sam and shows API responses. Never edit an API result into a sequence that implies a nonexistent website button was clicked.

## What is available now

The course has real Studio screenshots, timestamped text evidence, nonsecret API evidence and an original concept sketch. The image post, comment, reaction, poll, connection, meeting and moderation records were actually created. Post removal and restoration were checked through the member API.

No native member footage was recorded for this course. No verified member website was available on the training site. The repaired announcement picker selected the page and a draft was saved and reopened on21 September2026. Publication and push delivery remain unverified. Group chats, badge awards and story expiry were not completed. These boundaries belong in the script whenever those features are mentioned.

Use the original [joinery sketch PNG](../assets/appmint-community/joinery-sketch.png) or its [editable SVG](../assets/appmint-community/joinery-sketch.svg) as the visual teaching prop. Do not replace it with unrelated stock footage or clips from another product.

## Owner video: scene-by-scene plan

| Scene | Approximate length | Show and do | Narration and emphasis |
| --- | --- | --- | --- |
| 1. Open on the outcome | 35 seconds | `20-post-detail.png`; briefly show the full original sketch beside it. | “Zara is preparing for a joinery session. Kofi has a recommendation. Their conversation now belongs to Cedar & Form’s Studio Circle, where another member can find it later.” |
| 2. Explain the three working areas | 40 seconds | `01-community-dashboard.png`; point to Pages, Feed and Moderation. | “Pages defines the space. Feed contains its posts. Moderation contains reports about members. You will use all three, because reviewing a report and removing content are separate actions.” |
| 3. Give the community a purpose | 80 seconds | Re-record Add Page, using `02-page-identity.png` for framing. Enter the title, slug and short description. | “Name the audience and the subject. The short description tells a newcomer what is welcome here. Keep the slug short, but remember: saving this record does not build a member website.” |
| 4. Make policy choices honestly | 70 seconds | `03-page-policies.png`; show public/open/members/flagged-only. | Explain the intended meaning of each control. Then state the tested limitation: private/approval/admin-only choices did not enforce those restrictions. Keep the warning beside these controls. |
| 5. Verify the page was saved | 35 seconds | Create, reload, return to Pages; `04-page-persisted.png`. | “The reload matters. This row is the saved page. There are no members yet; creating the page did not join the owner.” |
| 6. Read the first conversation | 80 seconds | `05-page-members.png`, then Feed and `20-post-detail.png`. | “Our training members joined through the connected API lab. Studio now shows three members. Open the question to inspect the page, attachment and engagement. The comment count is visible here; the member conversation is a separate view.” |
| 7. Recognize a report | 60 seconds | `10-pending-report.png`, then `11-report-details.png`. | “Read who reported whom, the reason and the context. Sam is a fictional member in this exercise. The report concerns Sam; the promotion is a separate post.” |
| 8. Show the misleading shortcut | 65 seconds | `12-review-actions.png`, click Remove Content in a fresh report only if re-practiced, then `13-report-reviewed.png` and `14-post-still-active.png`. | “Action Taken records the review decision. On this build, Remove Content here did not remove the post. We still need to act in Feed.” |
| 9. Flag, remove and verify | 85 seconds | `15-post-flagged.png`, `16-post-removed.png`; accompany with the real 200/404 results from the evidence files. | “Flag draws attention but leaves the post readable. Remove changes the member result: it disappears from the feed and the direct request returns Post not found.” |
| 10. Recover a mistake | 45 seconds | `17-post-restored.png`; re-record Restore → active, then Remove again. | “Restoration is available if you chose the wrong post. Check the author and page before either action. Leave the practice post removed.” |
| 11. Pick a useful next step | 50 seconds | `23-poll-result.png`, followed by the announcement form only if discussing its limitation. | “Use a poll for a choice and a conversation for the reason behind it. Add announcements or a member phone app when their full path is ready.” |

Suggested closing exercise: pause on a row marked active beside a report marked Action Taken. Ask, “Can a member still read the post?” Allow several seconds, then show the actual Feed Remove action. The answer is a practical distinction, not a terminology quiz.

## Developer video: preserve the causal sequence

Use a private API client with four environments: owner, Zara, Kofi and Sam. Environment labels may be visible; secret values must be hidden. Every request has a purpose and a readback. Do not show a wall of JSON without identifying the fields the learner needs.

1. **Authentication:** explain `orgid`, the private lab bearer and `x-client-authorization`. Keep passwords and returned tokens off screen. Explain that the owner bearer is only for this private lab; deployed members need application authentication.
2. **Join:** show the pre-membership 403, then the successful join with page ID and member email. Read the membership list; cut to Studio’s changed count.
3. **Post and media:** create the question, retain `sk`, upload the PNG as multipart field `file`, then attach the returned path and URL. Hide signed URL query parameters. Reload Post Detail and wait for the thumbnail.
4. **Reply and reaction:** change to Kofi. Show the reply’s author, the reaction’s `added` result and the toggled `removed` result. Leave it added again. Read the comments endpoint to show the actual reply rather than treating the admin count as the thread.
5. **Meeting prerequisite:** attempt the meeting before connecting and read the 403. Send Kofi’s connection request, accept as Zara, then repeat the meeting. Show the saved meeting in Studio. Explain UTC conversion beside the timestamp.
6. **Direct message:** explain that the practiced DM succeeded before connection. Community DMs are separate from CRM support chat and staff Workspace conversations.
7. **Report:** create the fictional promotion as Sam, report as Zara and retain both IDs. Demonstrate duplicate-report rejection and the blocked DM. The post remains visible until Feed Remove.
8. **Removal readback:** present the same post endpoint in three states: flagged 200, removed 404, restored 200. Explain why this check matters more than a report-action label.
9. **Poll:** show the two option IDs, single-choice setting and successful vote. The second choice returns Already voted. Open the saved poll in Studio.

Use the exact request bodies in the manuscript. Replace sample IDs with the current training records. Stop a dependent request if the previous response failed; the policy-test harness once continued with a missing page ID and created a global practice post. That mistake is documented in the evidence and should not be repeated in a polished recording.

## Visual and editing notes

- Frame the actual control before clicking it, then leave the result visible long enough to read. Avoid rapid cursor movement between sidebar icons.
- Keep the page name visible when filtering Feed. It teaches the scope of the operation.
- Explain icon-only actions with their real tooltips: **View Details**, **Flag**, **Remove** and **Restore**.
- The Feed table can overlap long text. Open Post Detail for readable content; do not silently redraw the table to conceal the product issue.
- Use a small three-record diagram when discussing reports: **Member → Report → Post**. The repaired Remove Content action removes the referenced post before saving the review; show the actual member404. Warning and ban choices explicitly record decisions only.
- Label any API split-screen “Developer lab”. It must not resemble member-app footage.
- Keep the artwork labelled as a tutorial concept sketch. It is not engineering advice or an Appmint interface screenshot.
- Wait for media to load. The first Post Detail capture had an empty image tile; the current `20-post-detail.png` was recaptured after the image loaded at its original dimensions.
- Screenshots use fictional training names and addresses. Do not substitute real customer conversations for a more populated screen.

## Retest before publishing

The script is tied to the checked build. Re-run these specific checks when recording on a newer build:

| Check | Current observation | If it changes |
| --- | --- | --- |
| Private/approval/admin-only settings | Not enforced by tested member endpoints | Replace the limitation with the newly verified access flow and show both allowed and rejected requests. |
| Member joins a second page | Explicit second-page join passed after repair | Re-test an existing member across two pages; update both this course and event auto-joining guidance. |
| Report Remove Content | Repaired action returned member404 and excluded the post from Feed | Show the actual member readback; remove the extra Feed step only if the post is now really hidden. |
| Report status after Studio review | A new report after the reviewed report succeeded | Verify the corrected status contract with the same report ID. |
| Announcement Page picker | Selected actual page, saved and reopened Draft | Record page selection, draft save, reopen and member-visible publishing separately. |
| Hashtag display | Generated record name instead of materials | Replace the defect shot after verifying the intended tag and filter. |
| Notifications | Zero in the exercised sequence | Verify actual notification delivery before narrating push alerts. |
| Native member app | Not recorded in this course | Capture an actual handset/emulator run and label the build; never relabel web/API footage. |

## Delivery checklist

Deliver the owner video and developer lab as separate chapters or files, with captions and chapters matching the course parts. Include the manuscript, the original sketch and the request examples. Preserve the report-versus-post distinction in the thumbnail/title copy: “Review a report and remove its post” is accurate; “One-click banning and automatic removal” is not supported by the tested behavior.

Keep raw captures and evidence with the production package. A finished video is ready only after its displayed actions, narration and observed results agree.

## Current local evidence —21 September2026

Use [community-workflow.md](../../application-fixes/community-workflow.md) and its fresh screenshots for the repaired report action, membership, conversation and announcement draft. The older action-label-only scenes are historical and must be rewritten before recording. Do not claim finished video footage from these still captures. Private-page/approval/posting restrictions remain open.

## 24 September acceptance update

Use the current policy/settings and hashtag stills in `../../application-fixes/assets/community-policy-local`. The old anonymous-private-read and generated-tag captures show pre-fix defects, not current behavior. Narrate private outsider404, pending join/read404, member200, admins-only post403 and pre-approval pending separately. Do not use a staff management screenshot as proof of public access. Hashtag capture04 shows the same tag across two actual posts. Warning/ban controls still record decisions only; publication, push and optional next-feature delivery are not claimed. See the live report for the course boundary.
