What it does

Escola Lendária Community Agent is a proactive Good Neighbor AI for small schools and learning communities. It does not wait for a learner to open a chatbot. It watches privacy-minimized learning activity in the background, detects silent risk such as prolonged inactivity and repeated unresolved failures, keeps each risk episode across scans, and turns qualifying cases into a prioritized human attention queue.

The core problem is specific: small schools cannot continuously inspect every learner, and the learner who most needs support may never ask for it.

A request-only assistant sees the learner who speaks. Community Agent is designed to notice the learner who goes quiet.

One end-to-end workflow

The product follows one operational loop:

  1. Observe — synchronize only learner progress/activity fields required for monitoring.
  2. Detect — autonomously scan the community without a learner prompt.
  3. Persist and deduplicate — keep one continuing risk episode instead of generating another alert on every scan; clear it when evidence disappears.
  4. Prioritize — deterministically rank open human work from urgency, active monitoring risk, and waiting time.
  5. Explain — use Strands Agents SDK + Amazon Bedrock to create bounded case-level and community-level reasoning over that evidence.
  6. Decide — keep consequential judgment human-controlled.
  7. Resolve and audit — record human resolution and the full evidence/action trail.
  8. Measure — report observed scans, duplicate suppression, clearing and human resolutions without claiming those operational metrics prove learning outcomes.

Why Strands is essential

The current model-facing surface contains only five purpose-built tools:

  • get_community_overview — aggregate-only community state without learner identities;
  • get_attention_plan — a fixed deterministic human-work ranking projected to temporary aliases such as priority-case-01, with no stable learner/follow-up/event IDs;
  • get_impact_metrics — auditable operational evidence, explicitly non-causal;
  • get_learner_context — factual context only when processing a specific learner case;
  • record_support_note — a bounded advisory note with an independent deterministic validator.

The raw human follow-up queue remains available to authorized staff in the application, but it is not exposed as a Strands community tool.

The language model does not own the safety rules or the priority score. It reasons over evidence created by deterministic layers.

There is no Strands tool for payment confirmation, course-access changes, discipline, enrollment decisions, account deletion, medical/legal decisions, safeguarding decisions, or human-task resolution.

Human safety boundary

Consequential events are evaluated before model reasoning. Mandatory human escalation cannot be downgraded by Strands.

Even model-authored advisory notes pass a second deterministic validator before persistence. A note that tries to encode a consequential instruction such as confirming a payment, unlocking a course, deleting an account, or punishing a learner is rejected.

If Bedrock is temporarily unavailable, monitoring, hard safety rules, deterministic triage, operational metrics and auditability remain usable in policy-fallback mode.

Prioritizing scarce human attention

Detecting risk is only half of the real school problem. Staff still need to know what to look at first.

The attention plan is computed outside the LLM:

priority = urgency base + active-risk bonus + waiting-time bonus

The authorized staff/API form includes the internal identifiers required to resolve a task. Before community-level model reasoning, the exact same ranked plan is transformed into temporary case aliases and stable identifiers are removed. Strands may explain the ordering but cannot silently change the score or resolve the case.

Real-world grounding and privacy

The agent can synchronize read-only with the existing Escola Lendária Supabase learner-progress source. The adapter requests only progress/activity data needed for monitoring and excludes contacts, PINs, chats, drafts, private notes, support-message bodies and payment information.

The public live judge endpoint is also read-only and returns only anonymous aliases and aggregate risk evidence.

Public live demo

https://uvypcuixxrjikjaduvyo.supabase.co/functions/v1/community-agent-demo

Structured verification

https://uvypcuixxrjikjaduvyo.supabase.co/functions/v1/community-agent-demo?format=json

Operational evidence

The full application exposes GET /impact, which reports what the agent can directly prove from its own operational store: monitoring runs, learner scans, active risk observations, new alerts, continuing conditions without duplicate alerts, duplicate-suppression rate, cleared conditions, human resolutions, open human work and decision modes.

Those metrics are deliberately described as observed coordination behavior, not causal proof of better grades, retention or completion. The repository includes a separate longitudinal impact-measurement plan for a future school pilot.

AWS implementation

Built with Strands Agents SDK, Amazon Bedrock, an Amazon Bedrock AgentCore runtime adapter, FastAPI, SQLite operational state/audit, and an optional privacy-minimized read-only Supabase source.

The AgentCore adapter supports event handling, community briefing, identifier-free deterministic attention-plan retrieval, and operational impact retrieval through the same agent/safety path.

Security and reproducibility

The public repository includes:

  • MIT license;
  • architecture diagram and architecture guide;
  • judge guide mapped to all five judging criteria;
  • reproducible evaluation matrix;
  • deterministic triage and impact tests;
  • policy, idempotency, monitoring, clearing, privacy, identifier-minimization and tool-safety tests;
  • CI that runs a high-confidence secret-pattern scan, Python compile check, Ruff and pytest;
  • SECURITY.md;
  • privacy-safe live Edge Function source;
  • AgentCore runtime documentation;
  • a ready-to-publish AWS Builder Center bonus-post draft.

Why it is a Good Neighbor Agent

The beneficiary is a group, not one chat user. Community Agent treats limited staff attention as a shared community resource: one background agent watches many learners, suppresses noise, explains which human case deserves attention first, and stops precisely where human judgment should begin.

One agent, many learners, one prioritized human queue.

Built With

  • amazon-bedrock
  • amazon-bedrock-agentcore
  • fastapi
  • python
  • sqlite
  • strands-agents-sdk
  • supabase
Share this project:

Updates