all work
#web2026· Founder + Lead Engineer

ProposalForge

AI proposal copilot for Upwork. Scores job fit, researches the client, flags risks, and drafts personalized proposals in the freelancer's voice.

Upwork freelancers spend hours reading jobs, evaluating fit, researching clients, and writing proposals — most of which never convert. Existing tools either auto-spam (which violates Upwork ToS and erodes profile quality) or do basic templating that does not match how good freelancers actually write. The brief was a copilot that respects platform rules and helps freelancers ship better proposals, faster.

  • Next.js 15
  • FastAPI
  • Postgres
  • pgvector
  • Anthropic Claude
  • Stripe
proposalforge

What I owned

Designing and building the entire stack: Next.js 15 App Router frontend with shadcn-style UI, FastAPI Python backend with SQLAlchemy 2.0 and Pydantic v2, Postgres 16 with pgvector for semantic search across job and proposal history, Anthropic Claude (Sonnet 4.6 default, Opus 4.7 for hard scoring) for fit scoring and proposal drafting, OpenAI embeddings for vector search. Stripe Checkout and Customer Portal for billing. Sentry and structlog for observability. Slowapi for per-user rate limits.

Constraints

  • Compliance-first — no scraping, no auto-submit, no client-impersonation messaging
  • Voice-matching must learn from user-supplied past proposals
  • Fit scoring must explain its reasoning, not just produce a number
  • Per-user rate limits to control LLM cost

Process

  1. 01

    Job intake

    Paste a job description; app extracts structured fields (skills, budget, timeline, client signals).

  2. 02

    Fit scoring

    Claude scores fit against the freelancer's profile and historical conversion data, with explanation.

  3. 03

    Client research

    Public-signal research (no scraping) summarized into actionable risk flags.

  4. 04

    Voice-aligned drafting

    Proposal drafted in the freelancer's voice using their past-proposal corpus as in-context examples.

  5. 05

    Manual review

    User reviews, edits, and submits on the source platform manually.

Approach

Compliance was the architectural constraint that drove everything else: no scraping forced public-signal research only; no auto-submit kept the freelancer in the loop; no impersonation forced voice-alignment to be a feature, not a workaround. The technical decisions (Claude for reasoning, embeddings for similarity, Postgres + pgvector for storage) came after.

Deliverables

  • Next.js 15 frontend with shadcn-style UI
  • FastAPI Python backend with SQLAlchemy 2.0
  • Postgres + pgvector for semantic proposal search
  • Anthropic Claude integration for scoring and drafting
  • Stripe Checkout, Customer Portal, and webhooks
  • Per-user rate limiting and cost control
  • Sentry observability and structured logging

Outcomes

  • Active development in private alpha
  • Compliance-first architecture documented and enforced
  • Multi-model routing (Sonnet default, Opus for hard scoring) controls cost
  • Voice-alignment quality validated against held-out proposals

Have a project that calls for this kind of work?

Start a project