Inspiration

ContactLoop started with a simple observation from my own experience as a teacher.

I knew another teacher who regularly left school almost two hours later than I did. At first, I assumed it was because of traffic. Then she told me she was staying late to finish logging parent calls.

That stayed with me because a parent call looks like one task, but for a teacher, it often creates a second one: recording who was called, whether they answered, what was discussed, and what needs to happen next.

The call may be over, but the work is not.

I built ContactLoop to reduce that administrative burden and make parent communication easier to track without adding another complicated workflow for teachers.

What it does

ContactLoop helps teachers manage parent communication from call to follow-up.

Teachers can see calls attempted, parents reached, and follow-ups that still need attention. They can start a parent call from the platform, automatically record its status, confirm the topics that were actually discussed, and add notes by voice or text.

If a parent does not answer, the attempt is still recorded and the follow-up remains visible.

For completed calls, ContactLoop keeps the factual communication history together in one place. Teachers can also generate an AI-assisted Contact Brief that organizes a student's communication history into key topics, contact statistics, unresolved follow-ups, and a suggested next step.

The AI does not decide what happened or automatically change the official record. The teacher reviews, edits, and approves what should become part of the record.

ContactLoop can also generate a print-ready Meeting Brief that teachers can save as a PDF when preparing for future parent meetings.

How I built it

I designed ContactLoop around a simple principle: the system should record facts, AI should organize context, and the teacher should remain in control.

The frontend is a Vite single-page application. Supabase provides authentication, relational data storage, database functions, and Edge Functions. It stores student and guardian information, call outcomes, teacher notes, follow-ups, and AI-generated briefs.

ContactLoop supports two calling modes. The public demo uses mock telephony so judges can explore the workflow safely, while the Beta environment integrates with Twilio for real outbound parent calls and call-status updates.

I successfully tested the Twilio workflow end to end, including placing a real call and writing the result back to the correct student record.

On the AI side, an AWS Lambda-compatible service uses the Strands Agents SDK and Amazon Bedrock to prepare a Contact Brief for a specific student.

The agent uses three deliberately narrow, read-only tools:

  1. get_contact_stats retrieves authoritative contact statistics.
  2. get_teacher_notes_and_topics retrieves teacher-authored context.
  3. get_open_follow_ups retrieves unresolved outreach tasks.

Only the relevant information for the selected student and date range is sent to the agent. Amazon Bedrock uses that scoped context to generate a structured draft Contact Brief.

Every generated brief begins with a pending review status. A teacher can edit and approve it before it becomes part of the final workflow.

This human-in-the-loop design allows AI to reduce preparation work without replacing teacher judgment.

Challenges

One of the biggest challenges was deciding what AI should not do.

It would have been easy to let the model generate a polished summary and treat it as the truth. But parent communication can contain sensitive and important information, so I wanted to clearly separate verified facts from AI-generated organization.

For example, ContactLoop can reliably know whether a call was answered and how long it lasted. It should not claim to know what was discussed unless the teacher provides or confirms that information.

A planned topic is not automatically a discussed topic. A started call is not automatically a completed parent conversation. An AI-generated summary is not automatically an approved record.

I addressed those distinctions in the data model and interface instead of relying only on prompt instructions.

Another challenge was designing automation that actually saves teachers time instead of creating one more system they have to maintain. I kept returning to the same question: does this reduce steps, or does it simply move the paperwork somewhere else?

That question shaped the dashboard, follow-up workflow, and teacher approval process.

Accomplishments I'm proud of

I am especially proud that I was able to:

  • Built ContactLoop as a solo developer
  • Completed a real Twilio parent call from start to finish
  • Automatically wrote the call result back to the correct student record
  • Kept unsuccessful calls visible as open follow-ups
  • Built ContactLoop’s AI agent with the Strands Agents SDK and Amazon Bedrock, using narrowly scoped, read-only tools grounded in verified records
  • Generated structured AI output grounded in stored evidence
  • Added a teacher editing, review, and approval workflow
  • Maintained separate Demo and authenticated Beta modes
  • Added automated tests for the core communication workflow

What I learned

Building ContactLoop changed how I think about AI products.

The most valuable use of AI is not always asking a model to generate more content. Sometimes the better product is a system that remembers what happened, retrieves the right context at the right moment, and helps a person make the final decision.

I also learned that human-in-the-loop design is especially important when software supports real-world communication. AI can reduce the cognitive and administrative burden, but the teacher should remain accountable for the final record.

Finally, this project reminded me that some of the best product ideas come from ordinary frustrations.

ContactLoop started with one teacher staying late after school to finish paperwork.

What's next

My next step is to put ContactLoop in front of real users.

I plan to have teacher friends try the workflow and give me feedback on what feels useful, confusing, or unnecessary. I especially want to learn whether ContactLoop saves time during real parent communication rather than simply adding another tool to a teacher's day.

Based on that feedback, I will refine the call logging, follow-up flow, AI-generated briefs, and overall user experience.

I also plan to improve accessibility, explore multilingual parent communication, strengthen deployment and monitoring, and evaluate Amazon Bedrock AgentCore for future production operations.

The goal is to keep improving ContactLoop around real teacher behavior, not assumptions.

My goal is simple: a parent call should not create a second job for a teacher.

Built With

Share this project:

Updates

Submission history