Hearthwatch in 30 seconds

  • The problem: scam links can hide inside pictures, where keyword filters can't see, and they land while the owner is away.
  • What it does: it checks the posts and the text inside their pictures, flags scams with the evidence, and briefs the owner in one short spoken line through a simulated Alexa+ page.
  • Who decides: the owner. Nothing is removed until they tap.
  • The proof: a live soak of 2 hours 16 minutes with AWS on and 0 errors, where AWS's own call counts matched the run's record exactly; and a blind test where it caught 14 of 19 scorable rule-breaking posts and flagged 0 of 17 innocent images.

The moment it's built for

It's late, and you're asleep. In the Discord community you run, a brand-new account drops a "free giveaway" picture into your busiest channel, and a link dressed up as Discord's own website into another. The message under the picture looks harmless. The scam is printed inside the image, where keyword filters can't read it. By morning, any of your members could have clicked it.

Hearthwatch reads it. It flags both posts with the evidence and queues them for you. Nothing is removed until you tap.

In the morning you tap to talk, pick "What happened?", and hear one short line: "Two posts need you. First: a lookalike link. Next: a possible lookalike link inside an image." No scrolling through channel after channel: every finding waits on one page. Open a card and it's all there: who posted it, the post's text, the words that set it off marked in red, what Hearthwatch read in the picture, and a link straight to the post in Discord. One tap removes it.

That's Hearthwatch. From your own PC, which stays on while it watches, it keeps watch over the community you run while you live your life, and it briefs you when you're back. You stay in charge: it never removes a post or bans anyone on its own.

Built for Alexa+

Hearthwatch is built the way an Alexa+ add-on is built: from the partner's side, as its own MCP server to the Alexa+ track's spec (MCP protocol 2025-11-25 over Streamable HTTP). We couldn't connect Hearthwatch to Alexa+ during the hackathon: the Alexa+ MCP Toolkit is open to select partners only. So here the Alexa+ side is a clearly labeled simulated Alexa+ experience: a web page we built that stands in for Alexa+ and drives our real MCP server. It is not an Amazon product, is not affiliated with Amazon, and does not run on an Echo device. A real MCP client, MCP Inspector 2.8.0, has connected to the same server and called every tool, and in a live run its attempt to act was refused.

How Hearthwatch meets the judging criteria

Submitted to the Alexa+ track and the AWS Builder Mini Challenge.

Criterion Where the evidence is
Stage One Built for Alexa+
Tech Implementation How we built it; Proof
Design The moment it's built for; What it does
Potential Impact Inspiration; Who it's for and what it costs
Quality of the Idea What it does; Challenges we ran into

Where to find the rest: the demo video at the top of this page (in it, the narration and the page's spoken lines are Amazon Polly stock voices added for the video; the app itself speaks with the browser's voice); the code in a private GitHub repository shared with the judges (Official Rules, section 4), with a no-keys demo that runs on your own PC; the Product Feedback, the AWS Builder write-up, the Feature Requests and the Friction Log in this submission's judges' fields.

Inspiration

Millions of people run online communities: creators, clubs, gaming groups, volunteers. The scale: in one year (March 2025 to March 2026), Discord's own Transparency Report counts 47,832,832 accounts disabled for spam and 3,084,168 actioned for fraud, scams and phishing, and more than 90 million people spend time on Discord every day.

Discord's built-in tools check message text and filter sexual and graphic images. Our reading of their descriptions (an inference, not a Discord statement): neither reads scam text written inside an image. We built Hearthwatch for that gap, and for the person who has to answer for it.

What it does

The AI reports evidence and never produces it.

  • Checks the posts it can see, and the text inside the pictures it can read. It checks for scams, look-alike links (against a fixed list of names: today Discord and Lumbrook, the demo's made-up community), repeated posts and the owner's own keywords for their server's rules, and it checks a post again whenever an edit changes it. Plain code decides what gets flagged; the AI may only raise a weak flag's priority, never create, lower or remove one.
  • Briefs you in one short line. A count first, then one line for each of the first three high-priority posts, definite finds first, then the "possible" ones; past three, "N more are on your screen." The evidence stays on the cards and is never read aloud.
  • Gets a second opinion from the AI. Some posts flagged with weak signs only get a second look from Amazon Nova. It doesn't see the whole post, so a warning about a scam and a scam itself can look the same to it. It may raise the flag to a strong sign, with a note our code wrote; it never lowers, hides, delays or removes one, and you still decide.
  • Puts you in charge. Remove takes one tap; Ban and Remove every copy take two. Removal is permanent, and the button says so. By voice you can time a poster out for an hour or undo it, and a line with a "don't" or a question mark never acts. In a live run every tap that acts needs a single-use approval, and no voice command and no AI tool can remove a post or ban anyone.
  • Clears a repeat in two taps. When the same account posts the same thing again and again, its card offers Remove every copy. The first tap only lists the posts it will remove, all from that one account, and says plainly that this cannot be undone.
  • Keeps it yours. The page opens on a sign-in room and asks for your passcode, which guards the page and its actions on your own PC (not the data: a program on your PC can still read the flags).
  • Knows what it can't be sure of. A card's main finding read from a picture is named "possible", because text recognition can misread, and it never acts on its own.

How we built it

  • Our own MCP server, protocol 2025-11-25 over Streamable HTTP, written on the Python standard library. Five tools: get flags, get flag detail, get briefing, time out a poster, and undo an action. No tool removes a post or bans anyone: those live only behind the owner's tap.
  • Three AWS services, proven live through the bot. Amazon Rekognition reads the text inside pictures. Amazon Nova 2 Lite on Amazon Bedrock picks the connecting words between fixed phrases our code writes; any other reply is rejected and the fixed line is spoken instead. The same Nova model gives the AI second opinion. Amazon DynamoDB keeps the flags and the owner's decisions, each for 30 days.
  • A live Discord bot that checks posts and edits as they land, sweeps for anything it missed, and carries out the owner's taps in Discord.
  • The simulated Alexa+ page, served by the same MCP server: tap to talk (you pick or type the words; there is no microphone), short spoken lines in the browser's voice, cards for the details, and tap-only Remove, Ban and Remove every copy.

Challenges we ran into

  • Keeping the AI honest. We rebuilt the briefing so code writes every spoken phrase from the stored records and the model only picks the connecting words.
  • The first live AWS run hit a wall. On October 2, Amazon Bedrock refused the first briefing call. Hearthwatch spoke the fixed line instead, and the run stopped at that step, as its plan required. The cause is still unknown: nothing was changed in AWS, and the same calls passed the next day.

Proof: it ran live, and it was tested blind

It was tested blind before it went live. A separate role built and sealed the test set, and the builder never saw it; the owner typed a keyword list without seeing a single test post. All 5 misses were posts only the owner's own keyword list could have caught.

Evidence Result
Live soak, October 8 (AWS on) On our own Discord test server with made-up posts, Hearthwatch ran for 2 hours 16 minutes with 0 errors in 273 heartbeats (errors = failed post checks; unread images and refused AWS calls are recorded separately). Amazon Nova on Amazon Bedrock supplied the connecting words for 3 briefings, and our checker accepted every reply. Remove every copy removed 3 of 3 posts in two taps.
AWS counts match (soak) AWS's own counts, read in the CloudWatch console, matched the run's record exactly: Amazon Bedrock +92 calls = 3 briefings + 89 second opinions, and Amazon Rekognition +1 = the run's one image read.
AI second opinion (soak) Asked about 89 posts flagged with weak signs only. It raised 62 to a strong sign and kept 27, with 0 errors. (No answer key says whether those raises were right.)
Live run, AWS on, October 3 0 errors in 114 heartbeats. Amazon Rekognition read 4 posted images through the bot, and each raised a high-priority look-alike link from the text in the image. 12 owner taps were decided through Amazon DynamoDB.
Live run, AWS off, October 1 and 2 In an 82-minute run, the owner's taps acted in Discord (6 removals, each after its staff-log copy; a time-out and a ban, each undone), with 0 errors.
Filmed take, October 14 The video's live clip is the third of three takes on October 14 (AWS on, an in-memory store, 0 errors); AWS's own counts, by hour, match the takes' record.
Blind test: caught 14 of 19 scorable rule-breaking posts caught (on the held-out slice, never run before: 4 of 7). 19 of the 22 are scorable; the other 3 need an image-moderation check that is not built.
Blind test: innocent 0 of 17 innocent images flagged. 5 of 27 strict-innocent posts flagged, every one low priority, and only 1 of 27 spoken to the owner.
Automated tests At the submission commit: 1876 passed, 2 skipped. On fresh clones of commit 4b90c94 on two Windows 11 PCs: 1876 passed, 2 skipped.
MCP latency In the no-keys demo every tool answers under the 500 ms target (p50 at most 11.2 ms, p95 at most 20.9 ms); live tool times were not measured (a live briefing waits up to 12 seconds for Nova).

The blind test ran before the AI second opinion was added, so these counts do not include it. The score sheet and the sealed files' hashes are in the repository. Each run's counts are in the repository's docs/verification/LIVE-RUNS.md.

Privacy by design. Hearthwatch keeps no unflagged post's text, only small no-text records about it; the one exception is Remove every copy, which saves a text copy of each post it removes, an unflagged earlier copy included, to your staff log channel. A flagged post's evidence is kept for 30 days (optional run files you write on your PC keep theirs until you delete them). When running live, posted images in the formats it reads are sent to Amazon Rekognition to read their text. For some posts flagged with weak signs only, one flag's stored piece, at most 300 characters, goes to Amazon Bedrock for the second opinion, with no author IDs, no message or server IDs, no post times and no Discord link.

Every number about Hearthwatch in this text comes from a run record or a committed file; Discord's figures are from its own report, and the cost is an estimate.

What we learned

  • Plain code is the right judge of "act or don't act." A model is good at choosing words and giving a second opinion; it never makes the final call.
  • The hardest gap is the one you can't see. In Stark's words: "I lacked exposure of what I don't know." That's why Hearthwatch was built with a blind test, a separate checker and outside critics: to find what we couldn't see.

Who it's for and what it costs

No outside owner has tried Hearthwatch yet, so the owners above are who we built it for, not who has asked for it. Today's running cost is not measured. From our cost tool's figures, we estimate about $4.30 a month for one server on the owner's own PC ($9.30 hosted) at an assumed 2,000 messages a day: an estimate, not a bill or a price, which grows to $7.30 ($12.30 hosted) once a planned image-moderation check is built. Image checks, not the AI, are most of the cost. The AI's second opinion isn't in the estimate: in the soak its 89 calls used 23,590 input and 1,664 output tokens.

What's next for Hearthwatch

None of these is a research problem: most build on parts that already run today. None is built yet; we ship a feature only once it's tested. What an owner would pay for is a watch that holds.

  • A hosted version with "Sign in with Discord", so each owner sees only their own server and the watch doesn't depend on their PC being on. Today it runs on the owner's own PC.
  • Into Alexa+ as a partner add-on. Once add-ons can be connected, it could be offered to community owners as a partner's add-on. A plan, not built.
  • An alert when a strong sign lands, so a scam reaches you without opening the page. Not built.
  • A memory for scams you've already removed: the same scam posted again in your server, by any account, would be flagged at once. Planned for after the hackathon; not built.
  • Remove a known scam the moment it lands, only if you switch it on. When a new post matches a scam you've removed again and again, Hearthwatch could remove it at once, with a copy in your staff log first. It stays off until you switch it on, and only after it's tested on posts it has never seen and acts on zero innocent ones. Planned for after the hackathon; not built.
  • A consistency report that would show the same rule applied the same way every time, so an owner can show even-handed enforcement. Not built.
  • More platforms. Discord is the one platform built today. The same pattern could check the listings that sellers post on a small online marketplace for scams, with the marketplace owner deciding. An idea only.

Where this can lead

Why I built this, in my own words:

I'm trying to carve a path where very few doors are open to me. I wanted to see if, by winning, I could become a solo founder with AI. Once I saw the cause and effect of what's possible with AI, I realized I can change my reality too. For people like me, AI changes the game. I want to be the one who brings AI into the workforce, where nobody has to open a new chat or second-guess every answer, with the best AI in the cloud, or on your own machines when the work's privacy needs it. I don't want to tear anything down either. I'd rather partner, keep the leaders and the top where they are, or bring them higher. Tuners outlast arsonists.

— Stark

Hearthwatch is one example of a bigger idea: AI as a partner for anyone responsible for a group of people. Hearthwatch does the watching, the reading and the summing up; the person keeps the decisions. Nothing acts behind their back, and every finding it speaks is built from a record they can check. We're building something that makes them better at the part only they can do: deciding.

Credits

Hearthwatch · made by Stark, AI orchestrator and systems tuner.

Ideas, direction and the key decisions: Stark. Built with Claude (Anthropic) as my AI coding partner, working as a builder, a checker, a test lab, a writer, a designer, an organizer and a challenger. It was built by a crew of AI assistants, each in its own role, and the key decisions were mine. In the git record, Claude Opus 5.5 is a co-author on 123 of this repository's 126 commits and Claude Fable 5.1 on 4, one of them shared; Claude Sonnet 5.5 worked as a writer and on the video planning. ChatGPT (OpenAI) was my pathfinder and stress-tester: it pointed me to this hackathon, and I pressure-test ideas with it. Music in the video: "Chillhop Jazz Midnight Club" by alex-morgan, from Pixabay, used under the Pixabay Content License.

What each one did: Claude Opus 5.5 built the code and its tests, checked the claims against pinned commits, designed the page and kept the plan; Claude Fable 5.1 built the blind test set, ran the red-team review and co-wrote three fix rounds; Claude Sonnet 5.5 wrote drafts and planned the video; ChatGPT, through Codex (GPT-6.1 Sol), reviewed the product as an outside critic.

The Earth on the page uses two NASA images. NASA does not endorse Hearthwatch.

Built With

Share this project:

Updates

Submission history