Inspiration

Freelancers need more than a way to receive money. They also need to understand which payments are outstanding, decide when to follow up, and communicate professionally with clients.

I built Freelance Flow to bring those steps together: understand a payment, prepare the next message, share a payment link, and track the result.

What it does

Freelance Flow is an AI-assisted payment companion for freelancers and small businesses.

Users can:

  • Create payment requests with client details, a service description, an amount, and a due date.
  • Track paid, outstanding, and overdue amounts.
  • See a payment explanation and a recommended next action.
  • Generate, edit, and copy client messages with the correct greeting and freelancer signature.
  • Share a client-facing PayPal sandbox payment page.
  • View recorded payment activity and print a verified payment confirmation.
  • Generate a thank-you message after payment.
  • Archive and restore requests.

The freelancer stays in control: messages are never sent automatically.

How I built it

I built the interface with React, JavaScript, and Vite, and the backend with Python and Flask.

The project began with SQLite and was adapted to use Neon PostgreSQL for hosted persistence. The deployed application runs on Render.

Google Gemini assists with message wording and payment guidance. The backend calculates payment facts, including amounts, status, and overdue dates, so those facts do not depend on a model’s calculations.

PayPal sandbox powers checkout. The backend creates orders and verifies captures before marking requests paid. Payment safeguards include amount and currency checks, duplicate-payment prevention, and handling for retries and uncertain outcomes.

I developed the project independently, with GitHub Copilot and AI coding assistance supporting implementation, debugging, and testing.

Challenges I faced

Connecting the external services was a major learning experience. I encountered network-resolution problems, unavailable Gemini models, and PayPal sandbox checkout errors.

Deployment introduced another set of challenges: moving beyond local SQLite storage, configuring server-side credentials, serving the frontend with Flask, and resolving HTTPS origin checks for workspace login.

I also refined the interface through testing: improving typography, replacing browser confirmation prompts with accessible dialogs, and making the AI panel easier to scan.

What I learned

I learned how much happens between a successful checkout screen and a trustworthy payment record. Payment status needs server-side verification, careful transaction handling, and protection against repeated actions.

I also learned to distinguish automated tests with mocked providers from genuine integration checks. Both matter, but they prove different things.

For AI features, I learned to separate factual application data from generated language and keep a human review step before communication leaves the app.

Accomplishments I’m proud of

I completed and tested the full journey: creating a request, generating an editable message, completing a PayPal sandbox payment, and seeing the confirmed result persist after refreshing.

I’m also proud that the app responds to payment context: an unpaid request can lead to a payment message, while a paid request leads to a thank-you.

What’s next

Future improvements could include individual freelancer accounts, more robust background payment reconciliation, and user research to learn which follow-up guidance freelancers find most useful.

The current project is a single-workspace, USD-only sandbox prototype. It demonstrates working integrations using simulated payments; it is not presented as a production financial service.

Built With

Share this project:

Updates

Submission history