Spaces:
Runtime error
Runtime error
Commit History
-
fix(agent,web): fix citation routing and sources rendering
sourabh gupta1. graph.py: add 'summarize what we have on X' to Rule 4 rag_search triggers 2. graph.py: remove ambiguous Rule 6 that incorrectly routed summarization to coverage_lookup 3. tools.py: tighten coverage_lookup docstring to exclude substance/summarization queries 4. types.gen.ts: add missing sources field to ChatResponse schema 5. MessageBubble.tsx: add sources field to Message interface + render source citations block 6. ChatPanel.tsx: map res.sources from API response to message object0456e7e
-
feat: update API routers, dashboard, graph panel, and gap table UI
sourabh gupta477675d -
add: Docker deployment for HF Spaces demo
sourabh guptaSingle-container image (FastAPI + React static files, baked ML models). Serves API and frontend on port 7860. Secrets injected at runtime.3da409a
-
refactor(web): simplify footer and typing indicator UI
sourabh gupta- Remove "Prepared for Principal Data Scientist Case Study" from footer - Remove "Reasoning in LangGraph..." badge from typing indicator - Arrange typing indicator label and dots on single line349e6d3 -
Add Langfuse observability via LangChain CallbackHandler
sourabh guptaWire LangfuseHandler into every agent.stream() call so all LLM calls, tool invocations, latency, and token usage are traced automatically. Add rag.retrieve and rag.generate sub-spans in the RAG pipeline using the v3 start_as_current_observation() context manager. Session grouping via langfuse_session_id in config metadata. Bump langfuse dep to >=3.0 and align env var name to LANGFUSE_BASE_URL.b7884a3 -
feat(pipeline): RAG quality gate, live coverage, streaming API, recursion limit
sourabh guptaRAG quality gate (rag.py + constants.py): - COVERAGE_RELEVANCE_FLOOR = -5.0: reranker scores are absolute/cross-query-comparable so a floor correctly gates garbage retrieval (APAC → top score -6.85 → no coverage) - LLM sentinel detection: if LLM emits the no-coverage string, drop sources rather than returning contradictory "No coverage found... Sources: NFL Fumbles" Live coverage (coverage.py): - count_coverage(): hybrid retrieve + rerank → count chunks above the relevance floor Reuses the RAG pipeline so coverage = "what RAG would consider relevant" API streaming (chat.py): - agent.invoke → agent.stream(stream_mode='updates') via shared trace.log_step - ChatResponse gains sources: list[str] collected structurally from rag_search results - recursion_limit 10 → 50 Scripts: - demo_queries.py: recursion_limit 10 → 50 - build_graph.py, ingest.py: minor pipeline improvements - build_gartner_seeds.py, tag_topics.py: topic seeding tooling Docs: MVP_IMPLEMENTATION_PLAN.md addedc24f0b6 -
fix(agent): rank gaps by score, fuzzy topic filter, stream in web API
sourabh guptaThree issues surfaced from query logs against live data: 1. gap_analysis returned 0 rows. top_gaps gated on quadrant='priority_gap', but no topic qualifies (all 316 are 'watch', 3 'well_covered' — none reach the demand>=0.5 threshold for a priority label). Dropped the quadrant gate: now MATCH all topics with a gap_score, ORDER BY gap_score DESC. The score already encodes demand×(1−coverage); label is descriptive, not a filter. Fixes both gap_analysis and the /api/gaps endpoint. 2. trending_topics(filter='AI healthcare') returned 'drainage', 'mountains', 'airports' — because 'ai' substring-matched them. Replaced CONTAINS-word filtering with a Neo4j full-text index + fuzzy Lucene query (tokenised, so 'ai' no longer matches 'drainage'; fuzzy ~ tolerates typos: 'imigration' → immigration). New _fulltext_query() + ensure_fulltext_index() (asserted on every build()). Note: the vocabulary has no AI/healthcare/tariff topics, so those filters correctly return …bb5095f
-
feat(web): Render agent markdown responses with customized tailwind classes
sourabh gupta1. Install `react-markdown` and `remark-gfm` dependencies in `apps/web` 2. Update `MessageBubble.tsx` to render agent messages as Markdown with custom overrides for headings, lists, strong text, and code blocksd72e9c0 -
feat(agent): implement comprehensive logging and fix recursion loop
sourabh gupta- Create 'vantage_core/log.py' logging utility with timed/timeit helpers. - Instrument adapters, domain layer, agent tools, scripts, and API. - Fix topic-blindness in gap_analysis tool and top_gaps Neo4j query. - Enforce recursion_limit=10 on LangGraph agent invocations. - Add behavioral STOP CONDITION to agent system prompt.1743c95 -
docs(web): Trim welcome message and update illustrative examples
sourabh gupta1. Reduced initial assistant welcome message to a concise one-liner 2. Updated SUGGESTIONS array with new industry-specific research queriescd4d912 -
feat(web): implement live interactive knowledge graph using react-force-graph
sourabh gupta- apps/web/src/features/graph/GraphPanel.tsx: Implements topic selector dropdown, measurements for container resize width, loading spinners, and interactive ForceGraph2D canvas representing Neo4j nodes and connections - apps/web/src/App.tsx: Mounts GraphPanel dynamically under the active graph tab851e4b7 -
feat(web): implement live multi-turn chat assistant with real-time tool badges
sourabh gupta- apps/web/src/features/chat/MessageBubble.tsx: Renders bubbles dynamically with distinct alignment and color schemas. Maps active tools as coral badges - apps/web/src/features/chat/ChatPanel.tsx: Implements message list tracking, input form, optimistic state rendering, auto-scrolling, thread_id preservation, suggestions, and inline loader with animation delay - apps/web/src/App.tsx: Mounts ChatPanel dynamically under the active chat tab4fc0cbc -
feat(web): wire live opportunity score dashboard using recharts and api facade
sourabh gupta- apps/web/src/lib/api.ts: Creates a single fetch facade for all 4 endpoints typed to types.gen.ts - apps/web/src/features/dashboard/GapBars.tsx: Renders horizontal Recharts BarChart representing Opportunity Score Ranking - apps/web/src/features/dashboard/DashboardPanel.tsx: Implements a container that fetches live gaps + signals, handles loading/error states, and coordinates layouts - apps/web/src/App.tsx: Mounts DashboardPanel dynamically under the active dashboard tabe769f38 -
style(web): sanitize codebase comments and labels to use clean and generic terms
sourabh gupta75e25b4 -
feat(web): scaffold Phase 10.0 React client application with Gartner brand design
sourabh gupta- apps/web: Scaffold React/TS/Vite/Tailwind project inside flat layout - tailwind.config.ts: Wires corporate Gartner-inspired palette (navy, azure, teal, coral) - index.html: Adds Google Inter fonts - src/App.tsx: Builds high-fidelity 3-tab layout shell (Chat, Graph, Dashboard) - postcss.config.cjs: Renamed to cjs for ESM compatibility with standard package config - npm run gen: Generates TypeScript schemas from contracts/openapi.yaml - Verified successful production compilation via tsc and vite builda5d0f2e -
feat(api): implement FastAPI read-side layer with 4 endpoints and OpenAPI contract
sourabh gupta- apps/api/main.py: FastAPI app with lifespan agent singleton and CORS middleware - apps/api/routers/chat.py: POST /api/chat — async agent invocation with thread_id sessions - apps/api/routers/gaps.py: GET /api/gaps — ranked GapScore results from Neo4j - apps/api/routers/graph.py: GET /api/graph/{topic} — entity lookup from KG - apps/api/routers/signals.py: GET /api/signals — sorted external momentum signals - scripts/export_openapi.py: static offline OpenAPI YAML export (no server required) - contracts/openapi.yaml: generated API contract (SSOT for P10 TS client) - start.sh / stop.sh: local uvicorn lifecycle scripts - Makefile: add api, stop-api, openapi targets; fix python3.11 executable6930676
-
feat(phase-1): bootstrap project scaffold and connectivity layer
sourabh gupta1. Add vantage_core package (config, constants, pyproject.toml, domain + adapters stubs) 2. Add root environment.yaml for conda Python 3.11 environment 3. Add .env.example with all nine required environment variable keys 4. Add Makefile with install, healthcheck, seed, eval, and clean targets 5. Add scripts/healthcheck.py — four-service connectivity gate (Qdrant, Neo4j, OpenAI, Langfuse) 6. Add folder skeleton for apps/, contracts/, and eval/ with .gitkeep72fa63d