Inspiration

Every day, freelancers and small-business owners lose hours to the painful, repetitive task of invoicing and chasing down late payments. It's not just a time drain—it's emotionally taxing to have to play the "bad cop" with your own clients. We wanted to build an agent that removes that anxiety entirely.

What it does

ChaseBot is a "Professional Agent" that acts as your zero-friction financial assistant. It runs quietly in the background, autonomously monitoring your project board (like Jira/Trello), generating PDF invoices for completed tasks, and tracking payment statuses via Stripe. For invoices that are moderately late (e.g., 14 days), it drafts and sends friendly follow-up emails.

However, honoring the hackathon's "human-in-the-loop" theme, it doesn't take drastic actions on its own. For severely late payments, ChaseBot pauses its autonomous loop and pings the freelancer with a "Decision Ping" to approve a 5% late fee and a final warning notice.

How we built it

We utilized the Strands Agents SDK (Python) to build the core orchestration loop, equipping the agent with specific @tool functions to read databases, generate PDFs, and send emails. For the frontend, we built a clean, responsive SaaS dashboard using Streamlit. The entire application is containerized with Docker and hosted live on Render.

Challenges we ran into

One of the biggest challenges was engineering the agent to stop working when appropriate. It’s easy to let an AI automate everything, but writing a specific request_user_approval tool that perfectly pauses the Strands Agent execution loop required careful state management. We also had to overcome some complex environment pathing issues during deployment, which we solved by fully containerizing the app with Docker.

Accomplishments that we're proud of

We are incredibly proud of the user interface. Instead of a messy terminal output, we built a highly polished dashboard that feels like a real product. We're also proud that we strictly adhered to the hackathon prompt: the agent truly stays out of the way until human judgment is needed.

What we learned

We learned how powerful the Strands Agents SDK is, particularly how intuitively the @tool decorators can route an LLM's logic into tangible Python functions.

What's next for ChaseBot: The Zero-Friction Freelance Agent

Right now, the agent runs against a mock database for demonstration purposes. The next step is wiring up the real OAuth connections for Jira, Stripe, and Gmail to turn this into a production-ready application for freelancers everywhere.

Built With

Share this project:

Updates

Submission history