GSOC 26: Integrate a client for building a Smart Data Dictionary web service

I’m Parag Debnath, a pre-final year student, I’ve been actively contributing to FreeCAD over the past few months and have had several PRs merged,

For GSoC 2026, I’m proposing to integrate a Python-based client for the buildingSMART Data Dictionary (bSDD) into FreeCAD. The goal is to make BIM classification more intelligent and context-aware, reducing the current manual workflow and improving IFC interoperability.

I’ve also spent time studying existing implementations like Bonsai BIM and exploring FreeCAD’s current classification system to design a robust and backward-compatible solution.

Looking forward to feedback, suggestions, and discussions from the community!
I was asked by the maintainers in the discord to take opinions fromRoy_043 and yorik
Parag’s proposal draft - Google Docs.pdf (135 KB)

I am afraid I do not know enough about IFC to provide meaningful assistance.

I just wanted to verify that
Is this project idea selection and the proposal is up to the standard?
Can y connect it to the maintainers who are looking to this gsoc things?

yorik would be the right person. But he may be too busy.

Hello parag ,
Welcome to the FreeCAD community!

I went through your proposal and I think it’s really well structured and detailed, especially the parts where you analyzed the current FreeCAD BIM classification system and compared it with the Bonsai BIM implementation.
I also liked how you clearly planned the architecture, especially the asynchronous API client and caching strategy.

A few suggestions that might improve it further :

  • In the “Detailed Proposal” section, some parts are quite dense (especially the IFC mapping and data contract). You could consider adding a small diagram or simplified flow (like request → response → mapping → IFC entities) to make it easier to follow.

  • You can briefly mention potential challenges (like API reliability, handling large responses, or UI responsiveness) and how you plan to handle them — this could make the proposal even stronger.

  • You could also highlight the final user impact a bit more (for example, how much this simplifies the workflow compared to the current manual process).

  • You might also consider reducing or expanding some abbreviations (like IFC, bSDD, etc.) when they first appear, so the proposal is easier to follow for readers who may not be familiar with all the terms, and and avoiding informal short forms (like “nd”) to make the proposal more professional.

Overall, it’s a very strong proposal and shows a deep understanding of both the problem and the FreeCAD architecture.
I hope the feedback helped!

devanshibhatt23
Thanks for the feedback I will definitely try to include a diagram that explains all the work flows in my final proposal .

Hello,

I do not use really often this feature of FreeCAD (classification with BSDD), mostly because the workflow is a bit cumbersome. So your proposal is very welcome :stuck_out_tongue:

In terms of workflow, I would really appreciate to have the ability to easily assign a classification from the property side panel when an element is selected.

I’m not a developer, but I understand that maintaining 2 systems (FC legacy and ifc) is tricky and I totally agree with your statement about data integrity:

More importantly, both pipelines reduce complex classification data into a single text string

  1. Asynchronous bSDD Client and Caching

Querying BSDDs using a HTTP API looks overkill to me. All 35 dictionaries in ifc format are less then 10 Mo on the hard drive. And user must be able to use FC offline IMHO.
But maybe I’m missing something.

  1. UI Extension & Context Persistence

As is,I can’t really help here, but for sure UI can be improved. Maybe you can consider adding a picture mock up of your idea.

  1. Strict Data Contract & IFC Mapping
  2. Validation & Backward Compatibility

All good here !


Good luck

Hi parag,

congratulations to your project being accepted to GSoC!

I am not a developer, but I read your original proposal anyway and I am happy to see such a thorough look at this topic. I would like to point one thing out, maybe you already know this. Even though bSDD is currently mostly used and known for classification references, it can also be used for pulling other data, like IfcPropertySets and IfcProperties. I know it is not the scope of your project, but I thought that you might encounter a decision when you are thinking if something should be made modular or just suited for classification, and this information might help.

Good luck with the project.

Tom