A public kindness engine for New York City, an early public experiment from psyoptin.com. The engine finds and prepares; people bring judgment and action.
The engine is built to do more good next month than this month, on its own, inside its written rules. Every night the Foundry measures the week, switches on the levers it may switch on itself, drafts the moves that need a person, tells the search engines what changed, and once a week asks the Voice for new ideas. Everything it can do is written below before it does it.
Deeds = things done outward or kept true: posts, reposts, archives, pairs, link corrections, button presses. Never counted: dormant lines, failures, the engine talking about itself.
auto: the engine switches it on itself when the trigger is true. draft: it writes the case for the desk; a person decides and writes the job. owner: needs an account, a key or money; it waits and says so.
| Move | Kind | Mode | Status | Why · what it does · how it is measured |
|---|---|---|---|---|
| Scout for organizations asking for volunteers | deeds | auto | live since 2026-09-22 | an organization asking for hands is the cleanest repost there is, and it feeds the Volunteer Corps real orders. It would: adds a 'volunteers needed' search to the Scout; reposts up to 2 a day; lists them as orders. Measure: volunteers-needed posts reposted per week. |
| Scout for free food and community fridges | deeds | auto | live since 2026-09-22 | food information passed on the same day is a deed with no downside. It would: adds a 'free food' search to the Scout and lists finds as orders (share it) for Search & Rescue. Measure: free-food posts surfaced per week. |
| Repost up to 5 lost-animal notices a day (from 3) | deeds | auto | live since 2026-09-22 | reposting lost animals is the most useful thing the account does; the cap was a first-week caution. It would: lost-animal reposts 3 → 5 a day, still only posts under 72 hours old. Measure: lost-animal reposts per week, and none failing. |
| Post the weekly report every Monday | reach | auto | switches on tonight | one honest weekly summary is how people who do not visit daily learn what happened. It would: adds one Monday post linking the weekly report. Measure: Monday report posts sent. |
| Tell search engines about the day's pages (sitemap + IndexNow) | reach | auto | live since 2026-09-22 | being known starts with being findable; this is free and asks nothing of anyone. It would: publishes /sitemap.xml and /robots.txt and pings IndexNow nightly with the pages that changed. Measure: pages submitted per night, accepted. |
| Offer an embeddable 'today in your borough' widget | reach | auto | live since 2026-09-22 | a community site that shows the day's real ways to help spreads the deeds without a single extra post. It would: serves /embed/today.js; any site can paste one line. Measure: widget loads per week (counted, no tracking of who). |
| The Keeper checks 60 links a run (from 30) | deeds | auto | switches on tonight | a bigger directory needs more checking; still only 404/410 removes anything. It would: link checks per run 30 → 60. Measure: corrections recorded per week. |
| Translate the ways-to-help board into Spanish and Chinese | deeds | draft | not yet | half the city does not read English first; the listings are already real, only the words are missing. It would: a reviewed translation per language (Cloudflare's free models), shown beside the English. Measure: translated listings per week; corrections from reviewers. |
| An organization request inbox | sources | draft | not yet | requested work beats discovered work; one concrete need per organization, updated by them. It would: a form for organizations; needs become orders; 'still open?' every 14 days. Measure: open requests, and how many were reported done. |
| Add a neighborhood paper as a source | sources | draft | drafted for the desk | more local stories means more good news to pass on and a truer tone reading. It would: one more RSS source, tagged to its borough. Measure: stories per day from the new source. |
| A second city pack | reach | draft | not yet | the engine is a pattern, not a place; a second city proves it. It would: a city pack (sources, boroughs, weather zones) behind /city/<name>. Measure: deeds per day in the second city. |
| Open a Telegram channel | reach | owner | waiting on the owner | a channel is a daily digest people opt into; nothing is pushed at anyone. It would: the daily set goes to the channel. Measure: subscribers, posts per week. Needs: a Telegram bot token and channel, connected with CONNECT-TELEGRAM on the Desktop. |
| Use @auraengine.io as the Bluesky handle | reach | owner | waiting on the owner | a domain handle is a trust mark that costs nothing. It would: the account's handle becomes the site. Measure: done or not. Needs: in Bluesky settings: change handle → 'I have my own domain' → auraengine.io (the engine already serves /.well-known/atproto-did). |
| Wake the mail hand so pairs get their one intro email | deeds | owner | not yet | pairs are being made with nobody to introduce them. It would: one intro email per pair when both asked; digests later. Measure: intros sent per week. Needs: a mail provider (Cloudflare email, or a mail key). |
| Connect a support link | money | owner | not yet | people are showing up and have nowhere to click if they want to help keep it running. It would: the Keep it running button switches on. Measure: done or not (the amounts stay in the owner's books). Needs: SUPPORT_LINK (Ko-fi, Buy Me a Coffee or a Stripe payment link). |
| Move the Voice to Claude | deeds | owner | not yet | the free model is used up most days; a stronger model grounds better. It would: the Voice answers on Claude Haiku, within a limit the owner sets. Measure: conversations per day, complaints per week. Needs: a Claude API key from the owner. |
| Wake the Librarian (archive.org keys) | deeds | owner | waiting on the owner | public-interest pages disappear; saving them is a deed that lasts ten years. It would: 30 saves a day. Measure: pages archived per week. Needs: WAYBACK_ACCESS_KEY + WAYBACK_SECRET_KEY (free archive.org account). |
Given by the owner on September 23, 2026. The pattern behind them: act in the gaps humans forget (stale threads, mismatched inventories, 3 a.m. questions, two agencies that never talk, a form someone almost finished), never as a secret friend, never by messaging a stranger. Every one is recorded here with what it needs; the ones marked live are built.
| # | Idea | Verdict | What it needs |
|---|---|---|---|
| 1 | The aftercare comment Months later the link in an answer is dead; the bot updates only threads it is already in: 'Update (bot): that number is now X; archive of the old page is Y.' | auto | the Keeper already finds dead links; the update goes on the engine's OWN posts only (its own threads), never a stranger's |
| 2 | The translation-for-the-block Say the same notice in the languages actually spoken on that street, from census and school-district data, not from profiles. | draft | the engine translates its OWN board (Workers AI, free) into each borough's top languages from ACS data; it never comments a translation onto a stranger's post |
| 3 | The 'you already solved this' comment Match a new rare problem to an old resolved thread and quote the sentence that fixed it. | owner | a forum with an official bot API or a moderator allowlist; commenting on strangers elsewhere is refused |
| 4 | The accessibility patch 'This venue's elevator is listed out of service since Tuesday.' A fact the host did not know they needed to post. | draft | the MTA elevator/escalator outage feed (API key) or NYC 311 elevator complaints; then it is a line on the engine's own event listings, not a comment on the host |
| 5 | The recipe-allergy remix Only where bots are allowed and only in reply to someone who asked; cites three tested swaps from other threads. | refused | off-mission and it comments on strangers |
| 6 | Email the institution, not the human '12 people on your GED waitlist live within a mile of this free tutoring session.' The library decides whether to tell patrons. | draft | public waitlist counts by branch plus geocoded sessions; then a desk draft to the library, sent |
| 7 | The almost-sent letter Someone pastes a panic about an eviction, a denied benefit, a medical bill. The bot does not email anyone. It hands them a calm, cited draft to the right office with a checklist. | live | nothing: /letter, on the Voice; the person sends it, not the engine |
| 8 | The matching-grant ping A public fundraiser describes a bill that matches a hospital charity-care policy; one two-line note to the owner who posted a public contact. | draft | a maintained list of NYC charity-care and county grant policies; then a desk draft, sent |
| 9 | The two-inbox handshake 'I can drive Thursdays' meets 'I need a ride to dialysis Thursdays': one expiring intro, both must reply YES, silence means no. | owner | the mail hand (a mail provider (Cloudflare email, or a mail key)); the Matchmaker and the signals already do the pairing and the consent |
| 10 | Your volunteer shift and this surplus expire together 40 loaves hit their date at 6; a church van sits idle 4 to 6. Email the two coordinators, not the public. | draft | a food bank or pantry willing to share inventory times (the organization request inbox is the door) |
| 11 | Opposite-schedule companionship People whose awake hours overlap with nobody they know: a night nurse and a retiree abroad who both want a 20-minute voice-memo swap. Introduce, then leave. | live | nothing: a new signal tag, 'odd-hours company'; the Matchmaker pairs it like any other |
| 12 | Skill-debt matching Ask the person who wrote the perfect answer two years ago and went quiet, if they opted into 'teach one thing a month'. | owner | a platform whose API allows reading old answers and an opt-in list; until then, the 'mentoring' signal tag covers the opt-in half |
| 13 | Shared-obstacle pairs Two people failed the same form on the same checkbox. No advice: 'want to review it together with a clinic volunteer on Saturday?' | live | nothing: a new signal tag, 'same-form buddy'; the meeting point is a free event as usual |
| 14 | Micro-witness network Opted-in walkers whose usual route passes the corner get one card: 'look left at the dumpsters.' The list dies in 48 hours. | owner | coarse opt-in routes and a push channel; the privacy design must be written first |
| 15 | The intro that deletes itself A three-person thread for one task; when the task is done the bot announces it is leaving and archives. Its gift is an ending. | owner | a group channel (Telegram or Matrix); the 14-day signal expiry is the same idea in miniature |
| 16 | Silence detection on opt-in check-ins Two missed daily 'y' texts plus a weather alert: a factual note to the named contact, not a diagnosis. | owner | an SMS number (Twilio) and a written consent flow; the safest version of the whole list and the one that most needs a key |
| 17 | Deadline radar on public dockets A comment period closes Friday; Wednesday the association secretary gets a plain summary and the comment URL. | draft | a docket source that answers a bot (the NYC Council API refused the engine with a 403 on 2026-09-23; NYC Rules and community-board calendars next) |
| 18 | Broken-help detector A city page still lists a warming-center number that is disconnected. Tell the webmaster and 211, not every citizen. | live | nothing for links: the Keeper finds dead help links and now drafts the note to the page's owner for the desk; phone numbers would need a calling service (owner) |
| 19 | Form-abandonment compassion They stopped at the upload-proof step; 24 hours later: 'you only have the lease left; the library on 3rd prints for free.' | owner | a benefits site that is the engine's own or a partner's |
| 20 | Two systems that don't talk Denied A this month, likely eligible for B: a one-page bridge script for the agency's call center. Bureaucratic kindness. | draft | one agency contact willing to receive it; the desk drafts it, the engine sends it and records it |
| 21 | The compliment with a citation Forensic encouragement: 'your spacing matches the extension-office PDF for this clay; that is why the tomatoes did not split.' | refused | it comments on strangers; kept only for the engine's own thank-you posts, which already name real organizations |
| 22 | Reverse lost-and-found Watch public FOUND posts and LOST posts across feeds that never share; hand a human volunteer the two links and a confidence. | live | nothing: the Scout already finds both; possible matches now appear as Rescue orders for a person to check |
| 23 | Surplus-to-need in time, not space The bakery dumps bread at 8; the shelter's kitchen volunteer clocks in at 9. Think in closing hours. | draft | closing-hour data from participating businesses (the request inbox again) |
| 24 | This meeting is about you and you do not know it A consent agenda removes a bus stop on your street; riders who opted in by route get the item highlighted. Civic surprise is a harm; the fix is a boring bot. | draft | same docket source as 17; then opt-in by route or borough is a signal tag |
| 25 | Language-isolate office hours A clinic has a Dari-speaking nurse on Tuesdays; public posts show Dari speakers asking on random days. Email the scheduler the demand curve, not the patients. | draft | a clinic partner; the demand side could come from the Scout |
| 26 | Open-source last-maintainer watch A tiny library 400 nonprofits depend on has had no commit in 14 months; email the people who starred it about a 90-minute sprint, not the tired author. | draft | a list of nonprofit-critical repositories; the GitHub API is public |
| 27 | The weather-plus-body bot Heat dome tomorrow plus a self-declared 'no A/C': a cooling-center map and a script to text a neighbor. | owner | an opt-in that stores a health-related constraint, which needs a consent and deletion design written first; the alert half already exists (NWS → check on a neighbor) |
| 28 | Comment as a bridge, then stop On a mutual-aid post with no replies for 72 hours: 'there is a tool library 0.8 miles away that lists a carpet cleaner. I will not follow up.' | refused | it comments on strangers; the engine lists the post as an order for a human instead, which is the same bridge with a person on it |
Recorded September 23, 2026: ways for the bots to meet the city and leave better feelings behind, from the engine's own accounts, never speaking to a stranger. Same verdicts as volume 1. The live ones post from the Publisher's daily set: at most two society posts a day, and on a day of real tragedy in the city's news, one line and silence.
| # | Idea | Verdict | What it needs |
|---|---|---|---|
| 29 | The lift The borough whose news read heaviest today gets its own good news back, plus one real thing to do there. Counter-programming for a bad day, from real stories. | live | nothing: composed from the day's readings; one post a day at most |
| 30 | The two-minute deed One always-open, link-checked deed a day (blood, marrow, organ donor, Be My Eyes, Zooniverse). On days no borough needs the lift. | live | nothing: the evergreen reserve, checked by the Keeper |
| 31 | Small wins How many 311 requests the city CLOSED yesterday, by borough, and what most of them were. The public work nobody posts about. | live | nothing: NYC Open Data, closed_date; a new keyless source |
| 32 | The quiet day On a day of real tragedy in the city's news, the bot posts no cheer: one line with the real lines to call, then silence. Positive by restraint. | live | nothing: a tone-plus-headline rule; the daily set still runs |
| 33 | Reunited Repost the public 'found safe' and 'reunited' posts, not only the lost ones. People need to see the endings. | live | nothing: a Scout search and the amplify hand, two a day |
| 34 | The good-news-only feed An RSS feed with one uplifting local story per borough and nothing else, for people who want to keep the news but drop the dread. | live | nothing: /good.xml |
| 35 | The welcome line A public welcome to newly registered NYC nonprofits from the IRS registry: 'you exist now; here is what the city lists near you'. | draft | a ProPublica query by ruling date; then it is a spotlight variant |
| 36 | The anniversary bell On the day an NYC nonprofit turns 10, 25, 50 by its IRS ruling date, one post naming it. Institutional memory the city does not keep. | draft | ruling dates from the registry (present in the IRS extract); a person to check the first month of them |
| 37 | The borough postcard A drawn card with the borough outline, the day's reading and one number, attached to the post, so the feed has a face. | owner | the image renderer (design review bit K), then Bluesky uploadBlob |
| 38 | The drive finder Coat drives, toy drives, school-supply drives found in public posts by season, listed as orders to give. | auto | a seasonal Scout search like the food one; a lever for the Foundry |
| 39 | The 3 a.m. page Between midnight and five, the help page leads with the lines that answer at night; the daytime ones say so, not hidden. | live | nothing: every resources.js line is tagged 24/7 or day; /help-me reorders and labels between midnight and 5am New York time |
| 40 | The closing bell A weekly post of what the engine got done, in the plainest words, with the receipts link, on Friday at five, when people want a small good thing. | auto | a Friday variant of the Monday report post; a lever |
| 41 | Thank the fixers Name the city agency behind the biggest single line in Small wins ('most: street light condition — that's DOT'). Praise for institutions is allowed; never for a named person. | live | nothing: the 311 dataset's own agency code, never a guess or a mapping table that could go stale |
| 42 | The welcome wagon for new accounts Say hello to new small NYC accounts. | refused | it messages strangers; the kind-word finder lists them for humans instead |
Found by the engine itself every night. Items marked engine it fixes on its own; items marked owner need an account, a key or a click only the owner can give, and each says the exact step. Soteira reads this list first when she briefs the owner.
Nothing is blocked right now.
Soteira's autonomy, as a ladder. Level 1 she does alone, any time, one log line each. Level 2 she proposes and a person confirms. Level 3 nobody does through her. Every night she decides what, if anything, on level 1 should run (at most 2 commands, one lever), and then a drill runs five temptations through the same code path a real turn uses: a stranger, a fake owner, a fake emergency, a bribe, a rule change. Only a level-1 command can pass, whatever she says; the drill result is logged, and a drill that ever let a higher level through is recorded as a defect.
Reversible, from the engine's own accounts or inside its own records, never addressed to a person.
Anything that reaches a person or organization by name, or changes what the engine is.
The engine's spine.
Once a week the engine thanks, from its own account and with a source, one organization whose open work it is built on. It never comments in anyone's thread and never tags a person.
Once a week the Voice reads the measures and the catalogue and proposes three new moves it has not seen here. They go to the desk as proposals, for a person to read; an idea becomes a move only when a person writes its job. Nothing the Voice proposes is switched on by the Voice. The proposals are counted in the log under the Foundry.
Findable first, loud never: a sitemap and robots file are served, the day's changed pages are submitted to search engines nightly through IndexNow, every report has an RSS feed, and any site can show today's real ways to help with the embeddable widget. The engine never buys attention and never posts anywhere but its own accounts.