← Pipeline
BetterChatGPT JS Plugin Support ($100)
DraftedLog time
Record payment (→ marks Paid)
Decision / notes
Read-only — unlock operator mode (top right) to edit.
Risk
| Risk | Likelihood | Mitigation | |---|---|---| | Poster doesn't pay | Medium (personal bounty, old issue) | Confirm before spending any effort | | Feature already in repo | Medium (2+ years elapsed) | Check repo first | | PR rejected by maintainer | Low-Medium (8400-star repo, active) | Write clean, tested code | | Spec ambiguity | Low | TypingMind is the reference; link in PR |
Deliverables (0)
None yet — MINT attaches the PR/claim text + code here once it builds.
Timeline
No events yet.
Full proposal (drafted by MINT)
# Proposal Draft — BetterChatGPT JS Plugin Support ($100)
> **Status**: DRAFT — requires operator review and approval before submission
> **DO NOT SUBMIT without operator approval** (per gig-earner guardrails)
> **Written**: 2026-06-04T09:00:41Z (G4 leaf)
---
## Bounty Details
| Field | Value |
|---|---|
| Issue | https://github.com/ztjhz/BetterChatGPT/issues/499 |
| Title | FR: ($100 Bounty) Add JavaScript based plugin |
| Repo | ztjhz/BetterChatGPT (8,400 stars) |
| Reward | $100 USD (personal bounty from issue poster) |
| Payment rail | Direct from poster (no Algora/IssueHunt — requires bilateral agreement) |
| Discover score | 6.80 (scope=3.2 spec=2.7 comp=5 pay=3.0) |
| Competition | 0 comments |
| Issue age | Posted 2023-11-24 (open, no activity) |
## Issue Summary
The poster requests plugin support similar to [TypingMind](https://typingmind.com) — JavaScript functions with an OpenAI function spec that can be executed by the model, running fully client-side. Use cases: web search, chart creation, custom tools.
**Key requirement (from issue):**
> "Allow the creation of plugins (JS functions with an OpenAI function spec that can be executed by the model) similar to how TypingMind does it."
## Pre-Qualification Checks — UPDATED 2026-06-04T11:44Z (tick=635)
**MINT verified the following via GitHub API:**
1. ✅ **Issue is STILL OPEN** — state: open, 0 comments, last updated 2023-11-24 (no changes in 2.5 years)
2. ✅ **NO plugin system exists in the repo** — searched `PluginManager`, `usePlugin` in codebase: 0 hits. The `src/` directory has no `plugins/` folder.
3. ⚠️ **REPO IS DORMANT** — last commit was 2024-05-14 (13+ months ago: "Add gpt-4o"). No commits since. Maintainer appears inactive.
4. ❌ **HIGH RISK: poster unresponsive** — 0 comments on the issue, posted 2023-11-24, no updates. Poster may have moved on.
**Revised risk assessment:**
- The $100 feature opportunity is REAL (not yet built)
- BUT the repo is unmaintained — even a perfect PR may sit forever
- Personal bounty = no escrow; poster (not the maintainer) controls payment
**Recommended first step**: Operator posts a comment: "Hi, is the $100 bounty still available? I'm interested in implementing this plugin system." Wait for response before MINT builds the PR. If no response in 7 days → deprioritize.
## Proposed Solution Approach
### Architecture
1. **Plugin definition schema** (follows OpenAI function spec):
```json
{
"name": "web_search",
"description": "Search the web for recent information",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Search query" }
},
"required": ["query"]
},
"implementation": "async function webSearch(query) { ... }"
}
```
2. **Plugin registry** (localStorage-persisted):
- `PluginManager` class: load/save/validate plugins
- UI: "Plugins" tab in settings modal
- Add/edit/delete plugin JSON definitions
3. **Execution layer**:
- Intercept model `tool_call` / `function_call` responses
- Match to registered plugin by name
- Execute `new Function('params', implementation)(args)` in sandboxed scope
- Feed result back as tool/function message
4. **Security**: `Function()` with limited scope (no `window`, no `fetch` to arbitrary URLs without CORS — browser already enforces this client-side)
### Deliverable (PR branch `feat/js-plugins`)
- `src/hooks/usePluginManager.ts` — plugin CRUD + localStorage persistence
- `src/components/PluginModal.tsx` — settings UI (add/edit/delete plugins)
- `src/utils/pluginExecutor.ts` — safe JS execution + tool_call routing
- Updated `ChatInterface.tsx` — intercept function_call responses
- `README.md` — 2-paragraph plugin authoring guide + example
### Estimated timeline
MINT can produce a draft PR branch in 1 tick (~15 min) given the codebase structure. Operator review + testing would be the main gate.
## Risk Assessment
| Risk | Likelihood | Mitigation |
|---|---|---|
| Poster doesn't pay | Medium (personal bounty, old issue) | Confirm before spending any effort |
| Feature already in repo | Medium (2+ years elapsed) | Check repo first |
| PR rejected by maintainer | Low-Medium (8400-star repo, active) | Write clean, tested code |
| Spec ambiguity | Low | TypingMind is the reference; link in PR |
## Verdict
**GATE-1 (confirm with poster)** before building. If poster confirms $100 is live:
→ MINT builds the PR in 1 tick
→ Operator posts comment claiming intent + links PR
→ $100 collected via agreed method
**Alternative**: If poster is unresponsive, this becomes a contribution to the open-source project only (no payment).
---
## Alternative: arakoodev/EdgeChains Qdrant Bounty
If BetterChatGPT poster is unresponsive, consider:
- **Issue**: https://github.com/arakoodev/EdgeChains/issues/273
- **Task**: Add qdrant vector DB support to the JavaScript SDK using the REST API directly
- **Payment**: Via Algora (confirmed working payment rail) — likely $25-$75
- **Stars**: 423 (real active project)
- **Spec**: "use the API directly and wrap them in edgechains classes" — very clear
- **Age**: Open since 2023, no recent activity — lower competition
- **AI-do-ability**: HIGH — pure TypeScript SDK extension with clear API docs
**Why it's better as a safety net**: Algora is a real payment rail with on-chain escrow. Even if reward is small ($25-$75), it's guaranteed on merge. BetterChatGPT is higher $ but personal-promise payment.
---
*Next step: Operator reviews this draft and either (a) confirms with BetterChatGPT poster, (b) claims the arakoodev bounty via Algora, or (c) defers — MINT will continue discovering.*