Build what comes next.
Systems, automation and brand work, built as code and documented as it goes. Thoughtful decisions. Lasting progress.
What I have built.
HubSpot as code
Custom properties, a ticket pipeline, three typed ticket forms, sample data, bulk load and mass update, all from idempotent Node scripts with a dry-run mode and an 11-check verify script.
HubSpot APINode.jsForms v3Company site on AWS
A React and Vite site on a private S3 bucket behind CloudFront, with ACM certificates and Route 53 records for the root, www and cdn hostnames.
S3CloudFrontRoute 53ACMSupport intake
Three public forms create HubSpot tickets tagged by type (support, bug, access) on one pipeline, using a hidden field set per form.
HubSpot FormsTicketsBrand system
One master K drawn in code, an outlined wordmark, design tokens with measured contrast, a PNG build script and a public guide.
SVGDesign tokensMany sites, one CDN
A single CloudFront distribution serving four hostnames from one bucket, routed by a small viewer-request function, with scripts that make it repeatable.
CloudFront FunctionsShellMore on the way
This list grows as projects ship. The blog tells the story behind each one, including the dead ends.
Read the blogThree habits.
Code first
If a setting can live in a file, it does. Changes are reviewed as diffs, with the reason in the commit message.
Repeatable
Scripts are idempotent and can run twice safely. A dry run shows what would change before anything does.
Verified
Each setup has a check that proves it works, from API counts to measured colour contrast, so "done" has evidence.
Engineering notes, in order.
A technical history of this build, one post per step, starting with what the HubSpot Free plan can and cannot do.
Have a question or a project?
Send a request through the Kulkarni Inc. form and it arrives as a ticket.
Send a request