Inspiration

Every year, students and early-stage builders all over the world pour months into a project, submit it or ship it, and then watch it disappear. The idea might be genuinely good. It might even be commercially viable. But there is no bridge between “I built this” and “someone who could fund, hire, or partner with me saw this.” This happens from a university lab in Africa to a dorm room in Southeast Asia to a garage in the United States. It is not a regional problem. It is a structural one.

Hackathon projects get abandoned when the event ends. Final year projects end up in a drawer for lack of funding or visibility. Graduates start job hunting instead of pushing their idea forward, and solutions that could have created jobs vanish. On the other side, investors and companies are constantly looking for new ideas outside their existing networks, and they have no reliable, global place to find them at the earliest stage.

We also kept coming back to a second frustration that is just as universal. Even when a builder finds an interested investor or company, negotiating terms is intimidating, opaque, and usually requires a lawyer neither side can afford yet. A first-time founder has no idea whether 8% equity with a board seat is normal or predatory. That gap between “we’re interested” and “we have a fair, signed agreement” kills deals just as often as the discovery gap does.

VISION exists to close both gaps at once. Don’t let a good idea die because nobody saw it, and don’t let a good deal die because nobody could tell if it was fair.

What it does

VISION is a social platform for projects and innovation, designed to work the same way for a builder in Lagos, Manila, Berlin, or Sao Paulo. It has three account types, builders, investors, and companies, and everything on it is designed to move a project from “nobody knows this exists” to “someone who can help just found it,” all the way through to a signed agreement.

The social and discovery layer

Profiles and projects: Builders create a public profile (bio, country, languages, software/hardware focus) and post projects at any stage: idea, prototype, in development, or live. Each project can have a cover image, demo video, GitHub or live links, and an honest account of what’s working and what they’re stuck on. Engagement and privacy: Projects can be liked, saved, and commented on with threaded replies. They are discovered through a browse/feed system with category filters, and can be public, role-restricted, or password-protected for sensitive early-stage details. Collaboration: Anyone can apply to collaborate on an open project. Owners accept or decline applicants and manage a capped team, with four explicit states handled: pending, accepted, declined, and slots full. Transparent reputation: Builders are ranked by total project likes, investors by engagement and real collaboration or funding milestones, and companies by points and verified partnerships. A public badges guide and a visible progress bar mean nobody is guessing how to level up. Messaging: 1:1 and group chats with replies, reactions, starring, forwarding, file and image attachments, typing indicators, in-conversation search, and blocking. Notifications: Messages, engagement, collaboration, profile views, and achievements, with cooldowns so no action spams the same person twice.

The AI layer: VISION AI

VISION AI runs on Groq with openai/gpt-oss-120b. It is woven through every role and treats every user the same regardless of geography.

For builders: Supercharge Pitch improves a project overview live, while it’s still being typed. Project Review returns strengths, weaknesses, and missing information. Startup Roadmap lays out an MVP-to-launch plan. Risk Analysis covers critical, market, execution, and legal risks, with de-risking steps. Scale Plan produces growth levers and milestones. Startup Score gives an instant scored assessment. Pitch Practice simulates a live investor Q&A. Weekly Advisor sends personalized weekly recommendations. AI Find Investors ranks real investor and company accounts already on the platform against a specific project. The AI ranks candidates and the app attaches their real avatar, name, and reputation afterward, so the model never invents a user. AI Co-Founder is free-form startup chat grounded in one project’s real details. For investors: Investment Analysis gives an investor-facing read on a project. Due Diligence Questions generates what to ask before committing. Compare Startups runs a side-by-side comparison of 2 to 4 selected projects. For companies: Partnership Suggestions ranks live public projects as partnership or acquisition candidates. Outreach Writer drafts a first message grounded in the builder’s actual project. Inside messaging: Tag @VISIONAI in any direct message or team chat and VISION AI joins as a real participant, replying in-thread grounded in the last 8 messages.

The Deal Room: the feature we’re proudest of

A step-by-step wizard captures real deal terms (deal type, equity or investment amount, milestones, roles), and AI drafts a full section-by-section agreement from them. AI then produces a 0 to 100 fairness score with a 7-part breakdown: equity, control, financial risk, founder protection, investor protection, exit fairness, and legal completeness. It also gives explicit “good for you,” “warning,” and “missing clause” lists. This directly informs whether a founder should sign, push back, or walk away, and it matters even more when the two parties have different norms and no shared lawyer.

Every deal moves through a clear lifecycle: Pending, Negotiating, Accepted, Signed, then Completed or Cancelled. Each round is saved as a numbered version that the other side can accept or reject with a counter-offer. Per-clause AI actions let either side explain, simplify, rewrite founder-friendly or investor-friendly, propose a counter-offer, or check fairness on a single clause. Every new round gets an AI-written plain-English summary of what changed. An AI Investment Proposal Writer turns a founder’s raw funding ask into a polished, ready-to-send message.

Once both sides accept, both must sign, and the contract locks when the second signature lands. It exports as a print-ready contract with signature blocks, the fairness score restated, and a hard-coded disclaimer that it is a draft to help two parties talk, not legal advice.

How VISION makes money

VISION has stacking revenue layers, tied to AI usage, discovery, and promotion. Everything below is planned, and no prices or revenue are claimed.

Layer 1: Tiered AI plans (builders, investors, and companies)

Basic (free): A limited number of monthly AI actions across the features for that account type. The core loop of publishing, discovering, and messaging stays fully usable at zero cost, so supply keeps growing without a paywall in front of the people VISION most needs. Pro (paid): A much higher monthly cap, plus advanced tools: Pitch Practice and Weekly Advisor for builders, Compare Startups for investors, and deeper Partnership Suggestions for companies. Max (paid, top tier): Unlimited AI actions, first access to new features, and unlimited per-clause AI actions and fairness re-runs during an active Deal Room negotiation.

This is the direct, recurring, per-user revenue line, and it applies equally to all three account types.

Layer 2: Discovery subscription (investors and companies only)

On top of their AI tier, investors and companies can pay a separate recurring fee for priority placement in AI match results and Partnership Suggestions. This is a sponsored-visibility model, valuable independently of AI usage. An investor on the free tier might still want their firm near the top of relevant matches.

Layer 3: Project promotion (builders with finished projects)

For projects that are already built and published through VISION and now need users, builders can pay to promote them, like an advertisement. VISION features the project on the platform and pushes it through our social media and publicity channels. Promoted projects are clearly labeled, promotion buys visibility rather than guaranteed users, and its value grows as our audience grows.

Longer term: Success fee

Once the Deal Room supports on-platform payment or escrow, VISION would take a small success fee, proposed at around 4% of the investment amount. It would be paid by the company only, and only when a deal reaches “Signed” status. This is future work tied to that payment integration, not something collectible today, since money in a negotiation currently moves directly between the two parties.

How we built it

Backend: Python and Flask, with roughly 70 routes split between server-rendered pages and a JSON API. SQLAlchemy is the ORM, with a single shared db instance in database.py so every module uses the same one. Flask-Login handles sessions. Feature logic is split into focused modules (reputation.py, notifications.py, languages.py, and a services/ package for AI) instead of one giant file. Because gunicorn imports the app as app:app and never runs the main block, table creation runs at import time too, which is safe because create_all() skips tables that already exist. Database: SQLite locally and PostgreSQL in production. config.py reads Render’s DATABASE_URL, rewrites the legacy postgres:// scheme to the postgresql:// that SQLAlchemy 1.4+ requires, and sets pool_pre_ping and pool_recycle so long-lived gunicorn workers don’t hold connections Render has already dropped. Data model: About 20 models covering users and role-specific profiles (Builder, Investor, Company), projects and screenshots, likes, comments with parent-reply threading, saves, collaboration requests, conversations, members, messages, reactions, stars, blocks, notifications, and a full Deal / DealVersion / DealActivity schema. Every deal change writes an activity log entry, and each negotiation round is stored as its own numbered version. Security: Every account password and every project’s optional private-view password is salted and hashed with Werkzeug. Nothing is stored or compared in plain text. Project-specific AI actions are checked server-side, so a builder gets a 403 if they try to run them on someone else’s project. Frontend: Server-rendered Jinja2 templates built from reusable macros (sidebar, topbar, project cards, reputation badges, modals, the AI panel), plus vanilla JavaScript (main.js, vision-ai.js, deal-room.js) and about 1,900 lines of hand-written CSS with a glass-style design. There is no frontend framework or build step, so it stays easy to reason about and fast to load on slower connections. It’s built mobile-first: a collapsible sidebar, a bottom nav bar, a floating create button, and responsive breakpoints from 1024px down to 480px. Live features without WebSockets (yet): Chat messages, typing indicators, and notifications update through lightweight polling. Typing state is deliberately held in memory instead of in a database table, because it only matters for a second or two. Moving to WebSockets is on our roadmap. AI: Groq’s OpenAI-compatible API running openai/gpt-oss-120b. A single /api/vision-ai endpoint dispatches every action, and one service module (vision_ai.py) makes every call, with all prompts in dedicated files (vision_ai_prompts.py has 18 templates and deal_ai_prompts.py has 5 more for the Deal Room). The API key, prompt formatting, and error handling live in exactly one place. For discovery features, the model only ranks candidates pulled from the real database. The app attaches the real names, avatars, and reputation afterward, so the model can never invent a user. The @VISIONAI chat mention is matched by a forgiving pattern, so “@visionai”, “@Vision AI”, and “@vision_ai” all work. AI reliability engineering: gpt-oss-120b is a reasoning model, so part of its token budget goes to internal reasoning. That occasionally truncated JSON mid-object and Groq’s strict validator rejected it. Our recovery pipeline: requests lower reasoning effort for JSON calls; gives JSON calls a bigger token budget than plain chat; repairs truncated JSON by closing open brackets and quotes in the correct order; retries once with a larger budget. We also normalize every parsed response, deduplicating case-variant keys and coercing comma-separated strings back into real arrays, so the frontend can trust the shape of what it receives. File handling: Profile pictures, project screenshots, demo videos, and chat attachments go into dedicated folders under static/uploads. Each upload is validated by extension and size, saved under a random unique filename, and chat attachments are capped at 15MB on both client and server. Contract export: The signed agreement renders as a clean print-ready page that users save as a PDF from the browser. The route is isolated, so a server-side PDF renderer can replace it later without touching the rest of the feature.

Challenges we ran into

Ephemeral storage on Render: Uploads in static/uploads can vanish on redeploy. This affects only file storage, not the database. The real fix is persistent or object storage, which is first on our roadmap. Postgres URL scheme mismatch: Render hands out postgres:// URLs but modern SQLAlchemy needs postgresql://. Without the rewrite in config.py, the app crashed on every deploy. Dropped idle connections: An opaque “SSL connection has been closed unexpectedly” error on long-lived workers, fixed with pool_pre_ping=True and a shorter pool_recycle. Tables missing under gunicorn: Table creation originally lived in the main block, which gunicorn never runs, so production started with no tables until we moved it to import time. Reliable structured output from a reasoning model: Nearly every AI feature, and every Deal Room feature, depends on valid JSON. The repair, retry, and sanitize pipeline now protects all of them from truncation failures. Deployment drift late in the process: a duplicated, conflicting line in requirements.txt; a new default Python version whose C-extension ABI broke our Postgres driver; an outdated Groq SDK that lacked the reasoning_effort parameter our pipeline depends on; an internal-only Postgres hostname that resolves only inside Render’s private network. Each taught us to read the provider’s docs and pin versions explicitly.

Accomplishments that we’re proud of

A real platform first, with AI inside it. We built auth, profiles, a feed, collaboration, and a deep messaging system, then made AI a first-class participant, including as a member of chat threads via @VISIONAI. The Deal Room. It turns a negotiation into an AI-drafted agreement, with a full Pending-to-Signed lifecycle, versioned counter-offers, per-clause actions, a 7-part fairness score, AI summaries of every round, two-party signing, and a print-ready contract. The “draft, not legal advice” disclaimer is baked into every prompt. Engineering real reliability around a non-deterministic backend. The JSON repair and retry pipeline turned “the model sometimes returns garbage” into a non-issue for users, across every feature at once. Proper password security everywhere, including project-level passwords. A transparent reputation system with a public rank ladder, visible progress, and clear per-role criteria, so the same standard applies to everyone. What we learned Treat LLM output like untrusted user input. Validate, repair, and sanitize it the way you would a form submission, from day one. Infrastructure quirks bite you once, in production. The URL scheme, idle connections, Python ABI, internal hostnames, and gunicorn’s startup behavior never showed up locally. One integration point pays off immediately. Routing every AI call through one service module meant we fixed the truncation problem once and every feature benefited. Let the database be the source of truth for the model. Having AI rank real records and attaching the real details afterward means it can never hallucinate a person. Safety language belongs in the prompt, not just the UI. For the Deal Room, “this isn’t legal advice, never invent numbers” has to be repeated in every prompt that touches contract terms. Pin your dependencies. A single duplicated line in requirements.txt, or an unpinned transitive dependency like httpx, broke the entire build. Building for a global user base changes small decisions. Keeping the frontend dependency-light started as a simplicity choice, but it also means the app loads well on slower connections. What’s next for VISION

Immediate

Move file uploads to persistent or object storage so nothing is lost on redeploy. Add automated tests for the AI JSON-repair pipeline and the Deal Room negotiation state machine. Tighten rate limiting on AI and Deal Room endpoints so one user can’t burn the team’s Groq quota.

Short-term

Let builders link a verified GitHub or portfolio to auto-populate a project. Expand reputation into a public leaderboard and discovery signal that investors and companies can filter, including by region if they want, without limiting discovery to one region by default. Replace polling with real-time messaging over WebSockets. Launch project promotion, paid placement for finished projects that need users, alongside our social media and publicity channels.

Long-term

Turn the Deal Room into an end-to-end path from discovery to conversation to negotiated agreement to funded or partnered, potentially integrating cross-border e-signature and payment or escrow providers. Open a public API so universities, accelerators, and hackathon organizers anywhere can pipe final-year and capstone projects directly into VISION instead of letting them die in a submission folder. Explore a small equity stake, up to 5%, in companies that close a deal through the Deal Room. This is explicitly contingent on legal and regulatory review, since taking equity or a transaction-based cut for facilitating an investment can trigger broker-dealer registration requirements. It would only move forward after that review, well after the subscription model is running. Grow VISION into the global bridge it was designed to be, between innovators, companies, and investors, wherever they are, beyond the hackathon.

Built With

Share this project:

Updates

Submission history