Inspiration
Projects now collect information from documents, conversations, research, meetings, and generated content, people need executive intelligence to achieve their goals.
The difficult part is turning all that context into direction:
- What information is still missing?
- Which decision is blocked?
- What issue has the greatest effect on the project?
- What should happen next?
What it does
Gapwise builds a persistent understanding of a project and helps the user identify:
- Important unanswered questions
- Open decisions
- Risks and constraints
- Dependencies and blockers
- The most useful next focus
As the user adds context, answers questions, or confirms decisions, Gapwise updates its project understanding and recommendations.
How we built it
Project architecture
Gapwise is split into two deployed services:
- A Next.js application containing the interface, APIs, project workflows, and persistence layer.
- A private Python Google ADK service containing the conversational and research agents.
Both services run on Google Cloud Run and are deployed through Cloud Build.
User input
↓
Gemini context processing
↓
Validated structured project updates
↓
Persistent project graph in Firestore
↓
GraphRAG retrieval
↓
Google ADK agents
↓
Gap, focus, answer, or recommendation
Structured project understanding
Users can add:
- Notes
- PDF documents
- Ask conversations
- Question answers
- Confirmed decisions
- Google Calendar commitments
Gemini on Vertex AI interprets new context and returns structured project updates.
These updates can contain:
- Goals
- Facts and evidence
- Constraints
- Preferences
- Risks
- Assumptions
- Unknowns
- Decisions
- Next actions
- Relationships between project items
The application validates these updates before modifying the project.
This prevents a model response from directly becoming project truth without passing through the project's schemas, reconciliation rules, and user-confirmation workflows.
Project graph
Gapwise represents project understanding as a graph.
Nodes describe project items such as:
UNKNOWN
Can customer data be deleted within 30 days?
CONSTRAINT
Security approval is required before procurement.
DECISION
Choose the technical integration scope.
NEXT_ACTION
Run the production access rehearsal.
Edges describe relationships such as:
supports
informs
affects
blocks
depends_on
satisfies
contradicts
supersedes
A simplified project path might be:
Data-deletion capability
↓ informs
Security approval
↓ blocks
Procurement
↓ affects
Launch date
Relationship validation prevents unsupported or structurally invalid connections from being stored.
GraphRAG
Gapwise uses a lightweight GraphRAG pipeline. RAG (Retrieval-Augmented Generation). It retrieves relevant project information before Gemini generates a response. For each request, Gapwise:
- Selects up to five relevant graph nodes using lexical relevance.
- Follows relationships such as blocks, depends_on, informs, and affects for one or two hops.
- Retrieves supporting excerpts from the original sources.
- Sends a bounded Context Pack of nodes, paths, and evidence to the selected agent.
For example, a pricing question could retrieve this path:
Supplier evidence → unresolved cost estimate → blocks pricing decision → affects launch
This gives the agent the project context and supporting evidence needed for the response.
Google ADK agents
Gapwise uses four specialized agents built with Google ADK.
Gap Agent
Evaluates unresolved questions and selects the gap with the highest decision value.
It considers factors such as:
- Downstream impact
- Blocked decisions
- Available evidence
- Answerability
- Project urgency
Ask Router
Classifies each Ask request and selects one of three paths:
- Saved project context
- Graph reasoning
- Live web research
Partner Agent
Uses the retrieved project context to:
- Explain recommendations
- Compare options
- Discuss tradeoffs
- Answer project questions
- Help the user work through decisions
Web Research Agent
Uses Google Search when the answer requires current or external information.
Grounded research remains separate from confirmed project information until the user chooses to save it or use it as an answer.
Attention and recommended focus
Gapwise maintains a shared Focus Assessment for Today and Ask.
The assessment considers:
- Goal alignment
- Impact
- Urgency
- Unresolved risk
- Evidence confidence
- Actionability
- Effort
- Dependencies and blockers
Blocked decisions are sequenced behind their unresolved prerequisites. Resolved actions are removed from consideration so they do not continue appearing as recommendations.
Persistence and history
Firestore stores:
- Projects
- Graph nodes and relationships
- Ask conversations
- Answers and decisions
- Focus and overview assessments
- User memory
- Project history
- Immutable project snapshots
Cloud Storage stores original uploaded documents and generated demo files.
Each meaningful project change can create a snapshot. Users can inspect the project at an earlier moment or create a separate project branch from that state.
Deployment and observability
The production system uses:
- Cloud Run for the web and private ADK services
- Vertex AI for Gemini
- Firestore for structured project state
- Cloud Storage for uploaded files
- Cloud Build for container builds and deployment
- Secret Manager for runtime credentials
- Cloud Trace for ADK execution traces
Gapwise also provides a localhost Developer Trace showing:
- Selected agent
- Routing decision
- Retrieved graph nodes
- Relationships
- Supporting evidence
- Model configuration
- Execution latency
Challenges we ran into
Maintaining one consistent project state
Today, Ask, Workspace, and the Decision Map must all use the same understanding of the project.
Independent recommendations created conflicting priorities, so we introduced a shared Focus Assessment.
Distinguishing evidence from decisions
A preference or recommendation can support a decision without resolving it.
Decisions only become resolved after an explicit user commitment or confirmation.
Managing graph changes over time
Resolving a decision can satisfy related actions and unblock later work.
We needed completion propagation so stale actions would not remain open or continue appearing as recommendations.
Preventing duplicate questions
Model-generated questions and deterministic fallbacks could describe the same uncertainty differently.
Gapwise combines those versions into one canonical question while keeping the sources that produced them.
Keeping generated assessments current
Overview, Today, and Ask suggestions are saved by semantic project version.
This allows the interface to reuse valid assessments while refreshing them only when meaningful project understanding changes.
Accomplishments that we're proud of
Decision Map
The Decision Map connects facts, gaps, risks, actions, and decisions.
It helps users see:
- Why a gap matters
- Which decision it informs
- What it blocks
- Which goal it affects
- Where the supporting evidence came from
Shared project reasoning
Today and Ask use the same Focus Assessment, keeping project priorities consistent across the product.
Reproducible history
Project snapshots preserve context, graph state, conversations, answers, recommendations, and proposal status at meaningful moments.
A user can inspect an earlier state or create a new project branch from it.
What we learned
Building the graph also required preserving what each fact meant as decisions and project conditions changed.
We learned that:
- Evidence can support a decision without resolving it.
- A high-impact decision may still be the wrong next focus when a prerequisite blocks it.
- Completed outcomes must close their related actions.
- Recommendations need provenance, but provenance is not always the actionable target.
- Caches should change when project meaning changes, not whenever a timestamp or database record changes.
- Every product surface must reason from the same project state.
We now treat project state, sequencing, and user confirmation as separate parts of the system.
What's next for Gapwise
Planned directions include:
- More document and productivity integrations
- Shared workspaces with multiple collaborators
- Several active workspaces viewed together
- Workspace roles and permissions
- IDE integrations
- Connections with coding agents
- Project updates generated from development activity
- Background monitoring for changed dependencies and new risks
- Better evaluation of long-running project outcomes
Built With
- gemini
- google-adk
- nextjs
- python
- three.js
- typescript
Log in or sign up for Devpost to join the conversation.