Inspiration

In academia, progress is built on the work of others. But how do we know which foundations are solid? We were inspired by a critical, time-consuming problem that every researcher, student, and scientist faces: a paper's abstract claims one thing, but how does the rest of the world cite it?

Researchers waste countless hours manually tracking citation chains to determine if a paper's claims have been supported, refuted, or quietly ignored. I was inspired by the idea of building an "AI archaeologist"—a tool that could sift through this noise, analyze the data, and instantly find the real "ground truth" of scientific consensus. I wanted to build a tool that could, in seconds, answer the question: "Is this paper a solid foundation, or is it a house of cards?"

What it does

GNDTruth (Graphical & Network Deduction of Truth) is a live web application that provides an instant consensus report for any scientific paper.

A user provides a paper ID (like an arXiv ID or DOI), and our system:

-Fetches all relevant citing papers in real-time from the Semantic Scholar API.

-Analyzes each citation snippet using Google's Gemini 2.5 Flash model (via OpenRouter) to classify its true intent as Support, Refute, Extend, or Neutral.

-Calculates a "Consensus Score" using the formula (Support + 0.5*Extend - Refute) / Total to provide a clear, numerical metric of scientific agreement.

-Displays an interactive dashboard built with Streamlit, showing the final metrics, AI-generated explanations, and the original citation evidence, allowing you to see the proof for yourself.

How we built it

I built GNDTruth on a modern, scalable, two-tier architecture, integrating a suite of powerful platforms.

Backend: A robust FastAPI application containerized with Docker and deployed on a Vultr VM. This service handles all the heavy lifting.

Frontend: An interactive Streamlit dashboard deployed globally on Cloudflare Pages for maximum performance and security.

AI Core: It uses OpenRouter as the flexible AI gateway to classify citations with Google's Gemini 2.5 Flash model. This allowed us to pick the perfect model for speed and accuracy.

Data Pipeline: The backend fetches citation data from the Semantic Scholar API. Every analysis is then logged in the background to a Snowflake data warehouse, allowing me to build a longitudinal map of scientific consensus over time.

Polished Features: I added a user-facing accessibility feature using the ElevenLabs API to read citation snippets aloud. We also prototyped a 'trust' module, simulating how expert verifications of the AI's findings could be immutably recorded on the Solana blockchain.

Challenges we ran into

API Rate Limiting (Semantic Scholar): I discovered the Semantic Scholar API key could have a lengthy approval time. I engineered a solution by building a robust caching layer with a JSON fallback. This made our demo 100% reliable and foolproof, even without a key, and now serves as a high-performance cache for live data.

Docker Environment Variables: I ran into a classic 400 error because our backend container couldn't access the OpenRouter API key. This forced us to master Docker's configuration, implementing a clean env_file solution in our docker-compose.yml to securely inject secrets at runtime.

LLM Latency: Making 20+ sequential API calls to the LLM was far too slow for a demo (over 60 seconds). I re-architected our services.py file to be fully asynchronous, using httpx.AsyncClient and asyncio.gather to run all 20 classifications in parallel. This optimization cut our analysis time by over 80%.

Accomplishments that we're proud of

Full-Stack, Real-World Deployment: I didn't just build a local prototype. We successfully deployed a scalable, two-tier application on real cloud infrastructure (Vultr and Cloudflare). This is a production-ready setup, not just a hackathon project.

High-Performance Async Backend: The parallel classification system I built is a huge accomplishment. It's the difference between a demo that is "too slow" and one that feels "instantaneous" and responsive to the user.

Seamless API Orchestration: I am proud of successfully integrating six distinct and powerful APIs (OpenRouter, Semantic Scholar, Snowflake, ElevenLabs, Vultr, Cloudflare) into a single, cohesive, and feature-rich application. It’s a testament to the power of a modern, composable tech stack.

What we learned

First, I learned that a "dummy data first" approach is the secret to a successful hackathon. By creating a cached JSON file, I decoupled our frontend and backend development, allowing us to build a perfect UI without being blocked by live APIs.

I also gained a deep appreciation for asynchronous programming. It wasn't just a "nice to have"; it was an absolute requirement to make our AI-powered application feel fast and professional.

Finally, I learned the intricacies of cloud deployment, from Docker environment variable management to the incredible speed and simplicity of deploying a Streamlit app on Cloudflare Pages.

What's next for GNDTruth

Longitudinal Analysis: With my Snowflake data warehouse, GNDTruth is perfectly positioned to build a "timeline" feature. Users will be able to track a paper's consensus score over time, watching as a controversial idea becomes mainstream (or vice-versa).

Build the "Lost Gems" Rescuer: This MVP proves we can find consensus. The next step is to hunt for dissonance. I'll be able to fine-tune a model to specifically look for papers that are Refuted for minor, correctable reasons (like a math error) but whose core idea is Supported or Extended by others. This is the original "AI Archaeologist" vision.

Build a Public "Trust Ledger": I'll be able to move our Solana integration from a simulation to a production-ready smart contract, allowing experts to publicly and immutably "sign off" on AI-generated classifications, building a decentralized, transparent, and trustworthy map of scientific knowledge.

Built With

  • cloudflare
  • docker
  • elevenlabs-api
  • fastapi
  • google-gemini-2.5-flash
  • openrouter
  • python
  • semantic-scholar-api
  • snowflake
  • solana
  • streamlit
  • vultr
Share this project:

Updates