Problem
Farmers tracked harvests with paper logs. Records got lost, quality was judged by feel, and there was no way to trace a batch back to a farm or a harvest date.
Open to software engineering internships
BS Information Technology student at FEU Institute of Technology, specializing in Web and Mobile Application development, and looking for a software engineering internship. I build practical products across the frontend, backend, and data layers — from Flutter apps and REST APIs to offline-first systems that stay useful when connectivity is limited.
Selected work
A Flutter app that lets coffee growers record harvests, sort for quality, and trace every batch back to its farm, even with no signal.
An offline planner for assignments and exams, with a weekly view, reminders before each deadline, and export to your phone's calendar.
Upload company documents and ask questions in plain English. It finds the most relevant passages and answers only from them, citing each source.
About
I'm a BS Information Technology student at FEU Institute of Technology, specializing in Web and Mobile Application development. I like taking a real problem and turning it into an app people can actually use, whether that's a field app for coffee growers or a planner that keeps students on top of their deadlines. On mobile I work mostly in Flutter and Dart; on the web I've built with JavaScript, PHP, Laravel and CodeIgniter, backed by MySQL or SQLite. I care about clear, simple interfaces and apps that keep working when the connection doesn't. I'm looking for a software engineering internship where I can learn from an experienced team and contribute to real products.
Toolkit
Case study · Mobile
PicKape is a farm-to-cup management app for coffee growers. Farmers record harvest batches in the field, scan them, track quality, and hand every bean a clear traceable story — even on farms where the network is unreliable.
Mobile demo
A short walkthrough of the PicKape Flutter app on an Android phone: signing in, the grower dashboard and analytics, creating a harvest record with an off-season date check, registering a sorting batch with moisture and water-activity readings, and submitting it for review with its full traceability record.
Tap the video to pause or play.
Farmers tracked harvests with paper logs. Records got lost, quality was judged by feel, and there was no way to trace a batch back to a farm or a harvest date.
A Flutter app paired with a Node.js API. Batches are created on the phone, stored locally first, then synced when a connection is available. Every batch carries farm and harvest details for full traceability.
TODO: the problem → the options you considered → what you chose and why → the result.
Batches save to a local SQLite store first. A sync manager pushes and pulls through the API when the network returns, so no work is lost.
The home screen streams assigned lots and harvest totals in real time, so field data shows up as it happens.
Every batch links back to its farm and harvest details, giving each lot a clean, auditable story from field to cup.
A Preliminary Quality Indicator guides growers toward better sorting, with a clear note that the tool assists and can make mistakes.
Growers scan a batch in the field with the phone camera. Each scan is stored and linked to the batch record.
Password resets and profile changes run through an approved, moderated flow instead of open endpoints.
Projects
Three apps I've built, from a Flutter field app to an AI document assistant. Each page covers the problem, how it works, and the decisions behind it.
A Flutter app that lets coffee growers record harvests, sort for quality, and trace every batch back to its farm, even with no signal.
An offline planner for assignments and exams, with a weekly view, reminders before each deadline, and export to your phone's calendar.
Upload company documents and ask questions in plain English. It finds the most relevant passages and answers only from them, citing each source.
Case study · AI
Upload company documents (PDF, Word, Markdown) and ask questions in plain English. Knowledge Hub finds the passages that answer the question and replies only from them, citing every source so the answer can be checked.
Open the live demo View source
Answers to everyday questions such as "how do I claim travel expenses?" sit inside long policy PDFs. People ask the same questions repeatedly, and a chatbot that makes things up is worse than no answer.
Retrieval-augmented generation: index the documents, retrieve the most relevant passages for each question, and have the model answer only from those passages, with [S1]-style citations and a confidence score.
Indexing a document
Answering a question
If the AI model is down or not configured, retrieval switches to BM25 keyword search and the app returns the best matching passages, clearly labelled, instead of an error.
The model is instructed to use the retrieved passages and nothing else, and to say when they don't contain the answer. Every claim carries a citation the reader can open.
Vectors from different embedding models can't be compared. Each one stores the model that made it, so switching models re-embeds automatically instead of silently returning wrong matches.
An AI outage shouldn't take search down with it. Uploads are still saved, and questions fall back to keyword search with an honest notice.
The AI layer talks plain HTTP, so it runs on a free local model with Ollama, on OpenAI, or on any compatible service, with no SDK lock-in and a lighter deploy.
Demo mode adds per-IP rate limits, upload caps, a document limit, protected sample documents, and question history that is private to each visitor.
The analytics page (questions per day, most cited documents, median response time, hit rate) is computed from stored questions, not placeholder figures.
render.yaml blueprint; a scheduled GitHub Action keeps the free instance awake so the demo opens instantly.Case study · Web app
A planner for students that keeps every assignment and exam in one place, shows the week at a glance, and reminds you before things are due. It works offline and installs to a phone's home screen like an app.
Deadlines are spread across Canvas, class group chats, and syllabi. In a busy week it's easy to miss one, and most planners need an account and a connection.
One list grouped into Overdue, Due today, This week, and Later, with a calendar and reminders. Everything stays on the device, so it opens instantly and works with no signal.
Counts for overdue, today, and this week, a 7-day strip, and a month calendar you can tap to filter.
Each deadline is announced once when it enters its reminder window, through notifications or an in-page message.
Exports upcoming deadlines as an .ics file with alarms and weekly repeats, so your phone reminds you even when the app is closed.
Reads a Canvas calendar feed, previews new and changed items, and updates existing ones instead of duplicating them.
A service worker caches the app, and a web manifest lets it install to the home screen and open with no connection.
Export everything to a JSON file and merge or replace it later, on the same device or a new one.
No account and no server means instant loading, privacy, and full offline use. The trade-off is no automatic sync between devices, which JSON backup and calendar export cover.
The offline cache is limited to the tracker's own files, so installing it never interferes with the rest of this portfolio site.
A web page can't wake itself up to notify you once it's closed. Exporting alarms to the phone's calendar app solves that without a backend.
Finishing a weekly item creates next week's copy; unchecking by mistake removes that copy again, so repeats never pile up as duplicates.
BSIT WMA Student · Mobile & Web Developer
weiwenxuan59@gmail.com · github.com/andreweiiii · linkedin.com/in/wenxuan-wei-9150aa40a
IT student specializing in Web & Mobile Application development. I build practical mobile and web apps: Flutter apps that keep working offline, PHP and JavaScript web systems, and a Python/FastAPI document Q&A service that uses retrieval-augmented generation (RAG). Looking for a software engineering internship where I can learn from an experienced team and contribute to real products.
PicKape — Coffee Quality & Traceability System
Group capstone · My role: mobile developer (Flutter)
pickape.com · Mobile demo video
Knowledge Hub — Document Q&A with RAG
Personal project · Python, FastAPI, SQLite
Deadline Tracker — Assignment & Exam Reminder App
Personal project · Offline productivity app
FEU Institute of Technology
BS Information Technology — Web & Mobile Application (WMA)
Expected graduation: August 2027
Contact
I'm looking for an internship where I can build real mobile and web products and learn fast. Reach me through any channel below.