• jackienotchan 6 hours ago

    Would you mind sharing the story behind your pivot from on-demand photorealistic vision datasets[0] to browser automation?

    [0] https://www.ycombinator.com/launches/Lbx-simplex-on-demand-p...

    • marcon680 an hour ago

      Yeah sure! We mentioned a little bit in the post that we stumbled upon this problem when working on a synthetic data contract. Internally, we were building software at the time to fully automate the process of creating synthetic data, all the way from purchasing assets to building scene layouts to rendering images. We realized after 2 months of building that there wasn't a great need for this problem nor could we build something minimal but feature-complete that we could give to people and iterate off of. We also saw the writing on the wall re: building 3D world models (see WorldLabs and NVIDIA's new 3D world models). We're excited to see where this goes!

      • Mandatum 4 hours ago

        VC funding.

      • globnomulous 4 hours ago

        Apparently a simplex is a concept in geometry. I'm guessing this is the intended meaning of the term in the name. When most decently well informed, native speakers of English hear "simplex," though, they are likely to hear "herpes simplex" and so are likely to wonder, as I did, whether, or why, the program is named after a sexually transmitted disease.

        • gashmol 2 hours ago

          I thought it's related to the simplex method in linear programming

          • TeMPOraL an hour ago

            Which IIRC is named for that geometry thingie GP mentioned, that this method uses to represent the problem, with the solutions being vertices/edges of the thingie.

          • IanCal 32 minutes ago

            I would never have made that link.

            • internet_points 4 hours ago

              I for one did not make that connection. Only thing I thought of was https://simplex.chat/ (which is fortunately not marketed as a dating app)

            • thasaleni 3 hours ago

              tried:

                simplex.goto("www.amazon.com")
                simplex.wait(2000)
                simplex.click('the search bar')
                simplex.type("bicycle")
                simplex.press_enter()
                simplex.wait(1000)
                image = simplex.extract_image("first 3 rows of results")
              
              get error:

                simplex error processing error
              • marcon680 an hour ago

                So sorry about this, it looks like our servers went down overnight. Just fixed, should be good now!

              • sprobertson 9 hours ago

                Great demo, straight to the point. It might be nice to have some kind of feedback mechanism if it can't find the element on the page, or if it's partially cut off. For example, I changed the GitHub profile to my own (https://github.com/spro) in the example and it doesn't scroll down far enough for the whole image. I imagine in general it would be nice to scroll to an element ID (or even element description using the vision models) instead of a hardcoded value.

                Side-note: The comment for the frequency graph is wrong, it mentions stars instead.

                • marcon680 8 hours ago

                  RE: feedback mechanism -- yep, a feedback mechanism is definitely something we're thinking of adding. Since we use VLMs that are trained to always output coordinates (i.e., they don't have a way to say "not on the page"), we're probably going to try fine tuning with some negative examples to see if we can build that feedback mechanism in.

                  One way to hack the scrolling to an element is to first run extract_bbox on a natural language description (in your case for GitHub it might be "follow button") then take the Y coordinate of that element and scroll that number of pixels. I just wrote this bit of code that I tested and it brings the contribution graph into full view:

                      simplex.goto("github.com/spro")
                      coords = simplex.extract_bbox("follow button")
                      simplex.scroll(coords[1])
                      simplex.wait(2000)
                      image = simplex.extract_image("green tile graph")
                  
                  But then it incorrectly picks the code review/submissions/etc. graph as the green tile graph -- we'll look into it!

                  re: frequency graph typo -- just pushed a fix, thanks!

                • vitalets 6 hours ago

                  I've tried the following code:

                      simplex.goto("github.com/mitchellh")
                      num_contribs = simplex.extract_text("blabla")
                      print(num_contribs)
                  
                  It outputs all texts from the page. Is it expected? Maybe it should fail indicating element could not be found?
                  • skarpoor 6 hours ago

                    extract_text returns all the lines of text it finds within an element. Looks like for your case it selected a majority of the page from the description, so it's returning most of the text on the page.

                    We currently don't return failure cases (just closest match) -- but good suggestion! We'll fine tune on some negative cases and see if we can catch them

                  • mkagenius 8 hours ago

                    VLMs are great - I have been able to use it for a similar project too [1]. And it's only going to get better. Congratulations on the product launch what's your VLM model for this?

                    1. A framework to use/control mobile phones via any LLM - https://github.com/BandarLabs/clickclickclick

                    • marcon680 7 hours ago

                      We finetune our own VLMs for this -- unfortunately prefer not to share which ones we use specifically! ClickClickClick looks awesome, have you heard of FerretUI (https://arxiv.org/pdf/2404.05719)? Pretty similar idea.

                      • mkagenius 7 hours ago

                        Yes, I tried a similar one called "omniparser" - where the issue was it was missing annotating some UI elements sometimes. Moreover, Gemini and Molmo worked right out of the box without needing any fine tune.

                    • xnx 11 hours ago

                      Looks pretty cool. How do you distinguish Simplex from Skyvern or UI.Vision?

                      • marcon680 10 hours ago

                        Hey thanks! We think we're pretty different from Skyvern as Skyvern provides a full agent loop for users + is no code. We wanted to build something at a lower level (i.e., no high-level planner that chooses what tasks to do for you) and we wanted to be able to program our own logic alongside the intelligence part because using code is what's natural for us as developers.

                        I hadn't heard of UI Vision but just took a look at it -- it also looks like a no-code solution that's a Chrome extension, so I'd say the main differences are the same as the differences w/ Skyvern -- we're lower level and meant to be used by developers.

                        I'd add that we're also able to directly extract parts of websites that have no official API -- for example, an image of the GitHub contribution graph like I show in the video demo.

                      • myflash13 8 hours ago

                        Can this use a cloud browser API like browserless?

                        • marcon680 8 hours ago

                          Yep, any websocket URL works. I see that Browserless offers a websocket URL, so you can use them! You just need to pass in a Playwright browser object into the Simplex constructor.

                        • picografix 10 hours ago

                          it fails for this query search("amazon.in", "fitness watch")

                          • marcon680 9 hours ago

                            Ah, we've whitelisted some websites to prevent abuse -- amazon.in wasn't one of them. I just whitelisted amazon.in for you and tried the search query -- looks like it works!

                            • mrbluecoat 9 hours ago

                              +1 for considering how it could have been abused to visit blocked sites and circumvent online protections.

                              The syntax is also intuitive, although site loading seems pretty slow but maybe that's just the playground and the paid access is much faster.

                              • marcon680 8 hours ago

                                Yep, we also run all our python code in sandboxes and a few other security measures!

                                Site loading is pretty now slow due to a combination of 1. traffic we're currently getting, 2. running a remote session, 3. running a few large vision language models, and 4. adding waits to allow pages to load/allow you to view your search results. We're working on cutting our latency significantly since it leads to a better development experience.

                          • desireco42 9 hours ago

                            I have to say, looks both simple and 20 times better then those horrible no-code solutions with boxes and arrows.

                            I think you are onto something here.

                            • marcon680 9 hours ago

                              Thanks, we hope so! That's an interesting conversation -- I'd argue that the graph-based no-code solutions you're referring to are for a different set of people than those commonly found on HN. As a developer I didn't particularly want to work with those tools, so we built this to supercharge our own code-based flows instead. I actually don't think the node-based flows are horrible at all since they successfully enable non-developers/less technical people to use agents/build easy automations.