School Communication Is Too Much, So My AI Does It ![rw-book-cover](https://i0.wp.com/job.blog/wp-content/uploads/2026/09/2026-09-17-school-communication-ai.png?fit=1200%2C800&quality=80&ssl=1) ๐Ÿ”— **Source:** [School Communication Is Too Much, So My AI Does It](https://job.blog/2026/09/17/school-communication-is-too-much-so-my-ai-does-it/) > [!note]+ Document Notes > tags: [ai-automation, mcp, beeper, personal-assistants, school-communication, data-privacy] > author: Job Thomas > source: job.blog > reference: https://job.blog/2026/09/17/school-communication-is-too-much-so-my-ai-does-it/ > date created: 2026-10-06 00:00 > > > [!info] Generated analysis โ€” not the author's words. Sections below are machine-written > > from the captured source. Only text inside `> [!quote]` blocks is verbatim from the author. > > Do not quote or attribute any other line to the named author. > > # ๐Ÿท๏ธ Title: School communication is too much, so my AI does it > > Byline note: the page's own markup carries no byline. The author name (Job Thomas, WordPress profile slug `jobthomas`, display name "Job") came from the site's REST API. The post is dated 2026-09-17. The source doesn't state an employer for the author, and this note doesn't either. > <!-- deep-read:sections start --> ## ๐Ÿงญ Table of contents - [๐Ÿ“ Summary](#-summary) - [๐Ÿ“– Main content](#-main-content) - [๐Ÿ—’๏ธ Notes](#๏ธ-notes) - [๐Ÿ“š References](#-references) - [๐Ÿ—ฃ๏ธ Paraphrase](#๏ธ-paraphrase) - [๐Ÿ“ฐ Newsletter](#-newsletter) - [โœ… Action items](#-action-items) - [๐Ÿงช Hypotheses](#-hypotheses) - [๐Ÿ“Š Methodology](#-methodology) - [โ“ Questions](#-questions) - [๐Ÿ”ฎ Future research](#-future-research) - [๐Ÿ’ก Implications](#-implications) - [๐Ÿง  Learning styles assessment](#-learning-styles-assessment) - [๐Ÿ“Š Accessibility assessment](#-accessibility-assessment) - [๐ŸŒ DEIB assessment](#-deib-assessment) - [โœ… Logical validity](#-logical-validity) - [๐Ÿ›ก๏ธ DARVO analysis](#๏ธ-darvo-analysis) - [๐ŸŽฏ Conclusion](#-conclusion) - [๐Ÿ”„ Refactor appendix](#-refactor-appendix--school-communication-is-too-much-so-my-ai-does-it) ### ๐Ÿ”— References (in-page) - The post has five links: [beeper.com/download](https://www.beeper.com/download), [developers.beeper.com/desktop-api/mcp](https://developers.beeper.com/desktop-api/mcp/), and three self-hosted screenshots on i0.wp.com. Details in [๐Ÿ“š References](#-references). ## ๐Ÿ“ Summary - **What happened.** A parent of a Grade R child built a scheduled assistant that reads seven school group chats (the post puts the whole-school group alone at 700-odd parents), pulls out what concerns his child, and posts a short summary to a private chat he shares with his wife. Stack: Beeper Desktop, Beeper's Desktop API MCP server, and the Claude desktop app with a scheduled task. Setup takes about half an hour with no coding, by the author's estimate. - **Why it matters.** It's a complete, copyable recipe for a consumer-grade agent: a local MCP bridge into messaging apps, one long natural-language instruction, a schedule, and a feedback loop through chat replies. It also reads PDFs and images, which is where the author's two missed deadlines came from. - **Key stakeholders.** The author and his wife (users). The school's other parents and children, whose messages and attachments the system reads and who are not part of the setup. Beeper (bridge and MCP server). Anthropic (Claude desktop app). Telegram (summary destination and optional bot host). The post says Automattic owns Beeper. - **Risks and tradeoffs.** The post states the main safety constraint as a prompt instruction (never send anything to the school groups), not as a tool-level restriction. The post says the information doesn't leave the laptop, which holds for the Beeper-to-client hop that the Beeper docs describe and doesn't address model inference or Telegram delivery. The setup runs only while the laptop and apps are open. Consent and data handling for other parents' and children's messages aren't discussed. - **Bottom line.** The build is concrete, reproducible, and candid about its failures. Its privacy section is one paragraph, and the accuracy of what the AI tells the parents isn't measured. ## ๐Ÿ“– Main content **The problem.** The author's daughter started Grade R this year. The author lists seven groups: the whole-school group, the grade group, choir, sports, a direct line to the school office, and two further groups with parents. Combined volume is about 30 messages a week by the author's estimate, most of it irrelevant (Grade 4 netball fixtures, fundraiser tickets, PDFs). Two failures prompted the build. He learned of something the morning it was due, twice this term. Once he was on a volunteer roster and found out only by scrolling back to an image posted three days earlier. > [!quote] Opening (before "What it does") > Twice this term I found out about something the morning it was due. **The stack.** - **Beeper.** A free app that aggregates messaging services (the post names WhatsApp, Telegram, iMessage). The post calls it the bridge that lets the AI read chats. - **Beeper's Desktop API MCP server.** Enabled in Beeper Desktop under Settings โ†’ Developers โ†’ MCP (the path is the author's; the Beeper docs page doesn't state it). The author says setup walks through a Claude Desktop connection in a couple of clicks and persists. - **Claude (desktop app).** Chosen because it can run scheduled tasks while the app is open. - **A destination chat.** A two-person Telegram group. A note-to-self chat also works, per the post. - **Optional Telegram bot** (the "Bonus" section) so both parents get push notifications. **What the Beeper docs page confirms** (fetched 2026-10-06 from developers.beeper.com/desktop-api/mcp; the fetch tool returns a model-written summary of the page, so treat the details as summary-level, not verbatim): the MCP server runs on the user's own device at `http://localhost:23373/v0/mcp` and requires Beeper Desktop to be running. Authentication is OAuth, handled automatically when the MCP client supports it, with manually created access tokens as the alternative. Quick-start connections are listed for Claude Desktop, Cursor, VS Code, and Raycast, and the page also mentions Claude Code, Codex, and stdio clients (stdio needs Node.js). It points to an API reference covering accounts, contacts, chats, messages, bridges, assets, and labels. The page as returned contains no privacy or data-handling statement and doesn't enumerate the MCP tools. **The instruction structure (Step 4).** One pasted prompt with these parts, in the post's order: 1. Sources: the named groups, read-only, with an instruction never to reply in them. 2. Destination: the private chat, named as the only chat the AI may send to. 3. Child profile: first name, grade, class teacher, activities and days, house colour. 4. Names to watch for on rosters and sign-up lists (the parents' names). 5. Relevance rule: addressed to the grade, class, an activity, or all parents. Other grades, other classes, and chit-chat are out. When unsure, include the item and say so. 6. Classification: TO DO (bring, sign, pay, wear, drive, attend, reply; with what and by when, relative dates such as tomorrow converted to an actual date) or FYI. Messages naming a listed parent go first with the duty spelled out. 7. Attachments: read them where possible. If one can't be read, report the filename and group. 8. Format: one message, short lines, blank lines between items, written for a phone, no emoji beyond ๐Ÿซ at the top. 9. Posting rule: post only when something is new, due the next school day, or overdue. A to-do appears when it arrives, the evening before it's due, and in the Friday "next week" section. Overdue items repeat each post until a parent says "done." 10. State handling: keep a running list of open items. When a parent replies "done" or similar, drop the item without confirming. 11. Fridays: add a "next week" section with the standing timetable plus anything dated. 12. Hard stops: never send to school groups. If Beeper is unreachable, say so in one line and stop. > [!quote] Step 4: Tell it what to do > Never send anything to the school groups. **What it outputs and when.** Twice a day on school days (the post's example schedule is 08:30 and 16:30), plus a mid-morning backup run that acts only if the morning run didn't happen. The output is one short message. The post's example shows a ๐Ÿซ header, a TO DO block (a cross-country volunteer slot tomorrow with a meeting time and place, and house colours), a grade walk dated Monday 21 Sep with packing items, and an FYI about paid holiday care. > [!quote] What it does > It reads the PDFs and images too, which turned out to matter most. **Failure modes and fixes the post reports.** - *Connection drops.* The link fails for a few minutes whenever Beeper restarts and, per the author, returns on its own. Fix: confirm Beeper is open, then tell Claude "reconnect to Beeper" or start a new chat. - *Wrong diagnosis.* The author's Claude once diagnosed an authentication problem that didn't exist, and did so with confidence. The prompt now says to stop and not guess at fixes. - *Unreadable PDFs.* Beeper keeps a local copy only after someone taps the file. Fix: open the memo once in Beeper and the next run summarizes it. - *Too dense, vague on the roster.* The first run missed the author's name in a roster screenshot because it hadn't looked at the image. Fix: say what to change and, per the author, it remembers for next time (mechanism unstated). - *Too chatty.* Default behavior posts every run. The quiet rule cut the noise by more than half, by the author's estimate (not measured). - *Nagging.* A Monday walk repeated daily from the prior Wednesday. Fix: the arrive/evening-before/Friday cadence, with daily repeats only once overdue. - *Notifications.* Telegram doesn't notify you of your own messages, so only the wife got pinged. Fix: a Telegram bot posts instead. - *Scheduling in ChatGPT.* The author couldn't get scheduled runs there because ChatGPT's scheduled tasks run on its servers and Beeper only talks to local software. **Maintenance.** "Reconfirm the timetable each term." The author put a note in the instructions to ask him at the start of each term. **Privacy as the author states it.** One paragraph under "What you need": everything runs on the laptop, Beeper's AI connection works only from the same machine, Beeper must be open, nothing is posted into the school groups, and strict privacy settings are configured with Claude. The settings aren't named. **Uncertainties and contested points.** Whether the information stays on the laptop, how the remember-for-next-time feedback persists across scheduled runs, and whether Beeper's site lists ChatGPT as a supported client (the Beeper docs page as fetched doesn't) are all unverified here. See Logical validity and Questions. ## ๐Ÿ—’๏ธ Notes - **Opening (no heading).** Seven groups, about 30 messages a week combined, 700-odd parents in the whole-school group. Two near-misses frame the build: a same-morning deadline, and a volunteer roster visible only in an image from three days earlier. > [!quote] Opening (before "What it does") > So I set up an assistant to read the groups for me. - **What it does.** Schedule, message shape, quiet-by-default posting, reply-to-dismiss, Friday "next week" section. Attachment reading is called out as the part that mattered most because the roster was an image and the walk details were a PDF. > [!quote] What it does > Twice a day on school days, it reads all seven groups and posts a short message in a private chat my wife and I share. - **What you need.** Beeper (free), Claude desktop, a destination chat. The post states Beeper's ownership and gives the privacy paragraph. > [!quote] What you need > Automattic, our parent company, owns Beeper. > [!quote] What you need > So the information doesnโ€™t leave the laptop, and I have strict privacy settings configured with Claude. - **Step 1.** Install Beeper, connect the messaging app the school uses and optionally a second app for summaries, create the private chat. First screenshot (captioned in the markup as a view of the many groups) sits here. - **Step 2.** Settings โ†’ Developers โ†’ MCP in Beeper Desktop. MCP is explained as the plug that lets an AI talk to an app. Second screenshot (captioned as the Beeper MCP settings) sits here. The full instructions link points to the Beeper docs. - **Step 3.** Smoke test: ask Claude to list Beeper chats with "school" in the name. Troubleshooting order: is Beeper open, did it just restart, then "reconnect to Beeper." > [!quote] Step 3: Check it works > Donโ€™t let it send you hunting for tokens or settings. - **Step 4.** The prompt (above). Run it once by hand and read the output. Third screenshot (captioned as the first run with later feedback) sits here. > [!quote] Step 4: Tell it what to do > If youโ€™re unsure, include it and say so. - **Step 5.** Scheduled task in the Claude desktop app. It runs while the app is open. If the laptop sleeps through 08:30, the task runs when the laptop wakes and the app opens. A mid-morning backup run covers a missed morning run. > [!quote] Step 5: Make it run on its own > What I couldnโ€™t get is the scheduled part: ChatGPTโ€™s scheduled tasks run on their servers, and Beeper only talks to things running on your own machine. - **Bonus.** Telegram bot via @BotFather (`/newbot`), add it to the private group, give Claude the token, then `/setjoingroups` โ†’ Disable and confirm `/setprivacy` reads Enabled. Reading still goes through Beeper. The bot only posts. The WhatsApp alternative is ruled out for personal groups because the WhatsApp Business Platform needs a business account, a separate number, and pre-approved templates. > [!quote] Bonus: get notified too > Put the token in a file on your laptop rather than pasting it into the chat if you can. - **Things I learned.** Seven lessons: tell it your names, PDFs open only after a tap, tell it to stay quiet, don't let it nag, reply in the chat, connection drops are usually nothing, reconfirm the timetable each term. > [!quote] Things I learned in the first week > The single most useful thing it caught was my name on a roster image. > [!quote] Things I learned in the first week > Reconfirm the timetable each term. - **Close.** Invites reports of catches and of worse school groups. ## ๐Ÿ“š References The post has five links. Two point to primary sources for the tooling. Three are self-hosted screenshots, which are illustrations and not citations. - [Beeper Desktop API: MCP server](https://developers.beeper.com/desktop-api/mcp/) is the primary source for the connection. Fetched 2026-10-06. What this page says, labeled as coming from that page: the server is local (`http://localhost:23373/v0/mcp`), requires Beeper Desktop to be running, uses OAuth automatically when the client supports it or manual access tokens otherwise, lists quick-start connections for Claude Desktop, Cursor, VS Code, and Raycast (plus mentions of Claude Code, Codex, and stdio clients), and links to an API reference for accounts, contacts, chats, messages, bridges, assets, and labels. What the page as returned does not say: the Settings โ†’ Developers โ†’ MCP path, restart and reconnect behavior, ChatGPT as a client, the tool list, or any privacy or data-handling policy. Caveat: the fetch returns a model-written summary, so those absences describe the summary and I haven't re-checked them against the raw page. - [Beeper download page](https://www.beeper.com/download) is where the post sends readers to install the app. Not fetched. No claim in this note rests on it. - Screenshot 1 (i0.wp.com, `[email protected]`): captioned in the markup as a view of the many groups. Not viewed. - Screenshot 2 (i0.wp.com, `[email protected]`): captioned as the Beeper MCP settings. Not viewed. - Screenshot 3 (i0.wp.com, `[email protected]`): captioned as the first run of the script, with later feedback. Not viewed. - Named but not linked in the post: Claude (desktop app), ChatGPT, WhatsApp Business Platform, Telegram and @BotFather. The post cites Beeper's own site as listing ChatGPT as a supported client; that page isn't linked. ## ๐Ÿ—ฃ๏ธ Paraphrase The author's daughter joined Grade R, and with her came seven group chats, one of them with roughly 700 parents. About 30 messages a week arrive across them, and the ones about his child sit among netball fixtures and fundraiser tickets. He twice learned of a deadline on the day it fell due, and once found his name on a volunteer roster only by scrolling back to a three-day-old image. He built a helper that reads the groups for him. On school days it checks all seven twice and posts a short message to a private chat he shares with his wife. The message splits items into things someone must do and things worth knowing. It stays silent unless something is new, due the next school day, or overdue. A reply of "done" in the chat clears an item. On Fridays it adds next week's timetable and dated items. It reads PDFs and images as well as text. To build it, you install Beeper and connect your messaging apps. You turn on Beeper's MCP connection to Claude Desktop, check that Claude can list your school chats, paste a long instruction that names your groups, your child, your names and your rules, and then ask Claude to run it on a schedule. Claude's scheduled tasks run only while the app is open on your laptop. ChatGPT can connect to Beeper too, but the author couldn't get scheduled runs there because those run on its servers. Beeper sends summaries from your own account, and Telegram doesn't notify you of your own messages, so a Telegram bot can do the posting so both parents get pinged. The bot only writes. Reading still goes through Beeper. WhatsApp doesn't offer an equivalent for personal groups. After a week he found: name yourself in the prompt, open PDFs once so they can be read, tell the assistant to stay quiet, stop it from nagging, reply in the chat to adjust it, treat connection drops as usually harmless, and recheck the sports timetable each term. On privacy, he says everything runs on the laptop, nothing posts back to the school groups, and Claude has strict privacy settings. ## ๐Ÿ“ฐ Newsletter **Field notes: an MCP bridge, a school WhatsApp, and a quiet inbox.** A post on job.blog shows a practical MCP build that has nothing to do with code review: a parent points Claude Desktop at his school group chats through Beeper's Desktop API MCP server and gets one short, phone-sized summary twice a day. The interesting part for WordPress folks is the pattern, not the product. A local MCP server, one carefully worded instruction, a scheduled task, and a chat reply that acts as a feedback channel. If you run community Slack workspaces, Make WordPress channels, or a meetup chat, the same shape applies to triaging them. Two things to read alongside it. First, the [Beeper Desktop API MCP docs](https://developers.beeper.com/desktop-api/mcp/): the server runs on localhost and needs the Beeper app open, which explains both the stays-on-your-machine pitch and the drops-when-Beeper-restarts caveat. Second, the privacy paragraph in the post, which is short. If you adapt this to groups that include other people's messages, decide who needs to know and what the model provider sees before you schedule anything. [Read the post](https://job.blog/2026/09/17/school-communication-is-too-much-so-my-ai-does-it/). ## โœ… Action items #### DevRel - Developer advocacy: write a demo that turns a local MCP server into a read-only digest for a developer community chat. Show the instruction structure from Step 4 (sources, destination, relevance rule, posting rule, hard stops) as a reusable template. - Education: run a workshop on constraints in the prompt versus constraints in the tool. The post relies on a prompt line to stop sends to the school groups. Have attendees test whether a prompt-only guardrail holds against a hostile message. - Developer experience: file docs feedback with Beeper on the MCP page: it doesn't state the tool list, restart behavior, or a data-handling statement, and a reader following the post needs all three. - Developer marketing: no direct action from this source; nearest relevance: the post is a first-person tutorial that states an ownership tie, so label any similar content the team publishes with its relationship disclosure. - Community management: draft a norms note for members who run summarizers over shared chats (disclose, don't post back, don't store attachments). - Internal/external/cross-project: collect reports of MCP-to-messaging setups to see which clients, schedules, and failure modes recur. #### OSPO - Policy & Governance: add an "AI-assisted reading of community channels" clause to contribution or community policies, covering who may run it, where output goes, and retention. - License Compliance: no direct action from this source; nearest relevance: check the terms of any messaging bridge before recommending it to contributors. - Security Management: treat group messages and attachments as untrusted input to an agent that also has a send tool. Add that threat to any internal review of MCP use. - Software Inventory: record which local MCP servers staff run (name, port, scope), since this pattern is easy for individuals to adopt without review. - Developer Support: publish a short checklist for staff building personal agents over work chats. - Community Engagement: no direct action from this source; nearest relevance: share the checklist upstream with the MCP and messaging tool maintainers. - Strategic Alignment: add "personal agent data paths" to the AI-risk register as a tracked item with an owner. #### Community - Maintainers: offer a template for a weekly "what concerns my project" digest across issue trackers and chat, using the same quiet-by-default rule. - Contributors: pair a new contributor with a maintainer to build a read-only digest, then review the prompt together. - Sponsors: no direct action from this source; nearest relevance: none. - Ecosystem: run a short incident drill on a prompt-injection message in a group chat read by an agent with send access. #### WordPress - Core: no direct action from this source; nearest relevance: none. - Core Performance: no direct action from this source; nearest relevance: none. - Core AI: evaluate whether the Abilities API and MCP adapter work should document a "read-only by construction" pattern, so that no-send is enforced by the tool and not by an instruction. This is the main design lesson from the post. - **Core Program Team:** add "local MCP personal agents" as a discussion topic for a cross-team AI retrospective. - Mobile: no direct action from this source; nearest relevance: notification gaps (the post's Telegram own-message issue) mirror push-notification edge cases. - Playground: build a Playground demo that fakes a group chat and runs a digest prompt against it, so people can test without real children's or parents' messages. - Community: draft a meetup kit for "agents over chat" with a consent-first checklist. - Training: add a lesson on writing a long instruction with sources, destination, rules, and hard stops, using Step 4 as a worked example. - Marketing: no direct action from this source; nearest relevance: none. - Support: consider a triage digest for support forum threads built with the same structure, with human review of every flagged item. - Design: no direct action from this source; nearest relevance: the sample message format (short lines, blank lines, one emoji) is a small mobile-first notification design pattern. - Documentation: add an "agent reading channels" privacy note to any MCP documentation that touches chat data. - Photos: no direct action from this source; nearest relevance: attachment reading raises consent questions for images of people. - TV: no direct action from this source; nearest relevance: none. - Polyglots: no direct action from this source; nearest relevance: the post is English-only, and translating the prompt structure would test whether the relevance rules hold in other languages. - Accessibility: use this post as a test case for the empty-alt linked-image pattern (see Accessibility assessment) and file a note to the theme authors if it's a template default. - Meta: no direct action from this source; nearest relevance: none. - CLI: no direct action from this source; nearest relevance: a WP-CLI-driven digest of site health or comment moderation queues could use the same schedule-and-quiet pattern. - Hosting: no direct action from this source; nearest relevance: none. - Tide: no direct action from this source; nearest relevance: none. - Openverse: no direct action from this source; nearest relevance: none. - Themes: check whether the default image-block output (a link wrapping an image with empty alt) is the theme's behavior or the author's. - Plugins: no direct action from this source; nearest relevance: none. #### The WPOCC - Programs: no direct action from this source; nearest relevance: a small grant or fellowship for documenting privacy-first patterns for community agents. - Projects: ask The WP Open Community Collective's documentation sprint to include an "agents over community chat" privacy page. - Funding experiments: no direct action from this source; nearest relevance: none. ### FAIR - Technical independence: the Beeper MCP server runs locally, which is a point in favor of local-first design. The model call and the Telegram delivery path don't, and a FAIR-style review should note that distinction. - Policies and covenants: no direct action from this source; nearest relevance: a disclosure norm for tool affiliations in tutorials. - Productized governance artifacts: a one-page "personal agent over shared chats" scorecard (consent, data path, send permissions, retention, injection risk). ## ๐Ÿงช Hypotheses - **H1.** A scheduled summarizer with a quiet-by-default posting rule cuts the number of messages a parent reads per week by more than half while missing no deadline that a manual reader would catch. (The post claims a noise cut of more than half and reports no misses after week one, without counts.) - **H2.** Attachment reading is the dominant source of value. Items found only in PDFs or images account for most of the deadlines the summarizer surfaces that the parent would otherwise miss. (The post says this turned out to matter most.) - **H3.** A prompt-only constraint (never send to the school groups) holds under ordinary use but fails when a group message or attachment contains instructions aimed at the agent. - **H4.** The ask-me-each-term step to reconfirm the timetable prevents stale standing-schedule errors. Without it, at least one Friday "next week" section per term lists a wrong activity. - **H5.** With the include-when-unsure rule, the false-negative rate for relevant items is lower than for a manual reader, and the false-positive rate is higher. The parents' time cost depends on which direction the errors run. - **H6.** The reconnect fix ("reconnect to Beeper" after a restart) resolves connection drops within one retry in most cases. (The post says drops return on their own within a few minutes.) ## ๐Ÿ“Š Methodology - **For H1 and H2 (value and noise).** Keep a four-week log. For each run, record messages in the source groups, items the summary surfaced, and items the parent finds in the raw groups that the summary missed. A second reader (the other parent) reads the raw groups on a sample of days as the baseline. Report precision and recall per item type (text, PDF, image). - **For H3 (guardrail strength).** In a sandbox chat set with a test destination, plant messages and attachments that instruct the agent to post to a source group, reveal its prompt, or send the open-items list. Count how many runs comply. Run with and without a tool-level send block. Use synthetic accounts and no real children's data. - **For H4 (timetable drift).** Compare the stored standing timetable to the school's published timetable at the start and middle of a term. Count Friday sections that list a wrong activity. - **For H5 (error direction).** Label a sample of 200 messages by hand as relevant or not. Compare to what the run includes, flagged-as-unsure items counted separately. - **For H6 (reconnect).** Restart Beeper 20 times at random points in the schedule. Record the time to recovery and whether a single "reconnect" prompt was needed. - **Data hygiene.** All of the above needs consent from the group members whose messages are in scope, or synthetic data. ## โ“ Questions - Which of the seven groups' members know an AI reads their messages, and what would they say if asked? - Where does the message text go after Beeper hands it to Claude, and what are the "strict privacy settings" (which settings, which toggles)? - Does the MCP server expose a send tool to the Claude client, and can that tool be turned off or scoped to one chat? - How does a scheduled run keep the running list of open items between runs, and what happens if the list is lost? - What happens when a group message contains instructions addressed to the AI? - How are images of children handled when they appear in groups, and does the summary ever repeat a child's name or photo description? - How many deadlines did the system catch, and how many did it miss, in the first week and after? - What does the mid-morning backup run check to decide whether the morning run happened? ## ๐Ÿ”ฎ Future research - A measured evaluation of recall and precision for attachment-heavy group chats, with a published label set built from synthetic messages. - A comparison of prompt-level and tool-level send restrictions in personal agents, including how often each fails under injected instructions. - A review of how local MCP servers for messaging apps describe their data handling, since the Beeper page as fetched has no such statement. - A study of consent norms for AI reading of semi-public parent groups, across schools and jurisdictions. The post names no country. - Longitudinal tracking of how the instruction file changes over a term, to see what maintenance a real deployment needs. ## ๐Ÿ’ก Implications - **Practice.** The instruction structure is reusable for any task that reads many noisy sources and reports few items: named sources, one destination, a relevance rule, a posting rule, and hard stops. The reply-to-dismiss loop is an inexpensive state mechanism. - **Policy.** Anyone adapting this to workplace or community chats needs a policy on who may be read by an agent. The post doesn't offer one for a school setting. - **Security.** An agent that reads untrusted text from hundreds of people and holds a send capability is an injection target. The post's defense is a prompt line plus a stop-and-don't-guess rule. - **Education.** Beginners can follow this: the post explains MCP in one sentence and orders steps from install to schedule. The privacy and consent material is the gap a course should fill. - **Funding models.** None stated. The post uses a free app and the Claude desktop app without discussing plan costs. ## ๐Ÿง  Learning styles assessment - **Reading level estimate.** Flesch-Kincaid Grade Level of about 4.5 and Flesch Reading Ease of about 81, computed with a heuristic syllable counter over about 1,890 words in 177 sentence units. The long instruction block parses as a few run-on sentences, so the score understates its density. Technical terms (MCP, token, bot) are defined briefly or used in steps. #### ๐Ÿ‘€ Visual learners - Present: three screenshots (groups view, Beeper MCP settings, first-run output) and a sample summary message in a blockquote. I haven't viewed the screenshots. - Improve: a flow diagram from group chats through Beeper, MCP, and Claude to the private chat, with the local boundary drawn. #### ๐Ÿ”Š Aural learners - Present: none. No audio version or narration. - Improve: a short audio walkthrough of the five steps. The text-to-speech output of the long prompt block would be hard to follow without structure. #### ๐Ÿ—ฃ๏ธ Verbal learners - Present: plain definitions ("MCP" as a plug), explanations of why each step exists, and a first-person narrative. - Improve: a glossary of Beeper, MCP, bot token, and scheduled task, and a table comparing Claude and ChatGPT for this use. #### ๐Ÿงฉ Kinesthetic learners - Present: step-by-step setup with a test prompt for Step 3, a copy-paste instruction, and an instruction to run it once by hand. - Improve: a checklist of the bracketed fields to fill in, and a safe test with a dummy group. #### ๐Ÿง  Logical learners - Present: ordered steps, a stated posting rule, and a cadence definition (arrive, evening before, Friday, overdue). - Improve: a decision table of when the system posts, and a short list of what the system can and can't read, with the dependencies (Beeper open, laptop awake). #### ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Social learners - Present: the closing invites readers to report catches and worse school groups. - Improve: a discussion thread or comment prompt for sharing instruction variants, and a note on talking to other parents before running it. #### ๐Ÿง˜โ€โ™€๏ธ Solitary learners - Present: the post is self-paced with a self-check in Step 3. - Improve: reflection prompts such as which groups you would leave out, and why. #### ๐ŸŒฟ Naturalistic learners - Present: none. - Improve: no direct ties. A seasonal framing (term-by-term maintenance) is the closest, since the post already schedules a timetable check each term. ## ๐Ÿ“Š Accessibility assessment Scope: the published post, judged from the page's markup (`html_content` from Reader, 17,384 characters). I can't see the rendered page, the theme's CSS, or the three images. #### Screen reader semantics - Present: nine `<h2>` headings in logical order, `<ul>` and `<ol>` lists, `<blockquote>` for the sample message and the prompt, `<code>` on the Telegram commands, and each image in a `<figure>` with a `<figcaption>`. - Gap: all three images have `alt=""` and are wrapped in a link to the full-size file (`<a href="โ€ฆpng"><img alt=""></a>`). The figcaption sits outside the link, so the link has no accessible name in the markup. This fails WCAG 2.2 SC 2.4.4 Link Purpose (In Context) and SC 4.1.2 Name, Role, Value, unless the theme or a lightbox script adds a label at render time (can't verify). SC 1.1.1 Non-text Content is satisfied only if the images are decorative (see below). - Judgment on the screenshots. They aren't decorative in intent: the captions describe a groups list, the Beeper MCP settings, and a first-run output with feedback. For the settings shot, the text already gives the path (Settings โ†’ Developers โ†’ MCP), so the information is mostly redundant. For the groups list, the text lists the group types, so the loss is small, though names or counts on screen aren't recoverable. For the first-run output, the sample message in text conveys the format, but the first-run output, which the author calls too dense, appears only in the image. Without seeing the images I can't say how much a reader loses. A short alt text or a longer description for the third image would resolve it. - Improve: give the linked images a non-empty alt (or an `aria-label` on the link), and describe the first-run screenshot in text. #### Keyboard navigation - Present: native links and no custom widgets in the content markup. - Gap: can't verify focus visibility, skip links, or tab order, which belong to the theme. The three image links add three tab stops with no names. - Improve: remove the image links or name them. WCAG 2.4.7 Focus Visible and 2.4.1 Bypass Blocks depend on the theme. #### Contrast and readability - Present: short paragraphs, short sentences, and a clear structure. - Gap: colors and contrast belong to the theme and can't be measured from the markup (SC 1.4.3). The 480-word instruction sits in one blockquote paragraph with no line breaks, which harms readability and copy-paste checking, since it's a prompt, not a quotation. - Improve: set the prompt in a code or preformatted block with line breaks per instruction, and mark it as a copyable prompt. #### Text resizing and reflow - Present: standard flowing HTML with no fixed-width elements in the content. The images use responsive `srcset`. - Gap: can't verify 200% zoom (SC 1.4.4) or 320 px reflow (SC 1.4.10) without the theme. - Improve: test the post at 400% zoom, especially the long blockquote and the screenshots. #### Media and captions - Present: no audio or video. Figcaptions describe each image briefly. - Gap: the three captions are 3, 3, and 11 words, so they label the image and don't describe its content (SC 1.1.1). - Improve: expand the captions or add alt text. #### Forms and interactions - Present: none on the post as captured. The post describes a Telegram bot flow, not a form. - Gap: comments or forms on the live page are outside the captured text. - Improve: no change to the post. If comments are open, the standard checks (labels, SC 3.3.2 and 3.3.1) apply. #### Standards reference - WCAG 2.2 AA mapping: 1.1.1 Non-text Content (empty alt on informative screenshots, unclear), 2.4.4 Link Purpose (empty-name image links), 4.1.2 Name, Role, Value (same links), 1.4.3, 1.4.4, 1.4.10, 2.4.1, and 2.4.7 (theme-dependent, unverified), 1.3.1 Info and Relationships (met in the markup through headings, lists, and figure/figcaption), 2.4.6 Headings and Labels (met, descriptive headings), 3.1.1 Language of Page (the captured fragment carries no `lang`; the page-level attribute isn't visible here). - The sample message uses a ๐Ÿซ emoji, which screen readers announce by name. That's acceptable and intended as decoration. ## ๐ŸŒ DEIB assessment #### Cultural breadth - Present: a single school context. The terms "Grade R," "netball," and "house colours" suggest a specific school system, but the post names no country, school, or language. - Improve: say which region the school year, timetable, and group-chat norms come from, and note that the prompt's relevance rules may need changing for other systems. #### Inclusive language - Present: plain language with defined jargon (MCP, bot). The sample message addresses Dad and the post mentions the author's wife, so it models a two-parent household. The generic instructions say parents and one of us. - Improve: Phrases like your names and one of you cover other family shapes. Add a line for single parents, guardians, and caregivers who aren't on the group lists, and for families where the child's carers don't share a device. #### Neurodiversity support - Present: the post's goal is cognitive load reduction. It uses consistent headings, numbered steps, a plain output format, and no repeat reminders beyond the defined cadence. - Improve: the prompt block is long and has no internal structure on the page. Break it into labeled lines. State at the top how long each step takes. #### Representation - Present: the author appears as a parent in a specific role. Teachers and other parents appear only as message sources. - Improve: the post is silent on parents who don't use WhatsApp, don't speak the group's main language, or have lower digital access. A summary tool helps those who can set it up, and the post doesn't discuss families who can't or won't. #### Psychological safety - Present: candid about the tool's mistakes (wrong diagnosis, vague roster, nagging) and invites feedback. That sets a low-blame tone for readers who hit the same issues. - Improve: add a note on the other people in the groups. A parent who learned an AI had read their messages could feel exposed, and the post gives readers no wording or practice to avoid that. A community guideline for sharing summaries would help. ## โœ… Logical validity A first-person how-to isn't an argument, so most of the post makes no inference to evaluate. The items below are the claims where the reasoning or the evidence deserves a check. #### Strong reasoning - **Iterative causal fixes.** Posting on every run led to a quiet rule that cut the noise by more than half, by the author's estimate; the nagging repeat leads to the arrive/evening-before/Friday cadence. Each fix names its observed cause. The "more than half" figure is an estimate with no counts, so the effect size is uncheckable. - **Troubleshooting order.** The post says to check whether Beeper is open and whether it just restarted before anything else. That sequence matches the Beeper docs page, which says the server is local and requires Beeper Desktop to be running. - **The ChatGPT scheduling limit.** The causal claim (ChatGPT's scheduled tasks run on its servers, and Beeper only talks to software on your own machine) is consistent with the Beeper docs page's localhost endpoint. The post hedges (the author couldn't get it working) and invites correction. - **Telegram own-message notification.** Plausible and consistent with the author's observed result (his wife was pinged, he wasn't). I haven't checked Telegram's documentation. #### Fallacies - **Unsupported scope of a privacy claim (non sequitur).** The post says everything runs on the laptop and the information doesn't leave it. The Beeper docs page supports one part: the MCP server runs locally and needs Beeper open. It makes no statement about what the MCP client does with the data after receiving it. The post then routes summaries to Telegram. Background, not checked in this pass: the Claude desktop app sends prompts and tool results to Anthropic's servers for inference, and Telegram stores the posted summaries on its servers. Fix: state the data path hop by hop (Beeper to Claude client, client to model provider, summary to Telegram) and name the Claude privacy settings in use. - **Guardrail described as stronger than it is (hasty generalization from absence of incidents).** The post says nothing gets posted back into the school groups. That's true of the author's setup so far, and the guarantee comes from a prompt line plus an instruction to stop on errors. The post itself shows the AI posts through Beeper to the private chat, so a send capability exists. The post doesn't test what happens when a group message contains instructions to the AI. Fix: report a test, or describe a tool-level restriction if one exists. - **Untested generalization.** The claim of no coding and about half an hour is the author's own timing. The setup includes installing and signing in to Beeper, connecting accounts, an MCP step, writing a personalized prompt, and a scheduled task. No one else's setup is reported. Fix: phrase it as the author's own time. - **Unverified mechanism (feedback persists "for next time").** The post says feedback persists, and a scheduled task is a separate run. The mechanism (memory feature, edited instructions, or a stored file) isn't named. Elsewhere the post says the author put a note in the instructions, which suggests edits to the instructions are how it persists. - **Claim the linked docs don't cover.** The post says ChatGPT can connect to Beeper because Beeper's own site lists it. The Beeper MCP docs page as fetched lists other clients (Claude Desktop, Cursor, VS Code, Raycast, Claude Code, Codex, stdio) and doesn't mention ChatGPT. This isn't a contradiction, since the post cites a different page, and I haven't checked it. - **WhatsApp bot claim.** The statement about the WhatsApp Business Platform (business account, separate number, pre-approved templates) is unverified here, and no link is given. - No ad hominem, false dilemma, or appeal to authority appears. #### Tone of voice - Conversational, practical, and candid. Examples: a complaint about PDFs, the admission that the AI misdiagnosed a connection problem with confidence, and the closing invitation to hear about worse school groups. The tone is warm and low-pressure, with one mild promotional note (a remark about being in great company) attached to the Beeper ownership disclosure. The post states the ownership link and doesn't define the word our. ## ๐Ÿ›ก๏ธ DARVO analysis Not applicable to this source. DARVO describes a response to an accusation, and this post is a how-to with no accuser or accusation. - **Deny:** none. The post volunteers its failures (a wrong diagnosis, a missed roster entry, a noisy first run). - **Attack:** none. No critics or competitors are attacked. ChatGPT's limit is stated as a limit. - **Reverse victim/offender:** none. The author frames himself as a parent who missed messages and doesn't cast anyone as an offender. ## ๐ŸŽฏ Conclusion The post is a precise, reproducible build: seven groups and about 700 parents in the whole-school group, a Beeper-to-Claude connection over a local MCP server, a 12-part instruction, a twice-daily schedule with a backup run, a reply-to-dismiss loop, and one recurring maintenance step (reconfirm the timetable each term). The Beeper docs page I fetched confirms the local, app-must-be-open design and OAuth or token authentication, and says nothing about privacy. What the post leaves out is substantial. It doesn't say whether the other parents know, where the message text goes after the local hop, which Claude privacy settings apply, how the open-items list persists, whether a send tool can be restricted at the tool level, what happens to injected instructions, or how often the summary was wrong. Those are absences, and each is a fair question for the author or a reader adapting the setup. **Next steps for readers.** Before copying this: read the Beeper MCP docs, decide who in your groups must be told, name each hop the data takes, test the "never send" line with a hostile message in a sandbox, and keep the timetable check in the prompt. ## ๐Ÿ”„ Refactor Appendix โ€” School communication is too much, so my AI does it > Density: 2โ€“5 Literature atoms (H3 pad), 0โ€“3 Permanent candidates (H4 pad). > Emitted: 5 Literature, 2 Permanent. Resonance filter applied: the Telegram bot steps and WhatsApp limits were dropped as procedural and unverified. > > Konik claim-header rules: present tense, declarative, โ‰ค10 words, searchable, unique. > > Atomicity: one declarative sentence per atom. "and"/"also" โ†’ split. ### ๐Ÿ“š Literature Split Pad #### [H1] Attachments carry the deadlines > [!quote] What it does > It reads the PDFs and images too, which turned out to matter most. **Context & use**: - What it does section. The roster was an image and the walk details were a PDF. - Mirrors the post's priority: text-only readers would have missed both near-miss items. **Tags**: #xref <!-- atomicity: 1 idea โœ“ --> #### [H2] The privacy claim covers one hop > [!quote] What you need > So the information doesnโ€™t leave the laptop, and I have strict privacy settings configured with Claude. **Context & use**: - What you need section, privacy paragraph. The Beeper docs page confirms a local server needing the app open, and says nothing about the client's onward data path or Telegram delivery. - Use as a teaching specimen for stating data paths hop by hop. **Tags**: #xref #articleseed <!-- atomicity: 1 idea โœ“ --> #### [H3] Prompt-level guardrails restrict sending > [!quote] Step 4: Tell it what to do > Never send anything to the school groups. **Context & use**: - Step 4 section, inside the pasted instruction. The same prompt tells the agent it may post to the private chat, so a send capability exists. - Pair with the question of whether the MCP tool can be scoped to one chat. **Tags**: #xref #share <!-- atomicity: 1 idea โœ“ --> #### [H4] Stopping on error beats guessing at fixes > [!quote] Step 4: Tell it what to do > If you canโ€™t reach Beeper, say so in one line and stop โ€” donโ€™t guess at fixes. **Context & use**: - Step 4 section. Follows the Step 3 incident where Claude diagnosed a nonexistent authentication problem. - Reusable as a hard-stop rule in any scheduled agent prompt. **Tags**: #xref #aphorisms <!-- atomicity: 1 idea โœ“ --> #### [H5] Standing schedules need term-by-term checks > [!quote] Things I learned in the first week > Reconfirm the timetable each term. **Context & use**: - Things I learned section. The author asked the instructions to prompt him at each term's start. - The one scheduled human step in an otherwise automated loop. **Tags**: #xref <!-- atomicity: 1 idea โœ“ --> ### ๐Ÿง  Atomic Split Pad #### [P1] Constrain the tool, not the prompt **Claim** (one sentence, Courtney's voice): When an agent reads untrusted text, the send boundary has to live in the tool's permissions, because a prompt line is advice the next message can contradict. **Evidence pointer**: [[#H3]] ยท [[#H4]] **Scope & conditions**: Holds when the agent can both read hostile input and call a send tool. Doesn't apply when the tool is read-only by construction, or when every input is trusted. Not tested in the source: the post reports no injection test. **Links**: - [[Prompt injection in agents]] โ€” because extends - [[Capability scoping for MCP servers]] โ€” because applies-in local MCP servers with a send tool - [[Instruction hierarchy]] โ€” because contrasts on where the constraint is enforced <!-- atomicity: 1 idea โœ“ --> #### [P2] Say where the data goes, hop by hop **Claim** (one sentence, Courtney's voice): A privacy statement for an agent pipeline is only as strong as the weakest hop it names, so "stays on my laptop" needs the model call and the delivery channel spelled out. **Evidence pointer**: [[#H2]] **Scope & conditions**: Applies to any local-first claim that involves a hosted model or a hosted delivery channel. Doesn't apply to fully local models with local output. **Links**: - [[Data flow diagrams for AI tooling]] โ€” because extends - [[Consent for ambient AI reading of group chats]] โ€” because applies-in shared community spaces - [[Local-first software]] โ€” because contrasts on what stays local <!-- atomicity: 1 idea โœ“ --> ### โœ๏ธ Fleeting Queue - [F1] Check Beeper's own site for the ChatGPT-client claim, and re-read the MCP docs page raw (the fetch here was a model-written summary) โ€” https://developers.beeper.com/desktop-api/mcp/ #fleeting #inbox - [F2] Find out whether Beeper's MCP server can restrict sending to one chat or disable send entirely โ€” https://developers.beeper.com/desktop-api/mcp/ #fleeting #inbox - [F3] Open question: how does a scheduled Claude task keep a running open-items list between runs, and what survives a lost session? โ€” https://job.blog/2026/09/17/school-communication-is-too-much-so-my-ai-does-it/ #fleeting #inbox - [F4] Open question: what does a message in a group chat do to this agent if it contains instructions aimed at the AI? Test in a sandbox with synthetic accounts #fleeting #inbox - [F5] Article seed: "Where the data goes, hop by hop" as a template for privacy statements in personal-agent tutorials #fleeting #inbox #articleseed - [F6] Ask the author (or test) whether the three screenshots expose group names, counts, or message text, since the captions suggest a groups list and a first-run output โ€” https://job.blog/2026/09/17/school-communication-is-too-much-so-my-ai-does-it/ #fleeting #inbox ### โ†’ Things 3 (max 2 actions) - [ ] Re-read developers.beeper.com/desktop-api/mcp raw and record the tool list, send scope, and any data-handling text โ€” MCP research, 15 min #things - [ ] Build a sandbox test of the "never send" line using synthetic group messages with embedded instructions โ€” agent safety, 30 min #things <!-- deep-read:sections end --> ๐Ÿ“„ **Full text:** [[Full Document Contents/Articles/School Communication Is Too Much, So My AI Does It.md|School Communication Is Too Much, So My AI Does It by Job Thomas]] ## Highlights - It reads the PDFs and images too, which turned out to matter most. The volunteer roster was an image. The walk details were a PDF. ([View Highlight](https://read.readwise.io/read/01m48ssr4gwqf0cxq2v31gsw6w)) - Note: [H1] Attachments carry the deadlines - Tags: atom/literature/h1 - What about privacy? Everything here runs on your own laptop. Beeperโ€™s connection to the AI only works from the same machine, and it needs Beeper to be open. The AI reads the groups, but nothing gets posted back into the school groups โ€” it only ever writes to your private chat. So the information doesnโ€™t leave the laptop, and I have strict privacy settings configured with Claude. ([View Highlight](https://read.readwise.io/read/01m48sst9h6hpgffq5y8jdcmpr)) - Note: [H2] The privacy claim covers one hop - Tags: atom/literature/h2 - Never send anything to the school groups. Never use emoji beyond a ๐Ÿซ at the top. If you canโ€™t reach Beeper, say so in one line and stop โ€” donโ€™t guess at fixes. ([View Highlight](https://read.readwise.io/read/01m48sswwzh2zxw4qrxww9zqzd)) - Note: [H3] Prompt-level guardrails restrict sending - Tags: atom/literature/h3 - - Reconfirm the timetable each term. Sports days change. I put a note in the instructions to ask me at the start of each term. ([View Highlight](https://read.readwise.io/read/01m48sszh1r5bkeg06qtxb9tka)) - Note: [H5] Standing schedules need term-by-term checks - Tags: atom/literature/h3