Querify
An AI-powered business intelligence platform that turns raw CSV/XLSX uploads into dashboards, forecasts, and answers to plain-English questions - no SQL required.
The project, quickly
Solo full-stack developer - separate frontend and backend repositories, both self-owned.
React, TypeScript, TailwindCSS, TanStack Router, Framer Motion, Supabase, and Firebase authentication.
FastAPI, PostgreSQL, SQLAlchemy, Pandas, Prophet, and Groq, containerised with Docker.
In active development - working through deployment-stage authentication and CORS issues.
The problem
Most people with a spreadsheet full of useful data don't know SQL, and most BI tools assume they will learn it. That gap means a lot of genuinely interesting data just sits in a CSV file, unexplored, because turning it into a chart or an answer takes more setup than most people are willing to do.
Querify is my attempt to close that gap: upload a dataset, ask it a question in plain English, and get back a chart, a forecast, or a direct answer - without writing a query first.
How it works
Ask in plain English
Groq turns a natural-language question into a structured query against the uploaded dataset, with fast inference behind it - no eval or exec, just a controlled query execution path.
Interactive dashboards
Pandas auto-generates analytics, charts, and summary statistics the moment a CSV or Excel file is uploaded, before any question is even asked.
Forecasts & anomalies
Prophet powers trend forecasting, so a dataset doesn't just describe the past - it projects where the numbers are headed next.
Layered backend
A routes → services → models pattern in FastAPI, async SQLAlchemy with connection pooling, Firebase-authenticated requests, and structured JSON logging throughout.
Tech stack
Where it stands
The backend is production-shaped already: layered architecture, Firebase-based auth, async database access, and structured logging aren't things you bolt on later, so I built them in from the first commit rather than retrofitting them once something broke.
What's left is the unglamorous part - getting authentication and CORS to behave cleanly between the two separately-deployed repos. It's the kind of problem that never makes it into a portfolio screenshot, but it's exactly the work standing between "it runs on my machine" and something I can actually put in front of people.