Modern Code Consulting

Automation · 12 steps

Stripe deposit to project kickoff automation: deal closed, plan built, kickoff doc ready

A client pays the deposit. The deal closes, a dated project plan is built and a kickoff document is ready, with no hand on the CRM.

Built by Matt Cruz, Modern Code Consulting

The problem

When a client pays a deposit there is a run of admin before any real work starts. Move the deal in the CRM, build the project plan, send the welcome email, write up the kickoff checklist.

It is all copy and paste, and it is easy to skip a step when two deposits land in the same week.

What I built

I built this so the Stripe payment starts everything. A signed webhook verifies the payment, drops duplicates and matches it to exactly one proposal. A test payment or a payment with no matching proposal stops there and says so.

From there the deal moves to Closed Won in GoHighLevel, the accepted proposal becomes a dated project plan in ClickUp, and a Claude Code skill writes the kickoff document from the proposal. Every step reports back in one Telegram message, and a failed step shows the reason without blocking the others.

How it works, step by step

A signed webhook and a Python handler do the exact work. A Claude Code skill writes the kickoff plan, and a script builds the document.

Stage 1 · Payment lands

  1. Verify the Stripe payment event

    Substituted

    The relay checks the Stripe signature on the paid event, drops duplicates and turns it into one record on the paid queue.

    Stripe webhook relay, Upstash queue

  2. Match payment to its proposal

    Ran

    The poller confirms the payment is live, finds the one proposal run whose manifest carries exactly this proposal id and stamps its intake record as paid.

    run_proposal_queue.py

Stage 2 · Deal and project plan

  1. Move the deal to Closed Won

    Not run

    Moves the payer's deal to Closed Won in the sales pipeline, with no hand on the CRM.

    GoHighLevel CRM, crm_move.py

  2. Build the project board spec

    Ran

    Turns the accepted proposal into a project plan: a kickoff call, one task per scope item, one milestone per timeline phase and a final invoice, each dated from the day the deposit landed.

    proposal_to_clickup_spec.py

  3. Create the project in ClickUp

    Not run

    Creates one Project task and its subtasks in ClickUp from the spec file. Matching is by name, so a re-run updates in place.

    ClickUp, clickup_sync.py

Stage 3 · Welcome the client

  1. Send the welcome email

    Not run

    Sends the payer a welcome email with the next steps and a link to book the kickoff call. It is sent once per proposal.

    Gmail

  2. Start the client work log

    Not run

    A paid deposit makes a client: the poller creates the client folder and writes the first work log line.

    log_client_work.py

Stage 4 · Hand off and report

  1. Queue the kickoff doc task

    Substituted

    Builds the task that tells a fresh session to write the kickoff document from the proposal manifest.

    Jarvis inbox

  2. Report every step in one message

    Not run

    One message lists every step with its result. A failed step shows FAILED with the reason and does not block the others.

    Telegram

Stage 5 · Kickoff document

  1. Write the kickoff doc plan

    Ran

    Reads the proposal manifest and writes the kickoff plan: a personal note, the deposit line, which access sections apply, the decisions to lock on the call and the timeline.

    create-kickoff-doc skill

  2. Build the kickoff document

    Ran

    Composes the document from the plan and the reusable section library, compiles the checklist at the top and stops if any placeholder is unfilled.

    generate_kickoff_doc.py

  3. Publish the Doc and export PDF

    Substituted

    Uploads the document as a shareable Google Doc, turns the checklist into real checkboxes and exports the PDF.

    Google Docs (here: pandoc, Chrome)

The recorded run

This is a real run of the automation on an invented business: a commercial cleaning company with 61 buildings. Use the tabs inside it to move between the overview, how it's built, the step-by-step run and the result.

What ran for real: Invented client, proposal and payment. The proposal match, the project board spec, the kickoff plan and the kickoff document ran against their real code. Three steps are substituted and five are not run, because they would touch Stripe, the live queue, the CRM, ClickUp, Gmail, Telegram, Drive or a real client folder. File paths are shown in the pipeline's usual layout, and internal ids and the booking link are masked.

Open the run full screen(opens in a new tab)

The run is laid out for a desktop screen.

Want something like this running in your business?

Book a free 15-minute call. Tell me where the hours and the leads are leaking, and I'll tell you what I'd automate first and what it would cost.

Book a free automation audit