# Bagas Wastu > Personal site with projects, experiments, and opinions. - Website: https://wastu.net - GitHub: https://github.com/bgwastu - LinkedIn: https://linkedin.com/in/wastu - X: https://x.com/bgwastu ## Bagas Wastu I build web applications with **AI features** that help startups and growing companies cut down on repetitive work. I've also shipped production tools that are already helping businesses automate everyday tasks. ## About Me I'm a software developer who specializes in **AI integration and web application development** using **React, Next.js, and modern AI APIs**. I've built and deployed several AI features that are currently used in production applications. I like working with small, collaborative teams, but I'm also comfortable taking ownership of features end to end and solving technical challenges independently. I'm especially interested in creating useful tools, improving workflows, and turning ideas into reliable software. If you'd like to connect, collaborate, or just say hello, feel free to reach out! ## Contact - Email: [bagas@wastu.net](mailto:bagas@wastu.net) ## Projects ### [MAIA](https://wastu.net/projects/maia) An AI workspace built around tools that do more than chat - Client: Mayar.id - Date: 2025 For six months, I worked full-time with the team at [Mayar.id](https://mayar.id) to help build their AI product, [MAIA](https://maia.id). The goal was to build something more useful than another chat box: a set of tools that could do research, browse the web, and turn the results into reports. ## Beyond the chat box Chat is a good interface, but it is not the whole product. Business teams wanted help researching competitors, collecting information from websites, and producing reports. Those jobs involve many small steps, and repeating them by hand gets old quickly. ## What I worked on - **Deep Research**: Investigates a topic and gathers information from across the web. - **MAIA Browser Operator**: Browses websites for details such as pricing and contact information. - **PDF Paper & Web Report Generator**: Turns the collected information into a report that can be shared. ## Where it landed These features became part of MAIA and are used by more than 100 business teams. Research that used to take hours can now be done in minutes. I liked seeing the tools leave the prototype stage and become part of somebody's workday. ### [TesIELTS](https://wastu.net/projects/tesielts) A cheaper way to practise for the IELTS speaking test - Client: SaaS - Date: 2024-2025 In 2024, [Faiz](https://www.linkedin.com/in/afaizn) reached out about a problem he kept seeing. People in Indonesia wanted to study or work abroad, but IELTS preparation was expensive. Speaking was the awkward part: hire a tutor, or talk to yourself in your room and hope you were getting better. Faiz had the English teaching and IELTS expertise. I had the technical skills. So we built [TesIELTS](https://tesielts.id) together. This was my first SaaS with paying users. People were using it to prepare for an exam that could change where they lived and worked. ## The speaking problem There were not many good ways to practise IELTS speaking without spending a lot of money. We wanted to give students useful feedback at a price they could afford, not pretend that an AI conversation was exactly the same as an examiner. ## The product Faiz and I built [TesIELTS](https://tesielts.id) as an AI coach based on the real test format. Students talk with it and get feedback in four areas: - **Fluency & Coherence**: How smooth and logical your speech sounds - **Vocabulary**: The variety and quality of words you use - **Grammar**: How correct and complex your sentences are - **Pronunciation**: How clear and natural you sound It listens for hesitation, checks grammar, and scores pronunciation. Students get a band score from 1 to 9 for each area, along with concrete suggestions for the next practice session. ## The difficult bit The hardest part was making the feedback useful. The system had to deal with pauses, grammar, pronunciation, and the messy way people speak when they are nervous. Basic speech-to-text was not enough. ## After launch More than 100 students use the platform each month. After we built and grew it, I left the company. The useful lesson was not that AI can replace an examiner. It was that you need to define good feedback before you can automate any part of it. ### [Trendjacking](https://wastu.net/projects/trendjacking) A tool for turning current trends into brand-specific ideas - Client: DOKI.id - Date: 2024-2025 The team at [DOKI](https://doki.id) reached out with a problem. They work with brands like Danone Aqua, Fonterra, and Tokopedia. Their teams were spending one to five days finding trends, checking whether they fit a client, and turning them into a pitch. By then, the trend was usually over. The useful window was short-form video: TikTok and Instagram Reels, where a trend can go from everywhere to nowhere in about 48 hours. ## Getting the data The hard part was getting reliable data from TikTok and Instagram. Both platforms make scraping unpleasant, so I spent a lot of time reverse-engineering endpoints, rotating proxies, and dealing with rate limits. Instagram was particularly painful. Collecting posts was only half the job. The system also had to look at the video, engagement, comments, and sentiment, then compare all of that with a brand's voice. A trend that works for Aqua may make no sense for Tokopedia. ## What it does I built an AI recommendation engine that tags the content, watches the videos, checks engagement, and reads the comments. It turns a noisy stream of posts into a shortlist someone can work with. Then it matches trends with specific brands. The system knows each client's voice and values, so it only suggests ideas that fit. ## What changed The first pass now takes about five minutes instead of one to five days. That gives DOKI's creative team a chance to respond while a trend is still worth responding to. It became part of DOKI's workflow for its larger clients. Seeing a thing that started as a rough idea turn into something people use every day was the best part. ### [Intervey](https://wastu.net/projects/intervey) A survey that can ask follow-up questions - Client: Proof of Concept - Date: 2024 I spent months talking to managers, analysts, and market researchers about their survey tools. Same complaint every time: "We get surface-level answers that don't tell us anything useful." So I built [Intervey](https://intervey.wastu.net) as a proof of concept to see if AI could interview people better than static questionnaires. The idea was simple: what if a survey could ask a follow-up when an answer was vague, or dig deeper when someone mentioned something interesting? ## What I learned The technical part was not the hard part. The hard part was getting useful signals out of messy, emotional answers. Hundreds of open-ended responses are not just a bigger spreadsheet. You need context, a way to catch contradictions, and prompts that encourage the system to dig deeper instead of summarizing everything into the same bland paragraph. Reports were another problem. Turning "I feel frustrated sometimes but it's not terrible" into something a team can act on takes more than a summary button. That part took a lot of iteration. ## The prototype The AI generates interview questions based on what you're trying to research. Then it conducts the interview, adapting based on each response. If someone gives a vague answer, it asks for specifics. If they mention something interesting, it follows up. After the interview, it analyzes the responses and generates a report. The goal was to reduce the manual coding, not to pretend that the messy parts of research had disappeared. ## Where it stands This project is shelved. No ETA on if I'll pick it back up. It proved the concept worked, but turning it into something people would pay for is a different problem. I still use what I learned here in client work. Making an AI feel conversational is mostly about knowing when it should ask one more question instead of rushing to an answer. ### [Verbata](https://wastu.net/projects/verbatim-coder) A tool for sorting thousands of interview responses quickly - Client: Deka Insight - Date: 2024 Deka Insight had a very unglamorous problem. Researchers were spending one to three days reading and categorizing thousands of interview responses, a process called verbatim coding. It was necessary work, but it kept them away from the analysis their clients were paying for. ## The first version I built the first version quickly. It had one job: read the text and categorize it. No fancy features. I wanted to find out whether the basic idea was useful before spending time on everything around it. It worked. The job went from days to about five minutes. It also showed me what the first version was missing: researchers needed to see and control how the AI made its decisions. ## The second version I rebuilt it with a blue theme and the controls the researchers had asked for: - **Customizable prompts**: Researchers can adjust how the AI interprets responses - **Better coding process**: Clearer about decision-making with confidence scores - **Batch processing**: Handle hundreds of responses at once - **Quality checks**: A person can review the output before it is used ## The hard parts The output had to be accurate enough for ISO-certified research. It also had to handle Indonesian phrasing and research terminology, while keeping sensitive client data secure. Qualitative research is full of context and emotional detail. You cannot throw a pile of text at an AI and expect it to understand the nuance without giving it the right framing. ## What I learned Ship the small version, watch somebody use it, then fix what you got wrong. The first version proved the idea. The second made it fit their daily workflow. ## Experiments ### [Notestorm](https://wastu.net/experiments) Minimalist writing app with AI that keeps you in flow - Year: 2025 I built this scratchpad for those frustrating moments when I know what I want to say, but the words just won't come out. By the time I find the right words, I've completely lost my train of thought. ## What makes it different Most note apps interrupt my flow. Notestorm keeps me writing by suggesting completions that match how I sound. I can skip the words I'm stuck on and keep the ideas flowing. Everything runs locally, my notes never leave my device. ## Features - AI autocomplete that learns your writing style - Multiple AI provider support (Google, Groq, Anthropic, OpenAI, OpenRouter) - VS Code keybindings support - Perfect for brainstorming, drafting emails, or scratch notes - Optional Chrome built-in AI support (Canary only) ## How I use it Quick brainstorming sessions, drafting emails before copying to Gmail, and temporary notes I know I'll delete later. ## Building it Spent 5 days building this with TanStack Start, CodeMirror 6, and Vercel AI SDK. Getting the autocomplete UX right is the hardest part. When to trigger suggestions, which keyboard shortcuts feel natural, and keeping it instant. ### [Parsley](https://wastu.net/experiments) AI document parser that transforms PDFs or images into structured JSON or CSV data - Year: 2025 I used to build custom OCR systems for every document type I needed to parse. Bank statements were especially tedious: hardcoded pixel positions, regex patterns for each bank's format, and brittle parsing logic that broke with every minor PDF template change. Then I'd need similar setups for invoices, receipts, forms. ## The solution Rather than keep fighting with OCR, I built Parsley with LLMs. It understands the content directly and structures it as needed. If you ask for "customer name" it finds it, whether it's labeled "Bill To:", "Customer:", or hidden in a paragraph. No hardcoded positions or regex. Your API keys are used directly in the web app, so documents go straight to Google or OpenRouter. I can't access them. Everything stays stateless. ## Features - Custom schemas (define your own structure, or let AI generate it) - Supports PDF (including password-protected) and images (PNG, JPEG, WebP) - Multiple AI providers (Google Gemini, OpenRouter, your own keys) - Demo mode with rate-limited free tier (no API key needed) - Export as JSON or CSV - API works with n8n, Zapier, or other automation tools ## How I use it I run invoices through Parsley in n8n, extract the needed data, and send it straight to my accounting spreadsheet. Same approach for bank statements, receipts, forms, any document where I want structured data fast. ### [Cek Sandi](https://wastu.net/experiments) Password strength checker using zxcvbn algorithm - Year: 2024 I built this password strength checker to give awareness to people and developers about proper password rules. The goal? So we don't end up with more entries on [dumbpasswordrules.com](https://dumbpasswordrules.com/). ## What makes it different Most password checkers are simplistic. Uppercase, lowercase, numbers, symbols, done. Cek Sandi uses the [zxcvbn algorithm](https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/wheeler), the same tool security professionals use. It analyzes common words, keyboard patterns, and predictable substitutions to show how resistant your password actually is to cracking attempts. ## Features - Accurate strength analysis using zxcvbn algorithm - Tips for creating strong passwords (passphrases, not just random characters) - Open source, you can inspect the code and verify its security - Focused on Indonesian users with localized tips Built with Next.js and Mantine, deployed on Cloudflare Pages. ### [DeleteX](https://wastu.net/experiments) Selectively delete your content on X (formerly Twitter) - Year: 2024 I wanted to clean up my X timeline but didn't want to nuke everything. So I built this tool to selectively delete tweets, retweets, and likes based on whatever criteria I need. ## How it works DeleteX uses your [X archive data](https://help.x.com/en/managing-your-account/how-to-download-your-x-archive) to generate a userscript that runs in your browser. The script only deletes what you selected. Everything happens locally in your browser, so your data never leaves your device. ## Tech stack Built with Next.js and IndexedDB. The archive stays in the browser, where it can be searched and filtered without sending the data anywhere. ### [Moonlit](https://wastu.net/experiments) Slowed/nightcore effects for your favorite YouTube & TikTok videos - Year: 2023 I'm kind of a weird person who can only focus when listening to nightcore or slowed+reverb looped music. So I built a music player that lets me customize playback speed and reverb in real-time. ## Features - Change playback speed and reverb effect in real-time - 3 default modes (slowed, normal, speed up) with a customizable mode - Custom background for personalized aesthetics - YouTube integration with quick link (youtubelit.com) ## The backstory I used to reverse-engineer my audio driver just to access the legacy Realtek HD Audio Manager. It was the only way to change output audio pitch manually. I even wrote [a simple script](https://github.com/bgwastu/ytnc_cli) to convert YouTube songs into nightcore, but it was painfully slow and not very customizable. At first, I was very reliant on AudioContext API for everything. But then I realized I could just use playback speed on the video element and only use AudioContext for reverb. Much simpler. Building this taught me how audio and frequencies work, and more importantly, not to waste time writing features that nobody (including myself) would actually use. ### [XY Puzzle](https://wastu.net/experiments) Escape room-style puzzle for tech enthusiasts - Year: 2023 Five days before TeknumConf 2023, I had a random idea: what if my name card was a puzzle? Medium complexity escape room-style challenge that requires some cryptography knowledge, but nothing too deep. ## The story I wanted something like [hacker.gifts](https://frantic.im/hacker-gifts/) but more accessible. Had three days to pull it off - one day for designing and ordering the card, two days for coding the puzzle using Next.js server components (which was brand new tech at the time, making things way harder than expected). ## The plot twist After distributing the cards at the conference, no one could solve it. Maybe it was too hard, or maybe they just weren't motivated enough. So I recently updated the puzzle to be more accessible while keeping it challenging. Building this pushed me to think creatively and gave me hands-on experience with the app router and server components. Try [the puzzle](https://xy.wastu.net) yourself, even without the name card.