Inspiration

Students manage multiple academic responsibilities every day: assignments, examinations, projects, presentations, classes, and deadlines. These commitments often become scattered across different places, making it difficult to decide what deserves attention first.

Traditional task managers can store tasks and deadlines, but students also need help understanding their workload, recognizing urgent tasks, identifying conflicts, and deciding what to study next.

This inspired us to build AcadOps — an AI-powered Academic Operations Assistant that helps students move from simply tracking tasks to making better academic decisions.

Our guiding question is:

“Given everything happening right now, what should I do next — and why?”

What it does

AcadOps turns academic tasks, deadlines, progress, and available study time into actionable planning guidance.

Its key capabilities include:

Intelligent task prioritization: Recommends the next academic task based on urgency, deadlines, and remaining work.

Academic workload analysis: Estimates remaining work, compares it with available study time, and identifies workload risk.

Adaptive replanning: Helps adjust the academic plan as task progress and priorities change.

Conflict detection: Identifies potential conflicts between academic commitments.

Natural-language chat: Lets students ask questions about their workload, deadlines, next task, and task progress.

Progress tracking: Supports task-progress updates and academic planning.

Plan history: Stores academic planning history so previous plans can be reviewed.

MCP integration: Includes an MCP server to support connecting AcadOps capabilities with compatible AI clients. Instead of only asking students to remember what is due, AcadOps aims to help them understand what matters most and what action they should take next.

How we built it

We built AcadOps using Python and Flask, with SQLite for persistent storage.

The application is organized into focused modules:

Flask application (app.py): Connects the application logic with the web dashboard and routes. Database layer (database.py): Stores academic tasks, settings, and planning history. Chat engine (chat_engine.py): Processes natural-language academic requests and routes them to the appropriate functionality. Academic state (academic_state.py): Represents the current academic workload and related state. Decision engine (decision_engine.py): Supports decisions about academic priorities. Risk engine (risk_engine.py): Evaluates workload risk. Conflict engine (conflict_engine.py): Handles academic scheduling conflicts. Adaptive replanner (adaptive_replanner.py): Supports adjusting plans when circumstances change. Academic agent (acadops_agent.py): Coordinates academic-assistant functionality. MCP server (mcp_server.py): Provides an integration point for compatible MCP clients. The web interface provides a dashboard for viewing academic priorities and interacting with the assistant. We also developed a separate planning-history page and an MCP test script.

Our approach is modular: task management, risk analysis, prioritization, replanning, and chat are separated so that each component can be tested and improved independently.

Challenges we ran into

One of our main challenges was coordinating multiple modules without losing consistency between the database, planning logic, chat responses, and dashboard.

We also worked on making the chat assistant understand different types of requests, such as greetings, workload questions, task-progress updates, and requests for the next recommended task.

Another challenge was representing academic urgency in a useful way. A deadline alone does not explain how much work remains or whether the student has enough time available. AcadOps therefore considers workload and remaining effort alongside task urgency.

Finally, we needed to preserve existing tasks and planning history while improving the code. We used incremental changes and Python syntax checks to reduce the risk of breaking working functionality.

Accomplishments that we're proud of

Built a working Flask-based academic planning application.

Separated academic decision-making into dedicated modules for risk, conflicts, and replanning. Connected natural-language chat with academic workload information. Implemented a dashboard that can present a recommended next action. Added persistent storage for academic tasks and planning history using SQLite. Developed an MCP server as an integration point for compatible AI tools. Improved the application incrementally while preserving the existing database.

We are proud that AcadOps focuses on the decision behind the task — helping students understand not just what is pending, but what deserves attention first.

What we learned

Building AcadOps taught us that an effective AI assistant requires more than a chat interface. It also needs reliable data, understandable decision logic, consistent state management, and a useful interface.

We learned the importance of modular software design, separating task prioritization from workload-risk analysis, and checking that changes do not damage existing functionality.

We also learned that recommendations become more useful when they explain their reasoning, especially when students have several competing deadlines and limited study time.

What's next for AcadOps

Our next goals are to improve the accuracy of task prioritization, make adaptive study plans more personalized, and strengthen follow-up conversation handling.

We also want to improve the dashboard with clearer workload visualizations, expand automated testing, and further validate the MCP integration with compatible clients.

In the long term, we envision AcadOps as a dependable academic operations assistant that helps students plan realistically, adapt to changing deadlines, and make confident decisions about their next study session.

Share this project:

Updates

Submission history