AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
OAuth 앱을 등록하고 승인받는 과정과 10개 제공자의 요구사항을 라벨링하고, 앱을 조사하는 에이전트를 제공합니다
What it takes to register an OAuth app and get it approved, for ten providers, with every claim labelled by how we know it. Plus an agent that researches any app.
개발 도구TypeScript · CSSGitHub @moulshreebhutra온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live: https://oauth-guide-agent.vercel.app · Repo: https://github.com/moulshreebhutra/oauth-guide-agent · Built by Moulshree Bhutra for Composio's APM, Toolkits take-home.
A developer who wants their users to connect an app may first have to register an OAuth app with the provider and get it approved. They cannot tell whether that is an hour or weeks, what blocks approval, or what an agent can do for them. Existing setup guides cover the clicking and skip the decision.
Scope: a focused slice that answers the developer's questions before they start: how hard is it, how much of my time, how long is the wait, what are the catches, what can an agent do and where do I take over, and how sure are you. Ten researched providers chosen for different kinds of difficulty, plus a live agent for any other app.
| Page | What it does |
|---|---|
| Home | Look up any app by name or website (library guide, or straight to the live agent). Explains the three pieces people mix up (provider OAuth app, your integration, your users' connections). Compares all ten providers side by side: difficulty, your time, the provider's approval wait, and whether Composio can manage the OAuth app. |
Guides (/guide/<app>) | Per provider: difficulty tier with a written reason, hands-on time, approval wait, Composio managed-auth status, requirements, scopes, steps (marked you / agent / either, with why-not-agent), blockers with fixes and when to escalate, next actions, what was tested, what is uncertain, sources with quoted excerpts. Includes an Ask box scoped to the guide. |
Live agent (/live) | Type an app name or website. The agent reads Composio's toolkit page first, then the provider's OAuth discovery, searches, reads the provider's pages (including the review and quota pages) and writes a guide, streaming its progress with an Expand all / Collapse all list of steps. Code checks the result (below). The guide comes with a share link (signed, stateless) and a JSON copy. |
| Ask | Question answering over all the guides: BM25 retrieval with synonym groups (approval = review = verification), optionally re-ordered by Gemini embeddings when that key works (no vectors are prebuilt, so by default plain keyword order); a model writes the answer from the retrieved passages and code verifies every citation. App names and "tell me everything about X" return that guide in reading order. Questions about apps outside the guides are answered from live web research (Tavily search plus the provider's own pages) with sources, or from general model knowledge, and labelled as such. |
Findings (/findings) | What the research taught us, what was corrected or held back, what could not be verified. |
| How it works / Method | Architecture, the evidence labels, what code checks, the plan for scaling to 100 apps. |
| Asked for | Where it is |
|---|---|
| Look up an app, get a guide to use and share | One search box on the home page: library guide, a saved live copy, or a fresh live run. Guides have copy-as-Markdown, an agent brief, print, a badge, and signed share links for live guides |
| Live generation for apps outside the library, in real time | /live (and the home search): the agent probes Composio and OAuth discovery, searches, reads the provider's pages and writes a guide, streaming each step |
| Varied real apps | Ten guides chosen for different difficulty: GitHub, Notion, HubSpot, Salesforce, Microsoft/Outlook, Shopify, Slack, Google Workspace, LinkedIn, Meta |
| How hard, how long, requirements, agent vs you | Each guide: tier with reason, hands-on time, approval wait, requirements, scopes, steps marked you/agent/either, blockers and escalation |
| What was tested, what sources support, what is uncertain | Evidence tags on every claim; quotes checked by code for live guides; /findings and /method list corrections and gaps |
| Check a sample against sources | /findings (what was corrected or held back) and docs/TESTING.md for the hands-on log; no hands-on registration has been done yet |
| Path to 100 apps | scripts/batch-generate.ts and data/seed-apps.txt (36 candidate apps); see "From 10 guides to 100" |
| README, decisions, limitations, no credentials | This file; keys live only in host environment variables |
/findings)Every claim carries one tag: tested (we did it), sourced (a quoted excerpt supports it), reported (community or third party only), inferred (our reasoning), unknown.
lib/postprocess.ts): evidence must come from a page fetched in that run; each quote must literally appear in that page or it is removed; a sourced claim that loses its evidence is downgraded to inferred, or to reported if only community pages back it; a sourced claim must share wording with the page it cites, any year it names must appear there, and every figure of 10 or more must be on a cited page or the claim becomes inferred (a number only a community page contains makes it reported); an unsupported gotcha that is not about setup, auth, review or limits is dropped; "no review is mentioned" can never be sourced; forum, community and Q&A pages are never counted as official; a Tier 3 or 4 without a sourced review step is lowered to Tier 2; steps done in the provider's console are always "you"; the model can never mark anything tested; the guide must pass a schema and consistency checks or nothing is shown.unchecked until npm run verify-quotes is run from an open network; the prediction-vs-actual check for unseen apps (docs/TESTING.md) has not been run.lib/audit.ts) reads every claim next to the quotes it cites and flags what they do not support: unsupported, wrong scope (private apps only, older policy, another product), two processes blended, or off-topic. It can only remove or downgrade, never add or raise a tag, and it is skipped, with a note, if time runs short. docs/TESTING.md lists every fault found so far and what stops it.docs.composio.dev/toolkits/<app> first, then picks searches and pages (JSON actions). Code executes them under an action and time budget (6 actions, about 45 s of research, about 190 s in total), refuses repeated or reworded searches and pages that no search or link returned, runs three fixed searches for review, access-tier and quota pages and reads the best matches, skips customer-account, product-review, release-note and audit-log pages when choosing which to read, makes sure a provider page about registering the app was read, blocks private/loopback addresses on every redirect, and treats page text as data.lib/llm.ts) that tries Claude or Groq first, then Gemini or OpenRouter, then Claude again as the last resort; writing a whole guide goes to Claude first with most of the time. A provider without a key is skipped and every failure is reported by name. Verified live: Claude, Groq, OpenRouter. Gemini is wired in but currently answers 429/503 until billing is enabled on the Google project, so it is optional.TAVILY_API_KEY); DuckDuckGo is the keyless fallback but blocks most cloud hosts. When a page blocks the fetch, the search engine's own copy of its text is used and labelled./api/health shows which models your key can see and which answer right now (never the key). npm run check:live -- <url> runs an end-to-end check of the deployed site.npm install
cp .env.example .env.local # fill in the keys you have; every key is optional
npm run dev # http://localhost:3000
npm test # 83 offline tests (guardrails, claim-versus-page checks, share links, retrieval, citations)
npm run validate # schema + consistency checks on every library guide
npm run verify-quotes # re-matches every library quote against the live page (needs internet)
npm run check:live -- https://oauth-guide-agent.vercel.app
ANTHROPIC_API_KEY=... npx tsx scripts/batch-generate.ts "Linear" "Zoom" # research more apps for review
Environment variables (host secrets only, never commit keys; .env* is git-ignored and the app never asks users for credentials):
ANTHROPIC_API_KEY (primary model) · GROQ_API_KEY, OPENROUTER_API_KEY, GEMINI_API_KEY (optional extra providers) · TAVILY_API_KEY (web search for the live agent) · SHARE_SECRET (16+ chars, enables share links) · COMPOSIO_API_KEY (optional, managed-auth lookup for live guides) · BLOB_READ_WRITE_TOKEN (added by Vercel when a Blob store is connected; shared cache) · ANTHROPIC_MODEL, GEMINI_MODEL, GEMINI_EMBED_MODEL, GROQ_MODEL, OPENROUTER_MODEL (optional overrides).
Deploy: import the repo in Vercel (Next.js, no build settings), add the variables, redeploy after any change. Pushes to main deploy automatically.
scripts/batch-generate.ts runs a list of apps through the same agent and saves each guide to data/guides/_generated for review. Plan: seed from Composio's managed-auth directory, batch, review a sample against provider docs and verify-quotes, promote reviewed guides, re-check on a schedule. Unreviewed guides stay labelled as agent-generated.
unchecked by code./findings and docs/TESTING.md). That is a read-through, not a hands-on registration, so nothing is tagged tested./plan: launch planner. Pick providers; get start order, earliest and latest launch date, and what stays unknown. Shareable URL./compare: up to three providers side by side./api/guides and /api/guides/<slug>: JSON for agents and tools. /llms.txt describes them. /badge/<slug> returns an SVG badge.In Vercel: Storage → Create → Blob → connect to this project. Vercel adds BLOB_READ_WRITE_TOKEN itself (never commit it). With it, finished guides and Ask answers are stored in Blob and shared across visitors and server instances; without it the app uses memory. /api/health reports cache: "vercel-blob" or "memory".