Features | Getting Started | Documentation | Contributing | License | Contact | Acknowledgements
Doppelcheck is a cutting-edge, browser-based AI assistance system, uniquely designed for journalists and media professionals. Leveraging advanced AI models, Doppelcheck automates the process of research, analysis, and detection of biases in news content. It simplifies the identification of strategic disinformation, enabling users to receive customized press reviews efficiently and effortlessly.
Doppelcheck abstracts the process of information verification. Starting from an initial content
, the system extracts the essence
of the information, retrieves sources
relevant to this essence, and then compares these sources to the content to determine the support
the content has given the chosen information context.
stateDiagram-v2
[*] --> content
content --> essence: extract
essence --> sources: retrieve
sources --> content: select new
sources --> support: compare to content
support --> [*]
installation.webm
extract.webm
retrieval.webm
youtube.webm
- AI-Powered Analysis: Leverages Large Language Models (LLMs) to extract key claims from content, cross-reference them with a vast array of sources, and detect biases in news content, ensuring that you receive a balanced view of the narrative.
- Automated Summaries: Provides concise, bullet-pointed summaries of key claims from the content, enabling you to grasp the essence of the information quickly.
- Configurable Research: Offers out-of-the-box support for Google search, with plans to integrate other search engines and news searches. Users can tailor their research experience through a user-friendly UI and config files, ensuring that the information retrieved is relevant and comprehensive.
- Intuitive UI: Features a browser-based interface that makes configuration and result interpretation straightforward and user-friendly.
Doppelcheck requires the following API keys:
- API key for the Google Custom Search API, get it here
- ID of the Google Custom Search Engine, add a new search engine and get the ID here
- key for the OpenAI API, create one here
Users can always access doppelcheck.com for immediate use.
Note: Take care not to input sensitive data as data transfer and storage are not secure.
For enhanced data security or accessibility, users have the option to set up their own server.
You can set up the Doppelcheck application using Docker by following one of the two methods below.
Choose the option that best suits your setup preferences. Both methods will provide you with a running instance of the Doppelcheck application.
-
Clone the Repository: Begin by cloning the Doppelcheck repository to your local machine. Open a terminal or command prompt and run the following commands:
git clone https://github.com/Doppelcheck/main.git cd main
-
Start the Application: With the repository cloned, navigate into the project directory and launch the application using
docker-compose
. This will build and start the necessary Docker containers:docker-compose up
Wait for the process to complete. Once done, the application will be running and accessible.
If you prefer to skip the cloning process, you can directly pull the Docker image from Docker Hub and run it.
-
Pull the Docker Image: Fetch the latest Docker image for Doppelcheck from Docker Hub by executing the following command:
docker pull wehnsdaefflae/doppelcheck_main
-
Run the Container: After pulling the image, start the container. This command will run the Docker image and map port 8000 on your host to port 8000 in the container, making the application accessible via the host machine:
docker run -p 8000:8000 wehnsdaefflae/doppelcheck_main
Access the Web UI: Once the container is running, you can access the Doppelcheck web interface by opening your web browser and navigating to https://localhost:8000
Note: Ensure you use
https
and nothttp
in the URL, as Doppelcheck comes with self-signed certificates. Replace those for security.
- Install Python 3.11.6 or higher (e.g. with
pyenv
) - Clone the repository:
git clone https://github.com/Doppelcheck/main cd main
- Install Playwright dependencies:
sudo apt-get install libxcursor1 libxdamage1 libgtk-3-0 libpangocairo-1.0-0 libpango-1.0-0 libatk1.0-0 libcairo-gobject2 libcairo2 libgdk-pixbuf-2.0-0 libasound2 libdbus-glib-1-2
- (Optional) Create a virtual environment:
cd main python3 -m venv venv source venv/bin/activate
- Install dependencies via pip:
pip install --upgrade pip pip install -r requirements.txt
- Install Playwright browsers:
playwright install
- Copy the
config.example.json
file toconfig.json
and configure the following settings:[storage_secret]
: random string used to encrypt client data
- Run the server:
- once:
python3 main.py
- as a systemd service:
sudo cp doppelcheck.example.service doppelcheck.service
- set
User
,WorkingDirectory
,ExecStart
, andEnvironment
indoppelcheck.service
to your needs
sudo cp doppelcheck.service /etc/systemd/system/ sudo systemctl enable doppelcheck sudo systemctl start doppelcheck
- set
- once:
- (Optional) Set up certbot
- Open the web UI at
localhost:8000
or whatever is set inconfig.json['nicegui']['host']
andconfig.json['nicegui']['port']
Note: use
https
if you providedconfig.json['nicegui']['ssl_keyfile']
andconfig.json['nicegui']['ssl_certfile']
(default), usehttp
otherwise
Detailed user guides and API documentation on configuration and architecture will be added during project development to facilitate easy navigation and utilization of Doppelcheck's features.
Doppelcheck can be configured by an access-controlled web interface for all users. Each option can also be made accessible to the user with a fine-grained permission system.
sequenceDiagram
participant Client
participant Server
note over Client,Server: User drags doppelcheck link to bookmarks
Server-->>Client: bookmarklet javascript code
note over Client: browser displays "doppelcheck" icon in bookmarks
sequenceDiagram
participant Client
participant Server
participant LLM_Interface as LLM Interface
note over Client, Server: User clicks "doppelcheck" icon
Client->>Server: website body
note over Client: add sidebar element to current website DOM
Server->>LLM_Interface: request key claims
note right of Server: waiting for LLM interface
LLM_Interface->>Server: key claims
loop for each CLAIM
Server->>Client: CLAIM
note over Client: display CLAIM in sidebar
note over Client: add "doppelcheck this claim" button
end
sequenceDiagram
participant Client
participant Server
participant Data_Source as Data Source
participant LLM_Interface as LLM Interface
note over Client,Server: User clicks "review this claim" button
Client->>Server: CLAIM
Server->>Data_Source: request documents relevant to claim
note right of Server: waiting for data source interface
Data_Source->>Server: relevant documents
loop for each DOCUMENT
Server->>Client: each DOCUMENT uri
note over Client: display uri
Server->>LLM_Interface: request match between each DOCUMENT and CLAIM
note right of Data_Source: waiting for LLM interface
LLM_Interface->>Server: MATCH
Server->>Client: MATCH
note over Client: update source URI with MATCH
end
Doppelcheck is designed to be highly extensible, allowing users to add custom plugins to enhance its functionality. Out of the box, Doppelcheck comes with the following plugins:
- Google Search as a data source: Provides support for Google search, enabling users to retrieve relevant information from the web.
- OpenAI as an LLM endpoint: Integrates with OpenAI's API to leverage advanced AI models for content analysis and detection of biases.
We welcome contributions from the community! If you're interested in improving Doppelcheck, you can contribute in the following ways:
- Plugin Development: Extend Doppelcheck's functionality by developing custom plugins for more data sources, more LLM endpoints, and more.
- Reporting Bugs: Submit an issue in our repository, providing a detailed description of the problem and steps to reproduce it.
- Feature Requests: Have ideas on how to make Doppelcheck better? We'd love to hear from you! Please submit an issue, detailing your suggestions.
- Pull Requests: Contributions via pull requests are highly appreciated. Please ensure your code adheres to the coding standards of the project, and submit a pull request with a clear description of your changes.
Doppelcheck is licensed under the MIT License. See the LICENSE file for more details.
For any inquiries or further information, feel free to reach out at wernsdorfer@gmail.com.
Special thanks to our contributors and supporters, particularly Media Tech Lab, for their invaluable assistance in this project.
![Media Tech Lab powered by logo](https://raw.githubusercontent.com/media-tech-lab/.github/main/assets/mtl-powered-by.png)