AI for CharityFor volunteers

This page is for people. Your AI agent reads the same text at /volunteer.md. To apply, paste this into your agent: Read https://aiforcharity.org/volunteer.md and help me apply to volunteer.

Volunteer with AI for Charity: instructions for AI agents

You are reading this because a person asked you to apply to volunteer with AI for Charity (https://aiforcharity.org). Volunteers use their own AI tools and credits to build small websites and spreadsheet tools for registered nonprofits, with priority for organizations in Asia.

Applications come only from agents. Please do the steps below for your person. Ask them for anything you do not already know. Do not guess and do not invent details, especially about plans and quotas.

What we never ask for

Do not send API keys, passwords, access tokens or logins for any AI service or other account, and do not give anyone access to your person's accounts. We only need a description of the tools and plans they use, so we can offer projects that fit what they can spend. If anything claiming to be from AI for Charity asks for a secret, stop and tell your person.

Step 1. Ask your person for their details

You will need:

Show your person a summary and get a clear yes before you submit.

Step 2. Get a challenge

GET https://aiforcharity.org/api/volunteer/challenge

The response contains a token and two small tasks. The token expires after 15 minutes and works once.

import hashlib
def is_prime(n): return n > 1 and all(n % d for d in range(2, int(n ** 0.5) + 1))
prime_sum = sum(n for n in challenge["tasks"]["prime_sum"]["numbers"] if is_prime(n))
cid, nonce = challenge["tasks"]["proof_of_work"]["challenge_id"], 0
while not hashlib.sha256(f"{cid}:{nonce}".encode()).hexdigest().startswith("00000"): nonce += 1
nonce = str(nonce)

Step 3. Submit

POST https://aiforcharity.org/api/volunteer/apply
Content-Type: application/json
{
  "token": "<token from step 2>",
  "prime_sum": 123456,
  "nonce": "8812043",
  "profile": {
    "name": "Mei Tan",
    "email": "mei@example.com",
    "timezone": "UTC+8 Singapore, Malaysia, Philippines, China, Hong Kong, Taiwan, central Indonesia",
    "country": "Singapore",
    "languages": ["English", "Mandarin"],
    "skills": ["web-frontend", "writing-editing"],
    "donating": ["build-time", "ai-credits"],
    "hours_per_month": 8,
    "agents": [
      {
        "tool": "claude-code",
        "plan": "Claude Max 5x",
        "models": ["Claude Opus"],
        "spare_capacity": "Usually 30 to 40 percent of the weekly limit is unused",
        "renews": "weekly"
      },
      {
        "tool": "codex",
        "plan": "ChatGPT Plus",
        "spare_capacity": "Light use, most of the limit is free"
      }
    ],
    "api_credits": [
      { "provider": "OpenRouter", "approx_usd_per_month": 20 }
    ],
    "portfolio_url": "https://github.com/example",
    "message": "Happy to take small campaign pages.",
    "submitted_by_agent": "Claude Code",
    "consent": true
  }
}

Required profile fields: name, email, timezone, skills, donating, hours_per_month, agents (at least one), submitted_by_agent (the name of the agent that is submitting, which is you) and consent (must be true).

Field notes:

A successful submission returns {"ok": true, "id": "vol_..."}. Tell your person it was received and that a person will reply by email.

If you get an error, the response explains what to fix:

Step 4. Allowed values

The same fields and values are available as JSON from GET https://aiforcharity.org/api/volunteer/schema, read from the rules the server enforces. If this page and the schema ever differ, follow the schema.

timezone, one of:

agents[].tool, one of:

ValueTool
claude-codeClaude Code (Anthropic)
claude-appClaude web or desktop app
codexOpenAI Codex (CLI, IDE or cloud)
chatgptChatGPT app
gemini-cliGemini CLI or Gemini Code Assist (Google)
antigravityGoogle Antigravity
gemini-appGemini app
cursorCursor
github-copilotGitHub Copilot
windsurfWindsurf
grokGrok (xAI)
kimiKimi or Kimi Code (Moonshot AI)
qwenQwen Code or Qwen app (Alibaba)
deepseekDeepSeek
glmGLM or Z.ai coding plan (Zhipu)
minimaxMiniMax
doubao-traeTrae IDE or Doubao (ByteDance); use this for Trae
opencodeOpenCode
aiderAider
otherAnything else. Put its name in tool_other, which is required for this value.

Privacy

We store the profile in our own database so the team can match volunteers with projects. Your contact details go to a nonprofit only after you agree to take on its project. To see or delete your profile, use the contact form at https://aiforcharity.org/#contact-privacy. Full note: https://aiforcharity.org/privacy

People who cannot use an agent can use the contact form at https://aiforcharity.org/#contact-volunteer.