Gig
$10/hr
15
Aug 19, 2026
Freelance Three.js Developer
HeartStamp • Remote • Contract
About HeartStamp
HeartStamp is an AI-powered greeting card platform built for Millennials and Gen Z who find traditional cards cringe, generic, and emotionally hollow. Our platform lets users customize cards with AI, then either print them on demand or deliver them as interactive 3D digital cards.
The 3D digital card is a core part of that experience, and our Three.js preview is where users first see their finished card come to life. Right now it reads as a flat image on a rectangle. We want it to read as a real, physical card someone would be proud to send.
About the Role
We're hiring a freelance Three.js developer to take our existing card preview application from flat and artificial to genuinely realistic. We already have a working Three.js app that displays a card's front, inside spread, and back, with an open/close animation. The rendering pipeline is the part that needs expert attention.
This role reports directly to our CEO. We're looking for someone who has done this kind of rendering-realism work before, not someone learning Three.js on our project. You should be able to look at a render and immediately diagnose why it looks fake, then fix it.
We're also AI-native as a team. We use Claude and other AI tools throughout our own development process, and we'd like a collaborator who does the same, moving fast without cutting corners on craft.
What You'll Build
Starting point: our card preview currently renders with flat, even lighting, no material response, zero-thickness geometry, and a shadow that doesn't match any real light source. The card looks like a sticker floating in space rather than a physical object. Broadly, the work breaks down into:
Lighting and Tone Mapping
-Environment/HDRI lighting (via PMREMGenerator or equivalent) so the card picks up believable reflections and highlights as it moves
-ACES filmic tone mapping and correct color management (sRGB output) so highlights and shadows roll off naturally instead of clipping
-A key light and fill setup that produces a highlight sweep across the card surface during the open/close animation, since that moving sheen is one of the strongest cues of a real object
Materials
-Physically based materials (MeshPhysicalMaterial) tuned for semi-gloss printed cardstock, roughness and reflectivity that respond to light instead of a flat, unlit texture
-Subtle paper-grain normal mapping so the surface isn't perfectly smooth
-Clearcoat or coating variation where appropriate for different card stocks
Geometry and Construction
-Real thickness to the card (a visible paper edge on the sides), instead of a zero-depth plane
-A gentle bend or bow to the panels rather than perfectly flat geometry, since real cardstock isn't perfectly rigid
-A rounded, believable spine/fold instead of a knife-edge crease, with subtle ambient occlusion darkening near the fold on the open view
-Natural paper flex during the open/close animation rather than a rigid hinge rotation
Shadows and Grounding
-Soft, correctly directed contact shadows that ground the card in the scene and match the lighting setup, replacing the current flat, mismatched shadow blob
-Clean anti-aliasing and shadow filtering (PCF soft shadows or equivalent) so edges and shadow boundaries don't look jagged or artificial
Technical Requirements
Must-Have
-Deep, demonstrable experience with Three.js rendering fundamentals: PBR materials, environment/IBL lighting, tone mapping, and color management
-A portfolio or reel showing before/after examples of taking a flat 3D web scene to photorealistic or near-photorealistic quality
-Comfort with custom geometry work (extrusions, subdivision, procedural bending/deformation) rather than relying only on imported static models
-Experience building soft, grounded shadow techniques in real-time WebGL (contact shadows, baked AO, or equivalent)
-Genuinely AI-native: comfortable using Claude or similar AI tools as part of your development workflow, and able to talk specifically about how
-Ability to work independently, communicate clearly, and turn around iterations quickly in a fully remote, fast-moving environment
Nice to Have
-Experience with product visualization, packaging, or print-simulation rendering (paper, cardstock, fabric, or similar physical materials in 3D)
-Familiarity with performance budgeting for mobile GPUs, since this preview needs to run smoothly on phones, not just desktop
-Experience with React Three Fiber or similar, if that fits better into our existing app than vanilla Three.js
-A track record of using AI tools to accelerate shader work, asset prep, or debugging
What Success Looks Like
-A user opens the card preview and it reads as a physical object, not a flat image on a plane
Lighting responds believably as the card rotates or animates open, with a visible highlight sweep and correct shadow grounding
-The card has real thickness, a believable fold, and material response that matches printed cardstock
-The improved rendering runs smoothly across desktop and mobile browsers, with no meaningful performance regression from the current app
Engagement Details
Remote: Fully remote,
Contract type: Project-based freelance, reporting directly to our CEO, with potential for ongoing engagement as we extend the 3D card experience
Timeline: To be scoped together once we've reviewed your approach and estimate for the work described above
Compensation: Rate-based, dependent on experience and scope. Include your rate in your application, and we'll align on a final budget and timeline together
How to Apply
Send us a brief introduction that covers the following:
-Links to Three.js (or WebGL) projects you've shipped, ideally with before/after examples of rendering-realism work
-How you approach diagnosing why a 3D scene looks “fake,” and the techniques you reach for first
-How you use Claude or other AI tools in your own development workflow
-Your availability and expected rate (hourly or per-project)
We review on a rolling basis and move quickly when we find the right fit. We'd love to see your work.