24 ms·
I built an AI company to save my open source project
- randomcatuser 2y agoreally interesting read!
- owenthejumper 2y agoTried their SaaS the day they launched and it was definitely very interesting
- ripped_britches 2y agoAwesome story, congrats on pursuing your passion
- jarbus 2y agoGreat story, congrats!
- jnsie 2y agoVery enjoyable read. Hope you do post that follow-up in the future. Congratulations!
- OutOfHere 2y agoIt's a constraint solver. You can find the community version at https://github.com/TimefoldAI/timefold-solver https://github.com/TimefoldAI/timefold-solver
- semi-extrinsic 2y ago... and usage examples at https://github.com/TimefoldAI/timefold-quickstarts https://github.com/TimefoldAI/timefold-quickstarts
- ge0ffrey 2y agoThose examples are available in Java, Python and Kotlin. We also have an overview of our open source solver here: https://timefold.ai/open-source-solver https://timefold.ai/open-source-solver
- chime 2y agoI haven’t tried Timefold but did try a ton of solvers (local and web) a few years ago when trying to optimize MRP schedule. One of the hardest parts was converting my business logic into constraints, especially date based calculations. Instead of explicit constraints, is there a way to provide a calculation that can be minmaxed? If every order has a due date, can I say +/- 3 days = 0, 7 early = 9999 (not allowed), 7+ days late = (days late)^2? Please email me (in profile) if you want to discuss.
- whatever1 2y agoYou need piecewise linear cost function and auxiliary variables. An experienced practitioner should be able to help you with either mixed integer linear programming or constraint programming
- sa46 2y agoSomewhat related, I looked at a bunch of solvers for vehicle routing with time windows. One thing that surprised me was that the SaaS-based distance matrix calculations were prohibitively expensive. Google charged $0.01 per matrix element. How do folks normally get the distance matrix? I ended up just using the Mapbox Optimization API instead of using a solver.
- whatever1 2y agoIt is always a question of accuracy / convenience. You can start with straight / geodesic distance. One step up is to use open street maps with an offline open source router [1]. But if you want the accurate driving distance with the latest closures / traffic data the big vendors are the only choice. [1] https://wiki.openstreetmap.org/wiki/Routing/offline_routers https://wiki.openstreetmap.org/wiki/Routing/offline_routers
- patrickwalton 2y agoCool to see Hawkeye 360 is one of their users. Hawkeye is an Earth observation company that builds satellites to monitor RF spectrum usage on the ground, so I can see how better tasking would help.
- 01HNNWZ0MV43FF 2y ago[flagged]
- data_ders 2y agoGreat story and interesting product! Reminds me of NextMv [1] loved their episode on SWE daily. Can anyone compare them to this and how they’re doing? [1]: https://www.nextmv.io/ https://www.nextmv.io/
- whatever1 2y agoGood job ge0ffrey! It is a tough niche market where you compete with excel people who have built their careers on their manual planning expertise. Unfortunately you are pitching not to the end user but to their manager (who will have to force them to drop their spreadsheet mambo jumbo). But I guess this is the case with all AI products nowadays anyways.
- aitchnyu 2y agoWhats the name of the algorithm/concept used here? I used simulated annealing, old fashioned algorithm for a college timetable prototype and I'm wondering how this company is using an AI model.
- PeterStuer 2y agoIt is a constrained solver. You can argue about what is or is not AI. It varies over time, traditionally driven by in which part of the AI boom/ bust cycle we were, and lately also by which regulations would apply. My background is in AI but I would have been hesitant calling the rule based systems I wrote to automate financial descisions AI at the time. In this case, Geoffrey also seemed hesitant in the past to refer to his system as AI (see https://www.optaplanner.org/blog/2017/09/07/DoesAIIncludeConstraintSolvers.html https://www.optaplanner.org/blog/2017/09/07/DoesAIIncludeCon... ), but somtimes you just have to ride the wave that brings in the funding.
- wisty 2y agoRule based systems can fall more into the side of AI than ML.
- PeterStuer 2y agoObjectively I agree. Commercially it's a different story. I also think AI ousting ML historically was uncalled for, and those that did should bow their heads in shame.
- throwaway346434 2y agoI have prototyped using timefold in a work project for hospital bed allocation. Using the shortcut of "It's AI, but it won't hallucinate because it follows all of your policy and rules" has been a great way to onboard both non technical folks and operators warming up to the idea.
- aitchnyu 2y ago<Looks up Geoffrey> I used Drools Planner in 2012, which is a predecessor of Timefold. There was no talk of distilled "models" back then, but this article mentions models as if its a secret sauce.
- PeterStuer 2y agoGreat story, and great choices made. The lesson in this to young people: you can either sell your time by the hour, or buy other's time and use that productively. The former is very finite, the latter scales.
- viccis 2y agoThat is true. I think a guy wrote a book about this in the 19th century.
- ahofmann 2y agoA friend of mine wants to know the author and the name of the book...
- alwa 2y agoWhy, if I didn’t know better, I’d imagine the gp might have been thinking about noted political theorist and agitator Karl Marx, writing briefly in Wage Labor and Capital (1847) [0] or later in his heftier Das Kapital (1867-1894) [1]. Offered without comment, except that better ebook examples are surely available somewhere: [0] https://www.marxists.org/archive/marx/works/download/pdf/wage-labour-capital.pdf https://www.marxists.org/archive/marx/works/download/pdf/wag... [1] https://archive.org/details/KarlMarxCapitalVolumeI-III/Karl%20Marx%20-%20Capital%20%28Volume%20I%29/page/n6/mode/1up https://archive.org/details/KarlMarxCapitalVolumeI-III/Karl%...
- fragmede 2y agoAh! Yes of course, "How to Get Rich" by P.T Barnum.
- wedocharlie 2y agoHmmm... Some co-founders and I are building a UK startup that needs to do skills-based task routing and optimize job assignment for workers who will drive to remote jobs. Would love to have a quick chat with you or someone at timefold.ai to see if this is something we could potentially use.
- deleted 2y ago[deleted]
- JonChesterfield 2y agoA lot of the research on constraint solvers is to solve that problem. CSP is more approachable than boolean SAT or SMT but it's all the same sort of thing - feed it a lot of constraints and some notion of when a solution is better than another one and then leave it running for a while.
- menaerus 2y agoInteresting story but what I don't get is this > Founders might get a wage to avoid personal financial stress How do you make a living as a founder if you don't get a wage? Is that really a norm? > but then also need skin in the game, typically by investing personally And also this. Does it assume that you will invest your savings or what exactly?
- ge0ffrey 2y agoWhen you make the leap, you're basically living of off your savings. Until the startup has investors that agree to pay the founders a wage (to reduce personal financial stress so they can concentrate on the company) - or the startup is profitable - it's vital that your savings don't run out...
- menaerus 2y agoAre there investors who wouldn't agree to pay the founders a wage? I understand the part where you invest your time and money to build the PoC but I can't imagine running a startup with VC-backed investment without paying out myself a wage. That seems crazy to me if true.
- matt-p 2y agoVery few VCs would not agree to a wage if the founder needed it. It probably wouldn't be as high as market rate though. If you've got an independently weathly founder then both parties typically prefer equity only. Traditional seed investors may not agree anything beyond minimum wage. It depends though.
- menaerus 2y agoSounds like a nightmare and a good way to go into personal bankruptcy. Unless, I guess, you had a job where you accumulated ~M of savings, which is very very few people.
- 2y ago
- yorak 2y agoGeoffrey, thanks for sharing your story with us. OR sure is a weird niche. Good enough algorithms for solving these problems have existed for decades1, but we still see low adoption and your 95% estimate of the companies not optimizing their operations rings true. Similarly to you, I spent a short while trying to sell VRP optimization with an API business model, and what dawned on me was that most companies do not have the necessary in-house expertise to integrate optimization into their existing tools even if the API is well-designed. There also really seems not to be any urgency to do that and most logistics companies just offload their inefficiencies onto their customers. Your routes are not effective? No problem, just bill more. Some years ago I heard about a Swedish team of optimization experts who got so fed up with selling optimization to unwilling transportation companies that they founded their own—just to mop the floor with their ineffective competition. :D I agree that ease of use is key here. In my PhD dissertation, I tried to address the issue by adding self-adaptivity within transportation management systems, mostly through automatic parameter tuning and algorithm selection. Such approaches remove some amount of fiddling when the optimization tool is adapted to a new optimization problem. Worth a look, perhaps, if you're interested. Many thanks again for the interesting article and all the best with Timefold. 1) E.g., already by the '90s, we had quite capable algorithms for the VRP. I have open-sourced a library of classical VRP algorithms called VeRyPy, containing simple and not-so-simple heuristic algorithms. It has enjoyed modest success among VRP researchers and practitioners. Nowhere near the success of OptaPlanner, but also, the purpose is different—OptaPlanner is production-ready, whereas VeRyPy is more geared towards education and research purposes.
- vasco 2y agoIf nobody does something in a whole industry perhaps it's because it's not a differentiating factor. Do you have a link to the Swedish company? It just sounds like typical "software engineers know better" story where they go bankrupt after a few years because turns out the important bits are in other parts of the business.
- lukan 2y agoI am interested in that company as well. A recent example of "knowing better optimisation experts" I know of in my local area are with garbage trucks. A expensive company was hired to optimize - yet they apparently forgot some real world factors, like with snow and ice not all the trucks can go everywhere, some roads too narrow, etc. with the result of chaos and the workers fighting succesfully to be allowed to continue influence their working schedule, they sucesfully managed without the external experts. People do inefficient things. And they also do it for years, thinking it is a universal law. But usually an expert from the outside will still not know better how to do things.
- nwgo 2y ago[dead]
- internet_points 2y agoI love that GOFAI companies are also calling themselves AI, because seriously why not. If a pile of linear algebra (fittingly trained on The Pile) can be AI, then so can optimizers and solvers.
- fragmede 2y agoTheir marketing person needs a bonus!
- TomCoolsTF 2y agoI'll pass along the message internally ;)
- elcritch 2y agoI've seen quite a number of sensor companies doing it for a couple of years. Their sensor uses a statistical algorithm, it's "AI"! Really, it's hard to say it's not AI. Glad to see an open source project gaining benefit from the AI hype train at least. :)
- matt-p 2y agoWhat a great story and indeed you're an excellent storyteller. I want to wish you all the luck in the world with this, it sounds like it's going well. Have you considered offering public pricing for your API, or maybe a few trial? Even if it's only for small use cases, I'd love to know I can just give you guys $100/month to cover my small use case.
- chandumachineni 2y agowow
- gavinray 2y agoI read the entire article once I recognized the name. Geoffrey is synonymous with OR/Constraints solvers in my mind. I once had to tackle an issue in this domain and wound up using OptaPlanner after weeks of research. It had the most intuitive API and the best community support by far. It's a bummer to hear that OptaPlanner was killed, but it sounds like ultimately it led to something greater, so there's a silver lining. Wishing you the best in your future endeavors, Geoffrey!
- ge0ffrey 2y agoThank you!
- fmeyer 2y agoI remember you talking about the project in the early drools IRC days. Your positivity and enthusiasm were what really made this project happen, and I have no doubts about your success with this new venture. I’m glad things went well for you and that you managed to regain control of your life’s work.
- DoingIsLearning 2y agoI just want to say that in 2024 there are _a_lot_ of hospitals doing shift planning manually and burning people out. Also irrespective of the project itself, amazing wife!
- ge0ffrey 2y agoDefinitely! I'll let her know :)
- MaxPock 2y agoAll the best in your start-up
- Blau123 2y agoawesome story!
- kashyapc 2y agoGeoffrey is one of the best open source citizens. Congrats on all this great progress! Please take care :-)
- Cappor 2y agoIt is interesting how the combination of AI and open-source can provide new opportunities for project development. It is impressive to see it in action
- BossingAround 2y agoHonestly, I'm still not sure how I feel about Red Hat/IBM's journey. On one hand, RH killed (i.e. "gave to IBM to rot away") a lot of products I liked (recently, the whole JBoss stack they had, see [1] for more details). On the other hand, a lot of the products that RH gave to IBM were really painful to use. Let me preface this by saying that I mean no disrespect to Geoffrey and his amazing work! And, also, I suspected I was too dumb to understand OptaPlanner in particular. But OptaPlanner was definitely amazingly painful to use. The docs seemed horrible to me at the time, and the UX of the product was on the level of "the source code is there, to solve your problem, just understand the code base..." To model your problems meant that ideally, you'd pay for Red Hat's consulting, which would give you indirect access to the dev team, which would help you put your problem model into OptaPlanner. A lot of the JBoss products I really liked were like that. Now, they'll die by slow death over at IBM with nobody giving a damn. I guess such is life. I wish Geoffrey all the best with Timefold! I truly hope you'll turn it into whatever you desire, and that you'll always have more customers knocking at your door than you can handle! [1] https://www.redhat.com/en/blog/evolving-our-middleware-strategy https://www.redhat.com/en/blog/evolving-our-middleware-strat...
- ge0ffrey 2y agoOur goal is to make planning optimization easy. But planning optimization can be extremely complex. So it took us quite some time to make it easy. Timefold Solver is already a lot easier than OptaPlanner to use. And the Timefold REST APIs are even easier: if you have a vehicle routing or shift scheduling case on your hands, just send in your data and get the solution. But not all cases are easy... What kind of use case where you trying to solve with OptaPlanner? In the past, I've seen a strong correlation between the ease of solving the problem and the availability of of a quickstart example. For example, our tech is even used for court scheduling (in different countries), but every single one of those cases was difficult. Other cases are far more simple. It all depends on the planning problem. Do you remember any particular pain in your OptaPlanner experience that we can improve going forward? Around which year was this?
- garaetjjte 2y agoNot OP, but in the past we experimented with OptaPlanner for manufacturing scheduling. I think the closest available example was project job scheduling, but we struggled to make it work with finer granularity time placement, it seemed to uselessy move jobs back and forth (IIRC because finishing one stage earlier didn't necessarily improve entire job time, but you didn't want it as constraint because sometimes it is useful to have gaps).
- gala8y 2y agoNice play with the name (Timefold).
- axus 2y agoI didn't have much appreciation for shift planning until an engineering genius showed me the beautifully crafted schedule for their company (after I helped mess it up with some 12 hour days). They later went independent, with shift-planning software being one of their products.
- freethejazz 2y agoThanks for your work and dedication on this problem domain, Geoffrey! I’ve used optaplanner in the past on several projects and will certainly use Timefold for future projects. This sort of constrain solver is an invaluable tool when you find yourself in the problem space and definitely worth the learning curve.
- myko 2y agoLove to see a story with AI solving a real problem without generating a bunch of bullshit along the way
- tappio 2y agoThank you for the hard work in this space! I think it is really important that there is a proper open source solution available. I just found OptaPlanner and subsequently TimeFold few months ago, as I was searching for a solution for my wife's veterinary clinics employee scheduling problem. The problem is not big enough for anyone to pay for the solution, but big enough to cause stress for whom ever is dealing with manually doings the shifts. It was interesting that there were a lot of online SaaS providers that claim to solve the problem but they just simply are not configurable for all kinds of constraints of a real workplace. Unfortunately I also feel partially same with TimeFold, because designing those constraints really requires changing the way of thinking of many problems. While the engine is capable of doing what ever, there is a steep learning curve to do it. So while the article mentions documentation, I would say that the documentation is far from sufficient for wide adaption. Personally, I would have really needed documentation about a mental model of thinking about the problem, and then a ton of examples how to solve real employee scheduling problems. Problem written in a format which the business people use and then translated into an elegant constraint rule explained step by step. I had to invest more than 40 hours to get a working MVP that solves real problems, not just those that are already coded in the example code. Most people are not willing to do that. What I'm trying to say is that to making planner software popular, it should be also usable for trivial projects. I understand that it's hard to focus on everything, but just providing more information about real use cases and how they were solved and how to think about the design problems would make the market bigger, and bring you a lot more customers in the long run. I just wonder how I might contribute to improve the documentation. I probably don't have deep enough understanding of the correct solution, but I will look into it.
- TomCoolsTF 2y agoHi Tappio, read you loud and clear. We are actively looking into making it easier for all people to solve their planning problems. Our goal is to "free the world from wasteful scheduling" and we more than realize we can't do that alone. ;)
- QuantumGood 2y agoI scheduled large one-day events where attendees were recorded performing voiceover several times during the day. As many as 350 individual recordings throughout the day, each with an acting coach, studio engineer, studio room setup, custom sets of scripts, and a demographically optimized group of attendees that would go through the day together. Because each attendees journey through the day was (somewhat) customizable by them, each new attendee would change the schedule of some other attendees. So we would have to wait until ~80% of the tickets had been purchased to begin scheduling, each new attendee was progressively harder to schedule (making it hard to keep selling tickets), and we had to also be flexible with the support staff, engineers and coaches.
- pandatigox 2y agoHi, I loved your story! I also checked out the app, but it's giving me an error: An error occurred in the Server Components render. The specific message is omitted in production builds to avoid leaking sensitive details. A digest property is included on this error instance which may provide additional details about the nature of the error.
- igtztorrero 2y agoCongratulations and thanks to share your history, is inspiration for all of us who had an old project struggling to keep going
- abcanthur 2y agoI've looked into optaplanner/timefold but never ended up using or experimenting with it. Can anyone compare the experience to OR tools?
- cchianel 2y ago(Disclosure: I work for Timefold) OR Tools is a MIPS/SAT solver, while Timefold is a meta-heuristic solver. As a result, the developer experience is quite different: - In OR Tools, you need to write your constraints as mathematical equations. You can only provide your own function in a few scenarios, such as calculating the distance between two points. This allows OR Tools to eliminate symmetries and calculate gradients to improve its solution search. In Timefold, your constraints are treated like a black box, so your constraints can use any function and call any library you like (although you shouldn't do things like IO in them). However, since said constraints are a black box, Timefold is unable to eliminate symmetries or calculate gradients. - In OR Tools, you have very little control in how it does its search. At most, you can select what algorithm/strategy it uses. In Timefold, you have a ton of control in how it does its search: from what moves its tries to adding your own custom phases. If none are configured, it will use sensible defaults. That being said, certain problems strongly benefit from custom moves. - In OR Tools, you do not need to create custom classes; you create variables using methods on their domain model classes. In Timefold, you need to define your domain model by creating your own classes. This adds initial complexity, but it makes the code more readable: instead of your variable being an int, it is an Employee or a Visit. That being said, it can be difficult for someone to design an initial model, since it requires an understanding of the problem they are solving. All in all, when using Timefold, you need to think in a more declarative approach (think Prolog, SQL, etc). For example, let say you have a room assignment problem where a teacher can only teach at a single room at once, and minimize room changes. In Timefold, it may look like this: # Typically would be stored in a parameterization object, but a global var # is used for brevity teacher_count = 3 @planning_entity @dataclass class Room: id: Annotated[int, PlanningId] date: int name: str # This can also be a Teacher object, but str is used for brevity here teacher: Annotated[str, PlanningVariable] = field(default=None) @planning_solution @dataclass class Timetable: rooms: Annotated[list[Room], PlanningEntityCollectionProperty] teachers: Annotated[list[str], ValueRangeProvider] score: Annotated[HardSoftScore, PlanningScore] = field(default=None) @constraint_provider def timetable_constraints(cf: ConstraintFactory): return [ cf.for_each_unique_pair(Room, Joiners.equal(lambda room: room.date), Joiners.equal(lambda room: room.teacher)) .penalize(HardSoftScore.ONE_HARD) .as_constraint('Teacher time conflict'), cf.for_each_unique_pair(Room, Joiners.equal(lambda room: room.teacher)) .filter(lambda a, b: a.name != b.name) .penalize(HardSoftScore.ONE_SOFT) .as_constraint('Minimize room change') ] solver_config = SolverConfig( solution_class=Timetable, entity_class_list=[Room], score_director_factory_config=ScoreDirectorFactoryConfig( constraint_provider_function=timetable_constraints ), termination_config=TerminationConfig( spent_limit=Duration(seconds=5) ) ) solver_factory = SolverFactory.create(solver_config) solver = solver_factory.build_solver() problem: Timetable = build_problem() solver.solve(problem) Compared to OR Tools: teacher_count = 3 problem: Timetable = build_problem() model = cp_model.CpModel() objective = [] room_vars = [cp_model.model.new_int_var(0, teacher_count - 1, f'room_assignment_{i}' for i in range(len(problem.rooms)))] room_vars_by_date = {date: [room_vars[i] for i in range(len(problem.rooms)) if problem.rooms[i].date == date] for date in {room.date for room in problem.rooms}} room_vars_by_name = {name: [room_vars[i] for i in range(len(problem.rooms)) if problem.rooms[i].name == name] for name in {room.name for room in problem.rooms}} for date, date_vars in room_vars_by_date.items(): model.AddAllDifferent(date_vars) for name, name_vars in room_vars_by_name.items(): for assignment_1 in names_vars: for assignment_2 in names_vars: if assignment_1 is not assignment_2: objective.add(assignment_1 != assignment_2) model.minimize(sum(objective)) solver = cp_model.CpSolver() status = solver.solve(model)
- yawnxyz 2y agoThanks for sharing your company story! I have kind of an off-topic question — how did y'all get a license for using SF Pro as a Web Font on your website? Afaik Apple on licenses the SF Pro as a font to only be used on Apple devices and apps?
- fjjjrjj 2y agoInspiring story! My favorite business course in undergrad was production operations management. Some time later I realized that in data engineering, critical path analysis is useful for optimizing directed acyclic graphs. For example, it doesn't make sense to optimize the longest running task when it's not on the critical path. If you are optimizing for $, sure. But for time, there are better tasks to optimize.
- deleted 2y ago[deleted]
- valiant55 2y agoI need to check this out. In a past life my primary role was scheduling a call center of up to two hundred seats (at our peak). I had built out a complicated network of spreadsheets that used historical data and future projections to mostly automate the process, so much so that I was able to move us from what was monthly schedule releases to quarterly and had a full on preference survey that each agent filled out. It still was a few days work going through the responses and actually compiling the final result but what once was a headache for my manager I turned into 10% if my role and was able to focus on delivering value elsewhere by streamlining data reporting.
- dust3317 2y agoExcellent article. You certainly managed to synthesize the startup experience with Open-source (two very challenging sectors). Do you just gravitate towards mathematically wicked problems? :) Like you experienced, a good product without a team and without revenue is simply not enough, no matter how good the idea. I have unfortunately been one of the 90% of startup failures to experience that brutal reality. My next project with a few others is to make open source coding & development profitable. We want to keep advancing open source while also helping others to get paid for their efforts. We are still technically in stealth mode, but plan to be launching soon. Our website will be codebounty.ai (we don't yet have it fully built out yet). With that being said, if you are interested to participate as a sponsor, maintainer, or contributor we would love to hear from you about what you would like to see in this program: https://docs.google.com/forms/d/e/1FAIpQLSdmlxJHIqOlwr1Nw3q0QwFpUowc6qFcuSNoybZz3rC5bi7_8g/viewform?usp=header https://docs.google.com/forms/d/e/1FAIpQLSdmlxJHIqOlwr1Nw3q0... . We would like to see it become a place where new coders can learn, develop skills, and get mentored by others. We would also like to have it as a way for others to have an income while looking for full time employment (rather than driving for uber). Heck, it could even become a recruiting tool for companies. If you have ideas, I would love to hear from you so that we can help to make more amazing open source projecets like Timefold a more common reality!
- ashishknitcs 2y agoEloquently explained, writing have have loads of wisdom earned and clubbed with benefit of hindsight.
- deleted 2y ago[deleted]
- tailsdog 2y agoNice project! I am wondering if there is a risk, as it is open source, that a company with bigger marketing spend starts offering timefold in the cloud, kind like AWS with Elasticsearch? Or is there a big enough moat with the models on your cloud platform to prevent this situation?
- from-nibly 2y ago> Especially if there are almost no bugs, support is worthless. This is why I don't buy support from companies.