TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Show HN: Hypertune – Visual, functional, statically-typed configuration language

38 pointsby miraantabrezabout 2 years ago
Hey HN! I&#x27;m Miraan, the founder at Hypertune. Hypertune lets you make your code configurable to let teammates like PMs and marketers quickly change in-app copy, feature flags, pricing plans, etc, with logic for personalization, A&#x2F;B testing and ML.<p>It&#x27;s like a CMS but instead of just letting you set static content, you can insert arbitrary logic from the UI, including A&#x2F;B tests and ML.<p>I previously built a landing page optimization tool that let marketers define variations of their headline, CTA, cover image, etc, then used a genetic algorithm to find the best combination of them. They used my Chrome extension to define changes on DOM elements based on their unique CSS selector. But this broke when the underlying page changed and didn&#x27;t work with sites that used CSS modules. Developers hated it.<p>I took a step back.<p>The problem I was trying to solve was making the page configurable by marketers in a way that developers liked. I decided to solve it from first principles and this led to Hypertune.<p>Here&#x27;s how it works: You define a strongly typed configuration schema in GraphQL, e.g.<p><pre><code> type Query { page(language: Language!): Page! } type Page { headline: String! imageUrl: String! benefits: [String!]! } enum Language { English, French, Spanish } </code></pre> Then marketers can configure these fields from the UI using our visual, functional, statically-typed language. The language UI is <i>type-directed</i> so we only show expression options that satisfy the required type of the hole in the logic tree. So for the &quot;headline&quot; field, you can insert a String expression or an If &#x2F; Else expression that returns a String. If you insert the latter, more holes appear. This means marketers don&#x27;t need to know any syntax and can&#x27;t get into any invalid states. They can use arguments you define in the schema like &quot;language&quot; and &quot;isReturnVisitor&quot;, and drop A&#x2F;B tests and contextual multi-armed bandits anywhere in their logic.<p>The language is <i>total</i> rather than Turing-complete so programs provably terminate. And we overlay live counts on the logic tree UI so you can see how often different branches are evaluated in real time.<p>You get your config with low latency from our Fastly edge server, which evaluates your logic given a GraphQL query. Or via the SDK which fetches your logic once on initialization (and listens for updates), then evaluates it locally — so you can use it on your backend to get content for different users immediately, without adding latency to every request. Both GraphQL and the SDK give you auto-generated code for end-to-end type-safety based on your schema.<p>The SDK supports &quot;build-time config&quot; too, where we store a snapshot of your configuration logic in your app bundle for instant initialization. This works nicely on static Jamstack sites built with Next.JS, Gatsby, etc, as we can run A&#x2F;B tests and personalization logic instantly on page load without any extra network latency.<p>I started building this for landing pages but realized it could be used for feature flags, in-app content, translations, onboarding flows, error messages, business rules, pricing plans, permissions, etc, as it&#x27;s all just &quot;code configuration&quot;.<p>Today, this configuration is hardcoded or sprawled across json&#x2F;yaml files or in separate platforms for feature flags, content, etc. So if a PM wants to A&#x2F;B test new onboarding content, they need to bother a developer to stitch their testing platform with their CMS, then wait for a code deployment. And is it even worth it at that point?<p>Our customers save time and money by buying, integrating and learning a single flexible platform rather than many separate ones.<p>We&#x27;re still figuring out the best use cases and would love your help. What would you find Hypertune most useful for? Type-safe feature flags, content management with A&#x2F;B testing, pricing plans, rules or something else? Please comment with any thoughts &#x2F; questions!

5 comments

qsortabout 2 years ago
Very cool project, I love it.<p>A couple of questions:<p>- Do you have any plans to make it work with more languages? As it is I would have to find a way to get my non-JS code to talk with JS or am I misunderstanding something?<p>- How restrictive the non-TC limitation is? In other words, is it powerful enough that the user can write some very basic &quot;code&quot;? I have a few use-cases in mind where we need to parse product IDs from different sources and do some processing on them that&#x27;s different for each source. Would it be flexible enough for something like this?
评论 #35277484 未加载
Lukas1994about 2 years ago
We&#x27;ve been using it at causal.app for a few weeks now and both engineers and product people love it. Our onboarding content can now be dynamically changed by non-coders.
angadnabout 2 years ago
Been looking for something this simple and immediately pluginable. Cheers!
h4ch1about 2 years ago
Looks great, interesting to read your journey, thanks for sharing and building!
PaulHouleabout 2 years ago
Looks great!