Data science student focused on data analytics and data engineering. I like work where the hard part is making the numbers trustworthy: finding the duplicated rows, the changed columns and the misleading count before they reach a conclusion.
I'm a Diploma in Data Science student at Ngee Ann Polytechnic, looking for a 12-month Data Analyst / Data Engineering internship. I work with SQL, dbt and Python, plus Snowflake, Denodo, Alteryx (Designer Core certified), SAP S/4HANA and SAP Analytics Cloud.
| Project | What it shows |
|---|---|
| sg-business-pulse | Monthly pipeline over Singapore's full ACRA register (2.1M businesses, 27 files, 660 MB). Downloads only what changed, stops when data checks fail, and keeps a full history of every business (SCD2). Dagster, 40 tests |
| citibike-warehouse | Star schema over 4.3M bike trips, with a station table that tracks changes over time. Growth measured like-for-like is +31%, not the naive 2.6×. Streamlit and Power BI reports |
| nyc-taxi-dbt | dbt + DuckDB over 30M taxi records: columns that change between years, cancelled charges and fees counted twice. Tests whether congestion pricing sped up traffic |
| retail-sql-analytics | Retention cohorts, customer segments and basket analysis in plain SQL on 1M transactions. Accounting for every raw row caught £680k of double-counted or reversed sales |
| Project | What it shows |
|---|---|
| sg-retail-demand-forecast | Sales forecasts for 22 Singapore retail and F&B sectors. LightGBM with Chinese New Year features is 13% more accurate than "same month last year" and wins on 18 of 22 sectors, over 34,752 past forecasts |
| sg-fnb-site-finder | Where to open a new F&B business: 29 residential areas ranked from ACRA, SingStat, LTA and NEA data, 15,887 postcodes geocoded. Streamlit dashboard with your own weights |
Working software with a demo you can run, a web app, Docker and CI:
| Product | What it does |
|---|---|
| payout-recon | Reconciles orders, Stripe, GrabFood and foodpanda payouts, and the bank. Finds missing payouts, commission above contract and over-refunds, then writes a balanced Xero journal |
| invoice-intake | Supplier invoices to bookable data on a local LLM. Blocks wrong GST, bad totals, duplicates and changed bank details |
| fairshift | Staff rostering for cafés and shops (OR-Tools): legal, fair and costed in under a second, and re-planned with minimal changes when someone calls in sick |
| countbone | Stock counting from phone video, through to the ERP adjustment and a supplier claim |
| Project | What it shows |
|---|---|
| point-in-time-warehouse | Market-data warehouse that returns data as it was known on any past date: restated fundamentals lift a strategy's Sharpe from 0.17 to 0.27 |
| market-signal-dashboard | Scheduled daily pipeline with a data-quality gate, a versioned model registry and a dashboard. A Sharpe of 1.73 fell to 0.34 once survivorship bias and an unintended filter were removed |
| backtest-overfit-audit | Deflated Sharpe and overfitting tests, pointed at my own strategies (they fail) |
| black-scholes-plus | Tested option-pricing library with docs and a dashboard |
| sreit-analytics | Singapore REIT rate sensitivity, and a valuation signal that fails out of sample |
Tools: Python, SQL, Snowflake, Denodo, Alteryx, dbt, DuckDB, Dagster, SAP S/4HANA, SAP Analytics Cloud, Power BI, pandas, scikit-learn, LightGBM, Streamlit, FastAPI, Docker, GitHub Actions


