pezkuwichain 9bb9d2cda3 fix(ai): Groq intermittent failures + sync git with actually-deployed source (#8)
The AI assistant (both @DKSKurdistanBot on Telegram and the news.pex.mom
"ask" widget) was failing to answer most questions while occasionally
succeeding — reported as "only answers about pez mining, says it doesn't
know anything else." Root cause was NOT a knowledge-base gap (the full
whitepaper/wallet/mining/book knowledge was present in both functions all
along) — it was Groq's openai/gpt-oss-120b model returning intermittent
errors (429/5xx, one raw 502) under real load, confirmed live by hitting
the same endpoint repeatedly with trivial questions ("merhaba") and
getting a ~50% failure rate even 15s+ apart (ruling out our own per-IP
rate limiter). The Anthropic fallback couldn't rescue these failures
because that key has no credit.

Fix: retry each Groq call up to 2x with backoff, and fall back to
llama-3.3-70b-versatile (the model this used before switching to
gpt-oss-120b, still free on Groq, not observed to have the same
instability) before ever reaching the Anthropic branch. Verified live
after deploying: failure rate dropped from ~50% to under ~20% across
repeated real test questions.

Also fixed a real (latent, not currently triggered since both keys happen
to be set) bug in telegram-bot: handleAIChat had an early
`if (!ANTHROPIC_API_KEY) return` guard that predates Groq being added as
primary provider — if Anthropic's key were ever removed, this would have
skipped Groq entirely despite Groq being the intended primary. Changed to
only bail if BOTH keys are missing.

Separately: this repo's git history had drifted significantly behind what
was actually deployed — main's checked-in system prompt was missing the
Trust-Score-increase guidance, the full Pezkuwi Wallet feature list, the
Mining Simulation explanation, and the entire "Bulut Ulusu" book section,
none of which showed up in any diff because they'd apparently only ever
been pushed via `supabase functions deploy`, never committed. Discovered
while resolving a merge conflict against origin/main and finding the
"upstream" side of these functions had no Groq support at all — Claude-only,
an older design than what's live. This commit's content was reconciled by
downloading the actual currently-deployed function bodies from Supabase's
Management API and using them as the source of truth, with the Groq
retry/fallback fix layered on top — so git now matches reality.
2026-07-21 07:33:17 -07:00

Pezkuwi Telegram Mini App

Telegram Mini App for Pezkuwichain - Forum, Announcements, Rewards, and Wallet integration.

Tech Stack

  • Frontend: React 18 + TypeScript + Vite
  • Styling: Tailwind CSS + shadcn/ui patterns
  • State: TanStack Query (React Query)
  • Backend: Supabase (PostgreSQL + Auth + Edge Functions)
  • Testing: Vitest + Testing Library
  • CI/CD: GitHub Actions

Getting Started

Prerequisites

  • Node.js >= 18
  • npm >= 9
  • Supabase account

Installation

# Clone the repo
git clone https://github.com/pezkuwichain/pezkuwi-telegram-miniapp.git
cd pezkuwi-telegram-miniapp

# Install dependencies
npm install

# Copy environment template
cp .env.example .env

# Add your Supabase credentials to .env

Development

# Start dev server
npm run dev

# Run tests
npm run test

# Type check
npm run typecheck

# Lint
npm run lint

# Format code
npm run format

# Full validation (typecheck + lint + test + build)
npm run validate

Build

npm run build

Output will be in dist/ directory.

Project Structure

src/
├── contexts/       # React contexts (Auth)
├── hooks/          # Custom hooks (Supabase, Telegram)
├── lib/            # Utilities (env, supabase client)
├── sections/       # Main app sections
│   ├── Announcements.tsx
│   ├── Forum.tsx
│   ├── Rewards.tsx
│   └── Wallet.tsx
├── test/           # Test setup
├── types/          # TypeScript types
├── App.tsx         # Main app component
└── main.tsx        # Entry point

Database Schema

Tables (prefixed with tg_ to avoid conflicts):

  • tg_users - Telegram users
  • tg_announcements - Admin announcements
  • tg_announcement_reactions - Like/dislike reactions
  • tg_threads - Forum threads
  • tg_thread_likes - Thread likes
  • tg_replies - Thread replies
  • tg_reply_likes - Reply likes

Environment Variables

Variable Description
VITE_SUPABASE_URL Supabase project URL
VITE_SUPABASE_ANON_KEY Supabase anon/public key

Telegram Setup

  1. Create bot via @BotFather
  2. Enable Mini App in bot settings
  3. Set Mini App URL to deployment URL
  4. Deploy telegram-auth Edge Function to Supabase

License

MIT

S
Description
No description provided
Readme MIT 8.4 MiB
Languages
TypeScript 92.4%
PLpgSQL 2.5%
JavaScript 2.2%
Python 2.2%
HTML 0.4%
Other 0.2%