Skip to content
StudentOps

Portfolio capstone - Data Engineering

Treat student life as a data product.

StudentOps ingests calendar feeds, Zotero, markdown notes, and academic references through a layered Postgres warehouse, then surfaces what is due, what is planned, and what is worth reading - with an AI assistant that refuses to invent citations.

Built with Python, dbt, Prefect, Streamlit, Astro. Deployed on Fly.io and Cloudflare Pages. Costs about AUD 12 a month to run live.

What it does

Six sources, one warehouse

iCal feeds, Google Calendar, Zotero, BibTeX/RIS files, local markdown notes, and OpenAlex enrichment - all ingested idempotently into a bronze/silver/gold Postgres layout managed by dbt.

Honest AI

Reading summariser, Anki flashcard generator, citation suggester. Every DOI the suggester proposes is validated against OpenAlex and CrossRef; unresolved DOIs are dropped silently. No hallucinated references reach the user.

Observable by default

Every flow opens a row in meta.flow_runs. The Pipelines page shows freshness per source, success rate over the last fifty runs, and today's AI spend.

How it works

Sources iCal + Google Calendar Markdown notes Zotero / BibTeX / RIS OpenAlex + CrossRef Bronze raw.* (JSONB) append-only, watermarked Silver stg_* dbt views, typed Gold dim_courses, dim_assessments (SCD2) fact_study_sessions fact_readings, fact_notes_activity fact_citations Surfaces Streamlit dashboard app.vikrant69g.com Daily / weekly digest Resend + Discord AI assistant (Anthropic) summaries, flashcards, citations

Stack