Selected projects

Analysis, model evaluation, and the software that makes them useful.

Data analysis · LLM reporting

DataBrief

Turn a raw dataset into a report that explains what stands out and the statistics behind it.

Problem
A spreadsheet can contain an unexpected pattern without making it obvious. The work is finding it, checking the evidence, and explaining it clearly.
My role
Built the application from upload and statistical analysis through LLM narration, report viewing, and document export.
Stack
Next.js · TypeScript statistics engine · Prisma / Neon Postgres · Inngest · LangChain.js / LangGraph.js
Outcome
A working report pipeline with an in-app reader and PDF, Word, and PowerPoint exports. The captured output below shows the narrative alongside its supporting statistics.
DataBrief report: two players each scored 10 goals, compared with a tournament average of 0.64 goals per player and standard deviation of 1.09.
Actual report view from the local build. Open the image to read it at full size.

Finding

The report identifies a shared scoring lead: two players with 10 goals each.

Statistic

The captured report gives a mean of 0.64 goals and a standard deviation of 1.09, putting 10 goals roughly 8.6 standard deviations above the mean.

Interpretation

An unusual result is a prompt to investigate. Check dataset scope and player records before treating an outlier as evidence of performance.

Portfolio commentary, not a quoted report recommendation.

Inside the product

Usage dashboard

DataBrief dashboard showing report usage, plan information, and reports marked ready.
Report usage and completed reports in the dashboard.

Report narrative and chart

DataBrief generated report about study time and academic performance, with a written analysis and a bar chart.
A second report pairs its written analysis with a supporting chart.

Screenshot excerpts from the project overview.

See the upload interface
DataBrief upload screen with file upload, data preview, configuration, and generation steps.
Upload → preview data → configure → generate.
Explore the source on GitHub

+15% reasoning accuracy

PorteHobe AI

Evaluation and refinement using GSM8K, benchmarking against Mathstral and Gemini.

Problem
Mathematical tutoring needs reliable reasoning across different question types. PorteHobe explores routing questions between specialist models and evaluating their answers.
My contribution
Co-built a Router → Specialist → Judge architecture and led GSM8K evaluation. The system used Qwen 2.5, Mathstral, Gemma3, and the Gemini API.
Evaluation approach
Benchmarked mathematical reasoning against Mathstral and Gemini, then refined model routing and prompts using the evaluation results.
Outcome
A 15% improvement in reasoning accuracy over the baseline, as reported in my project evaluation.
Tools & methods
GSM8K, LangGraph, FastAPI, React, TypeScript

6,000+ questions evaluated

Physics chatbot

Question-level evaluation and targeted refinements to improve chatbot accuracy.

Problem
A physics chatbot can produce plausible answers while repeatedly missing particular concepts. The evaluation focused on identifying those systematic weaknesses.
My contribution
Evaluated more than 6,000 question-answer pairs across 14 physics chapters.
Evaluation approach
Used statistical and semantic evaluation to examine model responses, identify recurring weaknesses, and guide targeted refinements.
Outcome
The evaluation informed targeted refinements that improved overall chatbot accuracy.
Tools & methods
spaCy, statistical analysis, semantic evaluation, question-level benchmarking

Shipped for clients

Production delivery alongside my data science work.

case file: dhaka, bangladesh

msn-bd.org
Media Support Network homepage with the headline 'For a free, safe and independent media'

Media Support Network

A production website for Bangladesh's press-freedom advocacy body, built to read as credible to journalists, funders and government stakeholders in the same breath.

Role

Full-stack build: Next.js / TypeScript

msn-bd.org

Neel Foring Foundation

neel-foring.vercel.app
Neel Foring Foundation homepage with the headline 'Youth-led energy meets systemic change'

Youth-led energy, systemic change.

A website for a Dhaka-based foundation equipping young people to lead on climate, technology and human rights.

Role

Full-stack build: Next.js

neel-foring.vercel.app

newsvault-zeta.vercel.app

newsvault-zeta.vercel.app
Voice of Time bilingual news archive homepage

Voice of Time

সময়কণ্ঠ: a bilingual news archive

Built around one editorial rule: a story published today but dated years ago never shows up as "latest". It files into the historical record.

Role

Full-stack build; client turnaround: 2 days

newsvault-zeta.vercel.app · bilingual archive, EN / BN

More engineering work

01

SouthForge

Project

An offline-first, browser-based IDE with local AI support, in-browser runtime execution, workspace persistence, and terminal-driven Git and GitHub flows.

ReactViteMonacoWebContainersWebLLMIndexedDB
02

SchedulEase

Project

A Flutter-based web app built for streamlined scheduling and planning workflows.

FlutterDartWeb App
03

IEEE Web Automation

Project

Built and deployed a Django-based web mail automation service to improve operational flow for IEEE NSU Student Chapter.

DjangoPythonAutomationWeb Infrastructure