Skip to main content
Your Primary Assignment: Expand AI is built on the WorkAlly engine with specialized automation for proposals and 3D generation.

Overview

Expand AI provides full-cycle automation for RFPs and 2D/3D proposal generation, leveraging the WorkAlly intelligence engine.

Proposal Generation

Automated content and 2D design creation

3D Module

Blender MCP orchestration for 3D assets

Opportunity Intel

Market intelligence and opportunity scoring

Financial Proposals

Automated pricing and submission flows

Tech Stack

  • Core
  • AI Components
  • Infrastructure
const expandStack = {
  frontend: "Next.js 14 App Router",
  styling: "Tailwind CSS + shadcn/ui",
  backend: "Supabase (Postgres, Auth, Storage)",
  ai: "LangChain + LangGraph",
  deployment: "Vercel + Supabase Edge Functions"
}

Key Features

Proposal Generation

1

RFP Analysis

AI extracts requirements, scoring criteria, and submission guidelines
2

Content Generation

Creates tailored responses using company knowledge base
3

Design Assembly

Generates professional 2D layouts with branding
4

Review & Edit

Human-in-the-loop editing with AI suggestions
5

Submission

Automated formatting and submission workflows

3D Module Orchestration

  • Procedural 3D model generation
  • Texture and material application
  • Scene composition
  • Rendering pipelines
  • Asset optimization
// Example Blender MCP integration
const generate3DAsset = async (prompt: string) => {
  const response = await blenderMCP.generate({
    prompt,
    style: "photorealistic",
    format: "glb",
    optimization: "web"
  })

  return response.assetUrl
}

Development Guide

Getting Started

1

Clone Repository

git clone https://github.com/Weventures-AI/expand-ai.git
cd expand-ai
2

Environment Setup

cp .env.example .env.local
# Add your Supabase and AI keys
3

Install Dependencies

pnpm install
pnpm dev
4

Read Driver Docs

Review claude.md, plan.md, and agents.md

Working with AI Workflows

// app/api/proposals/generate/route.ts
import { LangChain } from '@langchain/core'
import { proposalChain } from '@/lib/chains'

export async function POST(request: Request) {
  const { rfpContent, companyContext } = await request.json()

  const proposal = await proposalChain.invoke({
    rfp: rfpContent,
    context: companyContext,
    tools: ['research', 'write', 'format']
  })

  return Response.json(proposal)
}

Database Schema

-- Proposals table
CREATE TABLE proposals (
  id UUID PRIMARY KEY,
  rfp_id UUID REFERENCES rfps(id),
  content JSONB,
  status TEXT,
  created_at TIMESTAMPTZ
);

-- RFPs table
CREATE TABLE rfps (
  id UUID PRIMARY KEY,
  title TEXT,
  requirements JSONB,
  deadline TIMESTAMPTZ,
  score_criteria JSONB
);

-- Assets table
CREATE TABLE assets (
  id UUID PRIMARY KEY,
  proposal_id UUID REFERENCES proposals(id),
  type TEXT, -- '2d', '3d', 'document'
  url TEXT,
  metadata JSONB
);

Current Milestones

  • Q1 2024
  • Q2 2024
  • Current Sprint

Testing

pnpm test           # Run all tests
pnpm test:watch     # Watch mode
pnpm test:coverage  # Coverage report

Deployment

Environments

Development

Local development with hot reload

Staging

Preview deployments on Vercel

Production

Production on custom domain

CI/CD Pipeline

Support & Resources

Next Steps: Start with the setup guide and review the driver documents in the repository.