Oracle3
Open-source trading engine and MCP server for prediction markets. Fee-aware no-arbitrage trading across related contracts, live on Kalshi, Polymarket and Solana or on paper.
See what a purchase means for the rest of your month before you buy it.
FinanceTypeScript · CSSGitHub @JviyataOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A mobile web app for iPhone that helps young adults decide whether something they want fits into their month before they buy it. Having the money isn't the same as being able to afford something. The app shows what changes, and the user decides.
Next.js (App Router) · Claude API (claude-sonnet-5-5) via one server route · no database (state lives in the browser for the session).
Open http://localhost:3000. On a laptop it shows inside an iPhone frame; on a phone it fills the screen.Read the full README ↗A mobile web app for iPhone that helps young adults decide whether something they want fits into their month before they buy it. Having the money isn't the same as being able to afford something. The app shows what changes, and the user decides.
Next.js (App Router) · Claude API (claude-sonnet-5-5) via one server route · no database (state lives in the browser for the session).
npm install
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env.local # optional: without it, the offline engine answers
npm run dev
Open http://localhost:3000. On a laptop it shows inside an iPhone frame; on a phone it fills the screen.
Without an API key everything still works: /api/check returns 503 and the app quietly answers with its local fallback engine (lib/fallback.ts).
Each "Can I afford this?" turn runs on Penny's Claude Managed Agent (agent_01GZ9g1famujx7KVZqZiWkjZ, whose own system prompt holds her training). If the agent fails or is slow, the route falls back to a direct Claude call with prompts/system.txt, and if that fails too, the app's offline engine answers. Users never see an error.
| Env var (Vercel → Settings → Environment Variables) | |
|---|---|
ANTHROPIC_API_KEY | Required for any AI. Without it the offline engine answers. |
ANTHROPIC_WORKSPACE_ID | Optional. If your key isn't scoped to a workspace, the app finds the workspace Penny's agent is in by itself; set this to skip that lookup. |
PENNY_AGENT_ID | Optional. Overrides the agent ID. |
ANTHROPIC_ENVIRONMENT_ID | Optional. Otherwise an environment named penny is found or created on first use. |
PENNY_AGENT | Set to off to skip the agent and use the direct call only. |
| What | Where |
|---|---|
| AI system prompt (voice and behavior) | prompts/system.txt. The JSON format and app rules are added in code (lib/ai.ts), so this file only needs tone and behavior. |
| Scene photos | public/bg/home.jpg, free.jpg, chat.jpg, shelf.jpg (see public/bg/README.md). Missing ones fall back to a warm gradient. |
| Demo screenshots | public/demo/jacket.jpg, lamp.jpg, sunglasses.jpg. If a name or price changes, update DEMO_FILES in lib/demoData.ts. |
| Fixed month numbers and starting plans | lib/demoData.ts |
| Penny, the mascot (expressions) | public/mascot/*.webp (which one shows when: lib/mood.ts). She's also the center tab-bar button that opens "Can I afford this?". |
?demo=1. The flag is saved and removed from the address bar. ?demo=0 turns it off.Option A: Vercel CLI (no GitHub needed)
npx vercel
Answer the prompts (link to a new project, keep the default settings). Then add the key and deploy to production:
npx vercel env add ANTHROPIC_API_KEY production
npx vercel --prod
Option B: GitHub. Push this folder to a GitHub repo, then in Vercel choose Add New → Project → Import. Add ANTHROPIC_API_KEY under Settings → Environment Variables before the first deploy, or redeploy after adding it.
Then share https://<your-project>.vercel.app/?demo=1 with interviewers.
Open the link in Safari → ⋯ → Share → View More → Add to Home Screen (leave "Open as Web App" on). It opens full screen with the mascot icon.
app/
layout.tsx viewport-fit=cover, Apple web-app meta, theme color
page.tsx shell; detects scene photos in /public/bg
manifest.ts Home Screen manifest
api/check/route.ts rate limit → Claude (structured JSON output) → validated result
components/
AppShell, TabBar, DeviceFrame
home/ (Donut, SettingsSheet) free/ (plans, editor sheet) chat/ (Composer, ResultCard)
shelf/ demo/ (Demo files tray) ui/ (Screen, Sheet, Mascot, Icons)
lib/
store.tsx session state (sessionStorage); Demo mode (localStorage)
useSend.ts one path for typed, spoken, photo, card-button and demo messages
check.ts POST /api/check with a 22s timeout; falls back to lib/fallback.ts
ai.ts response schema, app rules for the model, app_state text, output validation
budget.ts / updates.ts money math (always computed in code, never by the model) and plan changes
image.ts resize to 1200px JPEG + 480px thumbnail on the phone; HEIC fallback
useVisualViewport.ts keeps the input bar above the iPhone keyboard
100dvh when the keyboard opens. While it's up, the app sizes itself to the visual viewport, so the input bar sits directly above the keyboard, and the tab bar hides.black-translucent, iOS (still on 26.5) lays out the web app 47pt short and leaves a strip at the bottom unpainted. The @media (display-mode: standalone) block in globals.css works around it.capture attribute, so iOS offers Photo Library, Take Photo and Choose File.