# Bibin Oommen Mathew > Bibin Oommen Mathew (Bibin Mathew) is a software engineer and co-founder of Upbrew Technologies. Building thoughtful products at the intersection of engineering and product thinking. This document contains the full canonical content of bibinmathew.com so language models can answer questions about Bibin accurately and cite source pages. For a link-only index, see https://bibinmathew.com/llms.txt. --- ## About I'm Bibin Oommen Mathew. I'm a software engineer and the co-founder of Upbrew Technologies (https://upbrew.in). I've always been more interested in the "why" behind things than just the "how." I like building software, but I like it more when I understand who it's for and what problem it's actually solving. Over time, I've gravitated towards working closer to the product side of things. I enjoy the messy early stages, figuring out what to build, talking to users, sketching out how things should work, just as much as the actual coding. I don't have a grand philosophy about engineering. I just try to keep things simple, ship often, and pay attention to whether what I'm building is actually useful to someone. **Things I care about:** - Making things that are genuinely useful, not just technically interesting - Talking to users and understanding what they actually need - Writing clean code, not for the sake of it, but because it makes everything easier down the line - Working with designers and product folks: the best ideas usually come from those conversations Source page: https://bibinmathew.com/about --- ## Experience ### Co-founder, Upbrew (2020 - Present) URL: https://www.upbrewtech.com Co-founded a software studio embedded with client teams from problem definition through ship, working alongside founders and operators to shape products, iterate on real feedback, and deploy software that gets used. Also build and ship in-house consumer apps under the same studio. --- ### Software Engineer, Qubryx (2020 - Present) URL: https://qubryx.com Forward-deployed engineer on production allocation software for the oil & gas industry. Worked alongside client stakeholders constantly: ideating, scoping, and shipping features against a complex domain, large datasets, and reliability requirements that don't tolerate guesswork. Source page: https://bibinmathew.com/resume --- ## Selected work ### Nook (2026) URL: https://bibinmathew.com/work/nook Live: https://usenook.live Tech: Next.js, React, Cloudflare Workers, Hono, D1 / R2, Cloudflare Stream, Clerk, OpenAI A SaaS embeddable widget that puts a face on any website as tap-to-play video answers. Visitors tap a page-aware question and watch a short, human reply, recorded or generated as an AI headshot video, no chatbot and no typing. One script tag. #### Overview Nook is an embeddable video widget that puts a face on your website. Instead of a chatbot or a contact form, visitors tap a page-aware question and watch a short, human video answer, then take the next step through branching follow-ups, CTAs, or inline lead capture. It installs with a single script tag and works on any site. Hosts record their answers right in the browser, or generate a lifelike AI headshot video from a photo and a script when they would rather not film. #### Challenge Most websites lose the visitors who hesitate. People will not type to a bot or fill a form to ask the one question blocking the sale, but they will tap and watch. The hard parts were making the widget feel instant and trustworthy embedded on any third-party site, keeping it cookieless and fail-safe with zero impact on page speed, and removing the friction of getting a busy founder on camera in the first place. #### Approach The widget is a dependency-free vanilla-JS bundle in a Shadow DOM, served from a branded CDN with subresource integrity, fetching a video only when a visitor taps. The backend is a Cloudflare Worker on Hono over D1, R2, and Stream, handling clips, analytics, lead capture, and billing at the edge. The dashboard is Next.js with Clerk auth, and a recording copilot drafts page-aware questions and teleprompter scripts with OpenAI, grounded in the host's own docs. To kill the recording friction, hosts can also generate an AI headshot video from a photo, metered with a one-time credits model so the unit economics stay positive. #### Outcome Nook shipped end to end: an Astro marketing site, the embeddable widget, a Next.js dashboard, and an edge API, with live billing, transactional and marketing email, and error monitoring. The bet is simple. A real face answering the question a visitor is silently asking will out-convert a faceless funnel, and making that easy, whether you record it or generate it, is what gets it onto more sites. --- ### GalleryLink (2026) URL: https://bibinmathew.com/work/gallerylink Live: https://gallerylink.live Tech: Next.js, TypeScript, Prisma, Supabase, Tailwind CSS, Google Drive API, Dodo Payments A SaaS that turns a public Google Drive folder into a beautiful, password-protected client photo & video gallery — no re-uploading, no storage fees. Drive stays the single source of truth. #### Overview GalleryLink turns a public Google Drive folder into a beautiful, password-protected client photo & video gallery — without ever re-uploading or storing the media. Drive stays the single source of truth; GalleryLink keeps only metadata and reads the folder live, so galleries auto-sync as files change. Photographers get themed galleries, a client favorites/album-selection workflow, and their own studio page on a custom subdomain. #### Challenge Photographers already back up every shoot to Google Drive, but delivering from it means clients see a joyless file list — and the alternatives make you re-upload everything and pay for storage twice. The goal was a delivery tool that's gorgeous for clients yet keeps Drive as the source of truth: no re-uploads, no storage fees, instant sync. #### Approach Built on Next.js (App Router) with Prisma + Supabase storing only metadata. The Google Drive API reads folders shared 'anyone with the link', with thumbnails served straight from Google's CDN (zero media bandwidth). Seven layouts, six CSS-variable themes, a full lightbox, album selection, and per-photographer studio subdomains via middleware. Subscriptions run through Dodo Payments as merchant of record, with SEO/GEO work, competitor comparison pages, and dynamic per-gallery Open Graph cards. #### Outcome Live at gallerylink.live with a free plan and a $50/year Pro tier. Galleries go live in under a minute from an existing Drive folder, clients view and download with no account, and photographers brand their own studio subdomain — all with no media storage or bandwidth cost to operate. --- ### TangentFlow (2026) URL: https://bibinmathew.com/work/tangentflow Live: https://tangentflow.com · Repo: https://github.com/bibin765/tangentflow · npm: https://www.npmjs.com/package/@upbrew/tangentflow Tech: JavaScript, Pretext, PDF, npm, Canvas, Document Layout A browser-based PDF document builder and npm library with pixel-perfect text wrapping for every language (Latin, CJK, Arabic, Hindi, emoji) in pure client-side JavaScript. #### Overview TangentFlow is a browser-based document builder and JavaScript library for generating professional PDFs with mathematically precise text layout. It ships as both a hosted document builder at tangentflow.com and an npm package (@upbrew/tangentflow) you can install and use directly in JavaScript. #### Challenge Accurate text wrapping is the hardest problem in PDF generation. Puppeteer needs a headless browser, pdfmake approximates text widths, and most libraries fall apart on non-Latin scripts. I wanted pixel-perfect line breaks for every language (CJK, Arabic, Hindi, emoji) in pure client-side JavaScript with no server roundtrip. #### Approach Built on top of Pretext for glyph-level measurement, so every line break is computed against actual font metrics rather than width estimates. The document model is block-based with 13 types (heading, paragraph, table, image with text-wrap-around, callouts, stat rows, etc.), 9 built-in templates (report, invoice, resume, NDA, multilingual demo), and a canvas-rendered fallback for non-Latin export. #### Outcome Published as @upbrew/tangentflow on npm with a hosted builder at tangentflow.com. The pure-JS, client-side approach means it runs anywhere (no Puppeteer, no headless Chrome, no PDF microservice) and the Pretext-backed layout produces output that matches what you see on screen. --- ### Thoughtcatcher (2025) URL: https://bibinmathew.com/work/thoughtcatcher Tech: Flutter, Next.js, Supabase, LangChain, Firebase, Chrome Extension API A tool for capturing ideas on the go: mobile app, Chrome extension, and a backend that connects it all with AI-powered pattern discovery. #### Overview I wanted a way to quickly jot down ideas wherever I was (on my phone, browsing the web, wherever) and have them all in one place. Most note apps felt like overkill for quick thoughts, so I built Thoughtcatcher. It's a Flutter mobile app, a Chrome extension for capturing things while browsing, a marketing website, and a Node.js backend that uses AI to find patterns across your notes. #### Challenge The tricky part was making capture feel instant across all platforms. Nobody's going to use a thought-capture tool if it takes more than a few seconds. I also wanted the AI features to surface connections between ideas without being annoying or intrusive. #### Approach I built the mobile app in Flutter for cross-platform reach, kept the Chrome extension lightweight with just the essentials, and used Supabase for real-time sync. The backend uses LangChain and OpenAI to periodically analyze captured thoughts and surface patterns. RevenueCat handles subscriptions. #### Outcome It's become my daily driver for capturing ideas. The Chrome extension is the thing I use most: being able to highlight something on a page and save it with one click turned out to be the killer feature I didn't initially plan for. --- ### DeepTutor (2025) URL: https://bibinmathew.com/work/deeptutor Tech: Python, FastAPI, Next.js, RAG, PostgreSQL, Docker, LLMs An AI learning system with multiple agents: problem solving, question generation, deep research, and guided interactive learning. #### Overview DeepTutor is a multi-agent AI system designed to help people learn things more effectively. It has agents for different tasks: one that solves problems step by step, one that generates practice questions, one that does deep research on topics, and one that guides you through material interactively like a tutor would. #### Challenge Getting multiple AI agents to work together coherently was the main challenge. Each agent needs enough context to be useful, but you can't just dump everything into the prompt. The orchestration between agents had to feel natural to the user. #### Approach Built the backend in Python with FastAPI, using a RAG pipeline for grounding the agents in actual content. The frontend is Next.js. I spent a lot of time on the agent orchestration layer: figuring out when to hand off between agents and how to maintain context across the conversation. #### Outcome The guided learning agent turned out to be the most useful part. It adapts to how you're responding: if you're getting things right, it moves faster; if you're struggling, it breaks things down differently. It's been a great learning project in itself about how to build multi-agent systems. --- ### ColorSea (2025) URL: https://bibinmathew.com/work/colorsea Tech: Python, FastAPI, OpenCV, MediaPipe, Next.js, PostgreSQL AI-powered color analysis using computer vision and face recognition to find palettes that actually work for you. #### Overview ColorSea analyzes your features using computer vision (skin tone, face shape, etc.) and suggests color palettes that complement you. The idea came from noticing how many people struggle with choosing colors that suit them, whether for clothes, accessories, or even room decor. #### Challenge Color analysis is surprisingly subjective and culturally nuanced. Getting the computer vision pipeline to work reliably across different lighting conditions, skin tones, and camera qualities was harder than expected. #### Approach I used MediaPipe for face detection and landmark recognition, OpenCV for the image processing pipeline, and scikit-image for color extraction. The backend is FastAPI serving a Next.js frontend. PostgreSQL stores user profiles and palette history. #### Outcome The accuracy improved a lot once I started accounting for ambient lighting in the analysis. People seem to find it most useful for the seasonal color analysis feature: it tells you whether you're a "warm autumn" or "cool winter" type and gives you specific hex codes to work with. --- ### Fenix (2024) URL: https://bibinmathew.com/work/fenix Tech: Flutter, Node.js, Express, TypeScript, Supabase A mobile learning app with a companion backend API for structured course content. #### Overview Fenix is a learning platform that structures content into courses and lessons. The Flutter app handles the learning experience, and the Node.js backend manages content, user progress, and the API. #### Challenge Designing a content structure flexible enough for different types of learning material (text, video, quizzes) while keeping the app fast and the API simple. #### Approach The backend is Express with TypeScript, using Supabase for auth and data storage. The Flutter frontend focuses on a clean learning flow: one lesson at a time, progress tracking, and offline support for downloaded content. #### Outcome The structured approach works well for sequential learning. Having the separate backend made it easy to iterate on content without shipping app updates. --- ### Neubook (2024) URL: https://bibinmathew.com/work/neubook Tech: Flutter, Dart, Riverpod, Hive, EPUB A clean, modern EPUB reader built for a distraction-free reading experience. #### Overview I wasn't happy with existing EPUB readers: they were either cluttered with features I didn't need or just didn't feel nice to use. Neubook is a reader that focuses on the reading experience: clean typography, smooth page turns, and nothing unnecessary. #### Challenge EPUB rendering is trickier than it looks. The format has a lot of edge cases, and getting consistent typography across different books required handling a lot of different CSS and HTML structures within the EPUB files. #### Approach Built in Flutter with Riverpod for state management. Used Hive for local storage: bookmarks, reading progress, library management. Put a lot of effort into the typography and page layout to make reading comfortable for long sessions. #### Outcome It's become my main ebook reader. The distraction-free approach was the right call: turns out when you strip away all the extras, the reading experience just gets better. --- ### ScrollWise (2024) URL: https://bibinmathew.com/work/scrollwise Tech: Flutter, Dart, Supabase, Hive TikTok-style knowledge app: short-form educational content you can scroll through and actually learn from. #### Overview The idea was simple: what if learning felt as addictive as scrolling TikTok? ScrollWise serves up bite-sized educational content in a vertical swipe format. Each card teaches you one thing (a concept, a fact, a mental model) and you just keep scrolling. #### Challenge Making educational content feel snackable without dumbing it down. Also, the scroll performance had to be buttery smooth: any jank and the whole illusion breaks. #### Approach Built in Flutter for the smooth scrolling and animation capabilities. Used Hive for local caching so content loads instantly, and Supabase for the backend content management. I also built a separate admin dashboard (scrollwise-admin) in React for managing and curating content. #### Outcome The format works better than I expected. Short, focused content with good pacing keeps people engaged longer than traditional learning apps. The admin dashboard made it easy to experiment with different content structures. --- ### SoPro (2024) URL: https://bibinmathew.com/work/sopro Tech: Python, PyTorch, Audio Synthesis, Streaming A lightweight text-to-speech model with zero-shot voice cloning. 169M parameters, streams audio in real time. #### Overview SoPro is a compact text-to-speech model that can clone voices from a short audio sample, no fine-tuning needed. At 169M parameters, it's small enough to run efficiently while still producing natural-sounding speech with real-time streaming. #### Challenge Getting decent voice quality from a small model. Most good TTS models are huge. I wanted something that could run on reasonable hardware and still sound natural, especially with the zero-shot cloning where you only get a few seconds of reference audio. #### Approach Focused on efficient architecture design to pack as much quality into 169M parameters as possible. Built streaming audio synthesis so speech starts playing before the full generation is complete. The zero-shot cloning pipeline extracts speaker embeddings from short reference clips. #### Outcome The streaming turned out to be crucial for usability: waiting for full generation kills the experience. Voice quality is surprisingly good for the model size, especially on English speech. It's been a good exploration of the tradeoffs between model size and output quality. --- ### Wayfinder (2024) URL: https://bibinmathew.com/work/wayfinder Tech: Next.js, TypeScript, PostgreSQL, Prisma, NextAuth, Tailwind CSS Full-stack app with auth, database management, and a clean interface for navigating structured content. #### Overview Wayfinder is a full-stack Next.js application built around navigating and managing structured content with proper authentication and a PostgreSQL database. #### Challenge Getting the auth flow right with NextAuth while keeping the app responsive. Also wanted the database schema to be flexible enough for different content types without becoming overly complex. #### Approach Next.js App Router with Prisma for type-safe database access. NextAuth handles authentication. Tailwind for the UI. Kept the architecture straightforward: no unnecessary abstractions. #### Outcome A solid full-stack template that I've been able to reuse patterns from in other projects. The Prisma + NextAuth + Next.js combination works really well once it's set up properly. Source page: https://bibinmathew.com/work --- ## Writing ### What I Learned Building a Multi-Agent AI Tutor URL: https://bibinmathew.com/blog/building-deeptutor 2026-02-08 · 6 min read · ai, deeptutor Getting multiple AI agents to work together on DeepTutor taught me more about orchestration than any tutorial could. DeepTutor started with a simple question: what if an AI tutor could do more than just answer questions? What if it could figure out what kind of help you actually need, whether that's a worked example, a practice problem, or just a nudge in the right direction? I ended up building a system with four specialized agents: one for solving problems step by step, one for generating practice questions, one for doing deep research on topics, and one for guided interactive learning. Each agent is good at one thing, and there's an orchestration layer that decides which one to call. The hardest part wasn't building any individual agent. It was the handoffs. When should the system switch from explaining to quizzing? How do you maintain context when you pass a conversation from one agent to another? I spent more time on these transition points than on the actual prompts. One thing I didn't expect: the guided learning agent needed to be able to slow down. My first version just barreled through material. But real tutoring is about reading the room: if someone's confused, you don't keep going, you back up and try a different angle. Getting the model to do that required a lot of iteration on how I structured the feedback loop. The RAG pipeline was another rabbit hole. I'm using it to ground the agents in actual course content, so they're not just making things up. The challenge is retrieval quality: if you pull the wrong chunks, the agent gives a confident but wrong explanation. I ended up spending a lot of time on chunking strategy and retrieval ranking. If I were starting over, I'd build one agent first and get it really good before adding more. I tried to do all four at once and ended up with four mediocre agents instead of one great one. The orchestration complexity also grows faster than you'd think: it's not linear, it's combinatorial. The stack is Python/FastAPI on the backend and Next.js on the frontend. Docker for deployment. It's working well enough that I actually use it myself to learn things, which is usually a good sign. --- ### Capturing Thoughts Across Platforms URL: https://bibinmathew.com/blog/building-thoughtcatcher 2026-01-20 · 5 min read · product, thoughtcatcher The messy, iterative process of building Thoughtcatcher, and why the Chrome extension became the feature I use most. I have this problem where I get ideas at the worst possible times: in the shower, walking to lunch, halfway through reading something else. By the time I get to a note-taking app, half the thought is gone. That's why I built Thoughtcatcher. The core idea is dead simple: make capturing a thought as fast as possible, then deal with organizing it later. The mobile app opens to a blank input field. The Chrome extension is one click. No folders, no tags at capture time, just get the thought down. I built the mobile app in Flutter because I wanted it on both iOS and Android without maintaining two codebases. The Chrome extension is vanilla JS: it needed to be lightweight and fast. The backend is Node.js with Supabase for auth and real-time sync. The AI part came later. I was sitting on hundreds of captured thoughts and realized I had no way to find connections between them. So I added a LangChain pipeline that periodically analyzes your notes and surfaces patterns. It'll say things like 'you've been thinking about X a lot this week' or 'these three thoughts seem related.' Sometimes it's useful, sometimes it's noise. Funny thing: the Chrome extension ended up being the feature I use most. I didn't plan that. I built the mobile app first, then added the extension almost as an afterthought. But being able to highlight text on any webpage and save it with one click turned out to be the killer use case. Most of my 'thoughts' are actually reactions to things I'm reading. The Supabase real-time sync was worth the effort. Everything syncs instantly between the app and extension, so there's never a 'where did I save that?' moment. RevenueCat handles the subscription stuff: I didn't want to deal with in-app purchase APIs directly. If I could go back, I'd build the Chrome extension first. That's where the real usage ended up. But you don't always know that upfront, sometimes you have to build the wrong thing to find the right thing. --- ### Computer Vision Is Harder Than It Looks URL: https://bibinmathew.com/blog/building-colorsea 2026-01-05 · 5 min read · python, colorsea Lessons from building ColorSea: skin tone analysis, lighting quirks, and why color is more subjective than I expected. ColorSea seemed straightforward when I started: take a photo of someone's face, analyze their coloring, suggest a palette. How hard could it be? Turns out, pretty hard. The first problem is lighting. The same person looks completely different under fluorescent office lights versus warm evening sun versus harsh flash. If your color analysis changes every time the user takes a photo in a different room, it's useless. I spent weeks building a lighting normalization step using white balance estimation. I'm using MediaPipe for face detection and landmark recognition, and OpenCV for the image processing pipeline. The face landmarks let me sample colors from consistent facial regions (forehead, cheeks, lips) regardless of pose or angle. scikit-image handles the actual color extraction and clustering. The 'seasonal color analysis' feature was the most requested thing. It classifies you into categories like 'warm autumn' or 'cool summer' based on your undertone, contrast level, and overall coloring. The challenge is that these categories were designed by human color analysts using subjective judgments. Translating that into code meant a lot of reading about color theory and then a lot of trial and error. Skin tone analysis is culturally sensitive territory, and I was very conscious of that. I tested across a wide range of skin tones from the start, not as an afterthought. Some early versions of the algorithm worked great for lighter skin but fell apart for darker tones because the color space math doesn't treat the full spectrum evenly. I had to switch from RGB to LAB color space for most of the analysis. The frontend is Next.js, the backend is FastAPI. Users upload a photo, the backend processes it and returns a palette with specific hex codes. I store results in PostgreSQL so people can go back and see their analysis history. Biggest takeaway: color is way more subjective than I thought going in. Two people can look at the same swatch and disagree about whether it's 'warm' or 'cool.' --- ### Making a TikTok for Learning That Doesn't Feel Stupid URL: https://bibinmathew.com/blog/building-scrollwise 2025-12-18 · 4 min read · flutter, scrollwise ScrollWise started as a joke idea. Turns out vertical swipe + bite-sized content actually works for education. The pitch for ScrollWise sounds terrible: 'It's like TikTok, but educational.' I know. Every time I described it that way, people's eyes glazed over. But hear me out: the format genuinely works for certain types of learning. The insight is that some knowledge is best absorbed in small, disconnected chunks. You don't need a 30-minute lecture to learn what a mental model is, or how compound interest works, or why the sky is blue. You need a well-written card that takes 30 seconds to read. I built it in Flutter because the scroll physics matter a lot for this kind of app. It needed to feel snappy and natural: that satisfying snap to each card as you swipe. I spent an embarrassing amount of time tweaking the scroll behavior to feel right. Content caching was important. I use Hive for local storage so cards load instantly even on bad connections. Supabase handles the backend content store. I also built a separate admin dashboard in React (scrollwise-admin) for curating and managing content cards. The hard part isn't the tech: it's the content. Making educational content that's both accurate and genuinely engaging in under 100 words is a writing challenge, not an engineering one. I went through several iterations on card format before landing on something that worked: a hook question, a concise explanation, and a 'so what' takeaway. Does it work? Better than I expected, honestly. People browse it longer than traditional learning apps because there's no commitment: you can stop after one card or scroll for 20 minutes. The low stakes make it easier to start, and the short format makes it easier to stay. --- ### Voice Cloning at 169M Parameters URL: https://bibinmathew.com/blog/building-sopro 2025-11-30 · 7 min read · ai, sopro Building SoPro: a small TTS model that can clone voices from a few seconds of audio. Tradeoffs, streaming, and what I'd do differently. Most text-to-speech models that sound good are massive: hundreds of millions or billions of parameters. I wanted to see how good I could get with something much smaller. SoPro is 169M parameters and can do zero-shot voice cloning from a few seconds of reference audio. Zero-shot cloning means you give the model a short audio clip of someone's voice, and it can generate new speech in that voice without any fine-tuning. The model extracts a speaker embedding from the reference clip and uses it to condition the synthesis. It's not perfect (it captures the general character of a voice more than exact quirks), but it's surprisingly usable. The streaming architecture was non-negotiable. Nobody wants to wait 10 seconds for a sentence to generate before hearing anything. SoPro starts outputting audio as soon as it has enough to play, so there's minimal latency between submitting text and hearing speech. This was tricky to implement because you're essentially running the model in chunks while maintaining coherence across chunk boundaries. The biggest tradeoff with a small model is that it struggles with longer sentences. For short to medium text, the quality is solid. But once you get past a paragraph, you start hearing artifacts: odd pauses, slight pitch drift, occasional garbled syllables. Larger models handle this better because they have more capacity for long-range dependencies. I used PyTorch for the model and training pipeline. The architecture borrows ideas from several recent papers but isn't a direct reproduction of any one approach. I was mostly trying to find the best quality-to-size ratio, which meant a lot of experimentation with layer sizes, attention heads, and training schedules. English works best. I did some testing with other languages and the quality drops noticeably: it still generates speech, but the prosody and accent are less natural. This makes sense given the training data distribution. What would I do differently? I'd invest more time in training data quality upfront. I spent a lot of compute training on noisy data before realizing that a smaller, cleaner dataset produces better results than a bigger, messier one. Classic machine learning lesson that I apparently needed to learn firsthand. --- ### Why I Keep Building Readers Nobody Asked For URL: https://bibinmathew.com/blog/building-neubook 2025-11-10 · 4 min read · flutter, neubook Neubook is the third reading app I've built. I think I finally understand why none of the existing ones felt right to me. Neubook is the third reading app I've built. At some point you have to ask yourself: is the problem that existing readers are bad, or is the problem that I'm just picky? I think it's a little of both. What bugs me about most EPUB readers is that they try to do too much. Reading modes, annotation tools, social highlights, store integration, reading stats, gamification. I just want to read a book. Neubook strips away everything except the reading experience. I built it in Flutter with Riverpod for state management. Hive handles local storage: bookmarks, reading position, library. The EPUB parsing was the technical challenge. EPUBs look simple from the outside, but internally they're zip files containing HTML, CSS, images, metadata, and a navigation structure that varies wildly between publishers. Getting consistent typography across different books was harder than I expected. Each EPUB comes with its own CSS, and some of it is... creative. I ended up applying a normalized style layer on top that respects the book's basic structure but overrides the typographic details: font size, line height, margins. This way every book feels comfortable to read without looking identical. The thing that makes Neubook my daily reader is the absence of features, not the presence of them. No reading streaks pressuring me to open the app. No social features making me self-conscious about what I'm reading. No store trying to sell me the next book. Just pages. I know this isn't a product that would work for most people. Most people want those features. But building software for an audience of one is oddly freeing: you can make every decision based on what feels right instead of what metrics say. Source page: https://bibinmathew.com/blog --- ## Recommendations ### Tools - **Cursor** (https://cursor.com): AI-first code editor. Changed how I write code — the tab completions alone are worth it. - **Linear** (https://linear.app): Project management that doesn't feel like a chore. Fast, opinionated, and stays out of your way. - **Raycast** (https://raycast.com): Replaced Spotlight for me. Clipboard history, snippets, window management — all in one launcher. ### Design - **Figma** (https://figma.com): Still the best tool for thinking through interfaces before writing code. - **Mobbin** (https://mobbin.com): When I need inspiration or want to see how other apps solve a UX problem. Saves hours of research. ### Books - **Shape Up** (https://basecamp.com/shapeup): Basecamp's approach to building software. Short, practical, and changed how I think about scoping work. - **Refactoring UI** (https://www.refactoringui.com): Design tips written for developers. Made me way better at making things look decent without a designer. ### Services - **Vercel** (https://vercel.com): Deploy Next.js apps and forget about infrastructure. The DX is unmatched. - **Supabase** (https://supabase.com): Postgres + auth + real-time out of the box. I reach for this on almost every project now. Source page: https://bibinmathew.com/recommendations --- ## Consulting: AI Adoption for organizations I help engineering teams adopt Claude Code as a real part of how they ship: not a sidekick, an operating layer. Custom skills, hooks, MCP servers, sub-agents, and slash commands wired to your codebase, tools, and review process. What's included in a typical engagement: - **Custom skills**: domain knowledge and reusable workflows codified for your team's actual stack and conventions. - **Hooks and guardrails**: deterministic checks (tests, linters, secret scans, conventions) that run every time, with no exceptions. - **MCP integrations**: Linear, GitHub, Notion, internal APIs, databases, monitoring, so Claude can do real work, not just talk about it. - **Sub-agents and CI automation**: specialized agents for review, deployment, on-call, plus non-interactive workflows wired into your CI pipeline. - **Team playbook**: onboarding, conventions, and a written guide so the team owns the setup after the engagement ends. Reach out via https://bibinmathew.com/contact to discuss an engagement. --- ## Related - Upbrew Technologies, software studio Bibin co-founded: https://upbrew.in - GitHub: https://github.com/bibin765 - X: https://x.com/bibinomathew - Email: bibin765@gmail.com