[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"portfolio-en-soource":3,"portfolio-index-en":139},{"id":4,"title":5,"body":6,"client":5,"description":112,"draft":113,"duration":114,"extension":115,"image":116,"locale":117,"meta":118,"navigation":119,"partner":120,"path":121,"publishedAt":122,"seo":123,"seoTitle":124,"slug":125,"stack":126,"stem":132,"tags":133,"today":136,"url":137,"__hash__":138},"portfolio\u002Fen\u002Fportfolio\u002Fsoource.md","Soource",{"type":7,"value":8,"toc":102},"minimark",[9,14,18,21,24,28,31,34,38,41,44,48,51,54,76,79,82,86,89,92,96,99],[10,11,13],"h2",{"id":12},"looking-for-a-challenge","Looking for a challenge",[15,16,17],"p",{},"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.",[15,19,20],{},"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».",[15,22,23],{},"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.",[10,25,27],{"id":26},"the-interviews","The interviews",[15,29,30],{},"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.",[15,32,33],{},"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.",[10,35,37],{"id":36},"starting-over","Starting over",[15,39,40],{},"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.",[15,42,43],{},"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.",[10,45,47],{"id":46},"the-email-problem","The email problem",[15,49,50],{},"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.",[15,52,53],{},"You have no idea how hard it was to handle message extraction:",[55,56,57,61,64,67,70,73],"ul",{},[58,59,60],"li",{},"automatic replies;",[58,62,63],{},"bounces from failed sends because of wrong email addresses;",[58,65,66],{},"emails that embedded the request inside the reply;",[58,68,69],{},"unsupported file formats;",[58,71,72],{},"ambiguity in recognising sentiment;",[58,74,75],{},"different email formats depending on the device the reply came from.",[15,77,78],{},"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.",[15,80,81],{},"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.",[10,83,85],{"id":84},"the-pre-seed-and-the-birth-of-soource","The pre-seed and the birth of Soource",[15,87,88],{},"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.",[15,90,91],{},"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.",[10,93,95],{"id":94},"a-new-challenge","A new challenge",[15,97,98],{},"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.",[15,100,101],{},"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.",{"title":103,"searchDepth":104,"depth":104,"links":105},"",2,[106,107,108,109,110,111],{"id":12,"depth":104,"text":13},{"id":26,"depth":104,"text":27},{"id":36,"depth":104,"text":37},{"id":46,"depth":104,"text":47},{"id":84,"depth":104,"text":85},{"id":94,"depth":104,"text":95},"Over two years inside Soource: from restarting in a one-week retreat to the first production run after 4 months, all the way to the pre-seed. The system that reads and classifies supplier replies.",false,"Over two years, in production after 4 months","md",null,"en",{},true,"Functional and the Soource team","\u002Fen\u002Fportfolio\u002Fsoource","2024-07-01",{"title":5,"description":112},"Soource · the AI procurement product, from the retreat to the pre-seed","soource",[127,128,129,130,131],"Next.js","NestJS","AWS","TensorFlow","OpenAI","en\u002Fportfolio\u002Fsoource",[134,135],"Product","Artificial intelligence","€3M seed led by Vertis (June 2026)","https:\u002F\u002Fsoource.com","Gbz9f_c_agGXRlTNUMZz5IJJXdlwpJ3r44ZK_LGyJfM",{"items":140},[141,151,160,168,179,188,198,200],{"id":142,"path":143,"slug":144,"title":145,"description":146,"publishedAt":147,"locale":117,"draft":113,"client":145,"tags":148,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fsnowinch.md","\u002Fen\u002Fportfolio\u002Fsnowinch","snowinch","Snowinch","The Snowinch brand from its first version in 2024, with Giulio Pattaro's aurora, to today's version 5: what got lost along the way, what we threw out and what stayed.","2026-10-17",[149,150],"Brand","Rebranding",{"id":152,"path":153,"slug":154,"title":155,"description":156,"publishedAt":157,"locale":117,"draft":113,"client":155,"tags":158,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fadsuite.md","\u002Fen\u002Fportfolio\u002Fadsuite","adsuite","ADSuite","From an idea born in early July to a product in production in under 30 days: ADevolution\\","2026-07-10",[134,159],"Mobile first",{"id":161,"path":162,"slug":163,"title":164,"description":165,"publishedAt":166,"locale":117,"draft":113,"client":164,"tags":167,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fadevolution.md","\u002Fen\u002Fportfolio\u002Fadevolution","adevolution","ADevolution","From \"digital solutions for installers\" to a growth system: the ADevolution rebrand in three versions, from the pictogram to the simplified brandbook.","2026-02-24",[149,150],{"id":169,"path":170,"slug":171,"title":172,"description":173,"publishedAt":174,"locale":117,"draft":113,"client":175,"tags":176,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fcovercraft.md","\u002Fen\u002Fportfolio\u002Fcovercraft","covercraft","CoverCraft","Native desktop app for music producers. Create YouTube-ready type beat videos in minutes, without jumping between Canva, After Effects, and export tools.","2025-02-01","TypeBeatHouse",[177,178],"Product engineering","Desktop app",{"id":180,"path":181,"slug":182,"title":183,"description":184,"publishedAt":185,"locale":117,"draft":113,"client":183,"tags":186,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fleadspring.md","\u002Fen\u002Fportfolio\u002Fleadspring","leadspring","LeadSpring","SaaS platform for idea validation and traffic conversion through AI-generated interactive quizzes. Multilingual, with advanced analytics and Stripe integration.","2024-11-01",[177,187],"SaaS",{"id":189,"path":190,"slug":191,"title":192,"description":193,"publishedAt":194,"locale":117,"draft":113,"client":195,"tags":196,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fcosmico.md","\u002Fen\u002Fportfolio\u002Fcosmico","cosmico","Cosmico","From freelancer signed up on Cosmico to their internal project: talent onboarding and profiling rebuilt and online in 3 months, then the new backoffice, the CRM integrations and Flatmates.","2024-09-01","Cosmico S.R.L",[134,197],"Scaleup",{"id":4,"path":121,"slug":125,"title":5,"description":112,"publishedAt":122,"locale":117,"draft":113,"client":5,"tags":199,"image":116},[134,135],{"id":201,"path":202,"slug":203,"title":204,"description":205,"publishedAt":206,"locale":117,"draft":113,"client":204,"tags":207,"image":116},"portfolio\u002Fen\u002Fportfolio\u002Fnotarify.md","\u002Fen\u002Fportfolio\u002Fnotarify","notarify","Notarify","New blockchain document notarization engine with B2B API for external integrations. We rewrote the core system and made notarization accessible programmatically.","2024-04-01",[177,208],"Blockchain B2B"]