Dese Guys
a Public Data Tools project by Anthony Moser
send questions and bug reports to anthony.moser@gmail.com
It's a tool for searching and exploring the relationships between Illinois companies, Illinois political campaigns, and Chicago city contracts.
The idea is that all of these things are linked by names and addresses. Under the hood, this combines data from the Illinois Secretary of State business filings database, Illinois campaign contributions, and the Chicago data portal. There's a Python script that pulls that data, cleans and normalizes it to make it more likely to find points of overlap.
DeseGuys generates network graphs. Each circle is a "node" representing a person, company, contract, committee, city department, or address. The lines - which are called "edges" in network analysis terms, and which I also call "links" - represent the relationships between these different entities.
For example, a company represented by a black circle will have a blue line connecting it to the name of the registered agent; the registered agent will be connected to a yellow circle, representing the address they listed when they filed the paperwork.
Types of nodes: company, name, address, committee, contract, city department
Types of edges: agent, president, secretary, manager, address, contract, donation
Start by searching for a name, address, or file number. You can use % as a wildcard - make sure you notice spaces before or after wildcards, because they will affect the search results.
Search | Results include |
Michael Tadin | Michael Tadin |
Michael%Tadin | Michael Tadin, Michael A. Tadin |
Michael Tadin% | Michael Tadin, Michael Tadin Jr, Michael Tadinksi |
2055 % Pershing Rd | 2055 W. Pershing Rd, 2055 N. Pershing Rd |
2055 W Pershing % | 2055 W Pershing Rd, 2055 W Pershing Ave |
2055 W Pershing% | 2055 W Pershing Rd, 2055 W Pershing Ave, 2055 W Pershingexample Rd |
The data in the database looks like this:
id | entity_type | name | street | city | state | postal_code | details | index_type | index_value | is_primary | link_type | link_to |
14250625 | company | MARINA CARTAGE, INC. | {} | corp_file_number | 45989941 | 1 | MARINA CARTAGE, INC. | |||||
14797530 | name | MICHAEL TADIN | 4450 S MORGAN ST | CHICAGO | IL | 606090000 | {} | corp_file_number | 45989941 | 0 | agent | MARINA CARTAGE, INC. |
14797505 | name | MICHAEL TADIN | 4450 S MORGAN | CHICAGO | IL | 60609.0 | {} | corp_file_number | 45989941 | 0 | president | MARINA CARTAGE, INC. |
19089045 | name | SAME | {} | corp_file_number | 45989941 | 0 | secretary | MARINA CARTAGE, INC. |
In this case, Michael Tadin would match the name field for two of these records.
The results will show nodes for:
Nodes can be linked together more than once. In this case, there will be an agent link between the name and the company, and also a president link.
Let's say you want to explore what other companies might share an address, or find out (after searching for a company) what contracts or campaign donations it might be connected to.
Just click a node to select it, then click the "What else connects?" button. If it's a name or address, the results will be just like searching for that name or address. If it's a company, contract, or committee, the app will search for other entities with the same index_value (which might be the file number, the contract number, or the committee id).
https://storage.googleapis.com/pdt_central/deseguys/DeseGuys%20Walk%20Through.mp4