Project Info
Inspiration
I recently bought a laser cutter and have so many ideas on what I want to make -- but i don't know how to make it come to life. Existing tools can turn an image into a 2D file for cutting or engraving but I wanted to tackle the harder missing step: interpreting a custom idea as a three-dimensional construction and deriving the individual parts needed to assemble it into a 3D structure. Turning an idea into laser-cut wooden pieces that actually fit together requires CAD experience, joinery knowledge, material measurements, cut-width compensation, sheet layout, and assembly planning. SketchyCut is my attempt to help me move from “I wish I could build that” to something I can inspect, cut, and assemble. Now I can just... build things.
What it does
SketchyCut turns a written description and up to three reference images into a 3D construction project. GPT-5.6 interprets what the maker wants, including the object’s purpose, major bodies, relationships, proportions, openings, movement, and visual intent. SketchyCut then passes that structured semantic intent into a deterministic parametric CAD and fabrication pipeline. For supported designs, SketchyCut can produce: An interactive assembled, moving, and exploded 3D preview Exact parts and sheet layouts Editable dimensions, material thickness, fit, and supported decorative treatments A bill of materials and linked parts legend Numbered assembly instructions Geometry, assembly, motion, and fabrication validation findings Plain millimetre-based SVG sheets for laser cutting An explicit xTool Studio handoff and optional cut-width fit test The 3D preview is not an approximation of a separate SVG: the parts, joints, meshes, instructions, and fabrication paths all share the same source identities and deterministic hashes. SketchyCut also knows when not to produce a cut file. If a request’s core function is unsupported or deterministic validation fails, it explains the limitation and withholds fabrication export. Unsupported decoration may be omitted only when the functional design remains intact, and that simplification is disclosed. How I built it I built SketchyCut with Codex and GPT-5.6 during OpenAI Build Week. I used GPT-5.6 Sol at Ultra reasoning during brainstorming and architecture work, then GPT-5.6 Sol at Extra High reasoning during implementation. Codex was involved throughout the project -- from research and planning to coding, testing, debugging, visual review, and release verification. The central architectural decision was to give AI and deterministic software different responsibilities: The model handles ambiguity; deterministic code handles precision. The runtime GPT-5.6 model makes one constrained multimodal interpretation request. It returns structured semantic intent, not SVG, coordinates, joints, kerf values, transforms, or fabrication claims. Deterministic code then: Resolves measurements and qualitative proportions. Maps semantic bodies, interfaces, and requirements to registered capabilities. Selects and composes versioned parametric construction operators. Generates exact panels, joints, clearances, fits, and supported motion. Validates geometry, assembly, fabrication, and mechanism constraints. Creates one canonical design document. Projects the 3D scene, SVG sheets, BOM, legend, instructions, and evidence from that document. I researched prior work, research papers, and maintained geometry and CAD implementations before building novel components. SketchyCut uses a narrow polygon-kernel adapter, integer-micrometre internal geometry, strict schemas, deterministic hashes, golden fixtures, and operator-owned motion proofs. A normal generation makes at most one paid model request so that I could stay economical with my API requests. There is no retry, candidate fan-out, automatic model repair, or silent paid-model fallback. Numeric, material, fit, and supported motif-placement edits are deterministic and require no additional model call. Challenges I ran into The hardest architectural challenge was preventing SketchyCut from becoming a collection of polished templates and heuristics that only worked for the examples I had already built. I addressed that in three ways: Designs are represented as semantic bodies, interfaces, requirements, and relationships instead of product-family names. Exact geometry is generated by a registry of reusable parametric construction operators. Operators must pass deliberately off-family fixtures through the same compiler, validators, and projections. For example, the captured-slide operator used by the public Sliding preview must also work on a drawer-in-sleeve proof. Other operators are tested on objects such as an open tray, divided organizer, open-front cubby, and hinged flap. Automated architecture guards reject product-family selectors in deterministic core code, unregistered operators, missing proof fixtures, and version differences between named and off-family cases. Physical fabrication exposed another important challenge: software validation is not the same as physical proof. Physical Hinged and Sliding builds exposed construction problems that the previous software checks had not justified overlooking. Instead of presenting those builds as successes, I tightened the deterministic invariants and withheld Hinged and Sliding fabrication exports. They remain interactive design previews until redesigned artifacts pass matching physical tests. Not only did I burn a lot of tokens in Codex and API usage, but I also burned a lot of basswood sheets to validate the physical designs. Reference-image interpretation was also difficult. Images can contain background objects, text overlays, conflicting viewpoints, ambiguous scale, and decorative features outside the current construction vocabulary. I built explicit reference roles, evidence-linked realization states, deterministic conflict handling, and clear distinctions between what was observed, realized, simplified, unsupported, or uncertain. Accomplishments that I'm proud of I’m proud that SketchyCut is a working product experience rather than only a model prompt or geometry demonstration. The part I am most proud of though is seeing my idea come to life: creating an assemblable physical object that GPT-5.6 helped construct. It was seeing SketchyCut progress from an idea into generated geometry, a coherent product experience, and physical test pieces. What I learned I knew going into this that generative AI and deterministic engineering could be complementary, and this is living proof as to how that can be achieved. GPT-5.6 is valuable for interpreting an ambiguous human idea, reasoning about semantic relationships, and understanding text and images. But a plausible model response is not enough when the output will become a physical object. Even when the 3D model in the web app looks right, it might not actually make sense in the physical world. I also learned that scrapping a project and starting over has a cost, but is not completely unreasonable. After getting completely stuck the first time around, i started over completely but leveraged the failed first iteration's lessons into the second attempt -- it felt like a waste of tokens, honestly, but thanks to Tibo's resets, it didn't feel so bad :P Finally, working with Codex was most effective as an iterative engineering collaboration. I supplied the goals, constraints, corrections, tradeoffs, and acceptance decisions. Codex helped investigate alternatives, implement those decisions, detect inconsistencies, and build repeatable evidence. The quality came from that feedback loop and not from handing the project to an agent and accepting its first answer.
What's next
My immediate priority is to deepen physical confidence in the current release: Redesign, recut, and cycle-test the Hinged and Sliding constructions before restoring their fabrication exports Continue strengthening the places where physical behavior exceeds what software geometry alone can prove From there, I want to expand SketchyCut’s deterministic construction vocabulary without sacrificing generality, correctness, or fabrication reliability. Planned areas include non-rectangular profiles, retained layered constructions, additional openings and decorative cut-throughs, and eventually functioning sheet-built mechanisms such as gears, cranks, cams, linkages, carousels, and automata. The goal is not to ask a model to invent arbitrary CAD. It is to grow a reusable vocabulary of deterministic, testable construction capabilities that GPT-5.6 can compose from a maker’s intent. I want SketchyCut to make increasingly ambitious physical creation approachable, while remaining honest about exactly what has been interpreted, calculated, validated, cut, and physically proven.
SketchyCut
Describe your 3D idea, provide 1–3 images, and SketchyCut will provide an SVG cut file that you can use for laser cutting, then piece together into a 3D structure.
Try SketchyCut · Explore the examples · How it works
Why I built it
Have you ever looked at something and thought, “How did they engineer that?”—followed by, “I wish I could design and make something like it”?
I have. The difficult part is the step between picturing an object and having pieces that actually fit together. That step usually demands CAD modeling, joinery knowledge, material measurements, cut-width compensation, sheet layout, and assembly planning.
SketchyCut is my attempt to make that expertise approachable. A maker describes an object and can add up to three reference images. SketchyCut interprets the idea, chooses a construction it can support, and produces one connected project: an interactive 3D preview, editable dimensions, a bill of materials, assembly instructions, validation findings, and—when every release gate passes—plain SVG sheets for laser cutting.
Existing image-to-SVG workflows can prepare a 2D image for cutting or engraving. The gap I wanted to address is different: how can software interpret a custom idea as a three-dimensional construction and derive the separate parts needed to assemble it?
This is not an “AI draws an SVG” tool. The model handles ambiguity; deterministic code handles precision.
The key idea
GPT-5.6 interprets what the maker means. It may identify semantic bodies, relationships, requirements, proportions, reference observations, and visual intent.
It does not generate cut contours, exact dimensions, joints, transforms, kerf offsets, machine settings, or validation claims. SketchyCut's deterministic construction engine owns those decisions.
flowchart TD
A["Description + 0–3 reference images"] --> B["GPT-5.6 semantic interpretation"]
B --> C["Strict structured intent"]
subgraph deterministic["Deterministic SketchyCut engine"]
C --> D["Capability mapping"]
D --> E["Parametric construction<br/>parts · joints · fits · motion"]
E --> F["Geometry, assembly, and fabrication validation"]
end
F -->|"passes release gates"| G["Canonical design document"]
F -->|"unsupported or invalid"| H["Explain limitations<br/>withhold fabrication export"]
G --> I["Interactive 3D preview"]
G --> J["Design controls + parts layout"]
G --> K["BOM + assembly instructions"]
G --> L["Compensated SVG sheets + handoff"]
Every output is projected from the same versioned canonical design document. The 3D preview is not a hand-authored approximation of a different cut file: parts, joints, meshes, fabrication paths, BOM entries, and instructions share stable identities and deterministic hashes. If a core request is unsupported or deterministic validation fails, SketchyCut explains the limitation and withholds fabrication export.
What you can do
- Describe a project in natural language and optionally add zero to three ordered JPEG, PNG, or WebP references.
- Review what GPT-5.6 observed, what deterministic code realized, what was simplified, and what remains unsupported or uncertain.
- Explore one continuously connected Preview, Design, Build, and Fabricate workspace.
- Inspect assembled, moving, and exploded 3D states linked to the exact parts and sheets.
- Adjust exact dimensions, material thickness, fit, and supported motif placement locally with no additional model call.
- Download a BOM, parts legend, numbered instructions, validation evidence, and eligible SVG sheets.
Hackathon judges have special access to try the full live demo.
Current release and evidence
SketchyCut currently demonstrates a shared glue-free construction vocabulary through three box-shaped proof targets:
| Construction | Current status |
|---|---|
| Open-top Basic | Fabrication-enabled when deterministic validation and release gates pass |
| Retained-pin Hinged | Interactive deterministic design preview; fabrication export currently withheld |
| Captured Sliding | Interactive deterministic design preview; fabrication export currently withheld |
Basic, Hinged, and Sliding are proof targets for reusable construction operators, not three templates or the intended boundary of the product. Off-family fixtures exercise the same registered operators to guard against family-name selection and fixture-specific geometry.
The current Basic geometry and fabrication path are software-validated. An earlier Basic artifact was physically cut and assembled without glue, but required excessive insertion force. The current adjusted fabrication bytes have not yet completed matching cut-and-assembly verification. Hinged and Sliding remain preview-only after their physical builds exposed construction problems that software checks alone did not justify overlooking.
Accordingly, SketchyCut distinguishes:
- Concept only: the request is understood, but export is withheld.
- Fabrication candidate: deterministic geometry, assembly, and export checks pass; physical fit is not yet claimed.
- Cut, assembly, or motion verified: reserved for evidence tied to the exact artifact hash.
A convincing render is not treated as proof that wood has been cut, assembled, or cycled successfully.
How Codex and GPT-5.6 were used
GPT-5.6 in the product
The live interpretation layer uses GPT-5.6 Sol for one constrained multimodal request. Its response must pass a strict schema and contains compact semantic intent—not fabrication geometry. Deterministic code then authorizes evidence, resolves measurements and scoped conflicts, maps requirements to registered capabilities, compiles exact construction, validates the result, and decides whether export is allowed.
Model, prompt and schema identities, request status, latency, token usage, cache provenance, and cost exposure are recorded. Ambiguous post-dispatch transport failures remain potentially billed rather than being silently retried or recorded as zero cost.
Codex during development
During brainstorming and architecture work, I used GPT-5.6 Sol at Ultra reasoning to work through the central design problem: combining a model capable of understanding a user's words and images with a deterministic system capable of turning that intent into exact mathematics. For implementation, I used GPT-5.6 Sol at Extra High reasoning. I also used GPT-5.6 models to question the code and architecture, understand model capabilities, and prepare bounded milestone goals that Codex could execute and verify over longer work sessions.
Codex helped me:
- investigate prior art and test geometry-library behavior before implementation;
- design strict schemas and the boundary between semantic interpretation and deterministic fabrication authority;
- implement and test versioned construction operators, polygon processing, nesting, motion proofs, canonical projections, and the shared product workspace;
- build network-disabled fixtures, anti-overfitting checks, golden matrices, architecture guards, privacy checks, production builds, and browser tests;
- diagnose failures from live model evaluations and physical builds without rewriting failed evidence into success;
- maintain an evidence trail separating human decisions, model behavior, deterministic validation, and physical observations.
I remained responsible for product direction and acceptance decisions. Among the choices I made were forbidding model-authored fabrication geometry, keeping assembly glue-free, and requiring off-family operator proofs.
The collaboration worked best as a loop: I set the physical and product constraints, reviewed alternatives and evidence, corrected assumptions, and decided what could be claimed; Codex helped turn those decisions into narrow contracts, implementation, and repeatable verification.
The hardest engineering challenge
The largest risk was building a polished collection of examples that could not generalize—a hidden template selector surrounded by heuristics.
I addressed that risk in three ways:
- Designs are represented as semantic bodies, interfaces, requirements, and relationships rather than product names.
- A registry of general-purpose parametric construction operators generates geometry from explicit constraints instead of selecting fixed drawings.
- Operators must also pass deliberately off-family proofs. For example, the same captured-slide capability used by the public Sliding preview is exercised on a drawer-in-sleeve fixture, through the same compiler, validators, and projections. Architecture guards reject missing fixtures, product-family selectors in deterministic core code, unregistered operators, and named/off-family version drift.
These tests do not prove universal construction or physical reliability. They provide bounded evidence that the implemented vocabulary is reusable beyond the public examples.
Architecture highlights
- TypeScript and strict Zod contracts at system boundaries
- Integer-micrometre internal geometry with millimetre-based public outputs
- Versioned, registered construction operators rather than product-family classifiers
- Ideal physical geometry kept separate from compensated fabrication paths
- Polygon Boolean and offset operations behind a narrow geometry-kernel adapter
- Operator-owned 2.5D proofs for supported revolute and prismatic motion
- One canonical document projected into Three.js meshes, SVG, BOM, legend, instructions, validation, and provenance
- Server-only OpenAI transport, authentication, quotas, persistence, cache, and append-only attempt accounting
- Exact semantic caching with deterministic reconciliation, compilation, and validation rerun on every hit
- Root-bundle and architecture guards that keep the public landing page and client output free of the live interpretation and secret-bearing server stack
What is next
SketchyCut's long-term direction is a larger deterministic construction vocabulary that can represent more shapes and genuinely functioning sheet-built mechanisms without sacrificing generality, mathematical correctness, or fabrication reliability.
The immediate work is intentionally evidence-driven: expand supported geometry through registered operators with off-family and physical proof. Future ambitions include deterministic profiles, retained layered constructions, gears, cranks, cams, linkages, carousels, and automata—but none are advertised as fabrication capabilities until their own software and physical gates pass.
Run locally
Requirements
- Node.js 24 or later
- npm
Install the pinned dependencies:
npm ci
Safe fixture mode
The easiest way to evaluate the complete interface locally is fixture mode. It disables paid and durable clients, uses in-memory state, and makes no OpenAI request:
npm run dev:fixtures
Open http://localhost:3000, expand Judge Access in the footer, and enter:
sketchycut-fixture-access
The public /examples route also provides the Basic, Hinged, and Sliding progression without authentication or model calls.
Live mode
npm run dev
Live mode intentionally refuses to start unless its server-only OpenAI, durable Upstash, access-verifier, session-signing, and interpretation-prompt configuration is complete. Starting the server does not make a model request; an explicit Generate action authorizes one request. Secrets and the runtime interpretation prompt must remain local and must never be placed in client-visible environment variables or committed files.
Verify the project
The ordinary verification path is hermetic and network-disabled:
npm run verify
It runs type checking, zero-warning lint, architecture and source guards, unit and golden tests, deterministic payload checks, a production build, emitted-bundle audits, and Chromium end-to-end tests.
Useful focused commands:
npm run typecheck
npm run lint
npm test
npm run test:e2e
npm run build
Live model evaluation, connected persistence conformance, and physical observation verification are deliberately separate from npm run verify; none should be mistaken for ordinary unit-test activity.
Fabrication scope
The current registered workflow targets nominal 3 mm laser-grade basswood plywood, with birch plywood available as a secondary provisional stock, and glue-free assembly. The primary export is plain millimetre-based SVG for the registered xTool M2 20W blue-light flat-surface workflow in xTool Studio Desktop 1.7.30 or later.
SVG colors and groups are selection aids only. They do not assign Cut, Score, Engrave, output state, processing order, power, speed, passes, or focus. SketchyCut owns fabrication-path compensation, so downstream xTool Studio Kerf Offset must remain off/0 for compensated product paths. Machine setup, framing, supervision, fire safety, recipe qualification, and physical fit remain the operator's responsibility.
SketchyCut does not claim strength, durability, child safety, food safety, universal machine compatibility, or reliable fabrication outside recorded evidence.
Built with
TypeScript, Next.js, React, React Three Fiber, Three.js, Zod, Clipper2, Earcut, Sharp, Vitest, Playwright, Upstash Redis, the OpenAI API with GPT-5.6, and Codex.
License
MIT
Analysis
View
Metric
- 17
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- TypeScriptIn code
- RedisClaimed
- VercelClaimed
5 of 7 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
2.2 MB
Source files
307
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
earlyspark/sketchycut
365 files · 3.7 MB · @ ba99191
Structure
Interface
36 files · 10%Screens, components and styles rendered to the user.
API & routing
27 files · 7%Request entry points: routes, handlers and controllers.
Application logic
112 files · 31%Domain rules, services and shared utilities.
+5 moreBackground jobs
4 files · 1%Work run outside a request: tasks, workers and schedules.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript98%
- CSS2%
- Markdown1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 25- @react-three/drei
- @react-three/fiber
- @upstash/redis
- clipper2-ts
- earcut
- fflate
- next
- openai
- react
- react-dom
- sharp
- three
- zod
- +12 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.