-
-
projects hero section
-
who the target user is
-
how it differs from traditional chat bot's
-
connectors for talking with external models
-
home page of the app
-
paper viewer mode of the app
-
draft page of the app
-
external model chat mode with added dynamic context
-
searching specific papers
-
analyzed result of the paper
Inspiration
A literature review means reading 30–60 papers, holding their claims in mind all at once, noticing where they agree or disagree, and writing prose that cites them accurately. It takes several weeks.
Generic AI assistants make that worse rather than better. They answer from their training data, so a "summary" may describe a paper the model half-remembers rather than the one you uploaded. They invent citations that look right. They fill gaps confidently instead of reporting them. The cost is asymmetric in a way people underestimate: a tool that saves you an hour but requires verifying every claim has saved you nothing.
Researchers don't need a faster assistant. They need one whose output doesn't have to be checked. So, we built the constraint first and the capability second.
What it does
Omploy is a research review workspace where the assistant's world is bounded by what you gave it.
Collect: Search academic sources in parallel by DOI, title, author or keyword, or upload your own PDFs.
Ingest: On import, an unattended pipeline fetches the open-access PDF, verifies and extracts it, reads the bibliographic metadata, and produces a 19-field structured analysis in which every claim carries a verbatim quote.
Interrogate: Three grounded chat surfaces — one paper, one draft, one project. Each agent's search tool is bound to specific document ids at construction, so no argument it supplies can widen its own scope.
Write: Plan an outline that names which paper supports each section, generate, rewrite a selection in place, compare versions. Adapt. Background agents capture research notes, learn how you write from the drafts you edited most, and name the next thing worth doing.
When the sources don't cover something, it says so and stops.
How we built it
Gemini 3.5 Flash through the Google Agent Development Kit (@google/adk 2.0), reached via Vertex AI, with the agent runtime deployed to Google Cloud Run.
One decision shapes everything else: the runtime runs a single turn of Gemini and nothing more. Convex holds every prompt, every tool implementation, and the usage ledger. The container receives tool declarations, names and JSON Schemas, and never sees a document, a row, or a user id.
That started as a workaround. ADK cannot be bundled into a serverless function, so it had to live in a container. Once it did, it became the only process holding a Google credential, with nothing for a compromised prompt to reach.
Around it: Next.js 16, TypeScript, Convex as the backend and database sync layer, Clerk for authentication.
Accomplishments that we're proud of
The refusal works: Ask about something the imported papers don't cover and it reports the gap rather than filling it. That behavior survived a complete change of model vendor untouched, because it was never a prompt to begin with.
Compliance is a passing test: Four cases assert that every model tier is a Google model at version 3.5 or newer, and the runtime independently refuses any model id that isn't Google's. One command proves the requirement.
Fourteen agents changed vendor without a single guardrail moving. Not one prompt, directive, scope rule or tool binding was touched. Everything funnels through one metered function whose meter parameter is required, so an agent that forgets to declare who pays fails to compile.
What we learned
Scope is not a system prompt. Early versions asked the model to stay within the provided papers. It mostly complied, which is worse than failing loudly, because "mostly" is invisible. Binding the tool to a concrete id at construction turned a request into a property.
A profile is delivery context, not subject matter. A profile reading "synthetic-media detection", a folder of COVID-19 papers, and "write an introduction" once produced a refusal. Researchers change topics constantly. App needs to adapt to that.
A profile is delivery context, not subject matter. A profile reading "synthetic-media detection", a folder of COVID-19 papers, and "write an introduction" once produced a refusal. Researchers change topics constantly. App needs to adapt to that.
What's next for Omploy
BYOK: Connecting an account still works and credentials are stored correctly, but running a session on one is refused since the move to Gemini. This needs to be fixed before launch as MVP.
Citations as a first-class object. BibTeX is already fetched from the download platform but there is no way to auto-insert it into the draft. Inserting them into drafts with a real engine, and exporting to DOCX and LaTeX.
Templates of popular research formats. User can simply tell the AI agent what format they wish and the BibTeX engine will turn the complete paper/draft into their desired format. They just need to publish it.
Billing: The metering, enforcement and pricing are production-ready. The payment gateway isn't built or connected.
Built With
- convex
- gemini-3.5
- google-agent-development-kit
- google-cloud-run
- next.js-15
- vercel
- vertex-ai
Log in or sign up for Devpost to join the conversation.