Limited Search, published on GitHub as AI Search Engine, is an AI answer engine: you ask a question and get a live, streamed answer grounded in Google Search results, with numbered citations back to the sources. It is live at limited-search.com and is built as a single Next.js application with no separate backend.
What does the project do?
Limited Search has three modes. Search mode attaches Gemini's googleSearch tool, so the model runs live Google searches and returns grounding metadata; the interface renders it as numbered citation chips and a sources row, including Google's required search-suggestion widget. Chat mode skips the tool for plain conversation. Think mode raises the model's thinking level and streams its thought summaries into a collapsible block. Answers stream in as they are generated, users sign in with email and password or Google OAuth, and conversations are stored in Supabase. Search mode is a small, concrete case of the tool use described in Who are These Agents?: the model is given a tool and runs live searches with it.
How does it work?
Everything runs in one Next.js app. The browser sends a POST request to /api/search, a Next.js route handler on Vercel, and reads the reply as server-sent events (SSE). The handler checks the Supabase Auth cookie session, applies a Postgres rate limiter through the consume_rate_limit RPC, and then calls Gemini's generateContentStream, with the googleSearch tool in search mode. The stream carries typed events (delta, thought, sources, citations, done and error) that the interface renders incrementally with Streamdown. The README lists this stack:
- App: Next.js 16 (App Router), React 19, TypeScript
- AI: Gemini (
@google/genai) with Google Search grounding - Auth and data: Supabase (email/password and Google OAuth, Postgres with RLS)
- UI: Tailwind CSS v4, shadcn/ui, Streamdown, lucide-react, next-themes
- Hosting: Vercel (Hobby), deploys on push to
main
What are the design decisions?
Several choices keep the project small and cheap to run. There is no separate backend, and the API route stays stateless: conversation history is written from the browser straight to Supabase under row-level security. Rate limiting is enforced server-side by a security definer function keyed on auth.uid(); if the limiter itself errors, the code lets the request through and treats the Gemini quota as the hard backstop. Grounding segment offsets arrive as UTF-8 byte positions, so src/lib/grounding.ts maps them to JavaScript string indices, which keeps citations aligned in any language. According to a code comment, search mode defaults to gemini-2.5-flash and chat to gemini-3.5-flash, because free-tier keys have Google Search grounding quota on the 2.5 model but not on the 3.x family.
What are its limitations?
Limited Search runs entirely on free tiers: Vercel Hobby, Supabase Free and the Gemini API free tier, which covers Flash requests plus a monthly grounding allowance. Per-user rate limits apply: search is limited to 10 requests per minute and 150 per day, and chat to 20 per minute and 500 per day. When the free AI quota is exhausted, the app shows a message suggesting chat mode or a later visit. Signing in is required to search, a single query is capped at 4,000 characters, only the six most recent turns of a conversation are sent to the model as history, and the route handler is limited to 120 seconds per request. The README publishes no accuracy, latency or usage figures, so none are quoted here.
Where can I try it or read the code?
The app is live at www.limited-search.com. The source is on GitHub under the GPL-3.0 license, and the database schema lives in supabase/migrations/. To run it locally, install the dependencies, copy .env.example to .env.local, and fill in NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, GEMINI_API_KEY and, optionally, GEMINI_MODEL:
npm install
cp .env.example .env.local
npm run dev
The dev server runs at http://localhost:3000. For more work like this, see the Projects page.
The one sentence version
Limited Search is a Next.js app that streams Gemini answers grounded in Google Search, with numbered citations and per-user rate limits, running entirely on free tiers.