Felipe Figueiredo
← All Projects

Project

Strategic Council

7 adversarial AI advisors debate your business idea — structured LLM output, interactive SVG mandala, no database.

Next.jsTypeScriptTailwind CSSFramer MotionGeminiZodUpstash RedisVercel
Strategic Council

Static AI analysis produces consensus by default. Strategic Council breaks that deliberately: seven advisors hold conflicting stances — Favorable, Cautious, Critical — and the collective verdict is locked until you engage with each one.

Technical Decisions

Interactive SVG Mandala

The seven-segment mandala is built in SVG with clipPath definitions and CSS-only hover states — no canvas, no JS. Framer Motion handles entrance animations; hover logic is pure CSS clip-path transitions. On mobile the mandala is replaced by a card grid sharing the same data model — progressive enhancement, not a parallel implementation.

Structured LLM Output

gemini-2.5-flash-lite returns a JSON payload parsed immediately against a Zod v4 schema. If the model hallucinates the structure, validation fails fast with a typed error surface — no silent undefined downstream.

Conditional Rate Limiting

Upstash Redis rate limiting (5 req / 60 s per IP) activates only when the environment variable is present. The app runs fully in local dev without Redis configured; the production path is protected without a code branch.

Stateless by Design

All session data lives in sessionStorage — no database, no auth, no server-side state. Fully deployable on Vercel's edge with zero infrastructure beyond Redis for rate limiting.

Internationalisation

Four locales (PT-BR, EN, ES, IT) with no third-party i18n library. Translations are typed TypeScript objects; the active locale resolves from sessionStorage and threads via React context — no middleware routing overhead.