import { FormEvent, useMemo, useState } from 'react'; type SpecPreview = { intent: string; mode: 'part' | 'assembly' | 'sketch'; output: '3d_solid' | 'surface' | '2d_vector' | '1d_path'; notes: string[]; }; const defaultPrompt = 'A modular steel bracket with 4 bolt holes and a cable channel'; const features = [ { title: 'Prompt to geometry in one flow', body: 'Natural-language input, generated build123d logic, and export-ready CAD artifacts in one run.' }, { title: 'Export-first workflow', body: 'STEP and STL for fabrication, DXF for linework and laser workflows, with lineage per run.' }, { title: 'Enterprise controls ready', body: 'Structured API boundaries, auth gates, observability, and path to RBAC and tenant isolation.' } ]; const steps = [ 'Describe the object in plain language.', 'NaturalCAD resolves intent into CAD-safe generation logic.', 'Review the model, then download STEP/STL/DXF artifacts.' ]; function inferSpec(prompt: string): SpecPreview { const text = prompt.toLowerCase(); const is2d = /dxf|profile|laser|plate|outline/.test(text); const is1d = /route|centerline|path|wire/.test(text); const output = is1d ? '1d_path' : is2d ? '2d_vector' : '3d_solid'; return { intent: prompt.trim() || defaultPrompt, mode: output === '3d_solid' ? 'part' : 'sketch', output, notes: [ 'Dimension constraints inferred from prompt language.', 'Geometry kept bounded for stable generation latency.', 'Artifacts prepared for downstream CAD handoff.' ] }; } export default function App() { const [prompt, setPrompt] = useState(defaultPrompt); const [submittedPrompt, setSubmittedPrompt] = useState(defaultPrompt); const spec = useMemo(() => inferSpec(submittedPrompt), [submittedPrompt]); const handleSubmit = (event: FormEvent) => { event.preventDefault(); setSubmittedPrompt(prompt); }; return (
NaturalCAD

NaturalCAD • Website Prototype v0

Design with words. Ship real CAD artifacts.

This is a first-pass front end for your domain launch. It positions NaturalCAD as a product, not just a demo, while keeping a live prompt-to-spec interaction on the page.

Open current Space Request pilot access