diff --git a/app/builders/institution_builder.rb b/app/builders/institution_builder.rb
new file mode 100644
index 0000000000000000000000000000000000000000..294c4ffd40a86fda0803ae2b48e45f0e7e856c0c
--- /dev/null
+++ b/app/builders/institution_builder.rb
@@ -0,0 +1,48 @@
+class InstitutionBuilder
+  extend RepositoriesProxy
+
+  ##
+  # receive a list of ids and return a list of institutions
+  #
+  def self.build(institutions = [])
+    array = []
+    institutions = [institutions] if institutions.class == String
+    institutions.each do |institution|
+      unless institution['@rid'].blank?
+        o = Rails.cache.fetch(cache_key(institution['@rid'], institution['last_modified'])) unless institution['last_modified'].blank?
+
+        o = institution_repository.find institution['@rid'] if o.nil?
+
+        array << o
+      end
+    end
+    array
+  end
+
+  def self.build_from_orientdb(args = {})
+    institution = nil
+
+    unless args.nil?
+      # cache object when build
+      institution = Rails.cache.fetch(cache_key(args['@rid'], args['last_modified']), expires_in: 12.hours) do
+        Institution.new(
+          id: args['@rid'],
+          name: args['name'],
+          created_at: args['created_at'],
+          last_modified: args['last_modified'],
+          country: args['country'] || '',
+          city: args['city'] || '',
+          description: args['description'] || '',
+          thumbnail: args['thumbnail'] || '',
+          address: args['address'] || ''
+        )
+      end
+    end
+
+    institution
+  end
+
+  def self.cache_key(rid, last_modified)
+    rid + '/' + last_modified
+  end
+end