Loading...

We are hiring!

Company Overview

Synthetic Minds is building program synthesizers, i.e., automation that can write code. We have a system in production that reads/writes smart contracts in Ethereum's Solidity language, and we use it to secure our customer's contracts and ensure they are correct. Our eventual objective is to enable access to code for as many people as possible, ideally even non-programmers.

We are funded by Y Combinator, Khosla Ventures and Pantera Capital. We have paying customers, and a backlog waiting to be on-boarded. More on our story is on our blog.

We are hiring full-time engineers in San Francisco and Seattle. We like simple solutions to hard problems, and will side with the robots in the uprising. Come build with us.

Open positions:

  1. Software engineer: Smart contracts engineer
  2. Software engineer: Systems engineer
  3. Software engineer: Program synthesis
  4. Software engineer: Theorem proving
  5. Software engineer: Verification
  6. Software engineer: Scalability and infrastructure
  7. Researcher: Smart contract security
  8. Researcher: Program synthesis (Formal methods)

For comments/questions, email jobs@synthetic-minds.com.





Software engineer: Smart contracts engineer

Role:

  • Take customer specifications to identify and develop features to build on top of the core product.
  • Maintain and develop core product features that analyzes and writes smart contract code.
  • Analyze customer codebases using Synthetic Minds' proprietary tools.
  • Define specifications and roadmap for unmet customer needs.
  • Work with team to develop features needed.
Qualifications:
Minimum:
  • 2+ years experience in a software engineering role.
  • Interest in smart contracts, and program synthesis.
  • Desire to learn about smart contract languages and compilers, automated theorem provers, code analysis and generation.
  • Extensive experience with smart contracts -or- bachelors (or equivalent) in CS with some experience in smart contracts and strong desire to learn more.
Preferred:
  • Bachelors or masters in computer science.
  • Interest in smart contract languages, e.g., Solidity.
  • Experience with large projects in a performant language (e.g., C++).
  • Experience with tools for code analysis: fuzzers, static analysis, etc.

Apply to this position




Software engineer: Systems engineer

Role:

  • Plan and deliver large-scale performance and capability improvements to core product.
  • Identify potential high impact improvements based on broad customer needs.
Qualifications:
Minimum:
  • Bachelors and/or masters in computer science.
  • 3+ years experience in a software engineering role.
  • 2+ years hands-on experience with large projects in a performant language (e.g., C++).
  • 2+ years hands-on experience with developing solutions that utilize distributed computing.
  • Desire to learn about smart contracts, program verification, and program synthesis.
  • Desire to learn about smart contract languages and compilers, automated theorem provers, code analysis, and generation.
Preferred:
  • History of success while working on hard open problems.
  • Experience with tools for code analysis: fuzzers, static analysis, etc.
  • Experience with running jobs on cloud platforms (e.g., Azure, GCP, AWS)

Apply to this position




Software engineer: Program synthesis

Role:

  • Work on the core program synthesis product and improve it.
  • Work on scaling synthesizer: algorithmic and through distributing work over clusters.
  • Develop features for synthesis of program fixes, leveraging the core product.
Qualifications:
Minimum:
  • Bachelors or masters in Computer Science.
  • Experience building code analysis techniques.
  • Basic understanding of the state-of-the-art in program synthesis.
Preferred:
  • Masters or PhD in Computer Science.
  • Academic or commercial projects in program synthesis.

Apply to this position




Software engineer: Theorem proving

Role:

  • Work on the core theorem prover encoding utilized by Synthetic Minds for program verification and analysis.
  • Interface with some of the world's best external theorem proving efforts to collaboratively solve real world problems.
  • Find and build the most scalable SMT encodings for our application.
Qualifications:
Minimum:
  • Bachelors or masters in Computer Science
  • Experience with automated theorem provers: Z3, CVC4, etc
Preferred:
  • Previous work experience applying Z3 to commercial applications
  • Masters or PhD in topic utilizing theorem provers
  • Experience solving program analysis problems with automated provers

Apply to this position




Software engineer: Verification

Role:

  • Work on the core formal verification product and improve its performance on large systems.
  • Work on scaling the verifier: algorithmic and systems approaches.
Qualifications:
Minimum:
  • Bachelors or masters in Computer Science.
  • Experience building program analysis tools.
  • Basic understanding of state-of-the-art in automated formal verification.
Preferred:
  • Masters or PhD in Computer Science.
  • Commercial experience building products for code: static analysis, formal verification.

Apply to this position




Software engineer: Scalability and infrastructure

Role:

  • Develop infrastructure and operational procedures to scale to computational needs for problem sizes (10s-1000s of VMs).
  • Emphasize reproducible and maintainable cloud deployments.
  • Setup and maintain testing infrastructure.
  • Deploy Synthetic Minds' cloud agnostic systems on cloud VMs (AWS (primarily) / Azure / GCP).
Qualifications:
Minimum:
  • Experience building and deploying large distributed infrastructure on cloud platforms (Azure, GCP, AWS).
  • Bachelors or masters in computer science.
  • Experience building and maintaining backend infrastructure.
Preferred:
  • Experience handling very long running (days/weeks) tasks and distributing them.
  • Experience developing recovery solutions to ensure infrastructure robustness under VM failures.
  • Experience managing an infrastructure team.

Apply to this position




Researcher: Smart contract security

Role:

  • Keep up to date, and discover new, security vulnerabilities in smart contract languages.
  • Collaborate with program synthesis developers to ensure our system can identify known and new security issues.
  • Aggregate customer security needs in synthesis product specifications.
Qualifications:
Minimum:
  • Knowledge of Solidity language design and its security considerations.
Preferred:
  • Experience finding security vulnerabilities in Solidity smart contracts.
  • Experience using open source security tools.

Apply to this position




Researcher: Program synthesis (Formal methods)

Role:

  • Work on Synthetic Minds' core program synthesis product.
  • Develop next generation of scalable program synthesizers.
  • Connect the core product to customer requirements.
Qualifications:
Minimum:
  • Experience or training in design and development of programming languages/compilers.
  • Interest in smart contracts and their evolution.
Preferred:
  • Masters or PhD in formal methods, program synthesis, programming languages, or compilers.
  • Interest in automated theorem provers, smart contract languages (e.g., Solidity), security.

Apply to this position


About the team

Saurabh Srivastava

Saurabh is CEO and Founder of Synthetic Minds. He has been building program synthesizers for over a decade. First in his PhD, then postdoc at UC Berkeley, and then using it to design new bio-organisms at his first company 20n.

He has over 900 citations to his publications; most of which are in program synthesis, including the 4th most cited for the topic. Program synthesis is a hard problem, but solvable for specific domains such as Excel macros, or super-optimizations, and with Synthetic Minds: smart contracts.

His previous YC W'15 company brought synthesis to biology, building an open-source platform for genetic engineering. An amazing team of 12 engineers helped realize the technology, and we engineered 40 different organisms in collaboration with DARPA, YC, Khosla Ventures, many Fortune 500 companies. The company was named in TechCrunch and YC's hard tech companies.

In 2016, Saurabh got interested in perpetually running applications, aka smart contracts on the blockchain. He started building Synthetic Minds in 2017 and made the first version available to users in summer 2018.

Henele Adams

Henele joined Synthetic Minds after ten years at Google. His first five years were spent working on core search ranking (impacting most search results), while the last five were in research (working on crazy NLP projects and adding extra smarts to Gboard). In between tours, he was the first engineering hire at Parse (acquired by Facebook, YC S11). He has fond memories of his fellow Parsers but doesn't want to ever be writing firefighting code at 2AM again.

Prior to moving out west, he worked at the Carnegie Mellon Robotics Institute working on projects ranging from landmine clearance training systems to localization systems (non-GPS) for autonomous vehicles. He developed of his initial appreciation for good software development practices while working on large autonomous unmanned air vehicles.

He remains rather disappointed that code is still mostly made by meat. When not trying to remedy that, he likes taking long walks in the backcountry.

Arthur Tilley

Arthur comes to Synthetic Minds after spending two years as a Machine Learning Software Engineer at Google, where, among other roles, he was part of a small group of engineers who built Gmail's Nudging feature.

Before Google, Arthur worked briefly at a university (The Center for New Music and Audio Technology at UC Berkeley), a nonprofit (a small group of researchers at the Wikimedia Foundation developing ML features for Wikipedia), and a startup (LeanTaaS, Inc) focusing on hospital resource optimization.

Arthur received his Ph.D from the the Logic Group at the University of California at Berkeley in 2014 under the direction of Tom Scanlon. He enjoys interesting mathematical problems of all forms but has a particular soft spot for mathematical logic. Currently, when he is not thinking about how to make programs write programs, he practices Jiu Jitsu and dabbles with making music on his computer.