-
-
Virgil beside the browser: pin the exact source, then learn now or return later.
-
Learn from one grounded Pin, check understanding, or continue in another surface.
-
One board across subjects turns scattered Pins into clear next actions.
-
Check work against explicit criteria without rewriting it.
-
A deliberate Google Notebook handoff through learner-approved source documents.
-
The complete learning loop from browser capture to evidence-led recommendations.
-
Detailed production architecture across Google Cloud, Gemini, ADK, Notebook, WebMCP, and Gemma 4.
Inspiration
Learning rarely arrives as a neat course. It appears while you browse: a useful passage, a difficult idea, a deadline, feedback on your work, or a source you know will matter later.
Bookmarks preserve links, but not why they mattered. Chat can answer the current question, but it rarely stays connected to what you saved, what you understood, and what you should do next.
We built Virgil to close that gap.
What it does
Virgil is a learning manager that stays beside you while you browse.
When something matters, highlight it and press Pin. Virgil preserves the exact passage, source page, surrounding context, and your reason for saving it. You can keep browsing, learn it immediately in the side panel, or return when you have more time.
The same Pin can move across several learning surfaces:
- Learn with Virgil in the browser side panel or full web application
- Continue with the grounded context in Gemini
- Use Virgil's bounded WebMCP study tools
- Send selected material to Google Notebook
- Return later through Board, Learn, My studies, Plan, Check, or Insights
Learners can choose a one, three, or five minute path. Virgil keeps the source visible, checks understanding, accepts corrections, and records useful evidence. A wrong answer, correction, completed task, or recorded outcome can change the next recommendation for a visible reason.
Longer work continues after the browser closes. Virgil can research, organise sources, identify gaps, update the learner model, prepare a lesson, and verify that the result remains grounded in the original material.
It also supports an explicit local model route using Gemma 4. The learner chooses Cloud or Local deliberately. Virgil never silently changes providers.
How we built it
Virgil combines a Chrome Manifest V3 extension with a hosted TypeScript and Node.js application.
The extension provides selected-text capture, a toolbar popup, and a persistent side panel. The hosted application gives the learner a larger workspace for Pins, studies, plans, reviews, outcomes, and background processing.
The deployed model route uses Gemini 3.5 Flash-Lite. Durable background work runs as an eleven-stage Google ADK SequentialAgent workflow:
- Intake
- Forage
- Cluster
- Survey
- Analyse
- Comfort
- Statements
- Prospect
- Garden
- Compose
- Verify
The workflow runs in a Google Cloud Run Job, separate from the Cloud Run service that hosts the browser product. This allows work to continue safely after the learner closes the tab.
Firestore stores durable, isolated learner state. Firebase Authentication identifies the learner, while the server verifies identity before accessing Firestore. The browser never talks directly to the database. Secret Manager, scoped IAM, and deny-all Firestore client rules protect the server-owned boundary.
Each background run uses checkpoints, idempotency controls, and terminal receipts. Gemini calls retain the exact model and token record, and Virgil checks the learner's Cloud limit before sending a request.
Google Notebook export is an explicit, one-way handoff through stable Google Drive documents for material to learn now, items on the board, and archived material. Virgil does not read Notebook responses back or silently treat them as learner evidence.
Virgil also exposes four bounded WebMCP study tools and a read-only guide over visible product surfaces.
For local processing, an authenticated hosted-to-local connector implements a fast text route using gemma4:12b-mlx. It does not open an inbound laptop port, does not silently replace Gemini, and preserves the same learning contract across providers.
Data sources
Virgil does not use a third-party training dataset. It works from material the learner deliberately supplies or approves: selected browser text, public source links, notes, documents, PDFs, images, syllabi, rubrics, deadlines, drafts, answers, corrections, and explicitly recorded outcomes. Virgil preserves source provenance and does not ingest private browsing history.
Challenges we faced
The first challenge was making capture genuinely lightweight. If saving a passage requires organisation, waiting, or an immediate model call, the extension becomes another interruption. We separated capture from processing so a Pin is saved first and learning can happen now, elsewhere, or later.
The second challenge was keeping background work trustworthy. An eleven-stage workflow is only useful if the learner can see what ran, what changed, and whether it completed. We added durable checkpoints, retry-safe execution, stage receipts, and an independent verification stage before material can be promoted.
The third challenge was maintaining one coherent product across several surfaces. The side panel, full Virgil page, Gemini, WebMCP, and Google Notebook could easily become disconnected features. We designed them around the same grounded Pin and made every transfer deliberate.
The fourth challenge was privacy and provider control. Cloud and Local needed to be real choices, not labels over hidden fallback behaviour. Identity, storage, budgets, model routing, and provider selection are enforced in code rather than left to model judgment.
What we learned
The most important product lesson was that capture must stay almost free. The value appears later, when saved material becomes a useful next move rather than a larger pile.
The most important agent lesson was that generated content is not a result by itself. A useful run needs a visible control, a durable receipt, a resulting product surface, and stored evidence that all agree.
We also learned that adaptation should follow evidence, not a guessed learning style. Virgil changes its recommendation based on what the learner answers, corrects, postpones, and achieves.
Finally, we learned that models work best inside clear boundaries. Gemini handles the deployed reasoning and teaching work, while deterministic code controls identity, persistence, budgets, ranking, provider selection, and recovery.
What we are proud of
Virgil is not a chat window attached to a bookmark manager. It is a working learning loop:
See something. Pin it. Learn now or later. Record what changed. Get the next useful move.
Virgil was conceived, designed, and built in full during the Google All Things Agentic Hackathon contest period. It contains no pre-existing product code.
Built With
- artifact-registry
- chrome
- cloud-run-jobs
- firebase-authentication
- firestore
- gemini-3.5-flash-lite
- gemini-api
- gemma
- google-adk
- google-cloud-run
- google-drive-api
- manifest-v3
- node.js
- secret-manager
- typescript
- webmcp
Log in or sign up for Devpost to join the conversation.