crunchbase_test1 / app6.py
jaothan's picture
Rename app.py to app6.py
d9b7fe1 verified
import requests
import gradio as gr
# API base URL
BASE_URL = "https://www.zefix.admin.ch/ZefixPublicREST/api/v1"
def search_companies(service_description):
"""
Search for companies in Geneva based on a service description.
Returns the top 5 matching companies.
"""
try:
# Step 1: Search for companies by name or description
response = requests.get(f"{BASE_URL}/companies", params={"name": service_description})
if response.status_code != 200:
return f"Error: Unable to fetch data (Status Code: {response.status_code})"
# Step 2: Filter companies located in Geneva
companies = response.json()
geneva_companies = [
company for company in companies
if company.get("legalSeat", "").lower() == "Genève" # "Genève" is French for Geneva
]
# Step 3: Limit results to top 5
top_5_companies = geneva_companies[:5]
# Step 4: Format the results
if not top_5_companies:
return "No matching companies found in Geneva."
result = "Top 5 Matching Companies in Geneva:\n\n"
for company in top_5_companies:
result += (
f"Name: {company.get('name', 'N/A')}\n"
f"CHID: {company.get('chid', 'N/A')}\n"
f"UID: {company.get('uid', 'N/A')}\n"
f"Legal Seat: {company.get('legalSeat', 'N/A')}\n"
f"Registry of Commerce: {company.get('registryOfCommerce', 'N/A')}\n\n"
)
return result
except Exception as e:
return f"An error occurred: {str(e)}"
# Gradio Interface
interface = gr.Interface(
fn=search_companies,
inputs=gr.Textbox(label="Enter Company Service Description"),
outputs=gr.Textbox(label="Top 5 Matching Companies in Geneva"),
title="Geneva Company Search",
description="Enter a company service description to find the top 5 matching companies in Geneva."
)
# Launch the Gradio app
interface.launch()