Inspiration

What it does

How we built it

Challenges we ran into## Inspiration

Running my own freelance dev studio (Alif Dev Studio), the same three tasks kept eating my week: writing a proposal that wasn't generic, remembering which leads had gone quiet, and chasing overdue invoices without sounding like a collections agency. None of it is hard — it's just repetitive, and letting it slide directly costs income. When AWS opened the Agents for Humans Hackathon with the Strands Agents SDK, it was the obvious thing to automate — not with another dashboard to check, but with an agent that works quietly in the background and only surfaces when there's a real decision to make.

What it does

FreelanceOps Agent is a Strands Agent with four tools:

  • draft_proposal — reads a job post, matches it against real past projects, drafts a tailored proposal, and saves it
  • check_followups — finds leads that have gone quiet for 4+ days
  • draft_followup — writes a follow-up for one specific lead, grounded in its real history
  • invoice_reminder — drafts payment reminders for real overdue invoices

The agent decides which tools to call and in what order. A single prompt like "check my leads and draft follow-ups for anything pending" triggers check_followups, then draft_followup once per flagged lead — with no hardcoded orchestration logic. That decision loop is the actual agentic part; the tools are grounded capabilities it reaches for.

How we built it

The backend is a Strands Agent served through FastAPI (agent/freelanceops/). The model backend is swappable behind one environment variable — Amazon Bedrock or Groq's OpenAI-compatible API — via a single build_model() call, so the same agent, tools, and dashboard work regardless of which host is available. All data (leads, proposals, invoices) lives in Supabase (Postgres).

The frontend is a Next.js dashboard. The browser never talks to the FastAPI backend directly — Next.js server routes proxy every request with a server-only shared secret attached, so no backend URL or API key ever ships to the browser. On top of that: per-IP rate limiting, input length limits, sanitized database lookups, and a password gate on the whole dashboard, since a public hackathon demo URL is otherwise an open door.

The whole thing is deployed live — Next.js on Vercel, FastAPI on Render — sharing the same Supabase project as local dev.

Challenges we ran into

The biggest one wasn't code — it was infrastructure. Our AWS account hit a hard, account-wide Bedrock quota of 0 (a known new-account restriction affecting many hackathon participants, confirmed by Devpost's own hackathon manager in the forums), and the AWS Support case for it is still unresolved weeks later. Since the hackathon rules explicitly allow building with Strands Agents and a different model host, we made the model backend swappable and shipped on Groq instead of blocking the whole submission on an AWS ticket outside our control. We also hit a corrupted package-lock.json that broke every deploy with a cryptic "Invalid Version" npm error, traced down to a missing version field and a stale lockfile .. fixed by regenerating it from scratch.

Accomplishments that we're proud of

A genuinely working, live, end-to-end deployment .. not just a local demo .. with real security thought put into it (server-side proxying, auth, rate limiting) rather than a wide-open API, and a distinctive visual identity instead of a default AI-generated look.

What we learned

That "deploying with AgentCore" is a nice-to-have, not the whole story .. the actual judged skill is whether the agent's tool-calling decisions are genuinely grounded and non-trivial, regardless of which model host sits behind it. Also: always commit a clean lockfile.

What's next for FreelanceOps Agent

Multi-user support (right now it's single-operator), Gmail/Upwork integration so leads and invoices populate automatically instead of manual entry, and a scheduled daily run instead of on-demand.

Accomplishments that we're proud of

What we learned

What's next for FreelanceOps Agent - Agents for Humans Hackathon

Built With

Share this project:

Updates

Submission history