Looking for a challenge
I had been working as a freelancer for a while and was looking around for a new opportunity in the startup world. A startup addict, I was looking for a challenge that, one, would let me give my best, as I usually do, in stimulating environments and, two, would let me create something and bring it to life. Then I see a LinkedIn post for a backend developer position at Functional and I apply. I study the company carefully.
Functional was born from an idea by Maicol Verzotto and Nazareno Mario Ciccarello, and at the start the project was built around a product called DRIVEgum, a sugar-free chewing gum with caffeine and guarana to keep night drivers awake: the idea was to create «functional food».
It was then incubated at NOI Techpark and during Covid it grew a lot, starting its own production of certified surgical masks, up to a million pieces a week.
The interviews
I do the first interview and meet Maicol (Verzotto). It goes well, he leaves me a very good impression and I think he liked me too, so we set up a second meeting and I meet Matteo (Biasi). I do the technical interview, it goes well: I remember he asked me a question I answered in an original way. He was expecting a different answer, but my answer got to the same result, maybe more efficiently.
So they start telling me about the project: working on a system that would revolutionise the way companies buy. I like the idea and we decide to work together.
Starting over
That's how I meet Luca (Taddeo) and Giulio (Pattaro), who show me the repos and the project. Luca tells me they had already invested a lot of money with a third-party company that had built a Java version impossible to maintain and that had nothing to do with the idea. So we both roll up our sleeves and try to patch things up starting from a template codebase built by Matteo. The product slowly grows, but after two months we realise it isn't the right road: we needed the product and we needed it fast.
Stefano (Pedone) joins to help and a few weeks later, at a company retreat, we decide to start over on a new infrastructure, leaner and faster, so we'd have a product and slowly prepare it for a future migration. The best choice we could have made: in the retreat week we built the whole new functional backend of the software, and I'm talking about 2023... vibe coding as we mean it today didn't exist yet. Luca was pushing hard on the frontend, Stefano on infrastructure, Matteo mediated and Giulio worked magic on design and UX. A crazy dream team.
The email problem
At the same time, though, a bigger problem was growing: mass email sending for the «soourcing» part (finding the best supplier from a request-for-quote campaign) and above all the automatic analysis of the replies to classify them. ChatGPT had just come out, but it couldn't be integrated into a product yet... so I roll up my sleeves, dust off my NLP and TensorFlow knowledge and build a system that, first, could separate email threads and reply messages and, second, extract their sentiment and, where present, the information about the final quote and the type of reply, while also tracking send and open status.
You have no idea how hard it was to handle message extraction:
- automatic replies;
- bounces from failed sends because of wrong email addresses;
- emails that embedded the request inside the reply;
- unsupported file formats;
- ambiguity in recognising sentiment;
- different email formats depending on the device the reply came from.
In short, no small engineering challenge, given how little test data we had and the general state of the technology on that front. Training a model from scratch on an 8 GB RAM Mac M1 was the perfect picture.
And the first version worked, it held up in a few demos, and overall the first production run came just 4 months after the decision to refactor.
The pre-seed and the birth of Soource
Shortly after, thanks to the huge work of Maicol (Verzotto), Silvia (Chiarot), Serena (Galli) and Nazareno (Mario Ciccarello), the pre-seed arrives: the company splits from Functional and Soource is born for real, and with it a flood of work: integrations, features, bugfixing.
The first OpenAI LLM API models arrive and we start integrating GPT-3 into the system. Quality goes up, then we move to GPT-3.5, then 4, then 4o, and that's where a different need appears: building a routing and orchestration system that would get us the best result with the fewest tokens consumed. So I build an SDK dedicated to just that. Among the problems the SDK had to solve were malformed outputs (typed object responses didn't work like they do today), parsing the replies, and designing a more efficient output system, with tagged labels remapped in the SDK. All to keep the bill low and get the best possible result.
€3 million
A new challenge
I lived this project for over two years, until, after the trip to Lisbon to present it at Web Summit, I realised I had started a new life in Gran Canaria and it was time to find a new challenge that could give me the same energy I had felt until then.
I still thank the whole Soource team for a beautiful experience and for the amazing people I met, whom I'm still in touch with.



