Benedictus Sebastian
Software engineer & business development

I build
systems that
hold up.

Data pipelines, edge backends and the products on top of them. Forecasts a shop owner can act on, APIs that assume the client is lying, and infrastructure that costs nothing while nobody is using it.

Based in
Bogor, ID UTC+7
Studied
TIU, Tokyo B.Sc. 2026
Speaks
ID · EN · JP
View my work GitHub Benedictus Sebastian @Conradium Loading…

[01] Selected work

Things I've shipped.

Four projects, each with engineering notes on the decisions that mattered.

himotoki.web.app
Himotoki's search page, with examples of each way to look up a word

2026 · Product engineer — mobile & learning

Himotoki

A Japanese–English dictionary for learners. Search by kanji, reading, romaji, English or handwriting, paste a sentence to see how it breaks down, and turn what you find into spaced-repetition flashcards.

React · Vite · Firebase · PWA · Dictionary API

Live site ↗
demo-snacktrack.conradium.my.id
SnackTrack's storefront, with snack categories and products from a local seller

2025 – 2026 · Technical lead — full stack & ML

SnackTrack

A marketplace for small snack sellers in Indonesia with sales forecasting built in. Sellers take orders, get paid through Midtrans, and receive a weekly per-product forecast with stock recommendations.

Python · XGBoost · FastAPI · Supabase · React · Vercel Edge · Docker

Live site ↗
aimflicks-beta.vercel.app
AimFlicks mid-drill: targets, the weapon viewmodel, and a live leaderboard beside the score

2026 · Co-developer — multiplayer, progression & engine

AimFlicks

A browser-based 3D aim trainer modelled on Valorant's aiming feel. Matches in-game sensitivity 1:1 and syncs profiles, replays, parties and weekly leaderboards through a single Cloudflare Worker.

React · Three.js · TypeScript · Cloudflare Workers · D1 · R2 · Durable Objects

Live site ↗
hirepassport · hackathon demo
The HirePassport landing page: one interview, every opportunity

2026 · Technical product & UI lead

HirePassport

An AI hiring platform that takes first-round and screening interviews off companies' hands. Candidates do one AI interview, and that result is reused to match them with many jobs. Built at the SDGs to Startups Hackathon.

Next.js · Python · LLM agents · JSON Schema

more_work.txt
  • nightbot-to-discord ↗

    A Cloudflare Worker bridging a GET-only chat bot to POST-only Discord webhooks, so a !clip command drops a timestamped marker into Discord. Cut the YouTube live-stream lookup from 100 quota units to 2.

    2026 ·
    Solo
  • Copiya

    A full-stack e-commerce platform, taken from wireframes to deployment with a focus on UI/UX and customer journey mapping.

    2026 ·
    Lead developer
  • Chromaticas

    Landing page for an Indonesian VTuber agency, with clickable planets that reveal talent profiles animated with transparent WebM.

    2025 ·
    Frontend, client
  • RslStore Discord bot

    A ticket system for a Discord-based online shop, with auto-role assignment, moderation tooling and order handling.

    2025 ·
    Solo, client

[02] About

Where software meets the business.

I like turning messy data into something a non-technical person can act on, putting a trustworthy API in front of it, and shipping the product around both. I studied Digital Business & Innovation in Tokyo, so I care as much about why a feature exists as how it's built.

Data & forecasting

Gradient-boosted models behind a real API, with features that reflect the market rather than a tutorial dataset.

Edge backends

Cloudflare Workers, Durable Objects, D1 and R2: APIs and real-time systems that scale to zero when idle.

Web applications

Typed React, Vue or Next.js over Postgres or Supabase, with auth, roles and row-level security actually wired up.

Interactive & 3D

Three.js scenes, browser games and scroll-driven graphics with a fallback path so they degrade instead of breaking.

[03] Toolbox

What's in the toolbox?

Data & ML

Forecasting and feature engineering, from notebook to an endpoint that always answers.

  1. Python · Pandas · NumPySnackTrack, capstone project
  2. XGBoostPer-product sales forecasts
  3. scikit-learnData Science & AI capstone
  4. Feature engineeringHoliday, payday, lag & rolling features
  5. Model evaluationMAPE-based accuracy for non-technical users

Backend & edge

APIs and storage that stay cheap when idle and stay honest under load.

  1. Cloudflare Workers · D1 · R2AimFlicks, nightbot-to-discord
  2. Durable ObjectsReal-time parties over WebSockets
  3. FastAPI · DockerSnackTrack forecasting service
  4. Supabase · PostgreSQL19 tables with row-level security
  5. Redis · SQLite · MariaDBCaching and smaller services

Frontend & 3D

Typed interfaces and WebGL that load fast and degrade instead of breaking.

  1. React · TypeScriptHimotoki, SnackTrack, AimFlicks
  2. Next.jsHirePassport, Chromaticas
  3. Three.js · WebGLAimFlicks FPS engine
  4. Vue · Vite · Tailwind CSSPrevious portfolio, tooling
  5. WebSockets · Web AudioLive lobbies and game feedback

Product & security

Scoping what to build, then making sure nobody can abuse it.

  1. HMAC signing · rate limitingAimFlicks anti-cheat
  2. Payment verificationSnackTrack Midtrans callbacks
  3. PRDs · user workflowsHirePassport
  4. Pitching & live demosSDGs to Startups Hackathon
  5. Figma · PhotoshopWireframes to UI

[04] Experience

Where I've been.

Benedictus in cap and gown at his graduation, holding a bouquet

Class of 2026

B.Sc. Digital Business & Innovation

Tokyo International University · Tokyo

  • Foundations of Python (A), Python for Data Science & AI (A−), Data Science & AI Project (A−).
  • Cybersecurity and Applications (A), Entrepreneurial Strategies (A), Principles of Management (A−).

Languages

Three languages, two countries

Grew up in Indonesia, studied and worked in Japan

  • Indonesian: native
  • English: fluent
  • Japanese: conversational

Hackathon · June 2026

SDGs to Startups Hackathon

Tokyo Student Network · Shibaura Institute of Technology, Toyosu Campus

  • Built HirePassport: candidates do one AI interview, and the result is turned into standard scores that are reused to match them with many companies.
  • Technical product & UI lead: designed the interview flow, wrote the JSON schema contract and pitched the live demo.

[05] Contact

Let's build something
that holds up.

Hiring, collaborating, or curious about one of the projects? Email is the fastest way to reach me.

Benedictus Sebastian @Conradium Loading… Benedictus Sebastian Aria Pratama Software engineer & business development · Data pipelines, edge backends, product Bogor, Indonesia · Tokyo International University Benedictus Sebastian @benedictus_seb Software engineer & business development Bogor, Indonesia · Click to follow leiconrad Benedictus Sebastian Member since Jun 2017 · Click to add me
notes/himotoki.md

2026 · Product engineer — mobile & learning

Himotoki

Problem

Learning Japanese means juggling a dictionary, flashcards, a course and a grammar guide. Words also change form, so searching 食べました doesn't find 食べる.

Approach

One app for all of it. Search in Japanese, English or by drawing a kanji, paste a sentence to break it into words, and save words as flashcards that sync across your devices.

Screens

A pasted sentence split into words, with 食べられなかった traced back through past, negative and passive to 食べる
Paste a sentence, see every conjugation traced to its root
The handwriting pad with 話 drawn and 話, 託 and 活 offered as matches
Handwriting search
A flashcard for 桜 on a phone, with an example sentence, kanji readings and review buttons
Installed as a PWA on a phone

Decisions worth explaining

An integrated learning system

Himotoki has a learning platform built in next to the dictionary, so learners can study Japanese in the same app where they look words up and review flashcards, instead of switching to a separate service.

Conjugation that degrades gracefully

With the full conjugation database, conjugated forms resolve to their root with a step-by-step breakdown tree. On slim deploys without it, a built-in rule engine still produces the trees, labelled "Rule-based" so the user knows what they're looking at.

Search that forgives

Close matches still resolve, so typos and half-remembered words find their entry. Latin input works in dictionary or conjugated form, and results filter by JLPT level (N5–N1).

Audio that never leaves the device

Pronunciation uses the browser's Web Speech API with a Japanese voice when available. No audio is sent to a server.

Built on open data, credited properly

Entries come from JMdict and Jitendex, kanji data from KANJIDIC, stroke order from KanjiVG, each attributed in-app under its own licence.

Co-developed with Michael Stefano Rioli, Himotoki's lead developer. I built the mobile app and the learning system.

React · Vite · Firebase Auth & Firestore · PWA · Web Speech API

Open Himotoki ↗
notes/snacktrack.md

2025 – 2026 · Technical lead — full stack & ML

SnackTrack

Problem

Small snack businesses (UMKM) make too much and throw stock away, or make too little and miss sales. Their sales history could tell them better, but turning it into a decision takes time they don't have.

Constraints

Sellers aren't technical and mostly use their phones. The forecast had to be easy to read, payments had to work online and as cash on delivery, and running the shop had to make selling easier, not add work.

A React/TypeScript SPA over Supabase with row-level security, a Vercel Edge Function layer, and a containerised FastAPI service running per-product XGBoost forecasts. Nineteen Postgres tables cover products, orders, chat, transactions and roles.

Screens

The seller's forecast page: next week's predicted demand, 76.5% accuracy, and predicted sales against recommended stock per product
The weekly forecast a seller actually sees
The seller's order list with revenue totals and each order's fulfilment and payment status
Orders and payment status
The SnackTrack storefront on a phone, with a bottom tab bar
Mobile-first storefront

Features, and how they work

A weekly forecast for every product

Each week, sellers see how much of each product they're likely to sell, so they know how much to make.

HowOne XGBoost model per product, trained on weekly sales with features for Indonesian public holidays, payday week (the 25th, moved off weekends and holidays), days to the nearest holiday, and recent sales trends. Products with too little history fall back to an average, so every product still gets a number.

Stock advice in plain numbers

Next to each forecast is a recommended stock level and a single accuracy score, so sellers can decide without reading a chart.

HowThe recommendation adds a safety margin on top of the forecast. Accuracy is shown as 100 − MAPE, a percentage anyone can read, rather than R², which looks better on paper but means nothing to a seller deciding how many boxes to make on Thursday.

Online payments and cash on delivery

Buyers pay online or in cash when the order arrives, and the order updates either way.

HowOnline payments go through Midtrans. Before marking an order paid, the backend recomputes Midtrans's SHA-512 signature over the order ID, status, amount and server key, so nobody can mark an order paid just by knowing its ID.

Every order in one list

Sellers see revenue, new orders and each order's status, from unpaid to delivered, and can search or filter by date.

HowSupabase Postgres holds products, orders, chat, transactions and roles across 19 tables. Row-level security means each seller can only ever see their own data.

A shop built for phones

Buyers browse by category, find nearby shops, chat with sellers and check out, all on a phone.

HowA mobile-first React and TypeScript single-page app, with a bottom tab bar on phones and a sidebar on desktop.

Forecasts that stay reachable

The forecast keeps working even if one backend server goes down.

HowThe Python forecasting service runs on a plain-HTTP host, which browsers block from a secure page. Vercel Edge Functions sit in between: they forward every call, attach the user's verified Supabase login so the backend can trust it, and switch to a backup server if the main one fails.

Python · XGBoost · FastAPI · Docker · Supabase · React · TypeScript · Vercel Edge · Midtrans

Open SnackTrack ↗
notes/aimflicks.md

2026 · Co-developer — multiplayer, progression & engine

AimFlicks

Problem

Aim trainers either live outside the browser or fail to transfer. If the sensitivity model is even slightly off, the trainer builds the wrong muscle memory.

Constraints

No install, honest scores even though the client is fully attacker-controlled, and near-zero hosting cost while still supporting real-time parties.

A Three.js FPS engine on the Pointer Lock API with nine drills, a GLB weapon viewmodel with recoil, run replays, career progression and real-time parties, backed by a single Cloudflare Worker with D1, R2 and Durable Objects.

Screens

A drill in progress with score, accuracy, time left and the weekly leaderboard alongside
A drill in progress
A five-player party lobby with every player locked in and ready
Real-time party lobby
The weekly leaderboard, filterable by drill, with the friends list beside it
Weekly leaderboard

Features, and how they work

Your Valorant sensitivity, 1:1

Enter the sensitivity you play with and the same mouse movement turns you the same distance as in game, so practice carries straight over.

HowRaw mouse input comes through the Pointer Lock API, and the camera maths is derived from Valorant's 0.07°/count yaw constant rather than tuned by feel.

Nine drills in the browser

Drills covering micro, wide, reflex, switch, headshot, strafe and tracking aim, a sensitivity calibrator and a free-play shooting range, with a weapon in hand that recoils when you fire. Nothing to install.

HowA custom FPS engine on Three.js renders the arena and a GLB weapon viewmodel, with score, accuracy and time tracked live on the HUD.

Weekly leaderboards that can't be faked

Every drill has a weekly and an all-time board, and your rank sits on screen while you play.

HowEach run needs a short-lived, HMAC-signed session token that can be redeemed exactly once and is verified on the server, with per-device and per-IP rate limits. Turnstile screens bots but fails open, so a bot check never stops a real player.

Parties with friends

Form a party of up to five, see which friends are online, chat or whisper, then everyone plays the same targets and the highest score wins.

HowParties, invites and presence run over WebSockets on Cloudflare Durable Objects. A shared seed gives every player the same run, and the Hibernation API means a lobby left open overnight costs nothing.

Profiles, replays and a career that follow you

Your profile, run replays and career progress are saved to your account and are there on any device.

HowOne Cloudflare Worker serves the whole API, with D1 as the database and R2 for stored files.

Fast loads after the first visit

Models, audio and video download once, and then the game starts almost immediately.

HowAssets are served from R2 under an immutable version folder and cached by a service worker. One asset() helper switches between local files and the CDN with a single env var.

Co-developed with Edi Loupatty, who built the original trainer. I added the parties, replays, career progression and Shooting Range.

Non-commercial fan project. Not affiliated with or endorsed by Riot Games.

React · Three.js · TypeScript · Cloudflare Workers · D1 · R2 · Durable Objects · Vite

Open AimFlicks ↗
notes/hirepassport.md

2026 · Technical product & UI lead

HirePassport

Problem

First-round and screening interviews eat up recruiters' time, and candidates sit the same kind of interview again for every company they apply to.

Approach

Candidates do one AI interview. Their answers become standard scores that companies and their hiring systems can read, and the same result is reused to match them with many jobs.

Screens

The AI interview transcript, with the candidate answering questions about debugging and team alignment
The candidate's side of the interview
A review step listing fields extracted from an uploaded CV, each with a checkbox, before they are applied to the profile
CV fields extracted, then checked before import
The candidate dashboard with a Skill Score of 684 out of 1000 and matched jobs with fit percentages
Candidate view: one score, matched jobs
The recruiter's hiring dashboard with applicant counts, a hiring pipeline and recent activity
Recruiter view: the pipeline those scores feed

What I owned

Product design and interview flow

Translated HR operational requirements into a conversational interface candidates could move through without instructions.

The extraction contract

Wrote the JSON schema specifications that force the model's output into fields an ATS can ingest, instead of free-text summaries someone still has to read.

The pitch

Presented the product vision, user acquisition strategy, architecture and a live demo to the judging panel at the SDGs to Startups Hackathon.

Next.js · Python · LLM agents · JSON Schema

ask/projects.bot

Hi! I know Ben's projects inside out. Ask me what they do, how they're built, or what Ben did on each.

Answers come from the notes on this site and can be wrong.