Skip to content
This repository was archived by the owner on Oct 28, 2026. It is now read-only.
SandyCompetentPublic archive

Repository files navigation

Exeter Academic Agent

Warning

⚠️ Project Status: Learning & Demo Purpose Only (Archived / Unmaintained)

Notice: This project was developed strictly for learning and demonstration purposes and is no longer maintained. It has been merged into and continued under ChatBud.

🚀 Active Development: Please check out the active repository at https://github.com/SandyCompetent/chatbud for latest updates, features, and continued development!

Status: Unmaintained Merged with ChatBud Deploy Flutter Web and Android Flutter Gemini Model License: MIT Live Demo

This project implements a production-style Agentic AI pipeline on top of Google Gemini 2.5. The agent orchestrates multi-step reasoning with a visible "thinking" phase, dynamic model routing between Pro and Flash-Lite based on task complexity, and a secondary LLM observer pass for contextual follow-up generation. Token-by-token streaming delivers low-latency responses via async Dart streams, deployed as a cross-platform Flutter app (Web + Android) with CI/CD via GitHub Actions.

🎯 Why I Built This

This project was born out of a desire to explore the potential of Agentic AI in a specialized, high-stakes environment (Higher Education) and served as a prototype for learning production LLM orchestration patterns.

Note

Having served its educational and demo purpose, this repository is now unmaintained. Its core architecture, concepts, and ongoing improvements have been merged into ChatBud.

Students at the University of Exeter face a fragmented data landscape—weather, bus schedules, and academic concepts are spread across different platforms. This assistant was built to:

  1. Consolidate campus-specific data into a single, intelligent interface.
  2. Implement Production-Grade AI patterns like streaming and multi-stage thought processes in a cross-platform (Flutter) environment.
  3. Demonstrate Agentic workflows where the AI doesn't just answer but actively helps the student "think" through their next steps.

🔗 Live Demo

Try the agentic experience directly in your browser: sandycompetent.github.io/exeter_academic_agent/

🧠 ML Engineering & Agentic Features

This isn't just a "wrapper app." It implements several advanced LLM patterns:

  • Agentic Orchestration: The assistant uses a multi-step "Thinking" phase to determine the best response strategy before execution.
  • Token-by-Token Streaming: Low-latency UI updates using asynchronous Dart streams for a responsive "real-time" feel.
  • Dynamic Tool Use & Context Injection: Integrated system instructions that ground the agent in the University of Exeter's academic context.
  • Automated Follow-up Generation: A secondary "observer" LLM pass (using gemini-2.5-flash-lite) to generate contextual suggestions and maintain conversation flow.
  • Model Routing: Dynamic selection between specialized models (Pro vs Flash-Lite) based on task complexity and cost/latency requirements.

🚀 Features

1. Agentic Study Assistant

  • Thinking State Indicator: Visualizes the agent's internal state transitions before response delivery.
  • Smart Follow-ups: Zero-tap deeper exploration via 3 AI-generated relevant questions.
  • Academic Specialist: System-level prompt engineering for high-quality study plans and summaries.

2. Campus Live Dashboard

  • Real-time Environment Data: Integration with Open-Meteo for hyper-local campus weather.
  • Predictive Transit: AI-assisted analysis of Stagecoach bus routes (4/4A) to Exeter campus.
  • Library Occupancy Modeling: Time-aware heuristic estimates for Forum and St Luke's library capacity.

🛠 Tech Stack

  • Framework: Flutter (v3.11+)
  • AI Engine: Google Gemini SDK (v0.4.7)
  • Models: gemini-2.5-pro (Reasoning), gemini-2.5-flash-lite (Suggestions)
  • State Management: Provider for clean architecture and reactive state.
  • External APIs: Open-Meteo API for real-time campus weather data.
  • CI/CD: GitHub Actions for automated Web deployment and Android APK generation.
  • Security: Secure API key management via --dart-define env variables.

📦 Installation & Security

1. Clone & Setup

git clone https://github.com/sandycompetent/exeter_academic_agent.git
cd exeter_academic_agent
flutter pub get

2. Secure API Configuration

This project follows security best practices and does not hardcode API keys. You must provide your Google AI Studio key at build time:

Debug/Run:

flutter run --dart-define=API_KEY=your_gemini_api_key_here

Release Build:

flutter build apk --release --dart-define=API_KEY=your_gemini_api_key_here

Note: You can also manage your key dynamically within the app's Settings tab, which is persisted locally and never shared.

📂 Project Structure

  • lib/services/: LLM orchestration and API communication (Gemini, Weather).
  • lib/providers/: Global state, model configuration, and reactive logic.
  • lib/models/: Domain-specific data structures.
  • lib/screens/: High-level feature modules (Chat Agent, Dashboard).

🚧 Known Limitations & Future Roadmap

While built with a production-grade architecture for demonstration, active development on these roadmap milestones has transitioned to ChatBud:

  • RAG Integration: Moving from system-prompt grounding to a Vector Database (like local embeddings) to index course handbooks and academic policy documents.
  • Deeper API Integration: Expanding from transit/weather to include real-time library seat availability and personalized timetable syncing.
  • Reflection Loops: Implementing a "Self-Critique" step in the agentic flow where the model verifies its own output for academic accuracy before streaming.
  • Automated Evals: Building a test suite for LLM-response evaluation to measure coherence and grounding over time.

📄 License

Distributed under the MIT License. See LICENSE for more information.

Releases

Contributors

Languages