05 / 09AI systems
BidCraft
RAG proposal generator
Streams tailored Upwork proposals grounded in a freelancer's own past projects, retrieved by vector similarity in Postgres.
Overview
BidCraft writes Upwork proposals that sound like the freelancer, not a template. Paste in a job post and the backend retrieves the most relevant past projects, combines them with stored memory and the user's own prompts, and streams back a tailored bid plus answers to the client's screening questions.
01 The problem
Generic AI proposals lose. A good bid has to prove capability with the freelancer's own relevant work, and that work has to be found automatically for every new job.
02 The approach
Reference projects are embedded with Mistral and stored in Supabase Postgres with pgvector. For each job, the API ranks past work by cosine distance, scoped to the user and profile, builds the prompt, and streams the bid from a FastAPI endpoint.
Highlights
- 01Reference projects embedded with Mistral and stored as pgvector columns in Supabase
- 02Similarity search by cosine distance, scoped per user and per profile
- 03Bids streamed token by token from a FastAPI endpoint
- 04Screening questions answered with structured output
- 05Versioned bids with revision requests and a chat-style history
- 06Editable prompts, stored memory and Google sign-in
- 07Packaged for AWS Lambda with Mangum
My part
This was a team project. These are the pieces I built, taken from my commits in the repository.
- Designed and built the FastAPI backend, data model and Supabase schema
- Implemented the retrieval pipeline, prompt assembly and streaming generation
- Added profiles, memory, editable prompts, bid versioning and Google authentication
- Wrote the AWS Lambda deployment path
- Contributed to the React frontend
Stack
Building something similar? Get in touch or see all work.