International AI Agents Hackathon 2026

Submitted — Data Analyst AI Agent

Try it!


View Live Site    View on GitHub    View Project Page

Hackathon code submission: backend/bots.py


Demo



About the Project


Inspiration: My dad uses AI constantly to analyse data — and it made me realise I'd never tried to build something that actually solved a data problem end-to-end. That gap, plus wanting to understand how tools like CrewAI work under the hood, drove this project. Building it taught me more about agentic systems than using them ever did.

What it does: You upload a data file through the React frontend. It gets pushed to a CrewAI backend hosted on HuggingFace, where four specialised agents handle it in sequence: a context agent figures out what you want, a prompt engineer writes precise instructions for the analyst, a senior data analyst identifies outliers and summarises findings, and an output agent formats the result and rates how well the response matched the original request — so you can see if the agents actually answered your question.

How it was built: React + Vite frontend hosted on Vercel, a REST API connecting it to the backend via async functions, and CrewAI managing the agent pipeline on HuggingFace. LLMs sourced through OpenRouter's free tier with a model rotation fallback in backend/bots.py to handle rate limits across providers.

Challenges: LLM models kept erroring despite correct OpenRouter calls. Deep agent reasoning made testing slow. API keys maxed out constantly during development — there were moments where pivoting felt like the only option.

What I learned: CrewAI is a genuine game-changer for agentic workflows. I've started integrating it into other repos. The hardest part wasn't the agents — it was writing prompts precise enough that the agents didn't go off-track mid-pipeline.

What's next: Using this as the data processing backbone for PhysTech 2026 and integrating it into major GitHub repos for clustering and growth analysis.

Agent Pipeline


Data Analyst AI Agent — CrewAI Pipeline ══════════════════════════════════════════ ┌─────────────────────────────────────────┐ │ User Upload (Frontend) │ │ React + Vite · Vercel │ └──────────────────┬──────────────────────┘ │ REST API (async) ▼ ┌─────────────────────────────────────────┐ │ CrewAI Backend (HuggingFace) │ │ │ │ 1. Context Agent │ │ rewrites user request into a │ │ precise, unambiguous directive │ │ │ │ │ ▼ │ │ 2. Prompt Engineer │ │ builds step-by-step instructions │ │ for the data analyst │ │ │ │ │ ▼ │ │ 3. Senior Data Analyst │ │ reads file, identifies outliers, │ │ summarises findings │ │ │ │ │ ▼ │ │ 4. Output Formatter │ │ enforces JSON schema, selects │ │ chart type, rates answer quality │ └──────────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Structured Result │ │ chart / report + quality rating │ └─────────────────────────────────────────┘ LLMs: OpenRouter free tier (Groq fast pool + fallback rotation) Core logic: backend/bots.py Rate limits handled by bots.py: per-model cooldown tracking with automatic fallback across provider tiers.

Dev Notes

Tech Stack

React + Vite (Vercel), Python + CrewAI (HuggingFace), REST API, OpenRouter free LLMs. Rate-limit rotation logic in backend/bots.py.

Hardest Part

API keys maxing out during testing with no time to pivot. Also: LLM errors that weren't caused by incorrect API calls — just flaky free-tier model availability.

What I'd Do Differently

Set up model rotation from day one instead of treating it as a fix. Testing multi-agent pipelines is expensive — mock the LLM calls for unit testing and only hit real APIs for integration tests.


← Back to Hackathons    Back to top