Inspiration
SEO tools are everywhere, but Generative Engine Optimization (GEO) has no operating system. When users ask Gemini "what's the best clear ice sphere mold", brands are mentioned — or not — based on signals no one is tracking. We wanted a single place that answers:
- How does Gemini currently describe my brand?
- Which queries surface my brand, and which surface competitors?
- What's missing in my site, content, and authority to rank in AI answers?
- Which actions actually move the needle?
What I learned
- AI answers are not a single ranking — they're a mosaic of citations, brand mentions, and entity understanding. Optimizing each layer needs different data.
- Without a structured brand knowledge base, Gemini hallucinates product facts (price, material, dimensions). Data before generation is the only honest approach.
- Most "GEO tools" are either AI writers or SEO audits with a chatbox.
Neither closes the loop. The real product is the loop:
crawl → knowledge → monitor → diagnose → task → execute → verify.
How I built it
A monorepo on Next.js 15 + Prisma + SQLite with a Gemini adapter layer (Structured JSON Schema, Mock fallback when no API key). The platform covers 24 API modules: project RBAC, CSV/XLSX import center, sitemap crawler, query intelligence, page versioning, Gemini runs, citation tracking, competitor diagnosis, task dispatch, GSC/GA4/Shopify integrations, audit logs, recycle bin, and version history.
17+ Vitest tests, TypeScript clean, production build green.
Challenges
- SQLite has no
pgvector— solved with JSON columns for embedding shims so the schema is Postgres-portable. - Gemini's response shape drifts; pinned it down with a strict Zod-derived JSON Schema and a mock adapter that ships deterministic fixtures.
- AI-generated data must be editable, deletable, restorable — designed a soft-delete + version history + recycle bin layer that applies to every entity, not just content.
Built With
- bcryptjs
- bullmq
- cheerio
- csv/xlsx
- gemini-2.5-flash
- google-gemini-api
- jwt
- next.js
- playwright
- pnpm-workspaces
- postgresql
- prisma-orm
- radix-ui
- react-19
- react-hook-form
- recharts
- redis
- sqlite
- tailwind-css
- tanstack-query
- tanstack-table
- turborepo-style-monorepo
- typescript
- vitest
- zod
Log in or sign up for Devpost to join the conversation.