Bucket is an application operating system

Not a form builder. Not a Zapier glue layer. Bucket maintains a continuously evolving representation of you, maps that representation onto high-stakes forms, and only asks for confirmation when human judgment actually matters.

Why Bucket exists

Across accelerators, grants, visas, and scholarships, the failure mode is consistent: applicants already articulated their strongest narrative in chats with Claude or ChatGPT, resumes, and email, then degraded it under deadline pressure while retyping into fifty proprietary portals. Autofill pastes strings. Generic LLM wrappers dump context windows. Neither builds retrieval tuned per field, nor handles login walls, CAPTCHA, OTP, or credential storage with review gates.

Research framing: $4.4 billion in free money expired last year because people did not fill a form. Bucket attacks that gap. Throughput plus quality, with memory that compounds.

Core loop

  1. Know you · ingest sources into chunked memory with embeddings (pgvector) and structured profile fields.
  2. Understand the form · resolve URL via form directory or discovery; analyze fields (intent, constraints, tone).
  3. Draft · retrieve top-k memory chunks per question; generate with Claude / GPT under program-specific guidance.
  4. Human review · confidence flags, edit, confirm. Never silent submit.
  5. Execute · optional Playwright worker on a persistent host opens the real URL, decrypts vault credentials, types humanly, solves CAPTCHA via vendor, pauses on OTP.

Memory system

Pipeline: source → semantic chunk → embed (1536-d) → store → cosine retrieve. Chunks prefer meaning boundaries over fixed character windows. Each row carries source, category, and metadata. Retrieval query is field-conditioned: “what do we know about user U relevant to question Q?” Fallback: recent chunks if vector index is unavailable on constrained plans.

Data sources

  • Manual onboarding · legal identity, preferred email/phone, location, role, narrative.
  • Resume / document paste · chunked as document.
  • Claude & ChatGPT imports · paste prior assistant threads where you already described the company, research, or career; tagged claude_chat / chatgpt_chat.
  • Connected apps · Gmail (sent / offers), GitHub (repos, bio), Slack / LinkedIn (intent stored; OAuth scopes expanded as providers go live).
  • In-product chat teachings · “Remember: …” routes to memory without starting a fill.

Intent gate

Chat uses a heuristic + LLM-ready intent classifier. Casual conversation never starts the fill engine. Explicit apply language (“fill my YC application”, “apply to this URL”) does. This is deliberate product architecture: wrappers auto-tool-call; Bucket refuses to waste your reputation on accidental submits.

Fill engine · Wire Form Protocol

Chat apply → Wire probe → TextDOM FieldMap → review → Confirm posts over HTTP. Portal recipes (capture once, replay forever) sit at Tier 0. CAPTCHA tokens are solved via 2captcha when a sitekey is detected. OTP pauses for you. A pooled Chromium / stealth session is spillover only for hostile SPAs.

  • Tier 0 Recipe · capture/replay HTTP (~5–40MB/job)
  • Tier 1 FormIR HTTP · HTML → TextDOM → FieldMap → submit
  • CAPTCHA island · 2captcha token inject + retry (no full browser)
  • Tier 2 A11y TextDOM · light pooled Chromium, accessibility snapshot only
  • Tier 3 Stealth · Playwright Extra for rare SPA walls

Capacity on a single 1GB worker: ~20 concurrent classic-HTML Wire fills (~25MB/job), or ~12 if one stealth browser slot is reserved for SPA walls. Target p50 is ~30s (probe + FieldMap + HTTP submit). Scale by adding Wire workers horizontally. Live numbers: GET /api/capacity.

Critical constraint: Playwright does not run on Vercel serverless. The fill worker can host Wire on tiny RAM; browsers stay optional. Control plane remains the Next.js app. Capture a recipe: npm run wire:recipe -- <url> or POST /api/wire/recipe.

Security model

  • AES-256-GCM credential vault; per-user key derivation; no plaintext passwords in DB
  • Supabase RLS on user-owned tables; service role only on server routes
  • 90-day inactivity purge of memory, credentials, chats, applications
  • OTP wall pauses fill sessions for human input via app UI (Realtime-ready)
  • Signed worker jobs only; decrypted credentials stay in worker memory for the job

Stack

Next.js 15 App Router · React 19 · Tailwind · Framer Motion · Supabase Auth + Postgres + pgvector · Anthropic Claude · OpenAI embeddings/chat · Playwright Extra worker · Vercel edge/CDN for the web app.

Not a wrapper

A thin ChatGPT iframe with “paste the form” is a wrapper. Bucket is a closed loop with durable memory, intent isolation, review UX, encrypted login reuse, and a browser runtime split justified by platform physics. The models are interchangeable engines. The product is the operating system around applying.

Privacy details: /privacy. Product: brokebucket.com.

YCY Combinator
Google Forms
Tally
Typeform
Startup India
MSME Grants
Passport Seva
Antler
Fulbright