Building a Reliable AI Agent for Freelance Payment WorkflowsBuilding a Reliable AI Agent for Freelance Payment Workflows
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
Building AI agents is easy. Building one you can trust with a real business workflow is harder.
I built a Freelance Admin Agent to explore that problem using Strands Agents SDK and Claude Sonnet 4.5 on Amazon Bedrock.
The working MVP takes manually provided client emails and turns them into a structured payment workflow:
→ Classifies invoice and payment emails → Extracts client, invoice, amount, currency, dates and contextual details using structured output → Stores and matches records in SQLite → Uses deterministic logic to identify full/short and on-time/late payments → Uses a second agent to draft a contextual follow-up only when needed → Keeps the final decision with the human through Approve / Edit / Reject
One of the most valuable parts wasn't adding another AI feature. It was finding a real reliability issue during testing: reprocessing the same email could duplicate records and inflate payment totals.
I reproduced it through repeat testing, traced the database behavior, and fixed it.
That reinforced something I'm increasingly applying to my AI engineering work:
A useful AI product isn't just an LLM call. It needs clear boundaries between AI reasoning, structured data, deterministic business logic, persistence, testing, and human control.
The next iteration will focus on stronger production safeguards, including source-grounded financial extraction, precise currency handling, stricter trust boundaries for untrusted input, and eventually live inbox integrations.
I'm interested in building more systems like this for startups and teams with repetitive workflows that can genuinely benefit from AI agents and automation.
Stack: Python · Strands Agents SDK · Amazon Bedrock · Claude Sonnet 4.5 · Pydantic · SQLite · Streamlit
Post image
Kapil's avatar
The duplicate-email bug is a good reason to make ingestion idempotent at the database boundary, not just in the agent prompt. I'd use a stable email identifier with a unique constraint, then version corrected invoices so retries and real changes behave differently.
Johnson's avatar
Turning raw client emails into actionable steps really trims the manual triage you normally face.
Moch Virgiawan's avatar
turning client emails into admin tasks is such a real freelancer pain, nice build 🔥
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started