{"id":110630,"date":"2026-07-03T12:00:00","date_gmt":"2026-07-03T12:00:00","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=110630"},"modified":"2026-06-22T13:21:17","modified_gmt":"2026-06-22T13:21:17","slug":"how-i-built-a-startup-with-no-web-development-background-lessons-from-launching-unibridge","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/development\/how-i-built-a-startup-with-no-web-development-background-lessons-from-launching-unibridge\/","title":{"rendered":"How I built a startup with no web development background: lessons from launching Unibridge"},"content":{"rendered":"\n<p><strong>Building a startup as an international student, while job hunting on OPT and coding past midnight, isn&#8217;t the origin story most founders tell&#8230;but it&#8217;s an honest one. This is Abhishek Goyal&#8217;s first-hand account of how <a href=\"https:\/\/gounibridge.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unibridge<\/a> came to life &#8211; a platform designed to solve the chaotic first month that every international student navigates alone, just like he had. <\/strong><\/p>\n\n\n\n<p><strong>From choosing Lovable and Supabase over learning React from scratch, to debugging row-level security at midnight, to saying no to the most-requested feature on the roadmap. This is what building a real product actually looks like from the inside.<\/strong><\/p>\n\n\n\n<p>I landed in Houston, Texas with two suitcases, a half-working international SIM, and fifteen browser tabs open simultaneously. One had a Reddit thread about which bank accounts wouldn&#8217;t require a US credit history. Another had a YouTube video about apartment hunting near campus. A third had a WhatsApp message from a senior student I&#8217;d never met, telling me to avoid a specific apartment complex without explaining why. Nobody had given me a map for any of this.<\/p>\n\n\n\n<p>Universities are excellent at explaining course registration, orientation schedules, and immigration paperwork. What they don&#8217;t do is prepare you for the forty-eight hours after you land. The scramble to get a working phone plan, figure out furniture, open a bank account, find temporary housing, understand which grocery stores are within walking distance&#8230;the list goes on. Plus, you&#8217;re doing it while both jet-lagged and slightly terrified.<\/p>\n\n\n\n<p>Of course, the information I needed existed. It was out there, somewhere &#8211; but therein lies the problem, <em>&#8216;somewhere.&#8217; <\/em>Every answer was buried&#8230;somewhere. A Discord server, a comment thread, a conversation with a senior who had stumbled through it six months earlier. It&#8217;s information fragmentation, and was no good for what I needed at the time: quick, easy-to-find answers and advice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-lightbulb-moment-when-i-decided-to-create-unibridge\">The lightbulb moment: when I decided to create Unibridge<\/h2>\n\n\n\n<p>After my own first month, I kept watching the same questions cycle through incoming student groups every semester. The same questions, the same scramble, and the same &#8211; as I eventually knew &#8211; avoidable mistakes. At some point, the thought stopped being &#8220;someone should fix this&#8221;. I decided to work on the solution myself.<\/p>\n\n\n\n<p>That solution became <a href=\"https:\/\/gounibridge.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unibridge<\/a> &#8211; a one-stop digital platform for international students arriving at US universities, consolidating housing guidance, banking, SIM deals, transportation, marketplace resources, and onboarding information into one place.<\/p>\n\n\n\n<p>The goal: save students the confusion and cost of their first month, exactly as I experienced. (In practice, users save $500\u2013$700 in that window alone.)<\/p>\n\n\n\n<p>That&#8217;s what Unibridge is in a nutshell &#8211; and now I&#8217;ll explain how I got there.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-i-m-not-a-web-developer-so-chose-to-vibe-code\">I&#8217;m not a web developer &#8211; so chose to vibe code<\/h2>\n\n\n\n<p>Here\u2019s the part most startup articles written by developers skip: I\u2019m not even a web developer. My background is data science &#8211; <a href=\"https:\/\/www.red-gate.com\/simple-talk\/development\/python\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python<\/a>, <a href=\"https:\/\/www.red-gate.com\/simple-talk\/tag\/sql\/\" target=\"_blank\" rel=\"noreferrer noopener\">SQL<\/a>, <a href=\"https:\/\/www.red-gate.com\/simple-talk\/business-intelligence\/data-science\/building-machine-learning-models-to-solve-practical-problems\/\" target=\"_blank\" rel=\"noreferrer noopener\">machine learning<\/a> pipelines, statistical modeling&#8230;.<\/p>\n\n\n\n<p>I\u2019m comfortable in that world. But building a production-ready web platform with roughly thirty pages, user authentication, a live database, and a halfway-decent UI is a completely different discipline. I could have spent four months learning <a href=\"https:\/\/react.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">React<\/a> before writing a single line of product code. I could have also hired a freelancer.<\/p>\n\n\n\n<p>But I was also an international student simultaneously job hunting on <a href=\"https:\/\/students.studygroup.com\/blog\/5-key-things-to-know-about-optional-practical-training\" target=\"_blank\" rel=\"noreferrer noopener\">OPT (Optional Practical Training)<\/a>, so neither option was realistic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-here-s-what-i-did-instead\">Here&#8217;s what I did instead<\/h3>\n\n\n\n<p>In short, I used <a href=\"https:\/\/lovable.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">Lovable<\/a> for the frontend and <a href=\"https:\/\/supabase.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Supabase<\/a> for the backend. It&#8217;s worth me being specific about how that split actually worked in practice, though, since the two tools solve completely different problems. Confusing that boundary early on would be costly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-so-in-more-detail\">So, in more detail:<\/h4>\n\n\n\n<p>Lovable generates React code from natural language &#8211; you describe a page or component, it writes the frontend. Supabase is an open-source backend on <a href=\"https:\/\/www.red-gate.com\/hub\/entrypage\/postgresql\/\" target=\"_blank\" rel=\"noreferrer noopener\">PostgreSQL<\/a> that handles your database, auth, row-level security, and real-time subscriptions.<\/p>\n\n\n\n<p>The appeal for someone with no <a href=\"https:\/\/www.red-gate.com\/blog\/devops-101-what-who-why-and-how\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps<\/a> background is simple: I didn\u2019t have to build or manage any of that infrastructure myself.<\/p>\n\n\n\n<p>The architecture split was clean by necessity. Twenty-eight of Unibridge\u2019s roughly thirty pages &#8211; featuring housing guides, SIM card comparisons, etc &#8211; are entirely static. These are content pages that Lovable generates. They never even touch the database. <\/p>\n\n\n\n<p>The remaining two pages (Find a Roommate and the Marketplace) are fully dynamic. Users must sign up to post listings, and live results are pulled directly from Supabase in real time. Those two pages required an entirely different level of architectural thinking than anything else on the platform.<\/p>\n\n\n\n<section id=\"my-first-block-block_58023bca9e2d57eb3f986ccfa8f2bbc6\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Get started with PostgreSQL &#8211; free book download<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            &#8216;Introduction to PostgreSQL for the data professional&#8217;, written by Grant Fritchey and Ryan Booz, covers all the basics of how to get started with PostgreSQL.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/hub\/books\/introduction-to-postgresql-for-the-data-professional\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Download your free copy: Get started with PostgreSQL - free book download\">Download your free copy<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-truth-behind-vibe-coding\">The truth behind vibe coding<\/h2>\n\n\n\n<p><strong>Here\u2019s what nobody tells you about <a href=\"https:\/\/www.red-gate.com\/simple-talk\/ai\/vibe-coding-and-databases-the-hidden-risks-of-ai-generated-database-code\/\" target=\"_blank\" rel=\"noreferrer noopener\">vibe coding<\/a>: it doesn\u2019t remove complexity, it just moves it. You stop debugging syntax and start debugging intent, such as, <em>why did this generate something that technically runs but makes no logical sense for what I actually needed?<\/em><\/strong><\/p>\n\n\n\n<p>One early failure involved the navigation structure for the onboarding section. I wanted a sidebar that persisted across all category pages (Housing, Banking, SIM Cards, Transportation), with the active category highlighted, and a progress indicator showing how far through the content the student was. <\/p>\n\n\n\n<p>My initial prompt was something like: <em>\u201cbuild a multi-section onboarding flow with a persistent sidebar and progress tracking.\u201d<\/em> Lovable generated something that looked right in a screenshot &#8211; clean layout, visible categories, progress bar at the top, etc. However, the moment I clicked between sections, there was a problem. The sidebar re-rendered from scratch on every page transition, resetting the progress indicator to zero each time. Each page was &#8216;stateless&#8217;, so it had no knowledge of what came before it.<\/p>\n\n\n\n<p>The fix was changing what I was actually asking for. Instead of describing the UI, I described the state: <\/p>\n\n\n\n<p><em>&#8220;Store the active section and progress count in a shared context that wraps all onboarding pages \u2014 don\u2019t reinitialize it on each route change.\u201d<\/em> <\/p>\n\n\n\n<p>That one prompt change fixed it. Lovable is genuinely good at generating UI, but it won\u2019t guess your state management requirements. As with all <a href=\"https:\/\/www.promptingguide.ai\/techniques\" target=\"_blank\" rel=\"noreferrer noopener\">good prompting<\/a>, you have to spell them out. Be as specific as possible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-challenges-of-supabase-and-how-i-tackled-them\">The challenges of Supabase &#8211; and how I tackled them<\/h2>\n\n\n\n<p><strong>Supabase has good documentation and the free tier is genuinely useful. Unfortunately, though, it also has row-level security. If you don\u2019t know what that is before you start building, you&#8217;ll lose days to it.<\/strong><\/p>\n\n\n\n<p>RLS controls which rows a given user can read or write. Enable it on a table without writing explicit policies and all access is blocked (by design). That&#8217;s correct for production, but easy to miss when you\u2019re moving fast. I spent a full evening convinced my Marketplace query was broken. The frontend showed empty results, no error. The query was fine. The data was in the database. <\/p>\n\n\n\n<p>As I later discovered, what I\u2019d done was enable RLS on the listings table without a policy allowing anonymous reads. So, every unauthenticated query silently returned nothing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-fix-that-saved-the-day\">The fix that saved the day<\/h3>\n\n\n\n<p>The fix was a single SQL policy: allow read access to all rows for the anon role. It was just two lines, but it took an entire evening to diagnose and resolve. All because the failure mode (empty results rather than an error) looks identical to a legitimate \u201cno listings found\u201d state from the frontend.<\/p>\n\n\n\n<section id=\"my-first-block-block_56cb9dab5e0b3481351d9306fdabe55c\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Fast, reliable and consistent SQL Server development&#8230;<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            &#8230;with SQL Toolbelt Essentials. 10 ingeniously simple tools for accelerating development, reducing risk, and standardizing workflows.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/products\/sql-toolbelt-essentials\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Learn more &amp; try for free: Fast, reliable and consistent SQL Server development...\">Learn more &amp; try for free<\/a>\n                    <\/div>\n    <\/div>\n<\/section>\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/www.sqlservercentral.com\/articles\/introduction-to-indexes\" target=\"_blank\" rel=\"noreferrer noopener\">Indexing<\/a> also caught me out. Where the listings table for the roommate feature grew &#8211; filtering by university, move-in date, and budget range at the same time &#8211; those queries got slow. After full table scans on every filter combination, a composite index on those three columns fixed it.<\/p>\n\n\n\n<p>Any data scientist who\u2019s worked with large datasets knows this instinctively, but it\u2019s easy to forget that Supabase won\u2019t automatically create multi-column indexes for your specific query patterns. You have to look at what you\u2019re actually querying and build for it.<\/p>\n\n\n\n<p>These were just database problems, though, rather than Lovable problems specifically. They required me to stop prompting and actually think through the data layer. <\/p>\n\n\n\n<p><strong>That pretty much sums up vibe coding: it handles a lot of the surface work well but, underneath, the engineering decisions are still yours to make.<\/strong> <strong>For data scientists specifically, the skills transfer more than you\u2019d expect.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-feedback-problem-what-if-people-didn-t-actually-need-what-i-was-building\">The feedback problem &#8211; what if people didn&#8217;t actually <em>need<\/em> what I was building?<\/h2>\n\n\n\n<p>The hardest part of building Unibridge had nothing to do with code. It was more about determining if I was building something people actually <em>wanted and\/or needed<\/em>. To establish that, I&#8217;d need to show people &#8211; and therein lies the problem.<\/p>\n\n\n\n<p>Show something too early in development and people fixate on the broken layout instead of the idea. Wait too long, on the other hand, and you\u2019ve spent weeks building something that, in reality, you&#8217;re not certain there&#8217;s actually demand for. I sat in the middle of the two for longer than I should have.<\/p>\n\n\n\n<p>Take financial content, for example. I&#8217;d simply underestimated how central money was to everything. Students weren\u2019t primarily looking for general orientation information. They wanted specific answers tied directly to saving money and avoiding expensive mistakes. Which banks don&#8217;t charge conversion fees? Which SIM plan is actually worth it for a student? What about apartments &#8211; which ones require a US guarantor (and which ones don\u2019t)? <\/p>\n\n\n\n<p>Just having this (new to me) information, shifted an entire section of the product.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-power-of-asking-the-right-questions\">The power of asking the right questions<\/h3>\n\n\n\n<p>Further, the feedback quality improved the moment I stopped asking broad, vague questions. <em>\u201cWhat do you think of the platform?\u201d<\/em> produces the exact answers you&#8217;d expect. Polite? Yes. Useful? No. <\/p>\n\n\n\n<p>On the contrary, something along the lines of, <em>\u201cWould this page have helped you in your first week?\u201d, <\/em>gets you something useful. Better still, asking <em>\u201cAt what point would you stop reading this and go somewhere else?\u201d <\/em>leads to something <em>actionable<\/em>.<\/p>\n\n\n\n<p>I also learned that incomplete products are actually fine to share, as long as you frame them correctly. Saying <em>\u201cI\u2019m testing whether this section is useful \u2014 ignore the broken layout\u201d<\/em> changes the entire nature of the conversation. Just be honest, and people will engage with the idea more. <\/p>\n\n\n\n<p><strong>Without feedback, you\u2019re building in the dark &#8211; betting your time on assumptions that feel obvious to you precisely because you\u2019re too close to the problem.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-realization-of-it-no-longer-being-just-a-side-project\">The realization of it no longer being just a &#8216;side project&#8217;<\/h2>\n\n\n\n<p>For most of the build, Unibridge existed primarily inside my laptop. I was testing flows, refining pages, fixing layouts at odd hours, and quietly convincing myself it was coming together. In all honesty, though, it still felt experimental. It felt like something I was simply running for the sake of running, rather than something other people would depend on. That all changed when I started utilizing Google Ads, targeted towards incoming international students.<\/p>\n\n\n\n<p>That led to a message &#8211; and just that, alone, was a real point of validation for me. A student from a different university reached out to say they wished something like this had existed when they arrived, because they\u2019d gone through the exact same confusion I had. A few days later, another student from another university sent a near-identical message.<\/p>\n\n\n\n<p>Those messages mattered in a way metrics don\u2019t. A stranger taking time to write and say your product should exist at their university tells you more than just clicks or impressions. It really showed me that the problem isn\u2019t specific to one campus, or one person\u2019s particular bad luck. It&#8217;s far broader than that.<\/p>\n\n\n\n<p>More &#8216;real&#8217; users came in quickly after the ads and, again, unlike metrics, real people offer real, valuable feedback.  They&#8217;ll ask questions, report anything broken, and tell you what\u2019s missing. <\/p>\n\n\n\n<p><strong>That feedback loop &#8211; direct, specific, and sometimes blunt &#8211; is worth more than any amount of analytics.<\/strong> And it&#8217;s what shifted my mindset about the entire project, from side-hustle to something worth committing more time to.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-i-kept-the-lights-on-without-a-paywall\">How I kept the lights on without a paywall<\/h2>\n\n\n\n<p><strong>One decision I made early and never reconsidered: Unibridge would stay completely open.<\/strong> <\/p>\n\n\n\n<p>As a student desperate for quick answers like I was, scrambling around at midnight, the last thing I&#8217;d want to see is a registration screen. That meant no signup wall, locked-away content, or &#8216;freemium tier&#8217;. It had to be easily accessible. <\/p>\n\n\n\n<p>Of course, any platform still needs to cover its costs, and that&#8217;s no different here. I just chose the least user-obtrusive path possible. The model I landed on was <a href=\"https:\/\/www.salesforce.com\/uk\/sales\/partner-relationship-management\/referral-partner\/\" target=\"_blank\" rel=\"noreferrer noopener\">referral partnerships<\/a> &#8211; direct affiliate links for the exact services the platform already recommends. The likes of housing listings, credit cards, SIM plans, utilities, etc. Every category on Unibridge is something an incoming student has to sort out regardless, so I&#8217;m not pushing products they don&#8217;t need.<\/p>\n\n\n\n<p>I am, however, getting compensated for the trust my platform built with them, by helping them find products they were <em>already<\/em> going to sign up for.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-what-s-working-and-what-isn-t\">What&#8217;s working &#8211; and what isn&#8217;t?<\/h3>\n\n\n\n<p>In Unibridge&#8217;s case, housing and credit cards turned out to be the strongest performers. Housing makes sense &#8211; it\u2019s the highest-stakes decision a new student makes before they arrive, and a referral that saves them two weeks of searching is an easy conversion. <\/p>\n\n\n\n<p>Credit cards surprised me at first, but a little less once I thought about it. After all, international students with no US credit history have very few options, and knowing which cards actually approve them is genuinely useful information. Those two categories now cover hosting costs and a portion of the ad spend on Unibridge, with a couple of referral conversions a week. It&#8217;s not a business &#8211; yet(!) &#8211; but is self-sustaining enough to keep the platform running&#8230;and, most importantly, free.<\/p>\n\n\n\n<p>One thing I&#8217;m <em>not<\/em> doing is using any <a href=\"https:\/\/en.wikipedia.org\/wiki\/Affiliate_network\" target=\"_blank\" rel=\"noreferrer noopener\">affiliate networks<\/a>. Every partnership is a direct link through the company\u2019s own referral program. That means less infrastructure to manage and a more transparent relationship &#8211; the link goes where it says it goes. I\u2019m not routing anyone through a third-party tracker they didn\u2019t consent to.<\/p>\n\n\n\n<p><strong>The broader point for anyone building something similar: a paywall is not the only way to make a free product sustainable. If your platform genuinely helps people make decisions, there are usually products adjacent to those decisions that will pay for the referral. <\/strong><\/p>\n\n\n\n<p><strong>The key is that the recommendation has to be honest first. The moment you start recommending something because the commission is good rather than because it\u2019s actually the right option for your user, you\u2019ve broken the only thing that made the referral worth anything in the first place.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-one-feature-i-haven-t-built-and-why\">The one feature I haven&#8217;t built (and why)<\/h2>\n\n\n\n<p>The most-requested feature for Unibridge is simply a way for users to connect directly with one another (students, alumni) before their arrival. It&#8217;s also the one I&#8217;ve decided not to build &#8211; at least not yet. <\/p>\n\n\n\n<p>Obviously, the concept makes sense. Incoming students want real, verified guidance from people who&#8217;ve recently navigated through the same process. And they want an actual connection with a real person &#8211; not just a blog post or FAQs page.<\/p>\n\n\n\n<p>It&#8217;s straightforward in theory but, in practice, not so much. For a start, it&#8217;s 2026, and there are so many <a href=\"https:\/\/www.red-gate.com\/hub\/university\/courses\/data-protection-and-privacy\/\" target=\"_blank\" rel=\"noreferrer noopener\">security and privacy<\/a> measures in place (for good reason).<\/p>\n\n\n\n<p>Real-time communication between users requires identity verification, moderation infrastructure, abuse prevention, privacy controls, reporting workflows, and notification systems. The moment you allow direct messaging between strangers, you inherit responsibility for everything that can go wrong inside it. I&#8217;m talking spam, misinformation, harassment, safety &#8211; the list goes on. You just can&#8217;t de-prioritize these nowadays; they&#8217;re the core operational reality of running a communication platform.<\/p>\n\n\n\n<p>I could have attempted it, sure, but I didn\u2019t have the bandwidth to do it responsibly. One poorly-moderated communication feature would have done more damage to trust in the platform than not having the feature at all.<\/p>\n\n\n\n<p>That decision was genuinely difficult. Founders become emotionally attached to feature requests because every request feels like an opportunity. Saying &#8216;no&#8217; to something people are explicitly asking for requires a kind of discipline that doesn\u2019t come naturally early on.<\/p>\n\n\n\n<p><strong>Deciding what not to build is just as important as deciding what to build. In fact, it&#8217;s usually harder.<\/strong><\/p>\n\n\n\n<p>The alumni connection system is still on the roadmap. I don&#8217;t consider delaying it a failure. It was the right call, and recognizing that distinction early probably saved the platform from collapsing under complexity it couldn\u2019t support.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-building-at-11pm-the-dual-life-nobody-talks-about\">Building at 11pm&#8230;(the dual life nobody talks about)<\/h2>\n\n\n\n<p><strong>Most startup stories leave out the part where the founder is also applying to jobs, studying for interviews, and checking their visa status every other week. I built most of Unibridge between 10pm and 1am.<\/strong><\/p>\n\n\n\n<p>During the same months I was refining onboarding flows and debugging Supabase configurations, I was also tailoring resumes for specific roles, preparing for technical interviews, tracking application deadlines, and managing <a href=\"https:\/\/students.studygroup.com\/blog\/5-key-things-to-know-about-optional-practical-training\" target=\"_blank\" rel=\"noreferrer noopener\">OPT<\/a> timelines. <\/p>\n\n\n\n<p>For international students, OPT is far more than just administrative paperwork. It\u2019s the direct link between your visa status and your professional future. There\u2019s a constant background awareness of that clock &#8211; and it doesn&#8217;t stop because you\u2019re trying to build something!<\/p>\n\n\n\n<p>Oddly, though, these constraints helped. I actually found benefits in working for two hours a night. First, it kills a lot of bad habits: no more debating button colors, or focusing on features nobody&#8217;s asked for. You just decide and move, because there\u2019s no time for anything else. Honestly, some of my clearest calls came from not having the luxury of overthinking them.<\/p>\n\n\n\n<p><strong>If you\u2019re a student reading this with an idea and a full course load: you are not at a disadvantage. As I discovered, you&#8217;re operating in the exact conditions that <em>force<\/em> good prioritization.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-looking-back-what-i-d-tell-myself-on-day-one\">Looking back: what I&#8217;d tell myself on day one<\/h2>\n\n\n\n<p><strong>Ship something ugly in week four, not something polished in month six.<\/strong><br>Most of my fears about imperfection disappeared the moment real users start using the product. The version you\u2019re embarrassed to show is almost always more useful than no version at all.<\/p>\n\n\n\n<p><strong>Your first ten users matter more than your first thousand page views. <\/strong><br>Analytics can create the illusion of progress, but what you need is real feedback. A direct conversation with someone using your product reveals what you actually need to know.<\/p>\n\n\n\n<p><strong>The hardest part of vibe coding is not the tool. <\/strong><br>As with all AI tool usage, the trick is in good prompting. Learning to communicate precisely enough that the tool produces what you actually mean. Ambiguous thinking creates ambiguous software. The same principle applies whether you\u2019re prompting an <a href=\"https:\/\/www.red-gate.com\/simple-talk\/blogs\/first-llm-technical-editor-test-office-and-web-based-copilot-with-a-very-wrong-article\/\" target=\"_blank\" rel=\"noreferrer noopener\">LLM<\/a> or briefing a developer.<\/p>\n\n\n\n<p><strong>Cutting features is not weakness. <\/strong><br>The alumni connection feature was the most requested thing I didn\u2019t build &#8211; and is a decision that protected the platform. A focused product that works reliably beats an ambitious one that doesn\u2019t.<\/p>\n\n\n\n<p><strong>Don\u2019t wait to &#8216;feel&#8217; ready. <\/strong><br>The most important things I learned about building a product only became visible after I actually started. You can&#8217;t just &#8216;think&#8217; your way to them from the outside.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion-it-s-still-early\">Conclusion: it\u2019s still early<\/h2>\n\n\n\n<p>Unibridge is live today. Students are using it. The platform is still evolving almost every week \u2014 new content, refinements, features that users asked for and I actually had the bandwidth to build. The alumni connection system is still on the roadmap.<\/p>\n\n\n\n<p>My own situation is still unfolding, too. My job search is ongoing, and learning is continuous. A lot of startup stories get written after everything already worked out, but this one&#8217;s being written from the middle of it. To me, it certainly feels more honest, and probably more useful, too.<\/p>\n\n\n\n<p>The problem Unibridge solves is real. I know that because I lived through it, and because strangers from universities I\u2019ve never visited told me so unprompted. That\u2019s enough to keep me going!<\/p>\n\n\n\n<section id=\"my-first-block-block_f612355396b96af5695b295e0eef94d7\" class=\"my-first-block alignwide\">\n    <div class=\"bg-brand-600 text-base-white py-5xl px-4xl rounded-sm bg-gradient-to-r from-brand-600 to-brand-500 red\">\n        <div class=\"gap-4xl items-start md:items-center flex flex-col md:flex-row justify-between\">\n            <div class=\"flex-1 col-span-10 lg:col-span-7\">\n                <h3 class=\"mt-0 font-display mb-2 text-display-sm\">Simple Talk is brought to you by Redgate Software<\/h3>\n                <div class=\"child:last-of-type:mb-0\">\n                                            Take control of your databases with the trusted Database DevOps solutions provider. Automate with confidence, scale securely, and unlock growth through AI.                                    <\/div>\n            <\/div>\n                                            <a href=\"https:\/\/www.red-gate.com\/solutions\/overview\/\" class=\"btn btn--secondary btn--lg\" aria-label=\"Discover how Redgate can help you: Simple Talk is brought to you by Redgate Software\">Discover how Redgate can help you<\/a>\n                    <\/div>\n    <\/div>\n<\/section>","protected":false},"excerpt":{"rendered":"<p>The story of how I built Unibridge &#8211; a platform helping new arrivals navigate housing, banking, and SIM cards &#8211; with no dev background.&hellip;<\/p>\n","protected":false},"author":346931,"featured_media":106757,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[159169,143526,143512,53,147591],"tags":[159075,4359,5021,4150,159392],"coauthors":[159383],"class_list":["post-110630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-development","category-devops","category-featured","category-other-development","tag-ai","tag-development","tag-python","tag-sql","tag-startup-stories"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/346931"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=110630"}],"version-history":[{"count":6,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110630\/revisions"}],"predecessor-version":[{"id":110664,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/110630\/revisions\/110664"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/106757"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=110630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=110630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=110630"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=110630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}